역동적인 재입구 구매 전용 전략

저자:차오장, 날짜: 2023-12-19 13:56:55
태그:

img

전반적인 설명

이 전략은 이동 평균 크로스오버와 주간 상품 채널 지표 (CCI) 또는 주간 평균 방향 지표 (ADX) 를 기반으로 구매 신호를 생성하는 구매 전용 거래 시스템입니다. 빠른 이동 평균이 느린 이동 평균을 넘어서고 주간 CCI 및 / 또는 주간 ADX가 지정된 조건을 충족하면 구매 신호를 생성합니다.

이 전략은 또한 동적인 재입구를 허용하며, 이는 가격이 출구 후 세 개의 이동 평균보다 높으면 새로운 긴 포지션을 열 수 있음을 의미합니다. 그러나 이 전략은 가격이 세 번째 이동 평균 이하로 닫히면 긴 포지션을 종료합니다.

전략 원칙

스크립트는 구매 신호를 생성하는 조건을 정의합니다. 유효한 구매 신호에 대한 두 가지 조건을 확인합니다.

  • 빠른 이동 평균은 느린 이동 평균을 넘습니다.
  • 사용자는 주간 CCI 또는 주간 ADX를 사용하여 거래를 필터링할 수 있습니다.

동적 재입구:만약 활동적인 긴 포지션이 없다면 그리고 가격이 세 개의 이동 평균보다 높다면 새로운 긴 포지션이 열립니다.

출구 조건:닫기 가격이 세 번째 이동 평균 이하로 떨어지면, 스크립트는 긴 포지션을 닫습니다.

이점 분석

이 전략의 장점은 다음과 같습니다.

  1. 신호를 필터링하기 위해 여러 가지 기술 지표를 사용하면 잘못된 신호가 감소합니다.
  2. 동적 재입구 메커니즘은 트렌드를 최대한 포착합니다.
  3. 길게만 하는 것 은 단축 의 위험 을 피 합니다

위험 분석

이 전략의 위험은 다음과 같습니다.

  1. 윙사 (Whipsaws) 의 위험이 있습니다.
  2. 장시간 대기 시간이 너무 길어서 정차가 필요할 수 있습니다.
  3. 열악한 매개 변수 설정은 너무 빈번한 거래로 이어질 수 있습니다.

해결책:

  1. 더 나은 매개 변수 조합과 지표 조합을 사용하여
  2. 합리적인 스톱 손실을 설정
  3. 안정성을 보장하기 위해 매개 변수를 조정

최적화 방향

이 전략은 다음과 같이 최적화 될 수 있습니다.

  1. 더 나은 입시 시기를 찾기 위해 더 많은 기술 지표 조합을 테스트합니다.
  2. 가장 좋은 매개 변수 조합을 찾기 위해 매개 변수를 최적화
  3. 단일 손실을 제어하기 위해 스톱 손실 메커니즘을 추가합니다.
  4. 시장 조건에 따라 포지션 크기를 늘리거나 줄이는 추가

요약

이 역동적인 재입구 구매 전용 전략은 출입 시기를 결정하기 위해 여러 기술적 지표를 통합하고 실시간 트렌드를 추적하기 위해 역동적인 재입구 디자인을 채택합니다. 롱 전용으로 단축 위험을 피합니다. 매개 변수 최적화, 스톱 손실 및 포지션 사이징을 통해 이 전략은 과도한 수익을 캡처하면서 위험을 제어하기 위해 실시간 거래에서 구현 할 수 있습니다.


/*backtest
start: 2022-12-12 00:00:00
end: 2023-12-18 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Buy Only Strategy with Dynamic Re-Entry and Exit", overlay=true)

// Input Parameters
fast_length = input(20, title="Fast Moving Average Length")
slow_length = input(30, title="Slow Moving Average Length")
third_ma_length = input(100, title="Third Moving Average Length")
cci_period = input(14, title="CCI Period for Weekly CCI")
use_cci = input(true, title="Use CCI for Entry")
use_adx = input(true, title="Use ADX for Entry")
adx_length = input(14, title="ADX Length")
adx_threshold = input(25, title="ADX Threshold")

// Calculate Moving Averages
fast_ma = ta.sma(close, fast_length)
slow_ma = ta.sma(close, slow_length)
third_ma = ta.sma(close, third_ma_length)

// Weekly Commodity Channel Index (CCI) with user-defined period
weekly_cci = request.security(syminfo.tickerid, "W", ta.cci(close,  cci_period))

// Weekly Average Directional Index (ADX)
dirmov = hlc3
plus = ta.change(dirmov) > 0 ? ta.change(dirmov) : 0
minus = ta.change(dirmov) < 0 ? -ta.change(dirmov) : 0
trur = ta.rma(ta.tr, adx_length)
plusDI = ta.rma(plus, adx_length) / trur * 100
minusDI = ta.rma(minus, adx_length) / trur * 100
sum = plusDI + minusDI
DX = sum == 0 ? 0 : math.abs(plusDI - minusDI) / sum * 100
ADX = ta.rma(DX, adx_length)

// Entry Conditions (Buy Only and Weekly CCI > 100 and/or Weekly ADX > 25)
cci_condition = use_cci ? (weekly_cci > 100) : false
adx_condition = use_adx ? (ADX > adx_threshold) : false
long_condition = ta.crossover(fast_ma, slow_ma) and (cci_condition or adx_condition)

// Exit Condition and Dynamic Re-Entry
exit_condition = close < third_ma
re_entry_condition = close > fast_ma and close > slow_ma and close > third_ma and weekly_cci > 100

// Entry and Exit Signals
strategy.entry("Long", strategy.long, when=long_condition)
strategy.close("Long", when=exit_condition)

// Dynamic Re-Entry and Exit
if strategy.position_size == 0 and re_entry_condition
    strategy.entry("Long", strategy.long)

if strategy.position_size > 0 and close < third_ma
    strategy.close("Long")

// Plot Weekly CCI and ADX for reference
plot(weekly_cci, title="Weekly CCI", color=color.orange)
plot(ADX, title="Weekly ADX", color=color.blue)


더 많은