이 전략은 Z 스코어 통계 방법, 상대적 강도 지수 (RSI) 및 슈퍼 트렌드 지표를 결합한 양적 거래 시스템이다. 이 전략은 통계적 가격 오차를 모니터링하고, 동력 지표와 트렌드 확인을 결합하여 시장에서 높은 확률의 거래 기회를 식별합니다. 이 전략은 시장 과잉 구매 및 과잉 판매 기회를 포착 할뿐만 아니라 트렌드 확인을 통해 잘못된 신호를 필터링하여 양방향 거래를 가능하게합니다.
전략의 핵심 논리는 세 가지 주요 기술 지표의 시너지에 기반합니다. 첫째, 75 기간 이동 평균과 표준 편차를 사용하여 현재 가격의 역사적 평균에서 벗어나는 지점을 측정하기 위해 가격의 Z 점수를 계산합니다. Z 점수가 1.1를 초과하거나 -1.1 이하로 떨어지면 중요한 통계적 편차를 나타냅니다. 둘째, RSI 지표는 모멘텀 확인으로 도입되며, RSI가 방향과 일치하도록 요구합니다 (RSI>60 긴 포지션, RSI<40 짧은 포지션). 마지막으로, 슈퍼 트렌드 지표는 11 기간 ATR 및 2.0의 곱셈 인자에 기초하여 계산되는 트렌드 필터로 사용됩니다. 세 가지 조건이 동시에 충족 될 때만 거래 신호가 생성됩니다.
이 전략은 통계적 방법과 기술적 분석을 결합하여 거래 신뢰성을 향상시키기 위해 여러 신호 확인을 사용하여 통상적 전략입니다. 전략의 핵심 장점은 객관적 인 수학적 모델과 포괄적인 위험 관리 메커니즘에 있으며 매개 변수 최적화 및 시장 적응성에주의를 기울여야합니다. 제안 된 최적화 방향을 통해 특히 시장 환경에 동적으로 적응하고 위험을 제어하는 데 추가 개선의 여지가 있습니다. 이 전략은 높은 변동성과 명확한 추세를 가진 시장에 적합하며 안정적인 수익을 추구하는 양적 거래자에게 가치가있는 고려 사항입니다.
/*backtest start: 2024-01-01 00:00:00 end: 2024-11-26 00:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Z-Score Long and Short Strategy with Supertrend", overlay=true) // Inputs for Z-Score len = input.int(75, "Z-Score Lookback Length") z_long_threshold = 1.1 // Threshold for Z-Score to open long z_short_threshold = -1.1 // Threshold for Z-Score to open short // Z-Score Calculation z = (close - ta.sma(close, len)) / ta.stdev(close, len) // Calculate Driver RSI driver_rsi_length = input.int(14, "Driver RSI Length") // Input for RSI Length driver_rsi = ta.rsi(close, driver_rsi_length) // Calculate the RSI // Supertrend Parameters atrPeriod = input.int(11, "ATR Length", minval=1) factor = input.float(2.0, "Factor", minval=0.01, step=0.01) // Supertrend Calculation [supertrend, direction] = ta.supertrend(factor, atrPeriod) // Conditions for Long and Short based on Z-Score z_exceeds_long = z >= z_long_threshold and driver_rsi > 60 z_exceeds_short = z <= z_short_threshold and driver_rsi < 40 // Entry Conditions if (z_exceeds_long and direction < 0) // Enter Long if Z-Score exceeds threshold and Supertrend is down strategy.entry("Long", strategy.long) label.new(bar_index, low, text="Open Long", style=label.style_label_up, color=color.green, textcolor=color.white, size=size.small) alert("Open Long", alert.freq_once_per_bar) // Alert for Long entry if (z_exceeds_short and direction > 0) // Enter Short if Z-Score exceeds threshold and Supertrend is up strategy.entry("Short", strategy.short) label.new(bar_index, high, text="Open Short", style=label.style_label_down, color=color.red, textcolor=color.white, size=size.small) alert("Open Short", alert.freq_once_per_bar) // Alert for Short entry // Plot Supertrend upTrend = plot(direction < 0 ? supertrend : na, "Up Trend", color=color.green, style=plot.style_linebr) downTrend = plot(direction > 0 ? supertrend : na, "Down Trend", color=color.red, style=plot.style_linebr) fill(upTrend, downTrend, color=color.new(color.green, 90), fillgaps=false) // Alert conditions for Supertrend changes (optional) alertcondition(direction[1] > direction, title='Downtrend to Uptrend', message='The Supertrend value switched from Downtrend to Uptrend') alertcondition(direction[1] < direction, title='Uptrend to Downtrend', message='The Supertrend value switched from Uptrend to Downtrend')