Dies ist eine quantitative Handelsstrategie, die auf der Basis von LazyBear entwickelt wurde. Die Strategie integriert die Brennbänder, die Kalkin-Kanäle und die Dynamik-Indikatoren, um durch eine Kombination von verschiedenen technischen Indikatoren einen dynamischen Durchbruch zu erzielen.
Der Kernindikator der Strategie ist der LazyBear-Motoren-Expressor. Der Indikator, der bestimmt, ob das Brennband durch den Kalkin-Kanal gedrückt wird, stellt, dass der Markt zu einem potenziellen Ausbruchpunkt gelangt. In Kombination mit dem Motoren-Indikator kann man die Ausbruchstrends des Marktes beim Ausdruck freisetzen.
Insbesondere berechnet die Strategie zunächst 21 Zyklen des Brennbandes mit einer Bandbreite von 2 mal dem Preisstandarddefizit. Gleichzeitig berechnet man 20 Zyklen des Kalkin-Kanals mit einer Bandbreite von 1,5 mal dem Preisamplitude. Das Brennband sendet ein Drucksignal, wenn es durch den Kalkin-Kanal-Druck gedrückt wird. Außerdem berechnet die Strategie die Bewegung des Preises in Bezug auf die Mitte seines eigenen Preiskanals in einer bestimmten Zeit.
Im Ausgang kann sich der Trend umkehren, wenn sich der Antriebsindikator in grauer Farbe verfärbt und die Position ausgeglichen wird, was das Ende des Druckzustands darstellt.
Die Strategie integriert Brin-Band, Kalkin-Kanal und Dynamik-Indikatoren, und durch die Bewertung der komplexen Beziehungen dieser Indikatoren kann die Genauigkeit der Handelsentscheidungen verbessert und die Wahrscheinlichkeit von Fehltrades reduziert werden.
Die Dynamik-Squeeze-Strategie kann die entscheidenden Punkte des Marktausbruchs erfassen, die oft die Wendepunkte sind, an denen der Markt wichtige Richtungsentscheidungen trifft.
Im Gegensatz zu den zufälligen Durchbruchshandlungen ist die Strategie mit einem hohen Erfolgsrate, da die Eintrittspunkte an den Ausdruckpunkten des Brin-Bands und des Kalkin-Tunnels gelegen sind.
Die Zyklusparameter und die Bandbreitenparameter-Einstellungen von Brin-Band und Kalkin-Kanal haben einen großen Einfluss auf die strategischen Handelsergebnisse. Fehleinstellungen führen zu Fehlentscheidungen. Dies erfordert eine große Anzahl von Rückfragen, um die besten Parameter zu finden.
Jede Breach-Trade besteht das Risiko, dass sie fehlschlägt, und es besteht die Möglichkeit, dass der Preis wieder zurückgeht und einen Verlust verursacht, wenn er den gewählten Punkt der Strategie durchbricht.
Wenn die Druckphase endet, wird die Strategie alle Positionen ausräumen. Aber manchmal kann der Preistrend noch anhalten, was das Risiko eines vorzeitigen Ausstiegs der Strategie mit sich bringt. Dies erfordert eine Optimierung der Ausstiegslogik.
Durch eine größere Anzahl von Rückmessdaten kann man Fehlerprüfungen durchführen, um nach besseren Parameterzyklen und Bandbreiten-Einstellungen für das Brin-Band und den Kalkin-Kanal zu suchen, um die strategische Wirkung zu verbessern.
Es ist möglich, einen beweglichen Stop-Loss oder einen Schwingung-Stop-Loss einzurichten, der bei einem Preisumschwung schnell gestoppt wird, um den maximalen Rückzug der Strategie zu kontrollieren.
Wenn die Strategie aus der Position herausgeht, können bestimmte Wiedereintrittsbedingungen festgelegt werden, um wieder einzutreten, wenn der Trend weitergeht.
Es kann versucht werden, mehr verschiedene Arten von Indikatoren zu kombinieren, wie andere Indikatoren für Volatilität, Transaktionsmengen usw., um eine komplexe Strategie zu entwickeln, die Indikatoren integriert, um die Entscheidungsgenauigkeit zu verbessern.
Die Strategie integriert die Brennbänder, die Kalkin-Kanäle und die Dynamik-Indikatoren und wählt durch das Beurteilen der Beziehungen zwischen diesen Indikatoren die Eintrittspunkte mit hoher Erfolgsrate. Es gibt Raum für Optimierungen in mehreren Bereichen wie Parameteroptimierung, Stop-Loss-Strategie, Wiedereintrittsbedingungen und Integration von Komplexindikatoren, um die strategische Wirkung weiter zu verbessern.
/*backtest start: 2023-12-01 00:00:00 end: 2023-12-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 //All credits to LazyBear. All I did was turn it into a strategy! strategy(title = "SQZMOM STRAT", overlay=false) // --- GENERAL INPUTS --- FromMonth = input(defval = 4, title = "From Month", minval = 1, maxval = 12) FromYear = input(defval = 2020, title = "From Year", minval = 2012) ToMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12) ToYear = input(defval = 9999, title = "To Year", minval = 2017) FromDay = 1 ToDay = 1 start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest finish window window() => true get_round(value, precision) => round(value * (pow(10, precision))) / pow(10, precision) trade_leverage = input(1, title = "Trade - Leverage", step = 0.25) trade_risk = input(100, title = "Trade - Risk Percent", type = input.float, step = 0.1, minval = 0.1, maxval = 100) tradeType = input("LONG", title="What trades should be taken : ", options=["LONG", "SHORT", "BOTH"]) // --- SQZMOM CODE length = input(21, title="BB Length") mult = input(2.0,title="BB MultFactor") lengthKC=input(20, title="KC Length") multKC = input(1.5, title="KC MultFactor") useTrueRange = input(true, title="Use TrueRange (KC)", type=input.bool) // Calculate BB source = close basis = sma(source, length) dev = multKC * stdev(source, length) upperBB = basis + dev lowerBB = basis - dev // Calculate KC ma = sma(source, lengthKC) range = useTrueRange ? tr : (high - low) rangema = sma(range, lengthKC) upperKC = ma + rangema * multKC lowerKC = ma - rangema * multKC sqzOn = (lowerBB > lowerKC) and (upperBB < upperKC) sqzOff = (lowerBB < lowerKC) and (upperBB > upperKC) noSqz = (sqzOn == false) and (sqzOff == false) val = linreg(source - avg(avg(highest(high, lengthKC), lowest(low, lengthKC)),sma(close,lengthKC)), lengthKC,0) bcolor = color.gray if (val > 0 and val > nz(val[1])) bcolor := color.green if (val < 0 and val < nz(val[1])) bcolor := color.red scolor = noSqz ? color.blue : sqzOn ? color.black : color.gray plot(val, color=bcolor, style=plot.style_histogram, linewidth=4) plot(0, color=scolor, style=plot.style_cross, linewidth=2) // --- VWMA CODE --- useVWMA = input(false, title = "Use VWMA to selectively long/short?", type = input.bool) lengthVWMA=input(42, title = "VWMA Length", step = 1, minval = 1) useCV=input(false, type=input.bool, title="Use Cumulative Volume for VWMA?") nbfs = useCV ? cum(volume) : sum(volume, lengthVWMA) medianSrc=close calc_evwma(price, lengthVWMA, nb_floating_shares) => data = (nz(close[1]) * (nb_floating_shares - volume)/nb_floating_shares) + (volume*price/nb_floating_shares) m=calc_evwma(medianSrc, lengthVWMA, nbfs) // ---STRATEGY--- if ((tradeType == "LONG" or tradeType == "BOTH") and (m>0 or useVWMA == false)) longCondition = (val > 0 and noSqz == 0 and sqzOn == 0 and sqzOn[1] == 1) if (longCondition) contracts = get_round((strategy.equity * trade_leverage / close) * (trade_risk / 100), 4) strategy.entry("LONG", strategy.long, qty = contracts, when = window()) if((tradeType == "SHORT" or tradeType == "BOTH") and (m<0 or useVWMA == false)) shortCondition = (val < 0 and noSqz == 0 and sqzOn == 0 and sqzOn[1] == 1) if (shortCondition) contracts = get_round((strategy.equity * trade_leverage / close) * (trade_risk / 100), 4) strategy.entry("SHORT", strategy.short, qty = contracts, when = window()) if (bcolor == color.gray) strategy.close("LONG") strategy.close("SHORT")