OPEN-SOURCE SCRIPT
Actualizado Trend Trader

//version=6
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
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
Notas de prensa
buy and sell Script de código abierto
Fiel al espíritu de TradingView, el creador de este script lo ha convertido en código abierto, para que los traders puedan revisar y verificar su funcionalidad. ¡Enhorabuena al autor! Aunque puede utilizarlo de forma gratuita, recuerde que la republicación del código está sujeta a nuestras Normas internas.
Exención de responsabilidad
La información y las publicaciones no constituyen, ni deben considerarse como asesoramiento o recomendaciones financieras, de inversión, de trading o de otro tipo proporcionadas o respaldadas por TradingView. Más información en Condiciones de uso.
Script de código abierto
Fiel al espíritu de TradingView, el creador de este script lo ha convertido en código abierto, para que los traders puedan revisar y verificar su funcionalidad. ¡Enhorabuena al autor! Aunque puede utilizarlo de forma gratuita, recuerde que la republicación del código está sujeta a nuestras Normas internas.
Exención de responsabilidad
La información y las publicaciones no constituyen, ni deben considerarse como asesoramiento o recomendaciones financieras, de inversión, de trading o de otro tipo proporcionadas o respaldadas por TradingView. Más información en Condiciones de uso.