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


Date de création: 2023-11-21 11:28:27 Dernière modification: 2023-11-21 11:28:27
Copier: 0 Nombre de clics: 586
1
Suivre
1617
Abonnés

Stratégie d’inversion de la moyenne mobile à double sens Voici un article que j’ai essayé d’écrire à la suite de votre demande:

Aperçu

Cette stratégie utilise une combinaison de la stratégie de retournement de forme 123 et de la stratégie d’indicateur de force baissière, qui génère un signal de transaction lorsqu’un signal de plus ou de moins apparaît simultanément, et fait partie de la stratégie de trading de retournement de rupture.

Principe de stratégie

La stratégie est composée de deux volets:

  1. 123 Stratégie de retour en arrière

Lorsque le cours de clôture a franchi la hausse le troisième jour après une baisse de 2 jours consécutifs et que l’indicateur de stoch bas a généré un signal d’achat lors d’une reprise du bas; lorsque le cours de clôture a franchi la baisse le troisième jour après une hausse de 2 jours consécutifs et que l’indicateur de stoch élevé a généré un signal de vente lors d’une reprise du haut.

  1. Stratégie d’indicateur de force d’ours

L’indicateur de force de poussée reflète le contraste de force de la pluralité. Il génère un signal de vente lorsque l’indicateur est supérieur à la limite de vente définie et un signal d’achat lorsque l’indicateur est inférieur à la limite de achat définie.

Dans le cas d’un signal synthétique, si les deux donnent un signal synchrone, le signal de transaction réel est généré.

Avantages stratégiques

  1. La combinaison de signaux de retour et de filtrage de l’indicateur permet d’éviter les fausses percées et d’améliorer la qualité du signal.

  2. La flexibilité de l’opérateur pour s’adapter à différentes conditions de marché et à des cycles de temps différents.

  3. Les stratégies composantes peuvent être utilisées séparément ou en combinaison. Les stratégies sont conçues en modules.

Risque stratégique

  1. Les signaux de retournement peuvent avoir une plus grande profondeur de retour.

  2. Les paramètres de l’indicateur de force de poussée doivent être testés et optimisés à plusieurs reprises.

  3. L’optimisation des paramètres de la stratégie globale multifactorielle est complexe et nécessite de nombreux tests de données historiques.

Optimisation de la stratégie

  1. Le module de quantification join connecte plus de sources de données pour obtenir des données plus riches sur une période plus longue.

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

  3. Augmentation des mécanismes de prévention des pertes pour contrôler les pertes individuelles.

Résumer

Cette stratégie utilise des techniques d’analyse et de quantification de l’inverse pour améliorer la qualité du signal grâce à la double confirmation. Elle est hautement modulaire, évolutive et pratique. Elle peut ensuite être optimisée par l’introduction de moyens technologiques plus avancés pour s’adapter à un environnement de marché plus complexe.

Code source de la stratégie
/*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 )