Please, copy the code below

Instructions

  1. Highlight the entire code below

  2. Copy The Code (Ctrl-C, Cmd-C)

  3. Open TradingView

  4. Open Pine Editor

  5. Paste The Code

  6. Click Save

  7. Click “Update” on chart

//@version=5
indicator("Trend Trader", shorttitle="Trend Trader", overlay=true)

// User-defined input for moving averages
shortMA = input.int(10, minval=1, title="Short MA Period")
longMA = input.int(100, minval=1, title="Long MA Period")

// User-defined input for the instrument selection
instrument = input.string("US30", title="Select Instrument", options=["US30", "NDX100", "GER40", "GOLD"])

// Set target values based on selected instrument
target_1 = instrument == "US30" ? 50 :
           instrument == "NDX100" ? 25 :
           instrument == "GER40" ? 25 :
           instrument == "GOLD" ? 5 : 5 // default value

target_2 = instrument == "US30" ? 100 :
           instrument == "NDX100" ? 50 :
           instrument == "GER40" ? 50 :
           instrument == "GOLD" ? 10 : 10 // default value

// User-defined input for the start and end times with default values
startTimeInput = input.int(12, title="Start Time for Session (UTC, in hours)", minval=0, maxval=23)
endTimeInput = input.int(17, title="End Time Session (UTC, in hours)", minval=0, maxval=23)
// Convert the input hours to minutes from midnight
startTime = startTimeInput * 60 
endTime = endTimeInput * 60  

// Function to convert the current exchange time to UTC time in minutes
toUTCTime(exchangeTime) =>
    exchangeTimeInMinutes = exchangeTime / 60000
    // Adjust for UTC time
    utcTime = exchangeTimeInMinutes % 1440
    utcTime

// Get the current time in UTC in minutes from midnight
utcTime = toUTCTime(time)

// Check if the current UTC time is within the allowed timeframe
isAllowedTime = (utcTime >= startTime and utcTime < endTime)

// Calculating moving averages
shortMAValue = ta.sma(close, shortMA)
longMAValue = ta.sma(close, longMA)

// Plotting the MAs
plot(shortMAValue, title="Short MA", color=color.blue)
plot(longMAValue, title="Long MA", color=color.red)

// MACD calculation for 15-minute chart
[macdLine, signalLine, _] = request.security(syminfo.tickerid, "15", ta.macd(close, 12, 26, 9))
macdColor = macdLine > signalLine ? color.new(color.green, 70) : color.new(color.red, 70)

// Apply MACD color only during the allowed time range
bgcolor(isAllowedTime ? macdColor : na)

// Flags to track if a buy or sell signal has been triggered
var bool buyOnce = false
var bool sellOnce = false

// Tracking buy and sell entry prices
var float buyEntryPrice_1 = na
var float buyEntryPrice_2 = na
var float sellEntryPrice_1 = na
var float sellEntryPrice_2 = na

if not isAllowedTime
    buyOnce :=false
    sellOnce :=false
// Logic for Buy and Sell signals
buySignal = ta.crossover(shortMAValue, longMAValue) and isAllowedTime and macdLine > signalLine and  not buyOnce
sellSignal = ta.crossunder(shortMAValue, longMAValue) and isAllowedTime and macdLine <= signalLine and  not sellOnce

// Update last buy and sell signal values
if (buySignal)
    buyEntryPrice_1 := close
    buyEntryPrice_2 := close
    buyOnce := true
    
if (sellSignal)
    sellEntryPrice_1 := close
    sellEntryPrice_2 := close
    sellOnce := true
    
// Apply background color for entry candles
barcolor(buySignal or sellSignal ? color.yellow : na)

/// Creating buy and sell labels
if (buySignal)
    label.new(bar_index, low, text="BUY", style=label.style_label_up, color=color.green, textcolor=color.white, yloc=yloc.belowbar)

if (sellSignal)
    label.new(bar_index, high, text="SELL", style=label.style_label_down, color=color.red, textcolor=color.white, yloc=yloc.abovebar)

// Creating labels for 100-point movement
if (not na(buyEntryPrice_1) and close >= buyEntryPrice_1 + target_1)
    label.new(bar_index, high, text=str.tostring(target_1), style=label.style_label_down, color=color.green, textcolor=color.white, yloc=yloc.abovebar)
    buyEntryPrice_1 := na // Reset after label is created

if (not na(buyEntryPrice_2) and close >= buyEntryPrice_2 + target_2)
    label.new(bar_index, high, text=str.tostring(target_2), style=label.style_label_down, color=color.green, textcolor=color.white, yloc=yloc.abovebar)
    buyEntryPrice_2 := na // Reset after label is created

if (not na(sellEntryPrice_1) and close <= sellEntryPrice_1 - target_1)
    label.new(bar_index, low, text=str.tostring(target_1), style=label.style_label_up, color=color.red, textcolor=color.white, yloc=yloc.belowbar)
    sellEntryPrice_1 := na // Reset after label is created

if (not na(sellEntryPrice_2) and close <= sellEntryPrice_2 - target_2)
    label.new(bar_index, low, text=str.tostring(target_2), style=label.style_label_up, color=color.red, textcolor=color.white, yloc=yloc.belowbar)
    sellEntryPrice_2 := na // Reset after label is created