Tendance à la suite de la stratégie d'achat et de vente

Auteur:ChaoZhang est là., Date: 2023-10-17 à 12h59
Les étiquettes:

img

Résumé

La stratégie d'achat et de vente est une stratégie de trading simple basée sur la tendance suivante, la prémisse étant de déterminer la direction de la tendance en fonction de la moyenne mobile et d'acheter/vendre les baisses et les points faibles de la tendance.

La logique de la stratégie

La stratégie utilise la moyenne mobile simple (SMA) pour déterminer la direction de la tendance. Dans une tendance haussière, lorsque l'action de la bougie offre un dip, la stratégie sera longue lorsque le haut de la bougie actuelle dépasse le haut de la bougie précédente. Dans une tendance à la baisse, lorsque l'action de la bougie offre un blip, la stratégie sera courte lorsque le bas de la bougie actuelle dépasse le bas de la bougie précédente.

La stratégie utilise également %K et %D de l'oscillateur Blanchflower pour la détermination de la tendance. Elle fermera la position et négociera dans la direction opposée lorsque %K franchit le niveau de %D. De plus, le MACD et la ligne de signal agissent comme des filtres pour ne prendre que les transactions alignées sur la direction de tendance déterminée par le MACD et le signal.

La stratégie peut aller Long seulement, Short seulement, ou les deux. Le mois de début et l'année permettent le backtesting à partir de ce point jusqu'à présent. Tous les paramètres tels que la période SMA, la période %K, la période %D, les paramètres MACD, etc. sont personnalisables.

Analyse des avantages

  • L'utilisation de la SMA pour déterminer la tendance évite les sacs à épée et les transactions incorrectes
  • L'application de l'oscillateur Blanchflower détecte en temps opportun l'inversion de tendance et contrôle le risque
  • Le MACD et le filtre de signal réduisent les transactions bruyantes contre la tendance
  • Les paramètres personnalisables s'adaptent aux différents comportements des prix
  • Le trading long uniquement, court uniquement ou bidirectionnel s'adapte aux régimes du marché

Analyse des risques

Les principaux risques de cette stratégie sont les suivants:

  • Un risque de perte important de pénétration massive de SMA peut augmenter la période de SMA pour réduire le risque.
  • Les transactions fréquentes et les transactions excessives sur le marché à plage peuvent augmenter la période de %K pour réduire la fréquence des transactions.
  • Filtrage inefficace à cause d'un mauvais réglage des paramètres MACD et du signal.
  • Une position importante accumulée lors d'une transaction bidirectionnelle entraînant une perte.

Des possibilités d'amélioration

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

  • Optimiser la période SMA pour filtrer le fouet tout en conservant la capacité de détection de tendance
  • Optimiser les paramètres %K, %D pour capturer l'inversion de tendance tout en réduisant les déclins
  • Optimiser les paramètres MACD pour une filtration du bruit plus efficace
  • Ajouter un contrôle de la taille des positions, par exemple quantité fixe, pourcentage variable des capitaux propres, etc.
  • Ajouter des mécanismes d'arrêt des pertes, par exemple arrêt de trail, arrêt de temps, arrêt ATR, etc.

Conclusion

La stratégie d'achat et de vente à la suite d'une tendance a une logique simple et directe pour négocier des retraits dans les tendances identifiées par la SMA et filtrées par des indicateurs.


/*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)


Plus de