이 전략은 채널 브레이크아웃 이론을 기반으로 설계된 트렌드 추적 전략이다. 특정 기간 동안 가장 높은 가격과 가장 낮은 가격을 사용하여 채널을 구성하고 가격이 채널을 벗어날 때 거래 신호를 생성합니다. 이 전략은 트렌딩 시장에 적합하며 트렌드 추적을 위해 가격의 트렌드 방향을 파악 할 수 있습니다.
이 전략은 먼저 채널의 상위 대역과 하위 대역을 구성하기 위해 긴 기간 동안 가장 높은 가격과 가장 낮은 가격을 계산합니다. 닫기 가격이 상위 대역을 넘어서면 긴 포지션이 열립니다. 닫기 가격이 하위 대역을 넘어서면 짧은 포지션이 열립니다. 가격이 채널로 다시 떨어지면 포지션은 닫을 것입니다.
이 전략은 또한 트렌드 방향을 결정하기 위해 길이 *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 )