Cette stratégie s'appelle
La stratégie se compose de deux parties:
Indicateur DEMA. Cet indicateur calcule les moyennes mobiles exponentielles de 20 jours et de 2 jours. Il génère des signaux de trading lorsque le prix franchit la ligne de 2 jours d'en haut ou la ligne de 20 jours d'en bas.
(Prix le plus élevé - Prix le plus bas) / Indice de volatilité des prix de clôture. Cet indice reflète la fourchette de fluctuation des prix au cours d'une période. Ici, nous calculons la moyenne mobile simple de 16 jours de l'indice de volatilité sur les 20 dernières barres. Lorsque la volatilité de la barre actuelle est supérieure ou inférieure à cette valeur moyenne, elle génère des signaux de trading.
Les signaux des deux parties sont combinés. Si le DEMA et l'indice de volatilité donnent des signaux en même temps, les ordres de négociation longs ou courts finaux seront générés.
La stratégie présente les avantages suivants:
La combinaison de plusieurs indicateurs peut réduire les faux signaux et améliorer la fiabilité du signal.
La ligne de 20 jours peut identifier efficacement les tendances à moyen et long terme, et la ligne de 2 jours peut capturer les fluctuations à court terme, ce qui rend la combinaison adaptable à différents environnements de marché.
L'indice de volatilité peut refléter efficacement la volatilité du marché et les opportunités de négociation.
En ajustant les paramètres, il peut s'adapter à différents produits et marchés cycliques.
La stratégie comporte également certains risques:
Dans les tendances à faible volatilité, l'indice de volatilité peut générer des signaux erronés.
Dans les marchés à sens unique rapides, les doubles EMA peuvent être en retard.
La complexité accrue des indicateurs multiples augmente également le risque de sur-optimisation.
La stratégie peut également être optimisée dans les aspects suivants:
L'ajout de mécanismes d'arrêt des pertes permet de contrôler efficacement les pertes par ordre.
Optimiser les paramètres pour différents produits et cycles afin d'améliorer l'adaptabilité.
Augmentation des indicateurs de liquidité et de volatilité pour améliorer la qualité des signaux.
Ajout d'algorithmes d'apprentissage automatique pour obtenir un paramètre dynamique et un réglage du poids.
En combinant des EMA doubles et des indices de volatilité, cette stratégie peut atteindre de bonnes performances commerciales sur les marchés à la fois tendance et volatil.
/*backtest start: 2023-11-17 00:00:00 end: 2023-12-17 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 //////////////////////////////////////////////////////////// // Copyright by HPotter v1.0 12/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 // This histogram displays (high-low)/close // Can be applied to any time frame. // // // 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 HLCH(input_barsback,input_percentorprice,input_smalength) => pos = 0.0 xPrice = (high-low)/close xPriceHL = (high-low) xPrice1 = input_percentorprice ? xPrice * 100: xPriceHL xPrice1SMA = ta.sma(math.abs(xPrice1), input_smalength) pos := xPrice1SMA[input_barsback] > math.abs(xPrice1) ? 1 : xPrice1SMA[input_barsback] < math.abs(xPrice1) ? -1 : nz(pos[1], 0) pos strategy(title='Combo 2/20 EMA & (H-L)/C Histogram', shorttitle='Combo', overlay=true) var I1 = '●═════ 2/20 EMA ═════●' Length = input.int(14, minval=1, group=I1) var I2 = '●═════ (H-L)/C Histogram ═════●' input_barsback = input(20, title="Look Back", group=I2) input_percentorprice = input(false, title="% change", group=I2) input_smalength = input(16, title="SMA Length", group=I2) 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) prePosHLCH = HLCH(input_barsback,input_percentorprice,input_smalength) iff_1 = posEMA20 == -1 and prePosHLCH == -1 and StartTrade ? -1 : 0 pos = posEMA20 == 1 and prePosHLCH == 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)