Stratégie de suivi des tendances à double signal

Auteur:ChaoZhang est là., Date: 2023-11-02 17:02:06 Je vous en prie
Les étiquettes:

img

Résumé

Cette stratégie combine deux indicateurs EMA et Awesome Oscillator pour identifier et suivre les tendances.

La logique de la stratégie

Cette stratégie utilise principalement deux indicateurs techniques, double EMA et Awesome Oscillator, pour filtrer les signaux selon la logique suivante:

  1. Calculez l'EMA à 2 périodes et à 20 périodes. Lorsque l'EMA à 2 périodes rompt l'EMA à 20 périodes vers le haut, cela indique une tendance haussière. Lorsque l'EMA à 2 périodes rompt l'EMA à 20 périodes vers le bas, cela indique une tendance à la baisse.

  2. Calculez l'oscillateur impressionnant, qui est un histogramme MACD lissé par une EMA rapide moins une EMA lente.

  3. Ce n'est que lorsque l'EMA affiche une tendance haussière et que l'AO affiche un signal d'achat en même temps qu'un signal d'achat final est généré.

  4. Grâce à ce double mécanisme de filtrage des signaux, il est possible de réduire les fausses éruptions et de suivre les tendances à moyen terme.

Analyse des avantages

Les avantages de cette stratégie sont les suivants:

  1. Le double filtrage de ligne réduit les transactions bruyantes causées par des erreurs.

  2. L'EMA à deux périodes est très sensible aux écarts et peut rapidement déterminer si les tendances récentes ont changé.

  3. Awesome Oscillator filtre en outre le MACD pour identifier efficacement les fausses ruptures dans les tendances et éviter les transactions inversées inutiles.

  4. La stratégie a une orientation claire pour suivre les tendances à moyen terme: l'EMA détermine la tendance de base tandis que l'AO filtre les signaux pour s'assurer que la négociation suit les tendances globales.

  5. Les paramètres AO 5 et 34 sont optimisés pour identifier les tendances à court terme.

Analyse des risques

Il existe également certains risques:

  1. Dans les marchés à fourchette, l'EMA et l'AO peuvent générer plus de faux signaux, provoquant des transactions à découvert inutiles.

  2. Les paramètres de l'AO peuvent être optimisés pour une réponse plus rapide.

  3. L'EMA et l'AO combine des caractéristiques à court et moyen terme nécessitant des données de qualité et une puissance de calcul.

  4. Les critères de sortie peuvent être assouplis pour prolonger les périodes de détention.

  5. La stratégie ne prend pas en compte les tendances à long terme et les niveaux de support/résistance clés.

Directions d'optimisation

La stratégie peut être optimisée à travers plusieurs aspects:

  1. Mettre en place des indicateurs de tendance tels que les bandes moyennes mobiles et l'ATR pour aider l'EMA à déterminer la tendance globale.

  2. Ajoutez la détection de support / résistance clé comme les retraces de Fibonacci, générant des signaux uniquement autour des niveaux clés pour éviter de mauvaises positions d'entrée.

  3. Optimiser les combinaisons de paramètres EMA et AO pour améliorer les effets de combo. Par exemple, utiliser des algorithmes génétiques pour trouver des paires de paramètres optimales.

  4. Ajoutez des sorties stop-loss, sortie lorsque le prix dépasse le dernier Swing High/Low pour contrôler la perte d'une seule transaction.

  5. Test de retour sur les données historiques pour évaluer le rendement de la stratégie, vérifier si la rentabilité stable répond aux attentes.

  6. Test de la robustesse des paramètres pour trouver des ensembles de paramètres plus stables.

Conclusion

L'idée de la stratégie globale est claire, combinant EMA pour la tendance globale et AO pour le filtrage des signaux. Il peut identifier et suivre efficacement les tendances, mais comporte également certains risques et limitations pour une optimisation et des tests supplémentaires pour améliorer la stabilité. La clé est de choisir des produits et des paramètres appropriés combinés à des principes et styles de trading appropriés.


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

//@version=5
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 27/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 indicator plots the oscillator as a histogram where blue denotes 
//    periods suited for buying and red . for selling. If the current value 
//    of AO (Awesome Oscillator) is above previous, the period is considered 
//    suited for buying and the period is marked blue. If the AO value is not 
//    above previous, the period is considered suited for selling and the 
//    indicator marks it as red.
//
// 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


AC(nLengthSlow,nLengthFast,nLengthMA,nLengthEMA,nLengthWMA,bShowWMA,bShowMA,bShowEMA) =>
    pos = 0.0
    xSMA1_hl2 = ta.sma(hl2, nLengthFast)
    xSMA2_hl2 = ta.sma(hl2, nLengthSlow)
    xSMA1_SMA2 = xSMA1_hl2 - xSMA2_hl2
    xSMA_hl2 = ta.sma(xSMA1_SMA2, nLengthFast)
    nRes =  xSMA1_SMA2 - xSMA_hl2
    xResWMA = ta.wma(nRes, nLengthWMA)
    xResMA = ta.sma(nRes, nLengthMA)
    xResEMA = ta.ema(nRes, nLengthEMA)
    xSignalSeries = bShowWMA ? xResWMA :
                     bShowMA ? xResMA : 
                      bShowEMA ? xResEMA : na
    pos :=  xSignalSeries[2] < 0 and xSignalSeries[1] > 0? 1:
    	     xSignalSeries[2] > 0 and xSignalSeries[1] < 0 ? -1 : nz(pos[1], 0)
    pos

strategy(title='Combo 2/20 EMA & Bill  Awesome Oscillator (AC)', shorttitle='Combo', overlay=true)
var I1 = '●═════ 2/20 EMA ═════●'
Length = input.int(14, minval=1, group=I1)
var I2 = '●═════  Awesome Oscillator (AC) ═════●'
nLengthSlow = input.int(34, minval=1, title="Length Slow", group=I2)
nLengthFast = input.int(5, minval=1, title="Length Fast", group=I2)
nLengthMA = input.int(15, minval=1, title="MA", group=I2)
nLengthEMA = input.int(15, minval=1, title="EMA", group=I2)
nLengthWMA = input.int(15, minval=1, title="WMA", group=I2)
bShowWMA = input.bool( defval=true, title="trading WMA", group=I2)
bShowMA = input.bool( defval=false, title="trading MA", group=I2)
bShowEMA = input.bool( defval=false, title="trading EMA", 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)
prePosAC = AC(nLengthSlow,nLengthFast,nLengthMA,nLengthEMA,nLengthWMA,bShowWMA,bShowMA,bShowEMA)
iff_1 = posEMA20 == -1 and prePosAC == -1 and StartTrade ? -1 : 0
pos = posEMA20 == 1 and prePosAC == 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)

Plus de