Стратегия обнаружения трендов G-Channel - это количественная стратегия торговли, основанная на индикаторе G-Channel. Стратегия рассчитывает верхнюю и нижнюю границы G-Channel и определяет текущую рыночную тенденцию на основе перекрестного ценового перекрестка и скользящей средней G-Channel, генерируя соответствующие сигналы купли и продажи. Кроме того, набор стратегий принимает условия прибыли и стоп-лосса для контроля риска.
Стратегия обнаружения трендов G-Channel - это простая количественная стратегия торговли, основанная на индикаторе G-Channel, которая генерирует сигналы купли и продажи путем захвата рыночных тенденций и установки условий получения прибыли и остановки потери для контроля риска. Логика стратегии ясна и проста в реализации, что делает ее подходящей для изучения новичков в количественной торговле. Однако стратегия может генерировать больше ложных сигналов на колеблющихся рынках, и проценты получения прибыли и остановки потери должны быть скорректированы в соответствии с характеристиками рынка. Кроме того, она не учитывает специфику торгуемого актива. В будущем стратегия может быть оптимизирована путем внедрения других технических индикаторов, динамической корректировки процентов получения прибыли и остановки потери и добавления модулей управления рисками на основе характеристик торгуемого актива для повышения стабильности и прибыльности стратегии.
//@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))