
La stratégie de croisement de lignes K à déviation standard à périodes multiples est une stratégie de suivi de tendance typique. La stratégie consiste à calculer les valeurs de déviation standard pour différentes périodes de temps (telles que le jour, la semaine, la lune, etc.), à construire plusieurs ensembles de lignes K et D, puis à prendre la moyenne de ces lignes pour construire une moyenne.
La logique centrale de cette stratégie est de calculer l’écart-type sur plusieurs périodes de temps, puis de construire un signal de transaction en prenant la moyenne.
Tout d’abord, la stratégie a été adoptée.stoch()La fonction calcule les valeurs de K de l’écart-type selon les différents paramètres. On calcule 5 groupes de valeurs de K, correspondant à des périodes de temps au niveau du solstice, de la lune et de la lune.
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)
On calcule ensuite la ligne D avec différents paramètres:
smoothD = input(34)
d = sma(k, smoothD)
...
smoothD4 = input(233)
d4 = sma(k4, smoothD4)
On calcule ensuite la moyenne des groupes de lignes K et D pour construire les lignes rapides Kavg et les lignes lentes Davg:
Kavg = avg(k,k1,k2,k3,k4)
Davg = avg(d,d1,d2,d3,d4)
Enfin, lorsque vous utilisez la ligne rapide, faites-en plus, et lorsque vous utilisez la ligne lente, faites-en moins:
long = crossover(Kavg, Davg)
short = crossunder(Kavg, Davg)
En combinant plusieurs périodes de la moyenne de la déviation standard, il est possible d’éliminer le bruit du marché dans les périodes de temps plus longues et de déterminer la direction des principales tendances.
Solution:
Augmentation des conditions de filtrage pour éviter les fausses avancées à court terme
Utilisez un réglage de cycle adaptatif pour ajuster les paramètres de cycle en fonction de la volatilité du marché
Réglez les arrêts mobiles pour arrêter les pertes en temps opportun et éviter de poursuivre les hauts et les bas.
Optimiser les paramètres de la périodicité moyenne pour trouver l’équilibre optimal
Une combinaison de plus de signaux d’indicateurs pour améliorer la stabilité de la stratégie
Cette stratégie peut être optimisée dans les domaines suivants:
L’introduction d’autres signaux d’indicateurs en combinaison, tels que l’introduction de MACD, Bollinger Bands, etc., peut améliorer la qualité du signal
Ajouter des filtres de tendance, tels que l’introduction de la direction de la courbe moyenne des SMA, des indicateurs tels que l’ADX pour juger de la tendance et éviter le trading à contre-courant
Paramètres de cycles adaptatifs utilisant des paramètres de cycles adaptatifs qui s’adaptent dynamiquement à la volatilité du marché
Ajout d’une stratégie de stop mobile, paramétrage des points de stop en fonction des paramètres de la stratégie, stop à temps
Optimiser les paramètres de périodes moyennes des lignes rapides et des lignes lentes pour trouver la meilleure combinaison de paramètres
Ajout de conditions de filtrage de stockage pour éviter les signaux trompeurs de bruit à court terme
Essayez une stratégie d’entrée en rupture et ouvrez une position après la rupture de la moyenne.
Tester différentes stratégies d’exit, telles que l’exit de Chandelier, pour optimiser le stop loss
La stratégie de croisement de la ligne K de l’indicateur de déviation standard à plusieurs périodes de temps intègre la capacité de suivi de la tendance de l’indicateur de déviation standard à plusieurs périodes et la stabilité de la stratégie homogène. En calculant les moyennes de la ligne K et de la ligne D de la déviation standard à plusieurs périodes, les signaux de négociation sont construits de manière à exploiter efficacement la prévisibilité de l’indicateur de déviation standard sur différentes échelles de temps, à filtrer le bruit du marché et à capturer la direction de la tendance principale.
/*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)