Eine Trend-Tracking-Umkehrstrategie ist eine Trend-Trading-Strategie, die auf einem Moving Average und einem Preis-Extreme basiert. Die Strategie verwendet zwei Moving Averages, um einen Preis-Trend zu verfolgen und bei einer Trendumkehr eine Umkehrposition zu eröffnen. Gleichzeitig berechnet sie einen Preiskanal anhand der höchsten und niedrigsten Preise der letzten K-Linien und setzt einen Stop-Loss, wenn der Preis sich der Kanalgrenze nähert, um das Risiko weiter zu kontrollieren.
Die Strategie verwendet die Höhen und Tiefen von 3 langen Moving Averages HMA und LMA, um die Preisentwicklung zu verfolgen. Interpretiere als bullish, wenn der Preis HMA überschreitet; Interpretiere als bullish, wenn der Preis LMA überschreitet.
Die Strategie berechnet außerdem die Auf- und Abwärtsbahnen der Preiskanäle uplevel und dnlevel aufgrund des jüngsten Höchst- und Tiefstpreises innerhalb der Barrenwurzel-K-Linie. Die Auf- und Abwärtsbahnen der Preiskanäle werden durch die Aufwärtsbahnen der Preiskanäle uplevel und dnlevel angegeben.
Bei der Eröffnung von mehreren Aufträgen ist der Stop-Loss-Preis auf der Kanal-Oberbahn; bei der Eröffnung von leeren Aufträgen ist der Stop-Loss-Preis auf der Kanal-Unterbahn. Dies kann das Risiko von Verlusten durch eine Preisumkehr wirksam kontrollieren.
Wenn ein Umkehrsignal auftritt, wird die Strategie sofort umgekehrt, um neue Preistrends zu verfolgen. Das ist das Umkehrprinzip.
Optimierungsmethoden:
Die Strategie kann noch weiter optimiert werden:
Es können andere Kennzahlen kombiniert werden, um einige ungültige Signale abzufiltern, z. B. MACD, KD usw.
Es können auch adaptive Stop-Loss-Logiken, wie beispielsweise Moving Stop, Balance Stop usw. eingesetzt werden, um das Risiko weiter zu kontrollieren.
Die Auswirkungen verschiedener Parameter auf die Effektivität der Strategie können getestet werden, um eine Kombination von Parametern zu optimieren, z. B. die Länge der MA-Zyklen, die Größe des Rücklaufkoeffizienten usw.
Die Strategie ist derzeit für den Handel in Zeitabschnitten und kann auch für den Handel rund um die Uhr angepasst werden. Dies kann andere Filterregeln erfordern.
Die Strategie als Ganzes ist eine Trend-Umkehr-Handelsstrategie, bei der der Preiskanal mit einem Moving Average kombiniert wird. Durch Trendverfolgung und rechtzeitige Umkehrung von Positionen kann der Preisbewegung effektiv verfolgt werden. Die Risikokontrolle von Preiskanälen und Umkehrung von Positionen ermöglicht es auch, Einzelschäden effektiv zu kontrollieren. Die Strategie ist einfach und klar und lohnt sich, in der Praxis weiter zu testen und zu optimieren.
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//Noro
//2019
//@version=3
strategy(title = "Noro's 3Bars Strategy by Larry Williams", shorttitle = "3Bars", 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, %")
corr = input(0.0, title = "Correction, %")
bars = input(1, minval = 1)
revers = input(false, defval = false, title = "revers")
showll = input(true, defval = true, title = "Show Levels")
showos = input(true, defval = true, title = "Show Levels one side")
showcl = input(false, defval = false, title = "Show Levels continuous line")
showbg = input(false, defval = false, title = "Show Background")
showar = input(false, defval = false, title = "Show Arrows")
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")
len = input(3)
hma = sma(high, len)
lma = sma(low, len)
plot(hma)
plot(lma)
//Levels
hbar = 0
hbar := high > high[1] ? 1 : high < high[1] ? -1 : 0
lbar = 0
lbar := low > low[1] ? 1 : low < low[1] ? -1 : 0
uplevel = 0.0
dnlevel = 0.0
hh = highest(high, bars + 1)
ll = lowest(low, bars + 1)
uplevel := hbar == -1 and sma(hbar, bars)[1] == 1 ? hh + ((hh / 100) * corr) : uplevel[1]
dnlevel := lbar == 1 and sma(lbar, bars)[1] == -1 ? ll - ((ll / 100) * corr) : dnlevel[1]
//Background
size = strategy.position_size
trend = 0
trend := size > 0 ? 1 : size < 0 ? -1 : high >= uplevel ? 1 : low <= dnlevel ? -1 : trend[1]
col = showbg == false ? na : trend == 1 ? lime : trend == -1 ? red : na
bgcolor(col)
//Lines
upcol = na
upcol := showll == false ? na : uplevel != uplevel[1] and showcl == false ? na : showos and trend[1] == 1 ? na : lime
plot(uplevel, color = upcol, linewidth = 2)
dncol = na
dncol := showll == false ? na : dnlevel != dnlevel[1] and showcl == false ? na : showos and trend[1] == -1 ? na : red
plot(dnlevel, color = dncol, linewidth = 2)
//Arrows
longsignal = false
shortsignal = false
longsignal := size > size[1]
shortsignal := size < size[1]
plotarrow(longsignal and showar and needlong ? 1 : na, colorup = blue, colordown = blue, transp = 0)
plotarrow(shortsignal and showar and needshort ? -1 : na, colorup = blue, colordown = blue, transp = 0)
//Trading
lot = 0.0
lot := size != size[1] ? strategy.equity / close * capital / 100 : lot[1]
if uplevel > 0 and dnlevel > 0 and revers == false
strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, stop = uplevel)
strategy.entry("Long stop", strategy.short, 0, stop = lma)
strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, stop = dnlevel)
strategy.entry("Short stop", strategy.long, 0, stop = hma)
// if time > timestamp(toyear, tomonth, today, 23, 59)
// strategy.close_all()