
La stratégie utilise une combinaison de deux indicateurs, l’EMA et l’Awesome Oscillator, pour identifier et suivre les tendances. L’EMA est rapide pour déterminer la direction de la tendance récente, et le filtre de l’Awesome Oscillator fournit un temps d’entrée.
La stratégie utilise principalement deux indicateurs techniques, le double EMA et l’Awesome Oscillator, pour filtrer les signaux. La logique est la suivante:
Calculer les EMA de 2 cycles et de 20 cycles, juger comme une tendance à la hausse lorsque l’EMA de 2 cycles franchit les EMA de 20 cycles de bas en haut; juger comme une tendance à la baisse lorsque l’EMA de 2 cycles franchit les EMA de 20 cycles de haut en bas.
Calculez l’Awesome Oscillator, qui est obtenu en soustrayant la moyenne mobile rapide de la moyenne mobile lente, puis en soustrayant la moyenne mobile rapide de la colonne MACD pour obtenir la colonne. Lorsque la colonne AO est considérée comme un signal d’achat lorsque le rouge devient bleu, et comme un signal de vente lorsque le bleu devient rouge.
Un signal de vente définitif n’est généré que lorsque l’EMA montre une tendance à la hausse et que l’AO affiche simultanément un signal de vente. Un signal de vente définitif n’est généré que lorsque l’EMA montre une tendance à la baisse et que l’AO affiche simultanément un signal de vente.
Grâce à ce mécanisme de filtrage des signaux binaires, il est possible de réduire efficacement les opérations de fausses percées et de suivre la direction intermédiaire de la tendance.
Cette stratégie présente les avantages suivants:
Les filtres à double fil permettent de réduire les erreurs de transaction dues au bruit. L’EMA détermine la direction de la tendance majeure et le filtrage AO le moment de l’entrée en jeu. La combinaison des deux améliore la fiabilité du signal.
La sensibilité est extrêmement rapide et permet de saisir rapidement les retournements de tendance à court terme. L’EMA à 2 cycles est extrêmement sensible aux ruptures et permet de déterminer rapidement si la tendance à court terme a changé.
L’Awesome Oscillator filtre à nouveau le MACD pour identifier efficacement les fausses ruptures dans la tendance et éviter les inversions inutiles.
L’EMA détermine la direction de la tendance fondamentale, l’AO filtre davantage pour s’assurer que les transactions correspondent à la direction de la grande tendance, ce qui permet de capturer en permanence la tendance à moyen terme.
Le choix des paramètres de stratégie est raisonnable, les EMA de 2 cycles et de 20 cycles capturent les variations de prix de différentes cycles, et les paramètres AO de 5 cycles et de 34 cycles sont optimisés pour mieux identifier les caractéristiques de la forme à court terme.
Cette stratégie comporte aussi des risques:
En cas de choc, l’EMA et l’AO peuvent émettre plus de signaux erronés, entraînant des transactions inutiles. Le risque d’erreur de jugement peut être réduit en ajustant les paramètres de la période EMA.
L’AO peut être en retard sur l’EMA dans certains cas, ce qui entraîne un décalage de temps entre les signaux. Les paramètres d’AO peuvent être optimisés de manière appropriée pour qu’ils répondent plus rapidement à la rupture.
Les paramètres EMA et AO, qui prennent en compte les caractéristiques à court et à moyen terme, imposent des exigences élevées en matière de qualité des données et de puissance de calcul, qui doivent être ajustées en fonction des caractéristiques des différentes variétés.
La fréquence des transactions entraîne des frais de traitement et des coûts de dérapage. La stratégie d’exit peut être assouplie de manière appropriée pour prolonger le cycle de détention.
La stratégie ne prend pas en compte les tendances macrocycliques et les points de résistance de soutien clés, et doit combiner plus de facteurs pour s’assurer que la direction des transactions est correcte.
Cette stratégie peut être optimisée par les éléments suivants:
L’introduction d’indicateurs de jugement de tendance pour aider l’EMA à déterminer la direction de la tendance générale, tels que les rubans de moyenne mobile courants et les indicateurs complémentaires tels que l’ATR.
Ajout d’un mécanisme de reconnaissance des points de résistance de soutien clé, comme la ligne de rétractation de Fibonacci, qui émet un signal uniquement à proximité des points critiques. Éviter la construction de positions défavorables.
Optimiser les combinaisons de paramètres EMA et AO pour améliorer l’efficacité de leur combinaison. Par exemple, l’utilisation d’algorithmes de classe génétique pour rechercher automatiquement la meilleure paire de paramètres.
Augmentation du mécanisme d’arrêt de la perte Exit. Lorsque le prix a franchi le dernier Swing High/Low, arrêtez la perte en temps opportun pour contrôler les pertes individuelles.
Vérification des ensembles de données antérieurs, évaluation de l’efficacité de la stratégie à l’aide des données historiques. Vérification de la stabilité des bénéfices et de la conformité des résultats des tests de retour aux attentes.
La modulation simulée du disque dur permet d’ajuster progressivement les paramètres pour améliorer l’efficacité de l’indicateur du disque dur. La validation de la robustesse des paramètres permet d’obtenir une meilleure combinaison de paramètres stables.
La stratégie est clairement conçue pour déterminer l’orientation de la tendance majeure et la double vérification de la combinaison des signaux filtrés par l’AO à l’aide de deux indicateurs. Elle permet d’identifier efficacement les tendances et de suivre les tendances à moyen terme.
/*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)