Cette stratégie utilise la moyenne mobile et la plage moyenne vraie pour déterminer la direction de la tendance du marché pour le suivi des tendances.
Cette stratégie utilise pour déterminer l'évolution du marché la moyenne mobile des périodes et deux fois la moyenne réelle des intervalles des périodes.
Lorsque le plus bas est supérieur à la moyenne mobile plus la plage moyenne réelle (bas > ma + atr), il est jugé comme une tendance à la hausse. Lorsque le maximum est inférieur à la moyenne mobile moins la plage moyenne réelle (high < ma - atr), il est jugé comme une tendance à la baisse.
Dans les autres cas, l'arrêt précédent est maintenu.
Quand une tendance à la hausse est déterminée, allez long à un certain pourcentage quand vous êtes autorisé à aller long. Quand une tendance à la baisse est déterminée, achetez à court à un certain pourcentage si vous êtes autorisé à le faire.
La condition de clôture est d'atteindre la date de fin de négociation spécifiée.
Les avantages de cette stratégie sont les suivants:
Les principaux risques auxquels cette stratégie est confrontée sont les suivants:
Les solutions:
La stratégie peut être optimisée par les aspects suivants:
L'idée générale de cette stratégie est claire et facile à comprendre. Elle utilise des moyennes mobiles pour déterminer la direction de la tendance et utilise une plage moyenne vraie pour définir des arrêts. Elle peut effectivement suivre les tendances. Mais il existe certains risques, et une optimisation supplémentaire des paramètres et l'ajout d'autres indicateurs de jugement sont nécessaires. En général, cette stratégie fournit une approche viable pour le suivi des tendances.
/*backtest start: 2024-01-04 00:00:00 end: 2024-01-11 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //2019 //Noro //@version=4 strategy(title = "Noro's MA+ATR Strategy", shorttitle = "MA+ATR str", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0) //Settings needlong = input(true, defval = true, title = "Long") needshort = input(true, defval = true, title = "Short") capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %") len = input(30, minval = 2, title = "MA Length") src = input(ohlc4, title = "MA Source") limitmode = input(false) fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year") toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year") frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month") tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month") fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day") today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day") //MA + BG atr = sma(tr, len) * 2 ma = sma(src, len) plot(ma, color = color.blue, linewidth = 4) trend = 0 trend := low > ma + atr ? 1 : high < ma - atr ? -1 : trend[1] col = trend == 1 ? color.lime : color.red bgcolor(col, transp = 70) //Trading lot = 0.0 lot := strategy.position_size != strategy.position_size[1] ? strategy.equity / close * capital / 100 : lot[1] if trend == 1 and limitmode == false strategy.entry("Long", strategy.long, needlong == false ? 0 : lot) if trend == -1 and limitmode == false strategy.entry("Short", strategy.short, needshort == false ? 0 : lot) if trend == 1 and limitmode strategy.entry("Long", strategy.long, needlong == false ? 0 : lot) if trend == -1 and limitmode strategy.entry("Short", strategy.short, needshort == false ? 0 : lot) // if time > timestamp(toyear, tomonth, today, 23, 59) // strategy.close_all()