Die Strategie basiert auf dem Parity-Handel und umfasst eine Trendverfolgungsstrategie, bei der mehrere offene Positionen in zwei Richtungen eröffnet werden, indem drei Einstiegslinien mit Mehrkopf und Leerkopf festgelegt werden. Wenn der Preis die Parity-Linie überschreitet, werden nach und nach mehr Positionen eröffnet, um die Eintrittsphase durch Aufhängen zu realisieren.
Die Strategie richtet sich hauptsächlich nach dem Durchbruch der Durchschnittlinie, um die Richtung des Trends zu bestimmen. Konkret erhält sie einen Durchschnittsindikator, indem sie den arithmetischen Mittelwert des Eröffnungs- und Schlusskurses, des Höchstpreises und des Tiefstpreises berechnet.
Die Anzahl der Bestellungen, die mehr Leerstellen erzeugen, steigt in Folge, um die Lageröffnung in Gruppen zu realisieren, indem Sie die Aufhängungsanweisung festlegen. Zum Beispiel, die Einstiegslinie 1 löst die Ein-Hand-Leerstellung aus, die Einstiegslinie 2 löst die Ein-Hand-Haltung aus, die Einstiegslinie 3 erhöht die Ein-Hand-Haltung.
Die Strategie bietet außerdem einen Ausgleichsmechanismus. Wenn die Positionsgröße unter 0 liegt, werden die Stop-Loss-Anweisungen auf Basis des Durchschnittspreises verfolgt, und wenn der Preis wieder unter die Durchschnittslinie fällt, werden die Off-Positions gestoppt. Dies kann einen Teil der Gewinne sperren und das Kapital schützen.
Insgesamt ist die Strategie eine typische Trend-Tracking-Strategie, bei der die Trendrichtung durch die Nutzung von Gleichgewichtsindikatoren, die Maximierung der Gewinnspanne durch eine mehrschichtige Einstiegslinie und die Einrichtung von Stop-Loss-Risiken-Kontrollen optimal beurteilt werden.
Diese Strategie hat folgende Vorteile:
Die Durchschnittslinie kann die Trendrichtung eindeutig bestimmen. Die Durchschnittslinie kann den Marktrauschen effektiv filtern und die Hauptrendrichtung bestimmen.
Multi-Level-Entry-Lines, um die Trendlaufzone zu nutzen. Durch mehrere Einstiegslinien kann der gesamte Trendlaufbereich maximal erfasst werden, um den Gewinnraum zu erweitern.
Aufteilung der Lageröffnung, Verringerung des Einzelrisikos. Mehrfache Eintritte, die das Risiko der Bestellungen verteilen können, verringern die durchschnittlichen Lagerhaltungskosten der Positionen.
Setzen Sie einen Rückschadensstop-Mechanismus ein, um das Risiko effektiv zu kontrollieren. Mit einem Rückschadensstop-Bill kann ein schneller Stopp erfolgen, wenn der Preis wieder unter die Durchschnittslinie fällt, um übermäßige Verluste zu vermeiden.
Die Strategie ist klar und verständlich, die Parameter sind flexibel und können für verschiedene Märkte optimiert werden.
Die Strategie birgt auch einige Risiken:
Die Wahrscheinlichkeit, dass die Durchschnittslinie ein falsches Signal aussendet. Die Durchschnittslinie beurteilt, dass ein Trend zurückliegt und möglicherweise ein falsches Signal ausgegeben wird.
Das Risiko von Verlusten durch eine Trendwende. Die Strategie setzt auf eine Trendwende voraus, so dass bei einer Trendwende größere Verluste entstehen.
Die Eintrittslinien sind zu dicht eingestellt, was die Häufigkeit der Transaktionen und die Kosten für die Gleitpunkte erhöht.
Die Konzentration der Positionen wird durch die Eröffnung von Positionen erhöht.
Die Stop-Loss-Punkt-Einstellungen sind unvernünftig, können zu früh oder zu klein sein.
Entsprechende Risikomanagementmaßnahmen:
Optimieren Sie die Mittelwertparameter und wählen Sie die geeignete Periodendurchschnittlinie.
Die wichtigsten technologischen Indikatoren sind die Trendwende und die rechtzeitige Verringerung von Verlusten.
Die Abstandsanpassung der Infield-Einstellungen reduziert die Häufigkeit der Transaktionen.
Optimierung der Positionsgröße und -proportion, Kontrolle des Konzentrationsrisikos.
Test und Optimierung von Stop-Loss-Punkten zur Verringerung von Stop-Loss-Risiken.
Diese Strategie kann optimiert werden durch:
Verschiedene Durchschnittsparameter und Datenquellen werden getestet, um die besten Durchschnittsindikatoren für die Trendeffekte zu wählen.
Optimieren Sie die Distanz- und Positionsverhältnisse der offenen Einstiegslinie, um die optimalen Parameter zu finden.
In Kombination mit anderen Indikatoren als Filterbedingungen, um falsche Signal aus der Gleichung zu vermeiden. Wie MACD, RSI, etc.
Optimierung der Position der Stop-Line und Einstellung der Stop-Punkte auf Basis der ATR-Dynamik.
Es wurde ein weiterer Schritt unternommen, um die Beurteilung der Trendwende zu erhöhen und die Bedingungen für die Schließung aller Positionen festzulegen.
Parameter, die Strategien für verschiedene Zeiten des Marktes optimieren.
Erhöhung der Anzahl der Positionen mit einer dynamischen Anpassung der Anzahl der eröffneten Positionen anhand des Anteils der Kapitalnutzung.
Die Strategie verwendet eine einheitliche Linie, um die Trendrichtung zu bestimmen, und die Trendbewegung ist die Hauptgewinnquelle. Durch Multi-Level-Eintritt und Positionseröffnung kann der Trend effektiv erfasst und die Gewinnspanne erweitert werden. Gleichzeitig wird ein Stop-Loss-Mechanismus eingerichtet, um das Risiko zu kontrollieren. Die Strategie ist einfach und klar und eignet sich sowohl für Anfänger als auch für die Optimierung.
/*backtest
start: 2022-09-19 00:00:00
end: 2023-09-25 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//Noro
//2019
//@version=4
strategy(title = "Robot WhiteBox Iceberg", shorttitle = "Robot WhiteBox Iceberg", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 3)
//Settings
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot")
len = input(3, minval = 1, title = "MA Length")
s = input(defval = "7. OHLC4", options = ["1. Open", "2. High", "3. Low", "4. Close", "5. HL2", "6. HLC3", "7. OHLC4", "8. OC2", "9. PCMA"], title = "Data")
short3 = input(true, title = "short 3")
short2 = input(true, title = "short 2")
short1 = input(true, title = "short 1")
long1 = input(true, title = "long 1")
long2 = input(true, title = "long 2")
long3 = input(true, title = "long 3")
shortlevel3 = input(15.0, title = "Short line 3")
shortlevel2 = input(10.0, title = "Short line 2")
shortlevel1 = input(5.0, title = "Short line 1")
longlevel1 = input(-5.0, title = "Long line 1")
longlevel2 = input(-10.0, title = "Long line 2")
longlevel3 = input(-15.0, title = "Long line 3")
needoffset = input(true, title = "Offset")
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")
//Variables
lots = 0.0
size = strategy.position_size
mult = 1 / syminfo.mintick
needtime = true
//MA
oc2 = (open + close) / 2
pcma = (highest(high, len) + lowest(low, len)) / 2
src = s == "1. Open" ? open : s == "2. High" ? high : s == "3. Low" ? low : s == "4. Close" ? close : s == "5. HL2" ? hl2 : s == "6. HLC3" ? hlc3 : s == "7. OHLC4" ? ohlc4 : s == "8. OC2" ? oc2: close
sma = sma(src, len)
ma = s == "9. PCMA" ? round(pcma * mult) / mult : round(sma * mult) / mult
//Levels
longline1 = 0.0
longline2 = 0.0
longline3 = 0.0
shortline1 = 0.0
shortline2 = 0.0
shortline3 = 0.0
longline1 := long1 ? round(ma * ((100 + longlevel1) / 100) * mult) / mult : close
longline2 := lots[1] == 0 ? long2 ? round(ma * ((100 + longlevel2) / 100) * mult) / mult : close : longline2[1]
longline3 := lots[1] == 0 ? long3 ? round(ma * ((100 + longlevel3) / 100) * mult) / mult : close : longline3[1]
shortline1 := short1 ? round(ma * ((100 + shortlevel1) / 100) * mult) / mult : close
shortline2 := lots[1] == 0 ? short2 ? round(ma * ((100 + shortlevel2) / 100) * mult) / mult : close : shortline2[1]
shortline3 := lots[1] == 0 ? short3 ? round(ma * ((100 + shortlevel3) / 100) * mult) / mult : close : shortline3[1]
//Lines
colorlong1 = long1 ? color.lime : na
colorlong2 = long2 ? color.lime : na
colorlong3 = long3 ? color.lime : na
colorshort1 = short1 ? color.red : na
colorshort2 = short2 ? color.red : na
colorshort3 = short3 ? color.red : na
offset = needoffset ? 1 : 0
plot(shortline3, offset = offset, color = colorshort3, title = "Short line 3")
plot(shortline2, offset = offset, color = colorshort2, title = "Short line 2")
plot(shortline1, offset = offset, color = colorshort1, title = "Short line 1")
plot(ma, offset = offset, color = color.blue, title = "MA line")
plot(longline1, offset = offset, color = colorlong1, title = "Long line 1")
plot(longline2, offset = offset, color = colorlong2, title = "Long line 2")
plot(longline3, offset = offset, color = colorlong3, title = "Long line 3")
//Trading
lot = 0.0
lot := size == 0 ? strategy.equity / close * capital / 100 : lot[1]
if ma > 0
lots := round(size / lot)
strategy.entry("L1", strategy.long, lot, limit = longline1, when = (lots == 0 and long1 and needtime))
lots := round(size / lot)
strategy.entry("L2", strategy.long, lot, limit = longline2, when = (lots <= 1 and long2 and needtime))
lots := round(size / lot)
strategy.entry("L3", strategy.long, lot, limit = longline3, when = (lots <= 2 and long3 and needtime))
lots := round(size / lot)
strategy.entry("S1", strategy.short, lot, limit = shortline1, when = (lots == 0 and short1 and needtime))
lots := round(size / lot)
strategy.entry("S2", strategy.short, lot, limit = shortline2, when = (lots >= -1 and short2 and needtime))
lots := round(size / lot)
strategy.entry("S3", strategy.short, lot, limit = shortline3, when = (lots >= -2 and short3 and needtime))
if size > 0
strategy.entry("TPL", strategy.short, 0, limit = ma, when = needtime)
if size < 0
strategy.entry("TPS", strategy.long, 0, limit = ma, when = needtime)
if time > timestamp(toyear, tomonth, today, 23, 59)
strategy.close_all()
strategy.cancel("L1")
strategy.cancel("L2")
strategy.cancel("L3")
strategy.cancel("S1")
strategy.cancel("S2")
strategy.cancel("S3")
strategy.cancel("TPL")
strategy.cancel("TPS")