리소스 로딩... 로딩...

트렌드를 따르는 격차 브레이크오웃 거래 시스템

저자:차오장, 날짜: 2024-11-29 15:07:43
태그:GAPSMAMA

img

전반적인 설명

이것은 가격 격차와 이동 평균 필터링에 기반한 트렌드 추적 거래 시스템이다. 전략은 통계적으로 유의미한 가격 격차를 SMA 트렌드 필터와 결합하여 식별하여 트렌드 기회를 포착하고 명확한 시장 트렌드가 나타날 때 거래를 실행합니다. 핵심 개념은 가격 격차로 나타나는 공급과 수요 불균형으로 만들어진 트렌드 지속 기회를 활용하는 것입니다.

전략 원칙

이 전략은 몇 가지 핵심 요소에 기반합니다.

  1. 격차 식별 - 시스템은 개시 가격과 이전 종료 가격의 비율 차이를 계산하여 격차를 식별하며, 사소한 변동을 필터링하기 위한 최소 격차 문턱을 설정합니다.
  2. 방향 선택 - 사용자가 시장 조건에 적응할 수 있도록 여러 간격 거래 모드 (올림 간격, 하락 간격 등) 를 제공합니다.
  3. SMA 트렌드 필터링 - 일반적인 트렌드를 결정하기 위해 간단한 이동 평균을 사용합니다. 가격이 트렌드 방향과 일치 할 때만 포지션을 입력합니다.
  4. 포지션 관리 - 포지션 관리 및 위험 통제를 위해 미리 설정된 보유 기간을 사용합니다.

전략적 장점

  1. 명확한 신호 - 간격 신호는 시각적으로 구별되고 식별하고 실행하기가 쉽습니다.
  2. 통제된 위험 - 최소 격차 문턱 및 고정 보유 기간은 위험을 효과적으로 관리합니다.
  3. 높은 유연성 - 시장 조건에 따라 다른 격차 거래 방향을 선택할 수 있습니다.
  4. 트렌드 확인 - SMA 필터는 추가 트렌드 확인을 제공하여 성공률을 향상시킵니다.
  5. 높은 자동화 - 명확한 전략 논리는 자동화된 거래 구현을 촉진합니다.

전략 위험

  1. 거짓 진출 위험 - 빈틈이 빠르게 채워져 잘못된 신호가 발생할 수 있습니다.
  2. 미끄러짐 위험 - 미끄러짐이 발생할 수 있습니다.
  3. 트렌드 반전 위험 - 고정 보유 기간은 트렌드 반전을 놓칠 수 있습니다.
  4. 시장 환경 의존성 - 낮은 변동성 시장에서 덜 효과적인 신호.

전략 최적화 방향

  1. 동적 보유 기간 - 시장 변동성에 따라 보유 시간을 조정합니다.
  2. 복수 확인 - 신호 확인을 위해 볼륨 및 변동성 지표를 포함합니다.
  3. 스톱 로스 최적화 - 트레일링 스톱 또는 변동성 기반 스톱을 추가합니다.
  4. 신호 등급 - 격차 크기에 기초한 단계별 위치 크기를 설계합니다.
  5. 시장 선택 - 선택적 거래를 위한 시장 조건 식별 메커니즘 개발.

요약

이 전략은 가격 격차와 이동 평균 트렌드 필터링을 결합하여 명확한 논리와 제어 된 위험을 가진 거래 시스템을 만듭니다. 적절한 매개 변수 설정과 지속적인 최적화를 통해 전략은 트렌딩 시장에서 안정적인 수익을 얻을 수 있습니다. 거래자는 라이브 구현 전에 철저한 역사적 테스트를 수행하고 특정 시장 특성에 따라 최적화 할 것을 권장합니다.


/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-27 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Simplified Gap Strategy with SMA Filter", overlay=true)

// Input fields for user control
long_gap_threshold = input.float(0.1, title="Gap Threshold (%)", minval=0.01, step=0.01)  // Minimum percentage for gaps
hold_duration = input.int(10, title="Hold Duration (bars)", minval=1)  // Duration to hold the position
gap_trade_option = input.string("Long Up Gap", title="Select Trade Option", options=["Long Up Gap", "Short Down Gap", "Short Up Gap", "Long Down Gap"])  // Combined option
use_sma_filter = input.bool(false, title="Use SMA Filter")  // Checkbox to activate SMA filter
sma_length = input.int(200, title="SMA Length", minval=1)  // Length of the SMA

// RGB color definitions for background
color_up_gap = color.new(color.green, 50)    // Green background for up gaps
color_down_gap = color.new(color.red, 50)    // Red background for down gaps

// Gap size calculation in percentage terms
gap_size = (open - close[1]) / close[1] * 100  // Gap size in percentage

// Calculate gaps based on threshold input
up_gap = open > close[1] and gap_size >= long_gap_threshold  // Long gap condition
down_gap = open < close[1] and math.abs(gap_size) >= long_gap_threshold  // Short gap condition

// Calculate the SMA
sma_value = ta.sma(close, sma_length)

// Define the trading logic based on selected option and SMA filter
if (gap_trade_option == "Long Up Gap" and up_gap and (not use_sma_filter or close > sma_value))
    strategy.entry("Long", strategy.long)
if (gap_trade_option == "Short Down Gap" and down_gap and (not use_sma_filter or close < sma_value))
    strategy.entry("Short", strategy.short)
if (gap_trade_option == "Short Up Gap" and up_gap and (not use_sma_filter or close < sma_value))
    strategy.entry("Short", strategy.short)
if (gap_trade_option == "Long Down Gap" and down_gap and (not use_sma_filter or close > sma_value))
    strategy.entry("Long", strategy.long)

// Exit position after the hold duration
if (strategy.opentrades > 0)
    if (bar_index - strategy.opentrades.entry_bar_index(0) >= hold_duration)
        strategy.close("Long")
        strategy.close("Short")

// Background coloring to highlight gaps on the chart
bgcolor((gap_trade_option == "Long Up Gap" and up_gap) ? color_up_gap : na, title="Up Gap Background")
bgcolor((gap_trade_option == "Short Down Gap" and down_gap) ? color_down_gap : na, title="Down Gap Background")
bgcolor((gap_trade_option == "Short Up Gap" and up_gap) ? color_down_gap : na, title="Short Up Gap Background")
bgcolor((gap_trade_option == "Long Down Gap" and down_gap) ? color_up_gap : na, title="Long Down Gap Background")

// Plot the SMA for visualization
plot(use_sma_filter ? sma_value : na, color=color.white, title="SMA", linewidth=1)


관련

더 많은