La stratégie de synchronisation de la moyenne mobile ADX identifie les tendances en combinant les moyennes mobiles 2/20 et l'indicateur ADXR pour générer des signaux de trading au début des tendances.
La logique de base de la stratégie de chronométrage des doubles moyennes mobiles ADX repose sur les principales composantes suivantes:
2/20 Moyenne mobile exponentielle (EMA)
Indicateur ADXR
Signaux de négociation
L'innovation principale de cette stratégie consiste à utiliser l'indicateur ADXR pour identifier les tendances à un stade initial, et à le combiner avec les signaux de moyenne mobile traditionnels pour améliorer la qualité et la stabilité.
Les principaux avantages de la stratégie de synchronisation ADX des moyennes mobiles doubles:
Il existe également plusieurs risques principaux pour cette stratégie:
Un paramètre ADXR mal réglé peut entraîner des transactions manquantes.
Des signaux plus erronés peuvent se produire dans des conditions particulières du marché.
Les paramètres fixes de l'EMA ne s'adaptent pas aux changements du marché.
L'impossibilité d'identifier les plages de négociation peut générer des transactions trop insignifiantes.
La stratégie peut être encore optimisée et améliorée par les aspects suivants:
Optimisation des paramètres EMA pour une adaptation automatique aux conditions du marché.
Élargir la plage de paramètres ADXR pour capturer des signaux de trading plus efficaces.
Ajouter des indicateurs de jugement de tendance supplémentaires pour les signaux combinés pour améliorer la qualité.
Ajouter des stratégies de stop loss et prendre des normes de profit pour contrôler les risques par transaction.
Optimiser la gestion de l'argent pour une dimensionnement dynamique des positions en fonction de l'état du compte.
La stratégie de chronométrage de la moyenne mobile ADX double combine de manière innovante les moyennes mobiles doubles traditionnelles et l'indicateur ADXR pour améliorer la qualité du signal et améliorer la stabilité.
/*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)