Stratégie de croisement stochastique sur plusieurs délais

Auteur:ChaoZhang est là., Date: 2023-10-24 à 14h44.
Les étiquettes:

img

Résumé

La stratégie de croisement stochastique multi-temps est une stratégie typique de suivi de tendance. Elle calcule les valeurs d'écart type sur différentes périodes (par exemple, quotidienne, hebdomadaire, mensuelle, etc.), construit plusieurs lignes K et D, prend la moyenne de ces lignes pour construire des moyennes mobiles, et va long lorsque la ligne rapide traverse au-dessus de la ligne lente et court lorsque la ligne rapide traverse en dessous de la ligne lente. En combinant les lignes d'écart type sur plusieurs périodes, cette stratégie peut filtrer efficacement le bruit du marché et capturer la tendance prédominante.

La logique de la stratégie

La logique de base de cette stratégie est de calculer l'écart type sur plusieurs délais, puis de prendre la moyenne pour générer des signaux de trading.

Premièrement, la stratégie calcule les valeurs K de l'écart type selon différents paramètres pour 5 groupes, correspondant à des délais quotidiens, hebdomadaires et mensuels:

smoothK = input(55)
SMAsmoothK = input(13)  
k = sma(stoch(price, high, low, smoothK), SMAsmoothK)

smoothK1 = input(89) 
SMAsmoothK1 = input(8)
k1 = sma(stoch(price, high, low, smoothK1), SMAsmoothK1) 

...

smoothK4 = input(377)
SMAsmoothK4 = input(2)
k4 = sma(stoch(price, high, low, smoothK4), SMAsmoothK4)

Ensuite, il calcule D lignes avec des paramètres différents respectivement:

smoothD = input(34)
d = sma(k, smoothD)  

...

smoothD4 = input(233) 
d4 = sma(k4, smoothD4)

Ensuite, il calcule la moyenne des lignes K et D pour obtenir la ligne rapide Kavg et la ligne lente Davg:

Kavg = avg(k,k1,k2,k3,k4)
Davg = avg(d,d1,d2,d3,d4)

Enfin, il devient long lorsque Kavg traverse au-dessus de Davg, et court lorsque Kavg traverse au-dessous de Davg:

long = crossover(Kavg, Davg)  
short = crossunder(Kavg, Davg)

En combinant des lignes d'écart type sur plusieurs délais, cette stratégie permet de filtrer le bruit du marché dans des délais plus longs et de capturer la direction de tendance prédominante.

Les avantages

  • Utilise le pouvoir prédictif de l'écart type sur plusieurs délais pour filtrer le bruit et capturer les tendances
  • Flexibilité pour ajuster la période de rétention en ajustant les paramètres de la période
  • L'écart type lui-même présente une forte tendance à la suite des caractéristiques suivantes:
  • Le croisement de la moyenne mobile évite d'être induit en erreur par de simples faux écarts
  • Facilité d'optimisation des périodes moyennes mobiles pour une plus grande stabilité

Risques et solutions

  • Des croisements de moyenne mobile sur plusieurs délais peuvent générer de nombreux faux signaux, optimiser les périodes de moyenne mobile
  • Déviation type sujette aux erreurs dues aux mouvements volatils, envisager l'ajout de filtres
  • Les périodes fixes ne peuvent pas s'adapter aux changements du marché, adopter des périodes d'adaptation
  • Longues périodes de détention risque de pourchasser les sommets et les fonds, utiliser les arrêts de trailing pour verrouiller les bénéfices
  • La dépendance à l'indicateur KDJ est limitante, combinée à d'autres indicateurs

Les solutions:

  1. Ajouter des filtres pour éviter les faux signaux de rupture

  2. Utiliser des périodes d'adaptation basées sur la volatilité du marché

  3. Utilisez des arrêts de trailing pour quitter les transactions en temps opportun

  4. Optimiser les périodes de moyenne mobile pour un meilleur équilibre

  5. Incorporer davantage d'indicateurs pour améliorer la robustesse

Des possibilités d'amélioration

