다중 요인 반 트렌드 거래 전략 (Multi-Factor Counter-Trend Trading Strategy) 은 시장에서 연속적으로 가격 상승 또는 하락 후 잠재적 인 반전 지점을 식별하도록 설계된 정교한 알고리즘 거래 시스템이다. 전략은 부과 또는 과판 조건에서 반전 기회를 포착하기 위해 부피 확인 및 채널 밴드 (볼링거 밴드 또는 켈트너 채널) 와 함께 가격 움직임을 분석합니다. 핵심 강점은 신호 신뢰성과 정확성을 향상시키기 위한 다중 요인 접근 방식에 있습니다.
이 전략은 세 가지 핵심 요소를 기반으로 거래 신호를 생성합니다.
트레이드 신호는 설정된 조건이 충족될 때 트리거링 신호를 발사한다. 시스템은 삼각형 마커를 그래프화하고 바 확인 후 대응하는 롱/쇼트 포지션을 실행한다. 전략은 포지션 사이징에 대한 계좌 자본의 80%를 사용하고 0.01%의 거래 수수료를 요한다.
다중 요인 역동 트렌드 거래 전략은 가격 패턴, 볼륨 변화 및 채널 브레이크오웃의 포괄적 인 분석을 통해 역동 거래에 체계적인 접근 방식을 제공합니다. 전략은 유연한 구성과 다차원 신호 확인에서 탁월하지만 시장 환경 적응과 위험 통제에주의를 기울여야합니다. 제안된 최적화 방향은 실시간 거래 성과에 대한 잠재적 인 개선점을 제공합니다.
/*backtest start: 2024-12-03 00:00:00 end: 2024-12-10 00:00:00 period: 10m basePeriod: 10m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy(title="The Bar Counter Trend Reversal Strategy [TradeDots]", overlay=true, initial_capital = 10000, default_qty_type = strategy.percent_of_equity, default_qty_value = 80, commission_type = strategy.commission.percent, commission_value = 0.01) // Initialize variables var bool rise_triangle_ready = false var bool fall_triangle_ready = false var bool rise_triangle_plotted = false var bool fall_triangle_plotted = false //Strategy condition setup noOfRises = input.int(3, "No. of Rises", minval=1, group="STRATEGY") noOfFalls = input.int(3, "No. of Falls", minval=1, group="STRATEGY") volume_confirm = input.bool(false, "Volume Confirmation", group="STRATEGY") channel_confirm = input.bool(true, "", inline="CHANNEL", group="STRATEGY") channel_type = input.string("KC", "", inline="CHANNEL", options=["BB", "KC"],group="STRATEGY") channel_source = input(close, "", inline="CHANNEL", group="STRATEGY") channel_length = input.int(20, "", inline="CHANNEL", minval=1,group="STRATEGY") channel_mult = input.int(2, "", inline="CHANNEL", minval=1,group="STRATEGY") //Get channel line information [_, upper, lower] = if channel_type == "KC" ta.kc(channel_source, channel_length,channel_mult) else ta.bb(channel_source, channel_length,channel_mult) //Entry Condition Check if channel_confirm and volume_confirm rise_triangle_ready := ta.falling(close, noOfFalls) and ta.rising(volume, noOfFalls) and high > upper fall_triangle_ready := ta.rising(close, noOfRises) and ta.rising(volume, noOfRises) and low < lower else if channel_confirm rise_triangle_ready := ta.falling(close, noOfFalls) and low < lower fall_triangle_ready := ta.rising(close, noOfRises) and high > upper else if volume_confirm rise_triangle_ready := ta.falling(close, noOfFalls) and ta.rising(volume, noOfFalls) fall_triangle_ready := ta.rising(close, noOfRises) and ta.rising(volume, noOfRises) else rise_triangle_ready := ta.falling(close, noOfFalls) fall_triangle_ready := ta.rising(close, noOfRises) // Check if trend is reversed if close > close[1] rise_triangle_plotted := false // Reset triangle plotted flag if close < close[1] fall_triangle_plotted := false //Wait for bar close and enter trades if barstate.isconfirmed // Plot triangle when ready and counts exceed threshold if rise_triangle_ready and not rise_triangle_plotted label.new(bar_index, low, yloc = yloc.belowbar, style=label.style_triangleup, color=color.new(#9CFF87,10)) strategy.entry("Long", strategy.long) rise_triangle_plotted := true rise_triangle_ready := false // Prevent plotting again until reset if fall_triangle_ready and not fall_triangle_plotted label.new(bar_index, low, yloc = yloc.abovebar, style=label.style_triangledown, color=color.new(#F9396A,10)) strategy.entry("Short", strategy.short) fall_triangle_plotted := true fall_triangle_ready := false // plot channel bands plot(upper, color = color.new(#56CBF9, 70), linewidth = 3, title = "Upper Channel Line") plot(lower, color = color.new(#56CBF9, 70), linewidth = 3, title = "Lower Channel Line")