Stratégie combinée d'inversion de l'élan

Auteur:ChaoZhang est là., Date: le 30 octobre 2023 à 11 h 49.26
Les étiquettes:

img

Résumé

Cette stratégie combine deux indicateurs de dynamique pour découvrir plus d'opportunités de trading. Le premier indicateur est une stratégie d'inversion d'oscillateur stochastique proposée dans le livre d'Ulf Jensen. Le deuxième indicateur est le prix synthétique détenu par John Ehlers. La stratégie prend des positions lorsque les deux indicateurs donnent des signaux d'achat ou de vente concurrents.

La logique de la stratégie

La logique derrière l'inversion de l'oscillateur stochastique est la suivante: aller long lorsque la clôture est inférieure à la clôture précédente pendant 2 jours consécutifs et que la ligne rapide est au-dessus de la ligne lente; aller court lorsque la clôture est supérieure à la clôture précédente pendant 2 jours consécutifs et que la ligne rapide est au-dessous de la ligne lente.

Le prix synthétique déductible (DSP) est calculé comme suit:

DSP = EMA ((HL/2, cycle 0.25) - EMA ((HL/2, cycle 0.5)

où HL/2 est le point médian du haut et du bas, l'EMA de 0,25 cycle représente la tendance à court terme et l'EMA de 0,5 cycle représente la tendance à long terme.

Cette stratégie combine les signaux des deux indicateurs. Elle n'entre en position que lorsque les deux indicateurs donnent des signaux concurrents.

Analyse des avantages

  • Filtrer les signaux incertains avec deux indicateurs réduit les transactions erronées
  • La validation entre indicateurs améliore la fiabilité du signal
  • L'inversion stochastique capte les opportunités d'inversion à court terme
  • Le DSP identifie les tendances à moyen et long terme
  • La combinaison de deux indicateurs offre une souplesse pour détecter les renversements et suivre les tendances

Analyse des risques

  • Stochastique présente de faibles performances sur les marchés de gamme
  • DSP peut donner de mauvais signaux près des points tournants de tendance
  • Perdre certaines opportunités en négociant uniquement sur des signaux concurrents
  • Besoin d'un réglage approprié des paramètres pour obtenir un effet combinatoire

Directions de renforcement

  • Tester différents paramètres pour optimiser les performances des indicateurs
  • Essayez une pondération différente de l'indicateur, par exemple les signaux DSP avec retard
  • Ajouter un stop loss au contrôle des risques
  • Incorporer plus d'indicateurs pour construire un modèle multifactoriel

Conclusion

La stratégie combine deux indicateurs de dynamique différents et améliore la qualité du signal grâce à un double filtrage tout en maintenant la fréquence des transactions et en contrôlant les risques.


/*backtest
start: 2023-09-29 00:00:00
end: 2023-10-29 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 18/11/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
// Detrended Synthetic Price is a function that is in phase with the 
// dominant cycle of real price data. This DSP is computed by subtracting 
// a half-cycle exponential moving average (EMA) from the quarter cycle 
// exponential moving average.
// See "MESA and Trading Market Cycles" by John Ehlers pages 64 - 70. 
//
// 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

D_DSP(Length, SellBand, BuyBand) =>
    pos = 0.0
    xHL2 = hl2
    xEMA1 = ema(xHL2, Length)
    xEMA2 = ema(xHL2, 2 * Length)
    xEMA1_EMA2 = xEMA1 - xEMA2
    pos := iff(xEMA1_EMA2 > SellBand, 1,
	         iff(xEMA1_EMA2 < BuyBand, -1, nz(pos[1], 0))) 
	pos

strategy(title="Combo Backtest 123 Reversal & D_DSP (Detrended Synthetic Price) V 2", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
LengthDSP = input(14, minval=1)
SellBand = input(-25)
BuyBand = input(25)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posD_DSP = D_DSP(LengthDSP, SellBand, BuyBand)
pos = iff(posReversal123 == 1 and posD_DSP == 1 , 1,
	   iff(posReversal123 == -1 and posD_DSP == -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