Cette stratégie peut être encore améliorée dans les domaines suivants:

  1. Incorporer d'autres signaux d'indicateur comme MACD, Bollinger Bands pour améliorer la qualité du signal

  2. Ajouter des filtres de tendance tels que la direction SMA, ADX pour éviter les transactions contre-tendance

  3. Utiliser des périodes d'adaptation basées sur la volatilité du marché

  4. Mettre en œuvre des arrêts de trailing basés sur des paramètres de stratégie pour les opérations de sortie

  5. Optimiser les périodes de moyenne mobile rapide et lente pour les meilleurs paramètres

  6. Ajouter des filtres d'entrée pour éviter les faux signaux du bruit à court terme

  7. Entrée de rupture d'essai après croisement des moyennes mobiles

  8. Évaluer différentes stratégies de sortie comme Chandelier Exit pour optimiser les sorties

Conclusion

La stratégie de croisement stochastique multi-temps combine la capacité de suivi de tendance de l'indicateur stochastique et la stabilité des stratégies de moyenne mobile. En prenant la moyenne des lignes de déviation standard K et D multi-périodes pour générer des signaux, elle utilise efficacement le pouvoir prédictif de l'écart type à travers différents délais, filtre le bruit du marché et capte la tendance prédominante. Cette stratégie a de la place pour l'ajustement des paramètres et d'autres améliorations telles que des filtres, des arrêts, etc. Dans l'ensemble, elle intègre les forces de plusieurs outils d'analyse technique et est une stratégie de suivi de tendance efficace qui vaut la peine d'être explorée et optimisée.


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

//@version=2
strategy(title="Slow Stochastic Multi K&D Average Crossover Strategy", overlay=false, pyramiding=0, calc_on_order_fills=true, initial_capital=100000, default_qty_type=strategy.percent_of_equity, currency="USD", default_qty_value=100)


price = input(close)

///////////////////////////////
smoothK = input(55) 

SMAsmoothK = input(13)
k = sma(stoch(price, high, low, smoothK), SMAsmoothK)



smoothD = input(34)
d = sma(k, smoothD)


///////////////////////////

smoothK1 = input(89) 

SMAsmoothK1 = input(8)
k1 = sma(stoch(price, high, low, smoothK1), SMAsmoothK1)

smoothD1 = input(55)
d1 = sma(k1, smoothD1)

//////////////////////////////////////

smoothK2 = input(144) 

SMAsmoothK2 = input(5)
k2 = sma(stoch(price, high, low, smoothK2), SMAsmoothK2)

smoothD2 = input(89)
d2 = sma(k2, smoothD2)

/////////////////////////////////////

smoothK3 = input(233) 

SMAsmoothK3 = input(3)
k3 = sma(stoch(price, high, low, smoothK3), SMAsmoothK3)

smoothD3 = input(144)
d3 = sma(k3, smoothD3)

////////////////////////////////////////////////

smoothK4 = input(377) 

SMAsmoothK4 = input(2)
k4 = sma(stoch(price, high, low, smoothK4), SMAsmoothK4)

smoothD4 = input(233)
d4 = sma(k4, smoothD4)

/////////////////////////////////////////////////

Kavg = avg(k,k1,k2,k3,k4, k4)
plot(Kavg, color=green)

Davg = avg(d,d1,d2,d3,d4, d4)
plot(Davg, color=red)


///////////////////////////////////////
hline(50, color=gray)


long = crossover(Kavg, Davg)// and d < 50
short = crossunder(Kavg, Davg)// and d > 50


last_long = long ? time : nz(last_long[1])
last_short = short ? time : nz(last_short[1])
long_signal = crossover(last_long, last_short) 
short_signal = crossover(last_short, last_long)



strategy.entry("Long", strategy.long, when=long_signal)
strategy.entry("Short", strategy.short, when=short_signal) 

//len1 = input(3)

//closelong = d[1] < k[len1]
//closeshort = d[1] > k[len1]

//strategy.close("Long", when=closelong)
//strategy.close("Short", when=closeshort)



Plus de