Stratégie de rupture de la moyenne mobile à double inversion

Auteur:ChaoZhang est là., Date: 2023-12-18 10:24:08 Je suis désolé
Les étiquettes:

img

Résumé

La stratégie de rupture de l'inversion de la moyenne mobile double est une stratégie combinée qui intègre à la fois la stratégie d'inversion 123 et la stratégie de divergence de la moyenne mobile et du prix.

La logique de la stratégie

La stratégie de rupture de la double moyenne mobile se compose de deux composantes:

  1. 123 Stratégie d'inversion

    La stratégie de renversement 123 génère des signaux de négociation basés sur deux jours consécutifs de renversement de prix de clôture (c'est-à-dire clôture supérieure suivie d'une clôture inférieure; ou clôture inférieure suivie d'une clôture supérieure), combinés à la ligne K de l'oscillateur stochastique de 9 jours située en dessous/au-dessus d'un certain niveau (défaut 50).

  2. Stratégie de divergence des prix et des moyennes mobiles

    La stratégie de divergence Price & MA calcule la différence en pourcentage entre le prix et une moyenne mobile d'une certaine période (défaut 14). Elle génère des signaux d'achat lorsque la divergence est inférieure à un seuil (défaut 3%) et des signaux de vente lorsque la divergence est supérieure à un seuil (défaut 0,54%).

La stratégie de rupture de l'inversion de la moyenne mobile double ne génère des signaux de négociation réels que lorsque les signaux des deux stratégies ci-dessus s'alignent dans le même sens, c'est-à-dire que les deux sont des signaux d'achat ou des signaux de vente.

Analyse des avantages

La stratégie de rupture de l'inversion des moyennes mobiles doubles combine les atouts des stratégies d'inversion et de suivi des tendances pour la synergie.

L'inversion 123 choisit des signaux d'inversion pour capitaliser sur les retours. La divergence de prix et de MA suit la tendance à plus long terme. Ensemble, ils capturent les inversions à court terme tout en suivant la tendance plus grande pour éviter d'être piégés.

En outre, en exigeant des signaux alignés des deux stratégies, le nombre de transactions invalides peut être considérablement réduit, améliorant le rapport signal/bruit.

Analyse des risques

Tout en exploitant les atouts des deux stratégies, la stratégie de rupture de l'inversion des moyennes mobiles doubles hérite également des risques associés à chacune d'elles.

Pour la composante 123 Reversal, deux renversements quotidiens consécutifs ne garantissent pas un véritable renversement de tendance. Ils pourraient bien être de faux signaux causés par des retraits à court terme.

Pour la partie de la divergence de prix et de MA, des paramètres de moyenne mobile inappropriés peuvent entraîner des signaux de retard.

En résumé, les principaux risques de cette stratégie proviennent d'un mauvais réglage des paramètres et d'une génération de signal défectueuse.

Des possibilités d'amélioration

La stratégie de rupture des deux moyennes mobiles peut être améliorée dans les aspects suivants:

  1. Optimiser les paramètres de l'AM et de l'oscillateur pour de meilleurs signaux
  2. Ajouter d'autres indicateurs pour le filtrage du signal
  3. Incorporer le stop loss et le profit
  4. Ajouter la détermination de tendance pour éviter les transactions prématurées
  5. Intervention manuelle et réglage adaptatif des paramètres

En combinant différentes méthodes d'amélioration, la stabilité et la rentabilité de la stratégie peuvent être encore améliorées.

Conclusion

La stratégie de rupture d'inversion de moyenne mobile double combine les forces des stratégies d'inversion et de suivi de tendance, générant des transactions uniquement lorsque les deux types de signaux s'alignent. Elle capture les opportunités d'inversion à court terme tout en suivant des tendances plus importantes pour éviter les pièges. Le mécanisme à double signal améliore également la fiabilité.


/*backtest
start: 2023-12-10 00:00:00
end: 2023-12-17 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 13/04/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
// Percent difference between price and MA
//
// 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


DBP_MA(Length,SellZone,BuyZone) =>
    pos = 0.0
    xSMA = sma(close, Length)
    nRes = abs(close - xSMA) * 100 / close
    pos:= iff(nRes < BuyZone, 1,
           iff(nRes > SellZone, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Difference between price and MA", 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, "---- Difference between price and MA ----")
LengthDBP = input(14, minval=1)
SellZone = input(0.54, minval=0.01, step = 0.01)
BuyZone = input(0.03, minval=0.01, step = 0.01)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posDBP_MA = DBP_MA(LengthDBP,SellZone,BuyZone)
pos = iff(posReversal123 == 1 and posDBP_MA == 1 , 1,
	   iff(posReversal123 == -1 and posDBP_MA == -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