Cette stratégie est conçue sur la base de deux indicateurs d'oscillateur d'accélération EMA et AC. L'indicateur double EMA est utilisé pour déterminer la direction de la tendance des prix, tandis que l'indicateur AC est utilisé pour confirmer le signal de tendance pour un effet de filtrage.
La stratégie est composée de deux modules:
Module EMA double
Construisez un indicateur EMA double en utilisant l'EMA à 2 jours et l'EMA à 20 jours. Un signal d'achat est généré lorsque le prix dépasse l'EMA à 2 jours. Un signal de vente est généré lorsque le prix dépasse l'EMA à 20 jours.
Ce module détermine les orientations de tendance à court et à moyen terme pour la tendance de base suivie.
Module à courant alternatif
Utiliser les valeurs positives et négatives de l'oscillateur d'accélération CA pour confirmer les signaux de tendance.
Ce module filtre les faux signaux et améliore la fiabilité.
En résumé, cette stratégie intègre une double EMA pour détecter les principales tendances et un indicateur AC pour filtrer les fausses écarts, formant ainsi une tendance systématique selon la méthodologie.
Les avantages de cette stratégie sont les suivants:
La double EMA trace les tendances à moyen et long terme tandis que l'AC filtre le bruit à court terme, un grand effet combiné.
Excellent effet de filtrage pour éviter de vendre après un profit long ou d'acheter après un profit court.
Adaptation flexible des paramètres adaptée à différents produits et environnements de marché.
Une logique stratégique claire, facile à comprendre, optimiser et améliorer.
Une tendance décente suite au potentiel de profit pour les produits en tendance.
Cette stratégie comporte certains risques:
Un mauvais réglage du paramètre double EMA peut faire oublier des tendances plus courtes ou générer des transactions redondantes.
Un réglage incorrect des paramètres CA peut filtrer des signaux valides mais plus faibles ou ne pas filtrer suffisamment le bruit.
Incapable de s'adapter à des marchés en évolution rapide, comme des accidents brusques sur une falaise.
La rentabilité insuffisante sur différents marchés devrait être utilisée comme stratégie de suivi de tendance.
La stratégie peut être optimisée dans les aspects suivants:
Testez plus de combinaisons de paramètres pour trouver des paramètres optimaux adaptés aux différentes caractéristiques du produit.
Ajouter un module stop-loss pour sortir à des pertes excessives.
Filtrez les signaux avec plus d'indicateurs.
Développer des stratégies de combinaison à long terme pour suivre les tendances à moyen et long terme, en utilisant des transactions à court terme pour réduire ou ajouter des positions le long de la tendance.
L'idée de combiner une double EMA pour la tendance et une CA pour le filtrage du bruit vaut la peine d'être apprise.
/*backtest start: 2023-01-08 00:00:00 end: 2024-01-14 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 //////////////////////////////////////////////////////////// // Copyright by HPotter v1.0 19/01/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 Accelerator Oscillator has been developed by Bill Williams // as the development of the Awesome Oscillator. It represents the // difference between the Awesome Oscillator and the 5-period moving // average, and as such it shows the speed of change of the Awesome // Oscillator, which can be useful to find trend reversals before the // Awesome Oscillator does. // // 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) => 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 cClr = nRes > nRes[1] ? color.blue : color.red iff_1 = nRes > 0 ? 1 : nz(pos[1], 0) pos := nRes < 0 ? -1 : iff_1 pos strategy(title='Combo 2/20 EMA & Accelerator Oscillator (AC)', shorttitle='Combo', overlay=true) var I1 = '●═════ 2/20 EMA ═════●' Length = input.int(14, minval=1, group=I1) var I2 = '●═════ Accelerator Oscillator ═════●' nLengthSlow = input(33, title="Length Slow", group=I2) nLengthFast = input(6, title="Length Fast", 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) 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)