Système de suivi de l'inversion de la moyenne mobile double

Auteur:ChaoZhang est là., Date: 2023-11-07 16h33
Les étiquettes:

img

Résumé

Le système de suivi de l'inversion des moyennes mobiles doubles intègre la stratégie 123 et la stratégie Ichimoku pour identifier les opportunités d'inversion et suivre les tendances en matière de rendements excessifs.

La logique de la stratégie

La stratégie est composée de deux sous-stratégies:

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

Cette stratégie est basée sur des modèles de prix.

  • Allez long lorsque le prix de clôture augmente pendant deux jours consécutifs et que le stochastique lent de 9 jours est inférieur à 50.

  • Faites du short lorsque le prix de clôture chute pendant deux jours consécutifs et que le stochastique rapide de 9 jours est supérieur à 50.

Il utilise l'éclatement de la clôture des jours précédents pour déterminer les renversements et utilise la stochastique pour filtrer le bruit.

  1. La stratégie Ichimoku

Cette stratégie est basée sur le croisement des cinq lignes de Ichimoku.

  • Passez long lorsque le prix de clôture est supérieur à la ligne de base.

  • Faites du short lorsque le prix de clôture est inférieur à la ligne de conversion.

où la ligne de base est le point médian du plus haut plus haut et du plus bas plus bas au cours des 26 derniers jours, et la ligne de conversion est le point médian du plus haut plus haut et du plus bas plus bas au cours des 9 derniers jours.

La stratégie finale combine les signaux des deux sous-stratégies, entrant lorsque les deux signaux sont longs ou courts et sortant lorsqu'ils sont en désaccord.

Analyse des avantages

  • Combine l'inversion et le suivi des tendances, flexible pour détecter les inversions et les tendances.

  • Le modèle 123 est simple et efficace pour identifier les inversions.

  • Les paramètres d'Ichimoku sont optimisés, avec un risque d'évasion moindre.

  • La combinaison de deux stratégies différentes peut permettre d'optimiser.

Analyse des risques

  • Les stratégies d'inversion sont sujettes aux pièges et aux pertes.

  • Ichimoku peut éprouver des problèmes sur les marchés limités à la fourchette, ajuster les paramètres ou ajouter des filtres pour réduire les transactions inutiles.

  • Les paramètres incompatibles lors de la combinaison des stratégies peuvent entraîner des signaux trop fréquents ou peu fréquents.

Directions d'optimisation

  • Testez plus d'indicateurs pour obtenir de meilleurs filtres, par exemple en incorporant le volume.

  • Optimisez les paramètres Ichimoku pour les adapter aux caractéristiques de l'instrument.

  • Ajouter des mécanismes de stop loss, par exemple des sorties réglées basées sur l'ATR.

  • Ajouter un module de gestion de fonds pour le contrôle des risques.

  • Rassembler plus de données pour un backtesting robuste, découvrir des problèmes et itérer.

Conclusion

Le système de suivi de l'inversion des moyennes mobiles doubles combine les atouts des stratégies d'inversion et de suivi de tendance grâce à l'optimisation et à la combinaison pour la génération alpha. Il présente des avantages commerciaux, mais des risques tels que les fléchettes et le stop loss existent. Nous devons continuer à améliorer la logique des backtests et à mettre en œuvre un contrôle des risques approprié pour la stabilité et les performances du monde réel.


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

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 26/11/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
//  Ichimoku Strategy
//
// 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

middleDonchian(Length) =>
    lower = lowest(Length)
    upper = highest(Length)
    avg(upper, lower)    
    
Ichimoku2c(conversionPeriods, basePeriods,laggingSpan2Periods,displacement) =>
    pos = 0.0
    Tenkan = middleDonchian(conversionPeriods)
    Kijun =  middleDonchian(basePeriods)
    xChikou = close
    SenkouA = middleDonchian(laggingSpan2Periods)
    SenkouB = (Tenkan[basePeriods] + Kijun[basePeriods]) / 2
    pos := iff(close < SenkouA[displacement], -1,
              iff(close > SenkouB, 1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Ichimoku2c", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
conversionPeriods = input(9, minval=1),
basePeriods = input(26, minval=1)
laggingSpan2Periods = input(52, minval=1),
displacement = input(26, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posIchimoku2c = Ichimoku2c(conversionPeriods, basePeriods,laggingSpan2Periods,displacement)
pos = iff(posReversal123 == 1 and posIchimoku2c == 1 , 1,
	   iff(posReversal123 == -1 and posIchimoku2c == -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