La estrategia de detección de tendencias del canal G es una estrategia de negociación cuantitativa basada en el indicador del canal G. La estrategia calcula los extremos superior e inferior del canal G y determina la tendencia actual del mercado basada en el cruce del precio y el promedio móvil del canal G, generando señales de compra y venta en consecuencia.
La estrategia de detección de tendencias G-Channel es una estrategia de trading cuantitativa simple basada en el indicador G-Channel que genera señales de compra y venta capturando las tendencias del mercado y estableciendo condiciones de toma de ganancias y stop loss para controlar el riesgo. La lógica de la estrategia es clara y fácil de implementar, lo que la hace adecuada para que los principiantes en el comercio cuantitativo aprendan. Sin embargo, la estrategia puede generar más señales falsas en mercados fluctuantes, y los porcentajes de toma de ganancias y stop loss deben ajustarse de acuerdo con las características del mercado. Además, no considera las especificidades del activo negociado. En el futuro, la estrategia puede optimizarse introduciendo otros indicadores técnicos, ajustando dinámicamente los porcentajes de toma de ganancias y stop loss, y agregando módulos de control de riesgos basados en las características del activo negociado para mejorar la estabilidad y rentabilidad de la estrategia.
//@version=5 // Full credit to AlexGrover: https://www.tradingview.com/script/fIvlS64B-G-Channels-Efficient-Calculation-Of-Upper-Lower-Extremities/ strategy("G-Channel Trend Detection Strategy", shorttitle="G-Trend", overlay=true) // Input parameters length = input.int(100, title="Length") src = input(close, title="Source") take_profit_percent = input.float(5.0, title="Take Profit (%)") stop_loss_percent = input.float(2.0, title="Stop Loss (%)") showcross = input.bool(true, title="Show Cross") // Initialize variables var float a = na var float b = na // Calculate a and b a := math.max(src, nz(a[1])) - (nz(a[1]) - nz(b[1])) / length b := math.min(src, nz(b[1])) + (nz(a[1]) - nz(b[1])) / length // Calculate average avg = (a + b) / 2 // Determine trend and color crossup = ta.crossunder(b, close) crossdn = ta.crossunder(a, close) bullish = ta.barssince(crossdn) <= ta.barssince(crossup) c = bullish ? color.lime : color.red // Plotting p1 = plot(avg, "Average", color=c, linewidth=1) p2 = plot(close, "Close price", color=c, linewidth=1) fill(p1, p2, c) // Generate buy and sell signals buy_signal = showcross and bullish and not bullish[1] sell_signal = showcross and not bullish and bullish[1] // Plot buy and sell signals on chart plotshape(buy_signal ? avg : na, location=location.belowbar, style=shape.labeldown, color=color.new(color.lime, 0), size=size.tiny, text="Buy", textcolor=color.white, offset=-1) plotshape(sell_signal ? avg : na, location=location.abovebar, style=shape.labelup, color=color.new(color.red, 0), size=size.tiny, text="Sell", textcolor=color.white, offset=-1) // Alerts alertcondition(buy_signal, title="Buy Signal", message="Buy Signal Detected") alertcondition(sell_signal, title="Sell Signal", message="Sell Signal Detected") // Calculate take profit and stop loss levels take_profit_level = close * (1 + take_profit_percent / 100) stop_loss_level = close * (1 - stop_loss_percent / 100) // Strategy Entry and Exit if (buy_signal) strategy.entry("Buy", strategy.long) if (sell_signal) strategy.entry("Sell", strategy.short) // Define the take profit and stop loss conditions for long positions strategy.exit("Take Profit/Stop Loss", "Buy", limit=take_profit_level, stop=stop_loss_level) // Define the take profit and stop loss conditions for short positions strategy.exit("Take Profit/Stop Loss", "Sell", limit=close * (1 - take_profit_percent / 100), stop=close * (1 + stop_loss_percent / 100))