Stratégie d'inversion de la moyenne mobile à double croisement

Auteur:ChaoZhang est là., Date: 2023-11-21 11:28:27 Je vous en prie.
Les étiquettes:

imgVoici un article que j'ai essayé d'écrire à votre demande:

Résumé

Cette stratégie combine la stratégie de modèle d'inversion 123 et la stratégie de l'indicateur Bear Power. Les signaux de trading sont générés lorsque les deux donnent des signaux d'achat ou de vente dans le même sens.

La logique de la stratégie

La stratégie se compose de deux parties:

  1. 123 Stratégie d'inversion du modèle

    Il génère des signaux d'achat lorsque le prix de clôture évolue à la hausse après deux jours consécutifs de baisse et que l'indicateur Stoch bas rebondit du niveau bas; il génère des signaux de vente lorsque le prix de clôture évolue à la baisse après deux jours consécutifs de hausse et que l'indicateur Stoch haut se retire du niveau élevé.

  2. Stratégie de l'indicateur de puissance d'ours

    L'indicateur Bear Power reflète la comparaison des forces haussières et baissières. Il génère des signaux de vente lorsqu'il est au-dessus de la ligne de vente définie et génère des signaux d'achat lorsqu'il est en dessous de la ligne d'achat définie.

Lors de la combinaison des signaux, des signaux de trading réels sont générés si les deux donnent des signaux dans la même direction.

Les avantages

  1. La combinaison de signaux de renversement et de filtres d'indicateur évite de fausses ruptures et améliore la qualité du signal.

  2. Applicable à plusieurs délais, flexible pour s'adapter à différents environnements de marché.

  3. Les stratégies constitutives peuvent être utilisées seules ou en combinaison avec une conception modulaire.

Les risques

  1. Les signaux d'inversion peuvent faire face à de grandes profondeurs de repli.

  2. Les paramètres de l'indicateur Bear Power nécessitent des tests et une optimisation répétés.

  3. Les stratégies intégrées à plusieurs facteurs ont un réglage complexe des paramètres et nécessitent de grandes quantités de données historiques pour les tests.

Directions d'optimisation

  1. Connectez plus de sources de données avec le module de joindre Quant pour obtenir une plage de temps plus longue et un ensemble de données plus riche.

  2. Appliquer des méthodes d'apprentissage automatique pour rechercher et évaluer automatiquement des combinaisons de paramètres.

  3. Ajouter des mécanismes de stop loss pour contrôler les pertes d'une seule transaction.

Conclusion

Cette stratégie combine l'analyse technique d'inversion et des indicateurs quantitatifs pour améliorer la qualité du signal grâce à la double confirmation.


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

//@version=3
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 29/05/2019
// This is combo strategies for get 
// a cumulative signal. Result signal will return 1 if two strategies 
// is long, -1 if all strategies is short and 0 if signals of strategies is not equal.
//
// 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
//  Bear Power Indicator
//  To get more information please see "Bull And Bear Balance Indicator" 
//  by Vadim Gimelfarb. 
//
// 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

BearPower(SellLevel, BuyLevel) =>
    value =  iff (close < open ,  
              iff (close[1] > open ,  max(close - open, high - low), high - low), 
               iff (close > open, 
                 iff(close[1] > open, max(close[1] - low, high - close), max(open - low, high - close)), 
                  iff(high - close > close - low, 
                   iff (close[1] > open, max(close[1] - open, high - low), high - low), 
                     iff (high - close < close - low, 
                      iff(close > open, max(close - low, high - close),open - low), 
                       iff (close > open, max(close[1] - open, high - close),
                         iff(close[1] < open, max(open - low, high - close), high - low))))))
    pos = 0.0
    pos := iff(value > SellLevel, -1,
	   iff(value <= BuyLevel, 1, nz(pos[1], 0))) 

    pos

strategy(title="Combo Backtest 123 Reversal & Bear Power", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
SellLevel = input(30)
BuyLevel = input(3)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posBearPower = BearPower(SellLevel, BuyLevel)
pos = iff(posReversal123 == 1 and posBearPower == 1 , 1,
	   iff(posReversal123 == -1 and posBearPower == -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 ? red: possig == 1 ? green : blue ) 

Plus de