SSL 채널 백테스터 전략 ATR 및 돈 관리

저자:차오장, 날짜: 2023-11-23 10:26:58
태그:

img

전반적인 설명

이것은 SSL 채널 지표에 기반을 둔 백테스팅 전략이며, SSL 채널 전략에 대한 보다 포괄적 인 테스트를 촉진하기 위해 ATR 스톱 로스, ATR 영업 수익 및 돈 관리와 같은 기능과 통합됩니다.

전략 논리

SSL 채널 표시기

SSL 채널 지표는 채널 중선과 채널 대역으로 구성됩니다. 채널 중선은 상위 트랙과 하위 트랙을 포함하며, 일반적으로 룩백 기간 동안 높은 가격과 낮은 가격의 간단한 이동 평균입니다. 채널 대역은 상위 트랙과 하위 트랙 사이에 형성됩니다.

가격 이 상위 범위에 접근 할 때, 그것은 과잉 구매 상태를 나타냅니다. 가격이 하위 범위에 접근 할 때, 그것은 과잉 판매 상태를 신호합니다. 채널 범위를 깨는 것은 트렌드 반전을 의미합니다.

SSL 채널 매개 변수는ssl_period=16이 전략에서.

ATR 스톱 손실/이익 취득

평균 실제 범위 (ATR) 는 시장의 변동성을 측정하고 스톱 로스 및 수익 수준을 결정하는 데 사용할 수 있습니다.

이 전략은 14주기 ATR (atr_period=14) 및 동적 곱셈atr_stop_factor=1.5그리고atr_target_factor=1.0변동성 기준으로 적응식 스톱 로스를 설정하고 수익을 취합니다.

또한 기기의 2초 정밀도를 확인합니다 (two_digit금과 JPY와 같은 쌍에 대한 정지 및 목표를 적절히 조정합니다.

돈 관리

자금관리는position_size(결정 위치 크기) 및risk(거래당 위험 비율) 매개 변수.use_mm=true.

목표는 각 거래에 대한 최적의 위치 크기를 결정하는 것입니다. 거래 당 고정 리스크 %를 사용하여 허용 된 위치 크기는 각 거래에서 손실을 제한하기 위해 계정 자본을 기반으로 동적으로 계산됩니다.

이점 분석

  • SSL 채널은 트렌드 반전 신호를 캡처하는 데 효과적입니다.
  • ATR 기반의 정지는 변동성에 따라 자동으로 조정됩니다.
  • 돈 관리 는 모든 직업 에서 위험 을 통제 하는 데 도움 이 된다

위험 분석

  • SSL 채널 신호는 완전히 신뢰할 수 없으며 잘못된 신호가 발생할 수 있습니다.
  • ATR 스톱은 너무 넓거나 너무 좁을 수 있습니다.
  • 부적절 한 자금 관리 설정 은 과대 규모 의 위치 또는 저효율성 으로 이어질 수 있다

이러한 위험은 다음과 같이 완화 될 수 있습니다.

  1. 신호를 확인하고 잘못된 항목을 피하기 위해 필터를 추가합니다
  2. 최적의 스톱 로스/프로프트 취득 수준을 위한 ATR 기간 매개 변수 조정
  3. 이상적인 포지션 크기를 위해 다른 돈 관리 매개 변수를 테스트

최적화 방향

이 전략은 다음과 같은 측면에서 개선될 수 있습니다.

  1. 최고의 성능을 위해 SSL 채널 매개 변수를 최적화
  2. ATR 정지 메커니즘을 강화하거나 교체
  3. 불필요한 거래를 피하기 위해 필터링 지표를 추가합니다.
  4. 리스크 조정 수익을 극대화하기 위해 포지션 크기를 포함
  5. 각기 다른 악기의 미세 조정 매개 변수
  6. 보다 포괄적 인 테스트를위한 수치 도구 추가

체계적인 최적화로 이 전략은 강력한 알고리즘 거래 시스템으로 변할 수 있습니다.

결론

이 전략은 트렌드를 위한 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)


더 많은