이 전략은 이동 평균 크로스오버와 주간 상품 채널 지표 (CCI) 또는 주간 평균 방향 지표 (ADX) 를 기반으로 구매 신호를 생성하는 구매 전용 거래 시스템입니다. 빠른 이동 평균이 느린 이동 평균을 넘어서고 주간 CCI 및 / 또는 주간 ADX가 지정된 조건을 충족하면 구매 신호를 생성합니다.
이 전략은 또한 동적인 재입구를 허용하며, 이는 가격이 출구 후 세 개의 이동 평균보다 높으면 새로운 긴 포지션을 열 수 있음을 의미합니다. 그러나 이 전략은 가격이 세 번째 이동 평균 이하로 닫히면 긴 포지션을 종료합니다.
스크립트는 구매 신호를 생성하는 조건을 정의합니다. 유효한 구매 신호에 대한 두 가지 조건을 확인합니다.
동적 재입구:만약 활동적인 긴 포지션이 없다면 그리고 가격이 세 개의 이동 평균보다 높다면 새로운 긴 포지션이 열립니다.
출구 조건:닫기 가격이 세 번째 이동 평균 이하로 떨어지면, 스크립트는 긴 포지션을 닫습니다.
이 전략의 장점은 다음과 같습니다.
이 전략의 위험은 다음과 같습니다.
해결책:
이 전략은 다음과 같이 최적화 될 수 있습니다.
이 역동적인 재입구 구매 전용 전략은 출입 시기를 결정하기 위해 여러 기술적 지표를 통합하고 실시간 트렌드를 추적하기 위해 역동적인 재입구 디자인을 채택합니다. 롱 전용으로 단축 위험을 피합니다. 매개 변수 최적화, 스톱 손실 및 포지션 사이징을 통해 이 전략은 과도한 수익을 캡처하면서 위험을 제어하기 위해 실시간 거래에서 구현 할 수 있습니다.
/*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)