Stratégie de négociation de renversement de l'élan

Auteur:ChaoZhang est là., Date: 2023-11-15 15h36 et 39 min
Les étiquettes:

img

Résumé

Cette stratégie combine le modèle de renversement 123 et la facilité de mouvement (EOM) pour le commerce à des points tournants. Le modèle de renversement 123 génère des signaux lorsque le prix forme des modèles spécifiques sur 3 jours consécutifs. La stratégie EOM utilise des changements de prix et de volume pour mesurer la dynamique du marché.

La logique de la stratégie

La stratégie est composée de deux éléments:

  1. 123 Modèle d'inversion
  • Utiliser Stoch pour identifier les niveaux de surachat et de survente
  • Allez court quand le prix tombe pendant 2 jours consécutifs et la ligne rapide de Stoch est au-dessus de la ligne lente
  • Allez long lorsque le prix augmente pendant 2 jours consécutifs et que la ligne rapide de Stoch est inférieure à la ligne lente
  1. Facilité de déplacement
  • Calculer le point médian de l'intervalle de la journée précédente
  • Calcul de la variation du point médian par rapport à la journée précédente
  • Calcul du rapport entre le mouvement du point médian et le volume
  • Le ratio au-dessus du seuil indique une tendance haussière, au-dessous du seuil une tendance baissière

La stratégie est longue lorsque les signaux EOM et 123 s'alignent sur le côté long, et court lorsque les signaux s'alignent sur le côté court.

Analyse des avantages

Les avantages de cette stratégie:

  1. Combine les modèles de prix et l'élan pour une meilleure précision du signal

  2. 123 modèles de capture des points tournants, EOM gauges dynamique de tendance, deux se complètent

  3. Stoch évite les problèmes lors de la consolidation

  4. Simple et facile à mettre en œuvre

  5. Paramètres personnalisables pour différents environnements de marché

Analyse des risques

Les risques à prendre en considération:

  1. Une dépendance excessive à l'égard des paramètres, des paramètres inappropriés peuvent entraîner une survente ou des transactions manquantes

  2. Beaucoup de filtres peuvent générer trop peu de signaux

  3. EOM sensible à la volatilité, peut générer de faux signaux

  4. Performance en direct plus faible que le backtest, besoin de contrôler la dimension de position

  5. Convient uniquement pour les stocks à tendance, pas pour les marchés à tendance

Directions d'amélioration

La stratégie peut être améliorée par:

  1. Optimisation des paramètres pour équilibrer fréquence et qualité des signaux

  2. Ajout d'un stop loss pour contrôler les pertes d'une seule transaction

  3. Ajout d'un filtre de tendance pour éviter les transactions contre-tendance

  4. Incorporation d'un classement des positions basé sur la volatilité

  5. Utiliser l'apprentissage automatique pour optimiser dynamiquement les paramètres

Conclusion

Cette stratégie intègre des modèles de prix et de l'élan pour une valeur pratique élevée. Mais la fréquence des transactions, le contrôle des pertes et les risques de contre-trend doivent être gérés. Des améliorations supplémentaires des paramètres, du stop loss, du filtrage des tendances peuvent améliorer la stabilité et la rentabilité. La logique est claire et facile à mettre en œuvre pour les traders quant.


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

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 14/04/2020
// 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 gauges the magnitude of price and volume movement. 
// The indicator returns both positive and negative values where a 
// positive value means the market has moved up from yesterday's value 
// and a negative value means the market has moved down. A large positive 
// or large negative value indicates a large move in price and/or lighter 
// volume. A small positive or small negative value indicates a small move 
// in price and/or heavier volume.
// A positive or negative numeric value. A positive value means the market 
// has moved up from yesterday's value, whereas, a negative value means the 
// market has moved down. 
//
// 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

EOM(BuyZone, SellZone) =>
    pos = 0
    xHigh = high
    xLow = low
    xVolume = volume
    xHalfRange = (xHigh - xLow) * 0.5
    xMidpointMove = mom(xHalfRange, 1)
    xBoxRatio = iff((xHigh - xLow) != 0, xVolume / (xHigh - xLow), 0)
    nRes = iff(xBoxRatio != 0, 1000000 * ((xMidpointMove - xMidpointMove[1]) / xBoxRatio), 0)
    pos := iff(nRes > BuyZone, 1,
             iff(nRes < SellZone, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Ease of Movement (EOM)", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
BuyZone = input(4000, minval=1)
SellZone = input(-4000)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posEOM = EOM(BuyZone, SellZone)
pos = iff(posReversal123 == 1 and posEOM == 1 , 1,
	   iff(posReversal123 == -1 and posEOM == -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