Stratégie de croisement de convergence/divergence à moyenne mobile lissée sur trois périodes


Date de création: 2023-09-18 21:50:05 Dernière modification: 2023-09-18 21:50:05
Copier: 0 Nombre de clics: 1152
1
Suivre
1617
Abonnés

Aperçu

La stratégie est basée sur une moyenne asymétrique lisse sur trois périodes de temps, générant un signal de transaction lorsque les différents indicateurs périodiques sont positifs ou négatifs. L’objectif est d’utiliser plusieurs périodes pour confirmer la tendance et réduire la probabilité de faux signaux.

Le principe

L’indicateur de la moyenne asymétrique lisse (Heiken Ashi) est différent de la ligne K ordinaire, sa méthode de calcul permet de lisser la courbe des prix et d’identifier les tendances avec plus de précision.

Cette stratégie utilise un indicateur de moyenne asymétrique lisse pour les trois périodes de temps: le jour, la périphérie et la lune. Un signal d’achat est généré lorsque les trois sont en hausse, c’est-à-dire que la ligne de flamme de toutes les périodes de temps est verte; un signal de vente est généré lorsque les trois sont en baisse, c’est-à-dire que la ligne de flamme est entièrement rouge.

Après l’entrée en jeu, un signal d’équilibre est généré à chaque fois que la moyenne asynchrone de n’importe quelle période de temps se déplace.

Les avantages

  1. La vérification multi-temps réduit les faux signaux et améliore la stabilité.

  2. La moyenne asymétrique lisse permet de reconnaître les tendances et réduit le bruit.

  3. Les règles sont simples, claires et faciles à appliquer.

  4. Une combinaison de cycles de temps flexible pour différentes variétés.

  5. L’optimisation sans paramètres est extrêmement facile à utiliser.

Risques et solutions

  1. Les restrictions de conditions multiples peuvent entraîner des opportunités de transactions manquées.

  2. Le décalage de la moyenne asynchrone plane persiste et peut retarder le signal. Il peut être optimisé en combinaison avec d’autres indicateurs.

  3. Aucun arrêt de perte, aucun contrôle des risques.

  4. Le taux de gain et de perte est fixe, il n’y a pas de flexibilité.

  5. Il est facile de générer de faux signaux en se basant uniquement sur des indicateurs.

Optimiser les idées

  1. Le test ajoute plus de temps, par exemple 15 minutes ou 60 minutes.

  2. Optimisation des paramètres de la moyenne asymétrique lisse et amélioration de la sensibilité.

  3. Adhérer à une stratégie de stop-loss mobile pour contrôler les risques.

  4. L’étude a été réalisée sur la base d’indicateurs de structure du marché, afin d’éviter les perturbations.

  5. Nouvelles conditions de réintégration et prolongation de la période de détention.

Résumer

Cette stratégie utilise les avantages de l’indicateur d’anomalie de la moyenne lisse sur plusieurs périodes de temps pour réaliser le suivi de la tendance, mais elle est susceptible de générer de faux signaux uniquement sur la base de l’indicateur. Des améliorations peuvent être apportées à la stratégie en ajoutant plus d’indicateurs, des stratégies de stop-loss, des paramètres d’optimisation, etc.

Code source de la stratégie
/*backtest
start: 2023-01-01 00:00:00
end: 2023-03-23 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
args: [["v_input_5",true]]
*/

//@version=4
strategy("Heiken Ashi MTF Strategy")
ha_t = heikinashi(syminfo.tickerid)

res = input('D', title="TM 1")
ha_open = security(ha_t, res, open)
ha_close = security(ha_t, res, close)
ha_dif = ha_open-ha_close
ha_diff=iff(ha_dif > 0, 1, iff(ha_dif<0, 2, 3))

res2 = input('W', title="TM 2")
ha_open2 = security(ha_t, res2, open)
ha_close2 = security(ha_t, res2, close)
ha_dif2 = ha_open2-ha_close2
ha_diff2=iff(ha_dif2 > 0, 1, iff(ha_dif2<0, 2, 3))

res3 = input('M', title="TM 3")
ha_open3 = security(ha_t, res3, open)
ha_close3 = security(ha_t, res3, close)
ha_dif3 = ha_open3-ha_close3
ha_diff3=iff(ha_dif3 > 0, 1, iff(ha_dif3<0, 2, 3))

plot(15, title="TF1", color=iff(ha_diff==1, color.red, iff(ha_diff==2, color.green, color.white)), style=plot.style_circles, linewidth=5, join=true)
plot(14, title="TF2", color=iff(ha_diff2==1, color.red, iff(ha_diff2==2, color.green, color.white)), style=plot.style_circles, linewidth=5, join=true)
plot(13, title="TF3", color=iff(ha_diff3==1, color.red, iff(ha_diff3==2, color.green, color.white)), style=plot.style_circles, linewidth=5, join=true)


short = ha_diff ==1 and ha_diff2==1 and ha_diff3 ==1
long = ha_diff ==2 and ha_diff2==2 and ha_diff3 ==2

exitlong = ha_diff ==1 or ha_diff2==1 or ha_diff3 ==1
exitshort = ha_diff ==2 or ha_diff2==2 or ha_diff3 ==2

longA = input(true)
shortA = input(false)

if(longA)
    strategy.entry("long",1,when=long)
    strategy.close("long",when=exitlong)
if(shortA)
    strategy.entry("short",0,when=short)
    strategy.close("short",when=exitshort)