
La stratégie de suivi de tendance est une stratégie simple de suivi de tendance. L’idée de base de la stratégie est de déterminer la direction de la tendance en fonction de la moyenne mobile et de faire des achats et des ventes lors des fluctuations de la tendance.
La stratégie utilise la moyenne mobile simple (SMA) pour déterminer la direction de la tendance. Dans une tendance haussière, lorsque la ligne K atteint un point bas (coup de rebond), la stratégie fait plus lorsque la ligne K atteint le point le plus élevé de la ligne K précédente; dans une tendance baissière, lorsque la ligne K atteint un point élevé (coup de rebond), la stratégie fait moins lorsque la ligne K atteint le point le plus bas de la ligne K précédente.
La stratégie utilise également les indices de Blanchflower %K et %D pour déterminer la tendance. La stratégie utilise également la courbe MACD et la courbe Signal comme conditions de filtrage et n’exécute des transactions que si la MACD et le Signal correspondent à la direction de la tendance.
La stratégie peut être simple, simple ou simultanée. La date de début peut être définie en fonction du mois et de l’année de début de la réévaluation. Tous les paramètres tels que la période de la moyenne mobile, la période K, la période D, le paramètre MACD, etc., peuvent être personnalisés.
La stratégie présente principalement les risques suivants:
Cette stratégie peut être optimisée dans les domaines suivants:
La stratégie de suivi de tendance est simple et claire, elle détermine la direction de la tendance à l’aide de moyennes mobiles et utilise des filtres d’indicateurs pour localiser les opportunités de trading dans la tendance. La stratégie peut avoir de bons résultats grâce à l’optimisation des paramètres, mais elle nécessite toujours un emballage de code combiné pour réduire les risques d’optimisation et améliorer la stabilité.
/*backtest
start: 2022-10-10 00:00:00
end: 2023-10-16 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("Higher High / Lower Low Strategy", overlay=true)
// Getting inputs
longOnly = input(true, title="Long or Short Only")
useMACD = input(true, title="Use MACD Filter")
useSignal = input(true, title="Use Signal Filter")
//Filter backtest month and year
startMonth = input(10, minval=1, maxval=12, title="Month")
startYear = input(2020, minval=2000, maxval=2100, title="Year")
//Filter funtion inputs
periodA = input(20, minval=1, title="Period SMA")
periodK = input(5, minval=1, title="Period %K")
fast_length = input(title="Period Fast", type=input.integer, defval=5)
slow_length = input(title="Period Slow", type=input.integer, defval=20)
signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 30)
//Calculations
smoothD = 3 //input(3, minval=1, title="Smooth %D")
smoothK = 2 //input(2, minval=1, title="Smooth %K")
ma50 = sma(close, periodA)
k = sma(stoch(close, high, low, periodK), smoothK) - 50
d = sma(k, smoothD)
macd = ema(close,fast_length) - ema(close,slow_length)
signal = ema(macd,signal_length)
hist = macd - signal
if (not na(k) and not na(d) and not na(macd) and not na(signal) and longOnly and month>=startMonth and year>=startYear)// if(k > k[1] and k[2] >= k[1] and (ma50 > ma50[1]) and (not useK or k[1] <= -threshold_k) and (not useMACD or macd > macd[1]) and (not useSignal or signal > signal[1]) and (not useHHLL or close >= high[1]) and (not useD or d <= -threshold_d))
if(high[2] >= high[1] and high > high[1] and (ma50 > ma50[1]) and (not useMACD or macd > macd[1]) and (not useSignal or signal > signal[1]))
strategy.order("HH_LE", strategy.long, when=strategy.position_size == 0, comment="HH_LE")
if (k < k[1])
strategy.order("HH_SX", strategy.short, when=strategy.position_size != 0, comment="HH_SX")
if (not na(k) and not na(d) and not na(macd) and not na(signal) and not longOnly and month>=startMonth and year>=startYear)
if(low[2] <= low[1] and low < low[1] and (ma50 < ma50[1]) and (not useMACD or macd < macd[1]) and (not useSignal or signal < signal[1]))
strategy.order("HH_SE", strategy.short, when=strategy.position_size == 0, comment="HH_SE")
if (k > k[1])
strategy.order("HH_LX", strategy.long, when=strategy.position_size != 0, comment="HH_LX")
//plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)