
La stratégie de suivi de la tendance des moyennes mobiles doubles est une stratégie de négociation quantitative basée sur des moyennes mobiles de deux périodes différentes pour déterminer la direction de la tendance du marché. La stratégie utilise les moyennes mobiles rapides et les moyennes mobiles lentes pour déterminer la direction de la tendance et négocier dans la direction de la tendance.
La stratégie utilise deux moyennes mobiles, une moyenne mobile rapide (par exemple, 10 cycles) et une moyenne mobile lente (par exemple, 30 cycles). Si les deux moyennes mobiles sont à la hausse, elles sont considérées comme une tendance à plusieurs têtes; si les deux moyennes mobiles sont à la baisse, elles sont considérées comme une tendance à la tête vide.
Plus précisément, la stratégie commence par calculer les moyennes rapides et les moyennes lentes. Ensuite, la relation entre la moyenne rapide actuelle et la taille de la période précédente est comparée. Si la taille actuelle est supérieure à la taille de la période précédente, elle est évaluée à 1, ce qui signifie qu’elle est à la hausse.
Finalement, on détermine rapidement les valeurs de jugement des deux moyennes mobiles. Si les deux valeurs de jugement sont 1, le jugement final est 1, indiquant une tendance à plusieurs têtes; si les deux valeurs de jugement sont -1, le jugement final est -1, indiquant une tendance à vide. Si les valeurs de jugement ne sont pas cohérentes, on maintient le jugement de tendance du cycle précédent.
Après avoir déterminé la direction de la tendance, la stratégie consiste à ouvrir une position plus élevée dans une tendance à plusieurs têtes et à ouvrir une position plus basse dans une tendance à vide.
Cette stratégie présente les avantages suivants:
Cette stratégie comporte aussi des risques:
Pour réduire les risques mentionnés ci-dessus, il est possible de définir des paramètres de cycle de moyenne mobile plus raisonnables, d’introduire d’autres indicateurs techniques comme jugement auxiliaire, de définir des règles de stop-loss ou d’ajuster les positions de manière appropriée.
La stratégie peut également être optimisée dans les domaines suivants:
La stratégie de suivi de la tendance des moyennes mobiles doubles est une stratégie de suivi de tendance typique. La stratégie peut faire plus ou moins selon les préférences personnelles, elle est flexible, simple et facile à utiliser.
/*backtest
start: 2022-12-12 00:00:00
end: 2023-12-18 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © noro
// 2020
//@version=4
strategy(title = "Noro's TrendMA Strategy", shorttitle = "TrendMA str", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0, commission_value = 0.1)
//Settings
needlong = input(true, title = "Long")
needshort = input(true, title = "Short")
fast = input(10, minval = 1, title = "MA Fast (red)")
slow = input(30, minval = 2, title = "MA Slow (blue)")
type = input(defval = "SMA", options = ["SMA", "EMA"], title = "MA Type")
src = input(ohlc4, title = "MA Source")
showma = input(true, title = "Show MAs")
showbg = input(false, title = "Show Background")
//MAs
fastma = type == "EMA" ? ema(src, fast) : sma(src, fast)
slowma = type == "EMA" ? ema(src, slow) : sma(src, slow)
//Lines
colorfast = showma ? color.red : na
colorslow = showma ? color.blue : na
plot(fastma, color = colorfast, title = "MA Fast")
plot(slowma, color = colorslow, title = "MA Slow")
//Trend
trend1 = fastma > fastma[1] ? 1 : -1
trend2 = slowma > slowma[1] ? 1 : -1
trend = 0
trend := trend1 == 1 and trend2 == 1 ? 1 : trend1 == -1 and trend2 == -1 ? -1 : trend[1]
//Backgrouns
colbg = showbg == false ? na : trend == 1 ? color.lime : trend == -1 ? color.red : na
bgcolor(colbg, transp = 80)
//Trading
if trend == 1
if needlong
strategy.entry("Long", strategy.long)
if needlong == false
strategy.close_all()
if trend == -1
if needshort
strategy.entry("Short", strategy.short)
if needshort == false
strategy.close_all()