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 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 solutions:
Ajouter des filtres pour éviter les faux signaux de rupture
Utiliser des périodes d'adaptation basées sur la volatilité du marché
Utilisez des arrêts de trailing pour quitter les transactions en temps opportun
Optimiser les périodes de moyenne mobile pour un meilleur équilibre
Incorporer davantage d'indicateurs pour améliorer la robustesse
Cette stratégie peut être encore améliorée dans les domaines suivants:
Incorporer d'autres signaux d'indicateur comme MACD, Bollinger Bands pour améliorer la qualité du signal
Ajouter des filtres de tendance tels que la direction SMA, ADX pour éviter les transactions contre-tendance
Utiliser des périodes d'adaptation basées sur la volatilité du marché
Mettre en œuvre des arrêts de trailing basés sur des paramètres de stratégie pour les opérations de sortie
Optimiser les périodes de moyenne mobile rapide et lente pour les meilleurs paramètres
Ajouter des filtres d'entrée pour éviter les faux signaux du bruit à court terme
Entrée de rupture d'essai après croisement des moyennes mobiles
Évaluer différentes stratégies de sortie comme Chandelier Exit pour optimiser les sorties
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)