A estratégia de detecção de tendências do G-Channel é uma estratégia quantitativa de negociação baseada no indicador do G-Channel. A estratégia calcula as extremidades superior e inferior do G-Channel e determina a tendência atual do mercado com base no cruzamento do preço e da média móvel do G-Channel, gerando sinais de compra e venda em conformidade. Além disso, os conjuntos de estratégias tomam as condições de lucro e stop loss para controlar o risco.
A estratégia de detecção de tendências G-Channel é uma estratégia de negociação quantitativa simples baseada no indicador G-Channel que gera sinais de compra e venda capturando tendências de mercado e definindo condições de take profit e stop loss para controlar o risco. A lógica da estratégia é clara e fácil de implementar, tornando-a adequada para iniciantes em negociação quantitativa aprenderem. No entanto, a estratégia pode gerar mais sinais falsos em mercados flutuantes, e as porcentagens de take profit e stop loss precisam ser ajustadas de acordo com as características do mercado. Além disso, não considera as especificidades do ativo negociado. No futuro, a estratégia pode ser otimizada introduzindo outros indicadores técnicos, ajustando dinamicamente as percentagens de take profit e stop loss e adicionando módulos de controle de risco com base nas características do ativo negociado para melhorar a estabilidade e lucratividade da estratégia.
//@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))