
Die Strategie ist eine Trend-Tracking-Handelsstrategie, die die Richtung der Markttrends anhand eines einfachen Moving Averages beurteilt und auf dem Moving Average ein Limit-Index in der Richtung der Trends platziert, um einen Trend-Tracking-Handel zu realisieren.
Berechnung eines einfachen Moving Average SMA, sowie Berechnung der Trendrichtung.
Wenn der Feedback-Filter aktiviert ist, wird der niedrigste Punkt, der höher als der SMA ist, als Aufwärtstrend beurteilt, und der höchste Punkt, der niedriger als der SMA ist, als Abwärtstrend beurteilt. Wenn der Feedback-Filter nicht aktiviert ist, wird der Schlusskurs, der höher als der SMA ist, als Aufwärtstrend beurteilt, und der Schlusskurs, der niedriger als der SMA ist, als Abwärtstrend beurteilt.
Nach der Richtung des Trends und den aktivierten Parametern “needlong” und “needshort” wird ein Limit-Order auf den SMA-Preis platziert. Die Logik ist:
Wenn mehr getan werden muss (needlong ist true) und ein Aufwärtstrend herrscht, wird ein Maximum-Beschränkungs-Beschreibung bei SMA-Preisen platziert
Wenn ein Shorting benötigt wird (needshort ist true) und in einem Abwärtstrend ist, wird ein Short-Limit-Beschreibung bei SMA-Preisen platziert
Setzen Sie eine Stop-Loss-Logik, die aussteigt, wenn die Richtung der Position nicht mit der Trendrichtung übereinstimmt.
Der Parameter “Datumbereich” bedeutet, dass nur innerhalb des angegebenen Datumsbereichs gehandelt wird.
Die Verwendung von SMAs, um Trends zu beurteilen, kann effektiv Marktlärm filtern und Trends in längeren Linien sperren.
Die Platzierung eines Limit-Botes auf den SMA-Preis ermöglicht einen besseren Einstieg in die Anfangsphase des Trends.
Die Option besteht darin, nur zu viel oder nur zu wenig zu handeln und sich flexibel an den individuellen Handelsstil anzupassen.
Es kann ein Ausfallmechanismus eingerichtet werden, um eine Vergrößerung der Verluste zu verhindern.
Unterstützung bei der Festlegung von Handelszeiten, um starke Schwankungen bei großen Ereignissen zu vermeiden.
Der SMA ist ein Trendmessgerät, das hinter dem Trend zurückbleibt und möglicherweise einen Trendwendepunkt verpasst, was zu Verlusten führt.
Der Eintrittspreis ist nicht flexibel genug, und es kann sein, dass der Eintritt aufgrund von kurzfristigen Trendveränderungen nicht möglich ist.
Die Parameter für die SMA-Periode müssen vernünftig eingestellt werden, und wenn sie nicht richtig eingestellt werden, wird eine falsche Tendenz beurteilt.
Es ist notwendig, die Rationalität der Parameter des Handelszeitraums zu berücksichtigen, um zu vermeiden, dass Handelschancen oder Risikoperioden verpasst werden.
Es kann in Erwägung gezogen werden, andere Indikatoren einzubeziehen, Multi-Indikator-Verifizierung durchzuführen und SMA-Rückstände zu vermeiden.
Es ist möglich, den Terminpreis-Tracking-Modus einzurichten, um den Marktpreis-Tracking zu verwenden, wenn der Preis den SMA überschreitet, um die Flexibilität zu erhöhen.
Dynamische Optimierung der SMA-Zyklusparameter, um sie an die unterschiedlichen Marktbedingungen anzupassen.
Die Stop-Loss-Position wird als die niedrigste/höchste in der Tendenz eingestellt, anstatt als eine strikte SMA-Position, um die Stop-Loss-Position flexibler zu gestalten.
Die Erweiterung der Algorithmus-Trading-Elemente ermöglicht eine intelligentere und flexiblere Trading-Periode und vermeidet Risikoperioden.
Die Strategie insgesamt ist eine relativ einfache Trendverfolgungsstrategie, deren Kernidee darin besteht, die Richtung des Trends mit Hilfe der SMA zu bestimmen und den Handel mit dem Platzieren von Limitpreisen an den SMA-Preisen zu verfolgen. Die Strategie kann durch eine gewisse Optimierung die Flexibilität, Anpassungsfähigkeit und Intelligenz der Strategie verbessern. Die Strategie ist leicht zu verstehen, umzusetzen und eignet sich für die Einführung in den Algorithmushandel, aber es ist erforderlich, auf Risiken zu achten, Rückmeldungen sorgfältig zu bewerten und strenge Überwachung und Optimierung durchzuführen.
/*backtest
start: 2022-10-27 00:00:00
end: 2023-03-12 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//Noro
//2020
//@version=4
strategy(title = "Noro's CrossLimit", shorttitle = "CrossLimit", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100.0, pyramiding = 0, commission_value = 0.0)
needlong = input(true, "long")
needshort = input(true, "short")
lotsize = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot, %")
src = input(close, defval = close, title = "MA Source")
len = input(5, defval = 5, minval = 1, title = "SMA length")
off = input(0, defval = 0, minval = 0, title = "SMA offset")
anti = input(true, defval = true, title = "Anti-saw filter")
rev = input(false, defval = false, title = "Reverse")
showma = input(true, defval = true, title = "Show MA")
showbg = input(false, defval = false, title = "Show background")
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
ma = sma(src, len)[off]
macol = showma ? color.blue : na
plot(ma, color = macol, linewidth = 3, transp = 0)
//Background
trend = 0
trend := anti == false and close > ma ? 1 : anti == false and close < ma ? -1 : low > ma ? 1 : high < ma ? -1 : trend[1]
bgcol = showbg ? trend == 1 ? color.lime : trend == -1 ? color.red : na : na
bgcolor(bgcol, transp = 70)
//Signals
bar = close > open ? 1 : close < open ? -1 : 0
up = (trend == 1 and rev == false) or (trend == -1 and rev == true)
dn = (trend == -1 and rev == false) or (trend == 1 and rev == true)
//Trading
size = strategy.position_size
truetime = time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)
lot = 0.0
lot := size != size[1] ? strategy.equity / close * lotsize / 100 : lot[1]
if trend != 0
strategy.entry("Long", strategy.long, lot, limit = ma, when = needlong and truetime and up)
strategy.entry("Short", strategy.short, lot, limit = ma, when = needshort and truetime and dn)
if size > 0 and needshort == false and trend == -1
strategy.exit("Stop Long", "Long", limit = ma)
if size < 0 and needlong == false and trend == 1
strategy.exit("Stop Short", "Short", limit = ma)
if time > timestamp(toyear, tomonth, today, 23, 59)
strategy.close_all()
strategy.cancel("Long")
strategy.cancel("Short")