Wechselzonen-Strategie


Erstellungsdatum: 2023-12-29 17:03:27 zuletzt geändert: 2023-12-29 17:03:27
Kopie: 1 Klicks: 846
1
konzentrieren Sie sich auf
1621
Anhänger

Wechselzonen-Strategie

Überblick

Die Transitionszone-Strategie ist eine Short-Line-Trading-Strategie, die auf Preisschwankungen basiert. Sie nutzt die Schwankungen, die sich in einem bestimmten Zeitabschnitt bilden, um die Markttrends zu beurteilen und bei einem Durchbruch der Spanne zu kaufen.

Strategieprinzip

Die Strategie erstellt eine Bandbreite für die Preise, indem sie die Höchst- und die Tiefstpreise der letzten N-K-Linie berechnet. Wenn die neueste K-Linie diese Bandbreite durchdringt, wird eine Trendwende ermittelt, die ein Handelssignal erzeugt.

Insbesondere verfolgt die Strategie kontinuierlich Höchst- und Tiefstpreise der letzten N-Wurzel-K-Linie (Anpassungsparameter N), wobei:

  • Mindestpreis = Mindestpunkt in der letzten N-K-Linie
  • Höchstpreis = höchster Punkt in der letzten N-K-Linie

Das bedeutet, dass sich die Preise in einer Bandbreite bewegen.

Wenn der Schlusskurs der neuesten K-Linie höher ist als der höchste Preis in der Zone, wird ein Blitzsignal erzeugt, das einen Blitzsignal erzeugt. Wenn der Schlusskurs der neuesten K-Linie niedriger ist als der niedrigste Preis in der Zone, wird ein Blitzsignal erzeugt, das einen Blitzsignal erzeugt.

Zusätzlich wurden Farbfilter und Entitätsfilter hinzugefügt. Die Farbfilter filtern die Signale nach der Farbe der K-Linien; die Entitätsfilter filtern die Signale nach der Größe der K-Linien-Entitäten. Dies kann einige falsche Signale herausfiltern.

Strategische Vorteile

Diese Strategie hat folgende Vorteile:

  1. Es ist wichtig, dass Sie die Preise in der Lage sind, die Abweichungen zu erfassen, die Trendwende zu beurteilen, und die Präzision zu erhöhen, die Sie benötigen.
  2. Farb- und Substanzfilter, die Falschsignale filtern können
  3. Strategie-Logik ist einfach und klar, die Parameter sind leicht zu verstehen und anzupassen
  4. Mehr anpassbare Parameter zur Optimierung der Strategie

Risikoanalyse

Die Strategie birgt auch einige Risiken:

  1. Unzureichende Parameter können zu häufigen Transaktionen und zu hohen Transaktionsgebühren führen
  2. Fehl eingestellte Bandbreiten, die zu viel Falschsignal führen können
  3. Bei starken Schwankungen sind die Preisspanne-Vorhersagen schlechter
  4. Es ist nicht möglich, die Preisschwankungen zu beheben.

Diese Risiken können durch Anpassung der Spannungsparameter und Optimierung der Signalfilterbedingungen verringert werden.

Optimierungsrichtung

Die Strategie kann in folgenden Richtungen optimiert werden:

  1. Dynamische Anpassung der Bandbreite der Preisspanne anstelle einer festen N-K-Linie
  2. Einführung von Stop-Loss-Logik, um das Risiko von Verlusten zu verringern
  3. Optimierung der Filterparameter zur Verbesserung der Signalqualität
  4. Hinzufügen von Logik für die Bearbeitung von Preislücken
  5. Vermeiden Sie, dass Sie mit mehreren Zeiträumen beeinflusst werden

Zusammenfassen

Die Übergangs-Bereichs-Strategie ist insgesamt eine relativ einfache und praktische Kurzlinie-Handelsstrategie. Sie kann Trendwendepunkte durch Preisbereiche erkennen und schnell Marktchancen ergreifen. Es gibt jedoch einige Risiken, die beachtet werden müssen. Durch die Anpassung und Optimierung der Parameter kann die Strategie weiter verbessert und die Ertragswirksamkeit verbessert werden.

Strategiequellcode
/*backtest
start: 2023-11-28 00:00:00
end: 2023-12-28 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=2
strategy("Noro's Transient Zones Strategy v1.0", shorttitle = "TZ str 1.0", 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, %")

usecol = input(true, defval = true, title = "Use Color-Filter")
usebod = input(true, defval = true, title = "Use Body-Filter")

h_left = input(title = "H left", defval = 10)
h_right = -1
sample_period = input(title = "Sample bars for % TZ",  defval = 5000)
show_ptz = input(title = "Show PTZ", type = bool, defval = true)
show_channel = input(title = "Show channel", type = bool, defval = true)

fromyear = input(2018, defval = 2018, 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")

//By Jurij w/ TZ percent occurrence by SPYderCrusher

//barCount = nz(barCount[1]) + 1
//check history and realtime PTZ
h_left_low = lowest(h_left)
h_left_high = highest(h_left)
newlow = low <= h_left_low
newhigh = high >= h_left_high
plotshape(newlow and show_ptz, style=shape.triangledown, location=location.belowbar, color=red)
plotshape(newhigh and show_ptz, style=shape.triangleup, location=location.abovebar, color=green)
channel_high = plot(show_channel ? h_left_low : 0, color=silver)
channel_low = plot (show_channel ? h_left_high : 0, color=silver)

//check true TZ back in history
central_bar_low = low[h_right + 1]
central_bar_high = high[h_right + 1]
full_zone_low = lowest(h_left + h_right + 1)
full_zone_high = highest(h_left + h_right + 1)
central_bar_is_highest = central_bar_high >= full_zone_high
central_bar_is_lowest = central_bar_low <= full_zone_low
plotarrow(central_bar_is_highest ? -1 : 0, offset=-h_right-1)
plotarrow(central_bar_is_lowest ? 1 : 0, offset=-h_right-1)

//Color Filter
bar = close > open ? 1 : close < open ? -1 : 0

//Body Filter
nbody = abs(close - open)
abody = sma(nbody, 10)
body = nbody > abody / 3 or usebod == false

//Signals
up1 = central_bar_is_lowest and body and (bar == -1 or usecol == false)
dn1 = central_bar_is_highest and body and (bar == 1 or usecol == false)
exit = ((strategy.position_size > 0 and close > open) or (strategy.position_size < 0 and close < open)) and body

//Trading
lot = strategy.position_size == 0 ? strategy.equity / close * capital / 100 : lot[1]

if up1
    if strategy.position_size < 0
        strategy.close_all()
        
    strategy.entry("long", strategy.long, needlong == false ? 0 : lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))

if dn1
    if strategy.position_size > 0
        strategy.close_all()
        
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
    
if time > timestamp(toyear, tomonth, today, 23, 59) or exit
    strategy.close_all()