
Die drei- oder vier-K-Linien-Breakout-Umkehrstrategie besteht darin, drei oder vier K-Linien, die eine größere Dynamik auf der K-Line haben, zu identifizieren, und nach der Bildung von Unterstützung oder Druck durch die folgenden K-Linien mit geringerer Breite, bei der Umkehrung der K-Line einen Abwehrhandel durchzuführen.
Die Kernidentitätslogik der Strategie besteht aus folgenden Teilen:
Identifizieren Sie die K-Linie mit einem starken Anstieg ((Gap Bar): Durchschnitts-ATR von 1,5 mal überschreitet, wobei der physische Teil größer als 0,65 ist. Die K-Linie wird als stark rückläufig angesehen.
Identifizieren Sie K-Linien, die hinter der Gap Bar 1-2 kleinere Schwankungen verfolgen. Die K-Linien stellen eine Verlangsamung und Zusammenstellung des Trends dar und bilden Unterstützung oder Druck.
Identifizieren Sie die K-Linie des Umkehrsignals: Wenn nach der Zusammenstellung der K-Linie ein Unternehmen die K-Linie der vorherigen K-Linien überschreitet, kann dies als Umkehrsignal angesehen werden. Je nach der Richtung des Unternehmens kann man über oder unterlegen sein und eine Position auf dieser K-Linie eröffnen.
Stop-Loss und Stop-Stop: Stop-Loss-Einstellungen unterhalb der Gap K-Linien-Tiefpunkt oder oberhalb der Gap K-Linien-Hochpunkt; Stop-Stop basiert auf dem Stop-Loss-Punkt multipliziert mit dem Verlustverhältnis der Konfiguration.
Die Strategie hat folgende Vorteile:
Die K-Linien selbst sind für Trends und Wendepunkte geeignet, ohne auf irgendwelche Indikatoren angewiesen zu sein.
Die Filterbedingungen für die Gap Bar und die Collecting Bar sind so streng, dass die Trends und Zusammenstellungen effektiv identifiziert werden können.
Umkehrsignale werden auf Basis von Entitäten beurteilt, wodurch die Wahrscheinlichkeit von Falschsignalen verringert wird.
Die K-Linien-Kombination von nur 3 bis 4 K-Linien ermöglicht eine Transaktion in kurzer Zeit und mit hoher Frequenz.
Die Stop-Loss-Einstellungen sind eindeutig, die Rücknahme und die Gewinn- und Verlustquote sind leicht zu kontrollieren.
Die Strategie birgt auch folgende Risiken:
Die Qualität der Parameter-Einstellungen hängt davon ab, ob die Parameter-Einstellungen zu locker sind, was die Chancen auf falsche Signale und verlorene Geschäfte erhöht.
Das Gerät ist sehr anfällig für Hochfrequenz-False-Break-Interferenzen und kann nicht effektiv alle Falsesignale filtern.
Es besteht die Gefahr, eingeschlossen zu sein, und wenn die Umkehrung nicht ausreicht, kann eine Anpassung erfolgen, die den Schaden nicht stoppen kann.
Der Stop-Loss-Bereich ist relativ groß und die Verluste können durch einzelne Ausfälle erheblich sein.
Um diese Risiken zu verringern, können Optimierungen in folgenden Bereichen vorgenommen werden:
Optimierung der Parameter, um die Erkennung von Gap Bar und Collecting Bar genauer zu machen.
Filter hinzugefügt und nach erneuter Bestätigung der umgekehrten K-Linie geöffnet.
Optimierung der Stop-Loss-Algorithmen, um Stop-Loss näher am Preis und Verluste besser zu steuern.
Die Strategie beinhaltet folgende Optimierungsmöglichkeiten:
Zusätzliche Filter, um False-Break-Interferenzen zu vermeiden. Zum Beispiel die Erhöhung der Transaktionsvolumen-Indikatoren, die nur bei einer Erhöhung der Transaktionsvolumen-Signal berücksichtigt werden.
In Kombination mit dem Mittellinien-Indikator wird nur dann ein Handelssignal berücksichtigt, wenn der Preis eine wichtige Mittellinie (z. B. die 20-Tage-Linie, die 60-Tage-Linie) durchbricht.
Multi-Time-Framework-Verifizierung, die nur dann eröffnet wird, wenn mehrere Perioden gleichzeitig signalisiert werden.
Optimierung der Stop-Loss-Bedingungen und dynamische Anpassung der Gewinn- und Verlustquoten an die Marktschwankungen und Risikopräferenzen.
In Kombination mit einem System zur Ermittlung von Marktvolumen wird diese Strategie nur in einem Trendmarkt verwendet.
Diese Optimierungen können die Stabilität und die Gewinnwahrscheinlichkeit der Strategie weiter verbessern.
Die drei- und vier-K-Linien-Break-Back-up-Strategie wird durch die Identifizierung von hochwertigen Trendpotenzialsegmenten und Umkehrsignalen gehandelt. Kurze Betriebszeiten, hohe Frequenz, hohe Gewinnchancen. Es besteht jedoch ein gewisses Risiko, das weiterhin optimiert werden muss, um das Risiko zu senken und die Stabilität zu verbessern.
/*backtest
start: 2023-12-10 00:00:00
end: 2023-12-17 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy(title="Three (3)-Bar and Four (4)-Bar Plays Strategy", shorttitle="Three (3)-Bar and Four (4)-Bar Plays Strategy", overlay=true, calc_on_every_tick=true, currency=currency.USD, default_qty_value=1.0,initial_capital=30000.00,default_qty_type=strategy.percent_of_equity)
frommonth = input(defval = 1, minval = 01, maxval = 12, title = "From Month")
fromday = input(defval = 1, minval = 01, maxval = 31, title = "From day")
fromyear = input(defval = 2021, minval = 1900, maxval = 2100, title = "From Year")
tomonth = input(defval = 12, minval = 01, maxval = 12, title = "To Month")
today = input(defval = 31, minval = 01, maxval = 31, title = "To day")
toyear = input(defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
garBarSetting1 = input(defval = 1.5, minval = 0.0, maxval = 100.0, title = "Gap Bar Size", type = input.float)
garBarSetting2 = input(defval = 0.65, minval = 0.0, maxval = 100.0, title = "Gap Bar Body Size", type = input.float)
TopSetting = input(defval = 0.10, minval = 0.0, maxval = 100.0, title = "Bull Top Bar Size", type = input.float)
profitMultiplier = input(defval = 2.0, minval = 1.0, maxval = 100.0, title = "Profit Multiplier", type = input.float)
// ========== 3-Bar and 4-Bar Play Setup ==========
barSize = abs(high - low)
bodySize = abs(open - close)
gapBar = (barSize > (atr(1000) * garBarSetting1)) and (bodySize >= (barSize * garBarSetting2)) // find a wide ranging bar that is more than 2.5x the size of the average bar size and body is at least 65% of bar size
bullTop = close > close[1] + barSize[1] * TopSetting ? false : true // check if top of bar is relatively equal to top of the gap bar (first collecting bull bar)
bullTop2 = close > close[2] + barSize[2] * TopSetting ? false : true // check if top of bar is relatively equal to top of the gap bar (first collecting bear bar)
bearTop = close < close[1] - barSize[1] * TopSetting ? false : true // check if top of bar is relatively equal to top of the gap bar (second collecting bull bar)
bearTop2 = close < close[2] - barSize[2] * TopSetting ? false : true // check if top of bar is relatively equal to top of the gap bar (second collecting bear bar)
collectingBarBull = barSize < barSize[1] / 2 and low > close[1] - barSize[1] / 2 and bullTop // find a collecting bull bar
collectingBarBear = barSize < barSize[1] / 2 and high < close[1] + barSize[1] / 2 and bearTop // find a collecting bear bar
collectingBarBull2 = barSize < barSize[2] / 2 and low > close[2] - barSize[2] / 2 and bullTop2 // find a second collecting bull bar
collectingBarBear2 = barSize < barSize[2] / 2 and high < close[2] + barSize[2] / 2 and bearTop2 // find a second collecting bear bar
triggerThreeBarBull = close > close[1] and close > close[2] and high > high[1] and high > high[2] // find a bull trigger bar in a 3 bar play
triggerThreeBarBear = close < close[1] and close < close[2] and high < high[1] and high < high[2] // find a bear trigger bar in a 3 bar play
triggerFourBarBull = close > close[1] and close > close[2] and close > close[3] and high > high[1] and high > high[2] and high > high[3] // find a bull trigger bar in a 4 bar play
triggerFourBarBear = close < close[1] and close < close[2] and close < close[3] and high < high[1] and high < high[2] and high < high[3] // find a bear trigger bar in a 4 bar play
threeBarSetupBull = gapBar[2] and collectingBarBull[1] and triggerThreeBarBull // find 3-bar Bull Setup
threeBarSetupBear = gapBar[2] and collectingBarBear[1] and triggerThreeBarBear // find 3-bar Bear Setup
fourBarSetupBull = gapBar[3] and collectingBarBull[2] and
collectingBarBull2[1] and triggerFourBarBull // find 4-bar Bull Setup
fourBarSetupBear = gapBar[3] and collectingBarBear[2] and
collectingBarBear2[1] and triggerFourBarBear // find 4-bar Bear Setup
labels = input(title="Show Buy/Sell Labels?", type=input.bool, defval=true)
plotshape(threeBarSetupBull and labels, title="3-Bar Bull", text="3-Bar Play", location=location.abovebar, style=shape.labeldown, size=size.tiny, color=color.green, textcolor=color.white, transp=0)
plotshape(threeBarSetupBear and labels, text="3-Bar Bear", title="3-Bar Play", location=location.belowbar, style=shape.labelup, size=size.tiny, color=color.red, textcolor=color.white, transp=0)
plotshape(fourBarSetupBull and labels, title="4-Bar Bull", text="4-Bar Play", location=location.abovebar, style=shape.labeldown, size=size.tiny, color=color.green, textcolor=color.white, transp=0)
plotshape(fourBarSetupBear and labels, text="4-Bar Bear", title="4-Bar Play", location=location.belowbar, style=shape.labelup, size=size.tiny, color=color.red, textcolor=color.white, transp=0)
alertcondition(threeBarSetupBull or threeBarSetupBear or fourBarSetupBull or fourBarSetupBear, title="3-bar or 4-bar Play", message="Potential 3-bar or 4-bar Play")
float sl = na
float tp = na
sl := nz(sl[1], 0.0)
tp := nz(tp[1], 0.0)
plot(sl==0.0?na:sl,title='SL', color = color.red)
plot(tp==0.0?na:tp,title='TP', color = color.green)
if (true)
if threeBarSetupBull and strategy.position_size <=0
strategy.entry("3 Bar Long", strategy.long, when=threeBarSetupBull)
sl :=low[1]
if threeBarSetupBear and strategy.position_size >=0
strategy.entry("3 Bar Short", strategy.short, when=threeBarSetupBull)
sl :=high[1]
if fourBarSetupBull and strategy.position_size <=0
strategy.entry("4 Bar Long", strategy.long, when=fourBarSetupBull)
sl :=min(low[1], low[2])
if fourBarSetupBear and strategy.position_size >=0
strategy.entry("4 Bar Short", strategy.short, when=fourBarSetupBear)
sl :=max(high[1], high[2])
if sl !=0.0
if strategy.position_size > 0
tp := strategy.position_avg_price + ((strategy.position_avg_price - sl) * profitMultiplier)
strategy.exit(id="Exit", limit=tp, stop=sl)
if strategy.position_size < 0
tp := strategy.position_avg_price - ((sl - strategy.position_avg_price) * profitMultiplier)
strategy.exit(id="Exit", limit=tp, stop=sl)