Stratégie d'inversion de la moyenne mobile croisée double

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

img

Résumé

La stratégie d'inversion du croisement des moyennes mobiles doubles est une stratégie de suivi des tendances qui combine la stratégie d'inversion 123 et la stratégie de l'oscillateur décentralisé DiNapoli pour générer des signaux de négociation par le biais d'un croisement des moyennes mobiles doubles pour suivre les tendances du marché.

La logique de la stratégie

La stratégie se compose de deux parties:

  1. 123 Stratégie d'inversion: Cette stratégie utilise l'indicateur stochastique pour générer des signaux. Elle envoie un signal d'achat lorsque le prix de clôture augmente après deux jours consécutifs de baisse, tandis que la ligne rapide stochastique est en dessous de la ligne lente et en dessous de 50; elle envoie un signal de vente lorsque le prix de clôture diminue après deux jours consécutifs de hausse, tandis que la ligne rapide stochastique est au-dessus de la ligne lente et au-dessus de 50.

  2. Stratégie de l'oscillateur décentralisé de DiNapoli: Cette stratégie utilise la ligne moyenne mobile du prix pour générer des signaux de trading lorsque le prix dépasse ou tombe en dessous de la ligne moyenne mobile d'une certaine valeur.

Après que chacune des deux stratégies susmentionnées ait généré des signaux de négociation distincts, cette stratégie les intègre et n'envoie des ordres de négociation réels que lorsque les deux signaux sont cohérents, c'est-à-dire lorsque les moyennes mobiles doubles forment des signaux dans le même sens; sinon aucune action n'est entreprise.

Analyse des avantages

En combinant deux signaux de négociation de moyennes mobiles, cette stratégie permet de suivre efficacement les tendances du marché et présente les avantages suivants:

  1. Utilisez pleinement les atouts de l'indicateur stochastique pour juger de l'élan et des tendances, en évitant les pertes causées par des signaux trompeurs provenant d'un seul indicateur.

  2. L'indicateur DiNapoli permet d'identifier efficacement les tendances et d'éviter les ouvertures inutiles de positions dues à des fluctuations aléatoires.

  3. Le double croisement des moyennes mobiles peut réduire efficacement les faux signaux et améliorer la qualité du signal afin de fournir des preuves solides pour juger de l'orientation du marché.

  4. Les paramètres réglables de la stratégie permettent aux utilisateurs de choisir des combinaisons de paramètres en fonction de leurs préférences personnelles afin de s'adapter de manière flexible à différents environnements de marché.

Analyse des risques

La stratégie comporte également les risques suivants:

  1. Dans un marché haussier, la stratégie peut manquer des opportunités d'achat en raison de paramètres d'indicateur trop prudents.

  2. Dans un marché baissier, les signaux de croisement des moyennes mobiles doubles peuvent retarder, ce qui entraîne des conditions de surachat et de survente.

  3. Dans le cas d'un mouvement de marché unilatérale énorme, les signaux de croisement des moyennes mobiles doubles peuvent être lents.

Optimisation

La stratégie peut être optimisée de la manière suivante:

  1. Testez et optimisez les paramètres des indicateurs stochastique et DiNapoli pour trouver les combinaisons optimales de paramètres.

  2. Ajouter d'autres indicateurs de jugement auxiliaires comme l'indicateur de volume pour enrichir la logique interne de la stratégie et améliorer la précision des signaux.

  3. Utiliser des méthodes d'apprentissage automatique pour former et optimiser les paramètres de stratégie et les règles de génération de signaux afin de les adapter pleinement aux changements du marché.

  4. Évaluer les structures locales avec des indicateurs techniques avancés pour distinguer les signaux à moyen et à long terme, permettant ainsi à la stratégie de fonctionner sur plusieurs délais.

Conclusion

La stratégie d'inversion des moyennes mobiles doubles intègre deux indicateurs pour former des signaux de négociation de moyennes mobiles doubles, qui peuvent suivre efficacement les tendances du marché et obtenir des rendements relativement bons tout en contrôlant les risques.


/*backtest
start: 2023-10-24 00:00:00
end: 2023-11-23 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 18/02/2020
// This is combo strategies for get a cumulative signal. 
//
// First strategy
// This System was created from the Book "How I Tripled My Money In The 
// Futures Market" by Ulf Jensen, Page 183. This is reverse type of strategies.
// The strategy buys at market, if close price is higher than the previous close 
// during 2 days and the meaning of 9-days Stochastic Slow Oscillator is lower than 50. 
// The strategy sells at market, if close price is lower than the previous close price 
// during 2 days and the meaning of 9-days Stochastic Fast Oscillator is higher than 50.
//
// Second strategy
// DiNapoli Detrended Oscillator Strategy
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
Reversal123(Length, KSmoothing, DLength, Level) =>
    vFast = sma(stoch(close, high, low, Length), KSmoothing) 
    vSlow = sma(vFast, DLength)
    pos = 0.0
    pos := iff(close[2] < close[1] and close > close[1] and vFast < vSlow and vFast > Level, 1,
	         iff(close[2] > close[1] and close < close[1] and vFast > vSlow and vFast < Level, -1, nz(pos[1], 0))) 
	pos

DiNapoli(Length, Trigger) =>
    pos = 0.0
    xSMA = sma(close, Length)
    nRes = close - xSMA
    pos := iff(nRes > Trigger, 1,
    	     iff(nRes <= Trigger, -1, nz(pos[1], 0)))    
    pos

strategy(title="Combo Backtest 123 Reversal & DiNapoli Detrended Oscillator", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
LengthDiN = input(14, minval=1)
TriggerDiN = input(0)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posDiN = DiNapoli(LengthDiN, TriggerDiN)
pos = iff(posReversal123 == 1 and posDiN == 1 , 1,
	   iff(posReversal123 == -1 and posDiN == -1, -1, 0)) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1 , 1, pos))	   
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