
이 전략은 SSL 통로 지표에 기반한 피드백 전략이며, ATR 중지, ATR 중지 및 자금 관리와 같은 기능을 결합하여 SSL 통로 전략의 효과를 더 포괄적으로 테스트 할 수 있습니다.
SSL 통로 지표는 통로 중선과 통로 띠로 구성된다. 통로 중선은 간단한 이동 평균으로, 상반도와 하반도로 나뉘어, 일반적으로 고점 기간의 간단한 이동 평균을 상반도로, 저점 기간의 간단한 이동 평균을 하반도로 취한다. 통로 띠는 상반도와 하반도 사이의 영역으로 구성된다.
가격이 통로 상궤도에 가까워지면 과매매로 간주하고, 가격이 통로 하궤도에 가까워지면 과매매로 간주한다. 가격이 통로 대역을 뚫을 때, 트렌드 전환을 나타내는 신호이다.
이 정책의 SSL 통로 지표 매개 변수는ssl_period=16。
ATR은 평균 실제 파장을 나타냅니다. 그것은 시장의 변동성을 평가하고 스톱 스톱 위치를 결정하는 데 사용할 수 있습니다.
이 정책은 arguments를 사용합니다.atr_period=14ATR 지수와 함께atr_stop_factor=1.5그리고atr_target_factor=1.0스톱 로즈와 스톱 스톱의 동적 배수로, 시장의 변동성에 기반한 스톱 스톱 스톱을 구현한다.
또한, 이 전략은 다양한 품종에 적응하기 위해 추가되었습니다.two_digit2비트 정확도의 품종 (금, 일본화) 을 기준으로 판단하여 스톱로스 스톱을 유연하게 조정할 수 있다.
자금 관리는 주로 매개 변수를 통해 이루어집니다.position_size(지속상장) 및risk(비율 리스크 ) 실현.use_mm=true이 모듈은 자금 관리 모듈을 활성화합니다.
자금 관리의 주요 목표는 각 포지션의 포지션 크기를 제어하는 것입니다. 고정 비율 위험 모드를 사용하면 계정 적당금에 따라 위험을 계산한 후 계약 수로 변환하여 단독 손실을 억제하는 효과를 얻을 수 있습니다.
이러한 위험은 다음과 같은 방법으로 개선될 수 있습니다.
이 전략은 다음과 같은 부분에서 최적화될 수 있습니다.
시스템 테스트와 최적화를 통해 이 전략은 신뢰할 수 있고 안정적인 양적 거래 시스템으로 발전할 수 있다.
이 정책은 SSL 통로 지표 판단 트렌드, ATR 설정 스톱 로즈 스 및 재원 관리 제어 위험 세 가지 메커니즘을 통합한다. 종합적인 피드백을 통해 이 정책의 효과를 검사할 수 있으며, 정량 거래 전략을 최적화하는 기본 프레임 워크로 사용할 수 있다. 동시에, 이 정책에는 다른 필터 지표, 최적화 매개 변수 및 확장 기능 등을 추가하는 등의 개선할 수 있는 공간도 있다.
/*backtest
start: 2023-10-23 00:00:00
end: 2023-11-22 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © comiclysm
//@version=4
strategy("SSL Backtester", overlay=false)
//--This strategy will simply test the effectiveness of the SSL using
//--money management and an ATR-derived stop loss
//--USER INPUTS
two_digit = input(false, "Check this for 2-digit pairs (JPY, Gold, Etc)")
ssl_period = input(16, "SSL Period")
atr_period = input(14, "ATR Period")
atr_stop_factor = input(1.5, "ATR Stop Loss Factor")
atr_target_factor = input(1.0, "ATR Target Factor")
use_mm = input(true, "Check this to use Money Management")
position_size = input(1000, "Position size (for Fixed Risk)")
risk = input(0.01, "Risk % in Decimal Form")
//--INDICATORS------------------------------------------------------------
//--SSL
sma_high = sma(high, ssl_period)
sma_low = sma(low, ssl_period)
ssl_value = 0
ssl_value := close > sma_high ? 1 : close < sma_low ? -1 : ssl_value[1]
ssl_low = ssl_value < 0 ? sma_high : sma_low
ssl_high = ssl_value < 0 ? sma_low : sma_high
//--Average True Range
atr = atr(atr_period)
//--TRADE LOGIC----------------------------------------------------------
signal_long = ssl_value > 0 and ssl_value[1] < 0
signal_short = ssl_value < 0 and ssl_value[1] > 0
//--RISK MANAGMENT-------------------------------------------------------
strategy.initial_capital = 50000
balance = strategy.netprofit + strategy.initial_capital
risk_pips = atr*10000*atr_stop_factor
if(two_digit)
risk_pips := risk_pips / 100
risk_in_value = balance * risk
point_value = syminfo.pointvalue
risk_lots = risk_in_value / point_value / risk_pips
final_risk = use_mm ? risk_lots * 10000 : position_size
//--TRADE EXECUTION-----------------------------------------------------
if (signal_long)
stop_loss = close - atr * atr_stop_factor
target = close + atr * atr_target_factor
strategy.entry("Long", strategy.long, final_risk)
strategy.exit("X", "Long", stop=stop_loss, limit=target)
if (signal_short)
stop_loss = close + atr * atr_stop_factor
target = close - atr * atr_target_factor
strategy.entry("Short", strategy.short, final_risk)
strategy.exit("X", "Short", stop=stop_loss, limit=target)
//--PLOTTING-----------------------------------------------------------
plot(ssl_low, "SSL", color.red, linewidth=1)
plot(ssl_high, "SSL", color.lime, linewidth=1)