
Эта стратегия является стратегией отслеживания тренда, разработанной на основе теории прорыва каналов. Она создает канал, рассчитывая максимальные и минимальные цены определенного цикла, и генерирует торговый сигнал, когда цена прорывает канал. Эта стратегия применима к трендовым действиям, может улавливать направление тенденции цены и отслеживать тенденцию.
Стратегия начинается с вычисления максимума и минимума в течение длины цикла, чтобы построить каналы вверх и вниз. Когда цена закрытия прорывается вверх, делайте больше; когда цена закрытия прорывается вниз, делайте пробел.
Эта стратегия одновременно отображает длину как length*2 показатель EMA определяет направление тренда. Когда цена прорывается через канал, если EMA находится в восходящем тренде, это повышает эффективность принятия решений.
Эта стратегия в целом является простой стратегией отслеживания тенденций, основанной на прорывах каналов для захвата тенденций. Она обладает сильными способностями отслеживания тенденций и может получить хорошую прибыль в условиях тренда.
/*backtest
start: 2023-11-15 00:00:00
end: 2023-11-22 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
initial_capital = 1000,
default_qty_value = 90,
default_qty_type = strategy.percent_of_equity,
pyramiding = 0,
commission_value = 0.002,
commission_type = strategy.commission.percent,
calc_on_every_tick = true
length_val = 2
max_bars_back = 1440
risk_max_drawdown = 9
strategy("Channel Break",max_bars_back=max_bars_back,initial_capital = initial_capital,default_qty_value = default_qty_value,default_qty_type = default_qty_type,pyramiding = pyramiding,commission_value = commission_value,commission_type = commission_type,calc_on_every_tick = calc_on_every_tick)
// strategy.risk.max_drawdown(risk_max_drawdown, strategy.percent_of_equity)
length = input(title="Length", minval=1, maxval=1000, defval=length_val)
upBound = highest(high, length)
downBound = lowest(low, length)
//plot (upBound)
//plot (downBound)
//plot (close, color=red)
//plot (ema(close,length * 2), color=green)
//
if (not na(close[length]) and time>timestamp(2018, 02, 24, 0, 00) )
strategy.entry("Buy", strategy.long, stop=upBound + syminfo.mintick, comment="Buy")
strategy.entry("Short", strategy.short, stop=downBound - syminfo.mintick, comment="Short")
position = strategy.position_size
//plot(position , title="equity", color=red,style=cross,linewidth=4)
plot(variance(position,2)>0?1:0,style=circles,linewidth=4)
message = ""
if (position > 0)
message = "BTCUSD L: " + tostring(strategy.position_size)
na(position)
if (position < 0)
message = "BTCUSD S: " + tostring(strategy.position_size)
na(position)
alertcondition(variance(strategy.position_size,2) > 0, "test", message )