
Die Strategie nutzt bewegliche Durchschnitte und durchschnittliche reale Schwankungen, um die Richtung der Markttrends zu bestimmen und trendspezifische Geschäfte in Abhängigkeit von der Richtung der Trends durchzuführen.
Die Strategie nutzt den Moving Average ma des Len-Zyklus und die 2-fache reale Schwankungsrateatr des Len-Zyklus, um die Markttrends zu beurteilen. Die spezifischen Beurteilungsregeln sind:
Wenn der Minimumpreis größer ist als der Moving Average plus die durchschnittliche reale Schwankungsrate ((low > ma + atr), wird er als Aufwärtstrend beurteilt.
Wenn der Höchstpreis kleiner ist als der Moving Average abzüglich der durchschnittlichen realen Schwankungsrate (high < ma - atr), wird er als Abwärtstrend beurteilt.
In anderen Fällen bleibt das Urteil bestehen.
Bei der Beurteilung von Aufwärtstrends, wenn es erlaubt ist, mehr zu tun, in einem bestimmten Verhältnis zu tun.
Bei der Beurteilung eines Abwärtstrends ist eine Prozentsatz-Kopplung zulässig, wenn ein Kauf erlaubt ist.
Die Ausgleichsbedingungen gelten bis zum angegebenen Termin des Abschlusses des Geschäfts.
Diese Strategie hat folgende Vorteile:
Die wichtigsten Risiken für diese Strategie sind:
Die Lösung:
Diese Strategie kann in folgenden Bereichen optimiert werden:
Die Gesamtkonzeption der Strategie ist klar und leicht zu verstehen. Die Verwendung von Moving Averages zur Bestimmung der Trendrichtung und die Verwendung von durchschnittlichen realen Schwankungen zur Einstellung von Stop-Losses ermöglicht eine effiziente Trendverfolgung. Es besteht jedoch ein gewisses Risiko, dass weitere Optimierungen der Parameter festgelegt und andere Beurteilungsindikatoren hinzugefügt werden müssen.
/*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()