Stratégie de combinaison de la moyenne mobile double et de l'indicateur Williams

Auteur:ChaoZhang est là., Date: 2024-02-01 15h04 et 51 min
Les étiquettes:

img

Résumé

Cette stratégie combine deux stratégies différentes. La première stratégie génère des signaux basés sur le double croisement de la moyenne mobile des cours des actions. La deuxième stratégie est basée sur l'Awesome Oscillator des Indicateurs Williams. Le signal final prend l'intersection des deux signaux de stratégie pour former le signal de trading final.

La logique de la stratégie

La première stratégie génère un signal d'achat lorsque la clôture d'hier est supérieure à la clôture de la journée précédente et que l'oscillateur stochastique rapide de 9 jours est inférieur à la ligne D de l'oscillateur stochastique lent de 3 jours.

La deuxième stratégie calcule la différence entre les fluctuations de prix de 5 jours et de 34 jours et calcule les moyennes mobiles de cette différence. Lorsque la valeur actuelle est supérieure à la période précédente, c'est un signal d'achat. Lorsque la valeur actuelle est inférieure à la période précédente, c'est un signal de vente.

Les deux signaux de stratégie sont combinés en prenant leur intersection. Une position longue est prise lorsque les deux stratégies donnent un signal d'achat. Une position courte est prise lorsque les deux stratégies donnent un signal de vente.

Analyse des avantages

Cette stratégie combine les avantages de la stratégie de croisement de la moyenne mobile double et de la stratégie de l'indicateur Williams. La stratégie de croisement de la moyenne mobile double peut capturer les tendances à moyen et long terme. La stratégie de l'indicateur Williams peut capturer les opportunités de trading à court terme. La combinaison des deux stratégies permet à la fois de réaliser des bénéfices et de prévenir de fausses ruptures.

En outre, l'utilisation de plusieurs paramètres d'entrée permet une optimisation pour différents stocks et conditions de marché, ce qui rend la stratégie adaptable à un plus large éventail d'environnements de marché.

Analyse des risques

Lorsque l'une des stratégies génère un signal d'achat tandis que l'autre génère un signal de vente, la stratégie combinée ne peut pas produire un signal significatif, potentiellement manquant des opportunités de trading.

En outre, les multiples paramètres posent une certaine difficulté pour l'optimisation.

Pour réduire les risques, l'un ou l'autre signal de stratégie peut être utilisé exclusivement.

Des possibilités d'amélioration

La stratégie peut être améliorée sous plusieurs aspects:

  1. Évaluer la cohérence des signaux entre les deux stratégies selon différentes combinaisons de paramètres afin de trouver les paramètres optimaux pour la correspondance des signaux.

  2. Testez les performances sur différents produits, les délais pour trouver la meilleure application.

  3. Envisager de remplacer le double croisement des moyennes mobiles par d'autres indicateurs techniques tels que le KDJ afin de diversifier la combinaison de stratégies.

  4. Incorporer des mécanismes de stop-loss pour contrôler les risques, par exemple en fixant des stop-drawdown maximaux.

Conclusion

Cette stratégie combine la double stratégie de croisement des moyennes mobiles et la stratégie de l'indicateur Williams pour capturer à la fois le suivi des tendances et les signaux à court terme. Grâce à l'optimisation des paramètres, elle peut s'adapter à un large éventail de conditions de marché. Cependant, l'appariement inconsistant des signaux et l'optimisation des paramètres complexes restent ses défis. Dans l'ensemble, elle fournit une approche efficace du trading quantitatif et mérite d'être poursuivie pour réduire les risques et améliorer la robustesse.


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 20/06/2019
// 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
//    This indicator plots the oscillator as a histogram where blue denotes 
//    periods suited for buying and red . for selling. If the current value 
//    of AO (Awesome Oscillator) is above previous, the period is considered 
//    suited for buying and the period is marked blue. If the AO value is not 
//    above previous, the period is considered suited for selling and the 
//    indicator marks it as red.
//  You can make changes in the property for set calculating strategy MA, EMA, WMA
//
// 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

BillWilliamsAC(nLengthSlow, nLengthFast,nLengthMA, nLengthEMA, nLengthWMA, bShowWMA, bShowMA, bShowEMA) =>
    pos = 0
    xSMA1_hl2 = sma(hl2, nLengthFast)
    xSMA2_hl2 = sma(hl2, nLengthSlow)
    xSMA1_SMA2 = xSMA1_hl2 - xSMA2_hl2
    xSMA_hl2 = sma(xSMA1_SMA2, nLengthFast)
    nRes =  xSMA1_SMA2 - xSMA_hl2
    xResWMA = wma(nRes, nLengthWMA)
    xResMA = sma(nRes, nLengthMA)
    xResEMA = ema(nRes, nLengthEMA)
    xSignalSeries = iff(bShowWMA, xResWMA,
                     iff(bShowMA, xResMA, 
                      iff(bShowEMA, xResEMA, na)))
    cClr = nRes > nRes[1] ? blue : red
    pos := iff(xSignalSeries[2] < 0 and xSignalSeries[1] > 0, 1,
	         iff(xSignalSeries[2] > 0 and xSignalSeries[1] < 0, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Bill Williams. Awesome Oscillator (AC) with Signal Line", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
nLengthSlow = input(34, minval=1, title="Length Slow")
nLengthFast = input(5, minval=1, title="Length Fast")
nLengthMA = input(15, minval=1, title="MA")
nLengthEMA = input(15, minval=1, title="EMA")
nLengthWMA = input(15, minval=1, title="WMA")
bShowWMA = input(type=bool, defval=true, title="Show and trading WMA")
bShowMA = input(type=bool, defval=false, title="Show and trading MA")
bShowEMA = input(type=bool, defval=false, title="Show and trading EMA")
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posBillWilliamsAC = BillWilliamsAC(nLengthSlow, nLengthFast,nLengthMA, nLengthEMA, nLengthWMA, bShowWMA, bShowMA, bShowEMA)
pos = iff(posReversal123 == 1 and posBillWilliamsAC == 1 , 1,
	   iff(posReversal123 == -1 and posBillWilliamsAC == -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