
Die Strategie verwendet zwei Gleichgewichtsindikatoren, um die Trendrichtung und die Zeit der Übernahme von Kursen zu identifizieren. Die langsame Mittellinie (blaue Linie) wird verwendet, um die allgemeine Trendrichtung zu bestimmen, und die schnelle Mittellinie (rote Linie) wird in Verbindung mit dem Preiskanal verwendet, um die Zeit der Übernahme von Kursen zu erkennen.
Berechnen Sie zwei Schnell-Mittellinien. Die Schnell-Mittellinien haben eine Periode von 21, um den Gesamttrend zu beurteilen. Die Schnell-Mittellinien haben eine Periode von 5, die in Verbindung mit dem Preiskanal verwendet wird, um den Zeitpunkt des Handels zu erkennen.
Berechnen Sie, ob der aktuelle Preis den Preiskanal des vorherigen Zyklus durchbrochen hat. Wenn der Preis den Kanal durchbrochen hat, betrachten wir dies als eine Handelsgelegenheit.
Berechnen Sie die Richtung und die Anzahl der K-Linien. Wenn die letzten N-Wurzeln der K-Linien alle negativ sind, ist dies möglicherweise die Zeit für die Multiplikation; wenn die letzten N-Wurzeln der K-Linien alle positiv sind, ist dies möglicherweise die Zeit für die Leerstellung.
Wenn der Kurs mit der langsamen Durchschnittslinie übereinstimmt und die schnelle Durchschnittslinie oder der Preiskanal das Signal gibt und die K-Linie auch die Bedingungen erfüllt, wird ein Handelssignal ausgegeben.
Die Verwendung von Doppel-Einheits-Systemen ermöglicht eine effektive Verfolgung der Trendrichtung.
Die Kombination von schnellen Durchschnittslinien und Preiskanälen ermöglicht es, die Durchbruchspunkte frühzeitig zu erkennen und die richtigen Zeiten zu erfassen.
Die K-Linien sind in der Regel nur in der Richtung der K-Linien ausgerichtet, um nicht in die Gefangenschaft des umgekehrten Marktes zu geraten.
Die Parameter der Durchschnittslinie sind frei anpassbar und für verschiedene Sorten und Perioden geeignet.
Bei einer doppelten Gleichlauflinie kann es leicht zu Fehlschlägen bei der Querkurve kommen. Der Preisdifferenz- oder ATR-Indikator hilft bei der Beurteilung und verhindert den Handel bei einem Erschütterungsfall.
Es kann auch unter außergewöhnlichen Umständen eingestellt werden. Es kann ein geeigneter Stop-Loss-Punkt eingestellt werden, um den Einzelschaden zu reduzieren.
Wir werden die Mechanismen und Parameter weiter optimieren, um die Strategie stabiler zu machen.
Es ist wichtig, dass die Anbieter von Anleihen, die in der Lage sind, die Anleihen zu verkaufen, die in der Lage sind, die Anleihen zu verkaufen, die in der Lage sind, die Anleihen zu verkaufen, die in der Lage sind, die Anleihen zu verkaufen.
Die dynamische Anpassung des Stop-Loss-Punktes. Es ist möglich, das erwartete Risiko auf der Grundlage des ATR zu berechnen und eine angemessene Stop-Loss-Rate festzulegen.
Optimierung von Parameter-Adaptionsfähigkeit. Eine Methode des maschinellen Lernens kann verwendet werden, um das System automatisch zu optimieren.
Die Parameter werden je nach Sorte angepasst. Zum Beispiel sind Kryptowährungen für einen kürzeren Zeitraum geeignet.
Die Strategie als Ganzes eignet sich hervorragend für die Beobachtung von Trends. Sie bietet außerdem eine gewisse Chance für Durchbrüche. Durch eine vernünftige Optimierung kann die Strategie in mehr Märkten stabil betrieben werden.
/*backtest
start: 2023-12-31 00:00:00
end: 2024-01-30 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy(title = "Noro's Trend MAs Strategy v1.9 Extreme", shorttitle = "Trend MAs str 1.9 extreme", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value=100.0, pyramiding=0)
//Settings
needlong = input(true, "long")
needshort = input(true, "short")
needstops = input(false, "stops")
stoppercent = input(5, defval = 5, minval = 1, maxval = 50, title = "Stop, %")
useohlc4 = input(false, defval = false, title = "Use OHLC4")
usefastsma = input(true, "Use fast MA Filter")
fastlen = input(5, defval = 5, minval = 1, maxval = 50, title = "fast MA Period")
slowlen = input(21, defval = 20, minval = 2, maxval = 200, title = "slow MA Period")
bars = input(2, defval = 2, minval = 0, maxval = 3, title = "Bars Q")
needbg = input(false, defval = false, title = "Need trend Background?")
needarr = input(false, defval = false, title = "Need entry arrows?")
needex = input(true, defval = true, title = "Need extreme? (crypto/fiat only!!!)")
src = useohlc4 == true ? ohlc4 : close
//PriceChannel 1
lasthigh = highest(src, slowlen)
lastlow = lowest(src, slowlen)
center = (lasthigh + lastlow) / 2
//PriceChannel 2
lasthigh2 = highest(src, fastlen)
lastlow2 = lowest(src, fastlen)
center2 = (lasthigh2 + lastlow2) / 2
//Trend
trend = low > center and low[1] > center[1] ? 1 : high < center and high[1] < center[1] ? -1 : trend[1]
//Bars
bar = close > open ? 1 : close < open ? -1 : 0
redbars = bars == 0 ? 1 : bars == 1 and bar == -1 ? 1 : bars == 2 and bar == -1 and bar[1] == -1 ? 1 : bars == 3 and bar == -1 and bar[1] == -1 and bar[2] == -1 ? 1 : 0
greenbars = bars == 0 ? 1 : bars == 1 and bar == 1 ? 1 : bars == 2 and bar == 1 and bar[1] == 1 ? 1 : bars == 3 and bar == 1 and bar[1] == 1 and bar[2] == 1 ? 1 : 0
//Signals
up = trend == 1 and (low < center2 or usefastsma == false) and (redbars == 1) ? 1 : 0
dn = trend == -1 and (high > center2 or usefastsma == false) and (greenbars == 1) ? 1 : 0
up2 = high < center and high < center2 and bar == -1 ? 1 : 0
dn2 = low > center and low > center2 and bar == 1 ? 0 : 0
//Lines
plot(center, color = blue, linewidth = 3, transp = 0, title = "Slow MA")
plot(center2, color = red, linewidth = 3, transp = 0, title = "PriceChannel 2")
//Arrows
plotarrow(up == 1 and needarr == true ? 1 : 0, colorup = black, colordown = black, transp = 0)
plotarrow(dn == 1 and needarr == true ? -1 : 0, colorup = black, colordown = black, transp = 0)
//Background
col = needbg == false ? na : trend == 1 ? lime : red
bgcolor(col, transp = 90)
//Alerts
alertcondition(up == 1, title='buy', message='Uptrend')
alertcondition(dn == 1, title='sell', message='Downtrend')
//Trading
stoplong = up == 1 and needstops == true ? close - (close / 100 * stoppercent) : stoplong[1]
stopshort = dn == 1 and needstops == true ? close + (close / 100 * stoppercent) : stopshort[1]
longCondition = up == 1 or (up2 == 1 and needex == true)
if (longCondition)
strategy.entry("Long", strategy.long, needlong == false ? 0 : na)
strategy.exit("Stop Long", "Long", stop = stoplong)
shortCondition = dn == 1
if (shortCondition)
strategy.entry("Short", strategy.short, needshort == false ? 0 : na)
strategy.exit("Stop Short", "Short", stop = stopshort)