이중 이동 평균 ADX 타이밍 전략은 2/20 이동 평균과 ADXR 지표를 결합하여 트렌드의 시작에서 거래 신호를 생성하여 트렌드를 식별합니다. 먼저 2/20 지수 이동 평균을 사용하여 가격 트렌드 방향을 결정하고 ADXR 지표와 결합하여 트렌드 신호를 확인하여 더 신뢰할 수있는 거래 신호를 생성합니다.
이중 이동 평균 ADX 타이밍 전략의 핵심 논리는 다음과 같은 주요 구성 요소에 기반합니다.
2/20 기하급수적 이동 평균 (EMA)
ADXR 표시기
거래 신호
이 전략의 주요 혁신은 ADXR 지표를 사용하여 초기 단계에서 경향을 파악하고, 품질과 안정성을 향상시키기 위해 전통적인 이동 평균 신호와 결합하는 것입니다.
이중 이동 평균 ADX 타이밍 전략의 주요 장점:
이 전략에는 몇 가지 주요 위험이 있습니다.
ADXR 매개 변수를 잘못 설정하면 거래가 빠질 수 있습니다.
특별한 시장 조건에서 더 많은 잘못된 신호가 발생할 수 있습니다.
고정된 EMA 매개 변수는 시장 변화에 적응하지 못합니다.
거래 범위를 파악할 수 없는 경우, 지나치게 비중이 없는 거래가 발생할 수 있습니다.
이 전략은 다음과 같은 측면에서 더 이상 최적화되고 향상될 수 있습니다.
시장 조건에 자동 적응을 위해 EMA 파라미터 최적화
더 효과적인 거래 신호를 캡처하기 위해 ADXR 매개 변수 범위를 확장하십시오.
품질을 향상시키기 위해 조합 신호에 대한 추가 트렌드 판단 지표를 추가합니다.
스톱 로스 전략을 추가하고 수익 기준을 취하여 거래 리스크를 제어합니다.
계좌 상태에 따라 역동적인 포지션 크기를 위해 자금 관리를 최적화합니다.
이중 이동 평균 ADX 타이밍 전략은 전통적인 이중 이동 평균과 ADXR 지표를 혁신적으로 결합하여 신호 품질을 향상시키고 안정성을 향상시킵니다. 이 전략은 괜찮은 역사적 성능을 가진 트렌드의 초기 단계를 효과적으로 식별 할 수 있습니다. 이 전략은 더 복잡한 시장에서 견고하고 수익성있게 만들기 위해 최적화 할 수있는 충분한 공간이 있습니다.
/*backtest start: 2023-11-05 00:00:00 end: 2023-12-05 00:00:00 period: 2h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 //////////////////////////////////////////////////////////// // Copyright by HPotter v1.0 04/04/2022 // This is combo strategies for get a cumulative signal. // // First strategy // This indicator plots 2/20 exponential moving average. For the Mov // Avg X 2/20 Indicator, the EMA bar will be painted when the Alert criteria is met. // // Second strategy // The Average Directional Movement Index Rating (ADXR) measures the strength // of the Average Directional Movement Index (ADX). It's calculated by taking // the average of the current ADX and the ADX from one time period before // (time periods can vary, but the most typical period used is 14 days). // Like the ADX, the ADXR ranges from values of 0 to 100 and reflects strengthening // and weakening trends. However, because it represents an average of ADX, values // don't fluctuate as dramatically and some analysts believe the indicator helps // better display trends in volatile markets. // // // WARNING: // - For purpose educate only // - This script to change bars colors. //////////////////////////////////////////////////////////// EMA20(Length) => pos = 0.0 xPrice = close xXA = ta.ema(xPrice, Length) nHH = math.max(high, high[1]) nLL = math.min(low, low[1]) nXS = nLL > xXA or nHH < xXA ? nLL : nHH iff_1 = nXS < close[1] ? 1 : nz(pos[1], 0) pos := nXS > close[1] ? -1 : iff_1 pos fADX(Len) => up = ta.change(high) down = -ta.change(low) trur = ta.rma(ta.tr, Len) plus = fixnan(100 * ta.rma(up > down and up > 0 ? up : 0, Len) / trur) minus = fixnan(100 * ta.rma(down > up and down > 0 ? down : 0, Len) / trur) sum = plus + minus 100 * ta.rma(math.abs(plus - minus) / (sum == 0 ? 1 : sum), Len) ADXR(LengthADX,LengthADXR,Signal1,Signal2) => pos = 0.0 xADX = fADX(LengthADX) xADXR = (xADX + xADX[LengthADXR]) / 2 pos := xADXR < Signal1 ? 1 : xADXR > Signal2 ? -1 : nz(pos[1], 0) pos strategy(title='Combo 2/20 EMA & ADXR', shorttitle='Combo', overlay=true) var I1 = '●═════ 2/20 EMA ═════●' Length = input.int(14, minval=1, group=I1) var I2 = '●═════ ADXR ═════●' LengthADX = input(title="Length ADX", defval=14) LengthADXR = input(title="Length ADXR", defval=14) Signal1 = input.float(13, step=0.01) Signal2 = input.float(45, step=0.01) var misc = '●═════ MISC ═════●' reverse = input.bool(false, title='Trade reverse', group=misc) var timePeriodHeader = '●═════ Time Start ═════●' d = input.int(1, title='From Day', minval=1, maxval=31, group=timePeriodHeader) m = input.int(1, title='From Month', minval=1, maxval=12, group=timePeriodHeader) y = input.int(2005, title='From Year', minval=0, group=timePeriodHeader) StartTrade = time > timestamp(y, m, d, 00, 00) ? true : false posEMA20 = EMA20(Length) prePosADXR = ADXR(LengthADX,LengthADXR,Signal1,Signal2) iff_1 = posEMA20 == -1 and prePosADXR == -1 and StartTrade ? -1 : 0 pos = posEMA20 == 1 and prePosADXR == 1 and StartTrade ? 1 : iff_1 iff_2 = reverse and pos == -1 ? 1 : pos possig = reverse and pos == 1 ? -1 : iff_2 if possig == 1 strategy.entry('Long', strategy.long) if possig == -1 strategy.entry('Short', strategy.short) if possig == 0 strategy.close_all() barcolor(possig == -1 ? #b50404 : possig == 1 ? #079605 : #0536b3)