Stratégie de rupture de la double inversion de la moyenne mobile des prix

Auteur:ChaoZhang est là., Date: 2023-12-07 18h15 et 12h
Les étiquettes:

img

Résumé

La stratégie de rupture de prix inverse à moyenne mobile double combine des signaux de négociation doubles pour identifier des opportunités d'entrée de meilleure qualité. Elle utilise d'abord une moyenne mobile de 9 jours et ses rails supérieurs et inférieurs pour construire un cadre de rupture de base, puis introduit un indicateur stochastique pour filtrer les signaux après avoir jugé de la direction de l'opportunité en utilisant 123 modèles, et forme enfin une règle d'entrée relativement stricte. Ce type de méthode de filtrage de combinaison peut réduire efficacement la fréquence de négociation tout en assurant la qualité du signal, ce qui convient à la détention à moyen et long terme.

Principaux

La stratégie de rupture à double moyenne mobile se compose de deux sous-stratégies.

La première sous-stratégie est le jugement du modèle 123. Cette stratégie utilise la relation de prix de clôture au cours des deux jours précédents pour juger de la direction probable de la rupture des prix à venir. Si le prix de clôture d'aujourd'hui augmente par rapport au prix de clôture du jour précédent, tandis que le prix de clôture du jour précédent a chuté par rapport au prix de clôture il y a deux jours, il est considéré comme un signal d'achat; si le prix de clôture d'aujourd'hui tombe par rapport aux jours précédents, tandis que le prix de clôture du jour précédent a augmenté par rapport au prix de clôture il y a deux jours, il est considéré comme un signal de vente. Ce modèle reflète le point de basculement clé où le sentiment à court terme passe du pessimiste au optimiste ou de l'optimiste au pessimiste. Ici, nous vérifions à nouveau les signaux d'achat et de vente en utilisant l'indicateur stochastique, et générons l'opération

La deuxième sous-stratégie est la rupture du canal de la moyenne mobile déplacée. Cette stratégie calcule d'abord la ligne moyenne mobile exponentielle du cycle spécifié (comme 9 jours), puis ajoute un certain pourcentage au-dessus et en dessous comme les rails supérieurs et inférieurs du canal. Si le prix traverse le rail supérieur, un signal de vente est généré. Si le prix traverse le rail inférieur, un signal d'achat est généré. Ici, la largeur d'expansion et de contraction des rails supérieurs et inférieurs peut être contrôlée par le facteur de pourcentage pour ajuster la fréquence du signal.

Enfin, ce n'est que lorsque les directions du signal des deux sous-stratégies sont cohérentes, c'est-à-dire que le signal d'inversion 123 et le signal de rupture de canal sont dans le même sens, qu'un signal réel sera finalement généré pour guider le trading réel. Ce mécanisme de double filtrage peut filtrer beaucoup de faux signaux, réduire la fréquence de trading tout en assurant une grande fiabilité de chaque transaction.

Analyse des avantages

La stratégie de rupture de prix à double moyenne mobile combine plusieurs méthodes d'analyse et présente les avantages suivants:

  1. Le mécanisme de double filtrage des signaux peut réduire efficacement les signaux non valides et améliorer la qualité de chaque transaction.

  2. Le jugement de modèle 123 appartient à une stratégie d'inversion à court terme, tandis que la rupture de canal déplacé appartient à une stratégie de suivi de tendance à moyen et long terme.

  3. En ajustant la largeur des rails supérieurs et inférieurs du canal, la fréquence du signal peut être librement contrôlée pour répondre aux différentes préférences commerciales.

  4. En utilisant la moyenne mobile à 9 jours comme ligne médiane du canal, la sélection des paramètres est plus raisonnable pour éviter des signaux trop fréquents.

  5. En appliquant les zones de surachat et de survente de l'indicateur stochastique, il évite d'être pris au piège d'un marché de choc.

Analyse des risques

La stratégie de rupture de prix à double moyenne mobile comporte également certains risques, principalement dans les aspects suivants:

  1. Le mécanisme de double filtrage des signaux passe à côté de certaines opportunités qu'une stratégie unilatérale peut saisir, avec un certain risque de manquer des ordres.

  2. Les points d'achat et de vente ne peuvent pas filtrer complètement toutes les fausses ruptures.

  3. Dans le cas d'un changement violent du marché, des paramètres de stop loss inappropriés peuvent entraîner de grosses pertes.

  4. La logique de la condition ifft est complexe. Les paramètres incorrects sont sujets à des erreurs logiques, ce qui entraîne des jugements de signal invalide.

  5. Les données hors échantillon affectent la stabilité des paramètres, ce qui nécessite une optimisation dynamique des paramètres.

Directions d'optimisation

Il y a encore une marge d'optimisation dans la stratégie de rupture de l'inversion du prix de la moyenne mobile double:

  1. Différents types de moyennes mobiles peuvent être testés pour sélectionner des combinaisons de paramètres offrant une meilleure et plus stable qualité du signal.

  2. Les canaux de largeur appropriée peuvent être sélectionnés en fonction des caractéristiques des données spécifiques du produit.

  3. Le ratio de perte maximale peut être contrôlé en combinant le stop loss dynamique.

  4. Des modèles d'apprentissage automatique peuvent être introduits pour l'optimisation dynamique des paramètres afin de rendre la stratégie plus robuste.

  5. Des filtres basés sur le volume ou la volatilité des transactions peuvent être ajoutés afin d'éviter des entrées et des sorties trop fréquentes dans des conditions de marché turbulentes.

Conclusion

Grâce au mécanisme de filtrage à double vérification, la stratégie de rupture de l'inversion du prix de la moyenne mobile double combine avec succès l'inversion à court terme et le suivi de la tendance à moyen et long terme pour former un système de trading efficace qui peut filtrer efficacement les signaux non valides et sélectionner des opportunités d'entrée de haute qualité, et a une personnalisation relativement forte.


/*backtest
start: 2023-11-06 00:00:00
end: 2023-12-06 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 18/03/2021
// 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
// Moving Average Displaced Envelope. These envelopes are calculated 
// by multiplying percentage factors with their displaced expotential 
// moving average (EMA) core.
// How To Trade Using:
// Adjust the envelopes percentage factors to control the quantity and 
// quality of the signals. If a previous high goes above the envelope 
// a sell signal is generated. Conversely, if the previous low goes below 
// the envelope a buy signal is given.
//
// 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


MADE(Price,Period, perAb, perBl, disp) =>
    pos = 0.0
    sEMA = ema(Price, Period)
    top = sEMA[disp] * ((100 + perAb)/100)
    bott = sEMA[disp]* ((100 - perBl)/100)
    pos := iff(close < bott , 1,
    	     iff(close > top, -1, pos[1])) 
    pos

strategy(title="Combo Backtest 123 Reversal & MA Displaced Envelope", shorttitle="Combo", overlay = true)
line1 = input(true, "---- 123 Reversal ----")
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
line2 = input(true, "---- MA Displaced Envelope ----")
Price = input(title="Source", type=input.source, defval=close)
Period =input(defval=9, minval=1)
perAb = input(title = "Percent above", defval=.5, minval=0.01, step = 0.1)
perBl = input(title = "Percent below", defval=.5, minval=0.01, step = 0.1)
disp = input(title = "Displacement", defval=13, minval=1) 
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posMADE = MADE(Price,Period, perAb, perBl, disp)
pos = iff(posReversal123 == 1 and posMADE == 1 , 1,
	   iff(posReversal123 == -1 and posMADE == -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