
Стратегия G-Channel Trend Detection является количественной торговой стратегией, основанной на G-Channel Indicators. Эта стратегия создает сигнал покупки и продажи, рассчитывая верхние и нижние пределы G-Channel и оценивая текущую тенденцию рынка на основе пересечения цены с равновесием G-Channel. В то же время, эта стратегия устанавливает условия стоп-стоп для контроля риска.
Стратегия G-Channel Trend Detection - это простая количественная торговая стратегия, основанная на 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))