
Es handelt sich um eine quantitative Handelsstrategie, die auf der Basis von LazyBear entwickelt wurde. Die Strategie integriert Brin-Band, Kalkin-Channel und Dynamic Indicators, um durch eine Kombination verschiedener technischer Indikatoren einen hohen Gewinn zu erzielen.
Der Kern der Strategie ist der LazyBear-Dynamik-Extrusion-Indikator. Dieser Indikator beurteilt, ob die Bollinger Bands durch die Kalkinger Kanäle gedrosselt wurden. Wenn ein Extrusion stattfindet, bedeutet dies, dass der Markt in einen potenziellen Ausbruchpunkt eintritt.
Insbesondere berechnet die Strategie zunächst die 21-Zyklen-Brin-Band mit einer Bandbreite von 2 mal der Preisstandarddifferenz. Gleichzeitig wird der 20-Zyklen-Kalkin-Kanal mit einer Bandbreite von 1,5 mal der Preisdynamik berechnet.
Auf dem Spielfeld kann der Trend umgekehrt werden, wenn die Farbe des Dynamikindikators grau wird und die Position ausgleicht, was das Ende der Extreme bedeutet.
Die Strategie integriert Brin-Band, Kalkin-Kanal und Dynamik-Indikatoren, die durch die Beurteilung der Zusammenhänge dieser Indikatoren die Genauigkeit von Handelsentscheidungen verbessern und die Wahrscheinlichkeit von Fehlgeschäften verringern können.
Die Dynamik-Extrusion-Strategie kann die Schlüsselfunktionen eines Marktausbruchs erfassen. Diese Punkte sind oft die Wendepunkte, an denen der Markt wichtige Richtungsentscheidungen trifft. Wenn die richtige Entscheidung getroffen wird, wird die nachfolgende Laufzeit relativ lang sein, so dass der potenzielle Gewinnraum der Strategie groß ist.
Die Strategie wählte einen Eingangspunkt, der sich an den Extremschnittpunkten zwischen dem Brin-Band und dem Kalkin-Kanal befindet, im Vergleich zu einem zufälligen Durchbruch, der eine hohe Erfolgsrate hat, wenn man die Integration der Indikatoren beurteilt.
Die Periodensätze und Bandbreiten der Brin- und Kalkin-Kanäle haben einen großen Einfluss auf die Ergebnisse der Strategie. Die falsche Einstellung der Parameter kann zu Fehleinschätzungen führen. Dies erfordert die Suche nach den optimalen Parametern durch eine große Anzahl von Rückprüfungen.
Jeder Durchbruch ist mit einem Risiko verbunden, dass er scheitert, und wenn der Preis den von der Strategie gewählten Punkt überschreitet, kann es zu einem erneuten Rückschlag kommen, der einen Verlust verursacht. Dies erfordert eine strenge Stop-Loss-Kontrolle.
Wenn die Extreme endet, wird die Strategie alle Positionen ausgleichen. Aber manchmal kann die Preisentwicklung fortgesetzt werden, was die Gefahr eines vorzeitigen Ausstiegs der Strategie darstellt. Dies erfordert eine optimierte Ausstiegsentscheidungslogik.
Durch eine größere Anzahl von Testfehlern aus Rückmessdaten können bessere Parameter-Perioden und Bandbreiten-Einstellungen für Brink’s- und Kalkin-Kanäle gefunden werden, um die Effektivität der Strategie zu verbessern.
Es können bewegliche Stopps oder Oszillationsstopps eingerichtet werden, die bei einer Preisumkehr schnell eingestellt werden, um die maximale Rücknahme der Strategie zu kontrollieren.
Wenn die Strategie aus der Position aussteigt, können bestimmte Wiedereintrittsbedingungen gesetzt werden, um wieder einzutreten, wenn sich der Trend fortsetzt.
Es kann versucht werden, mehrere verschiedene Arten von Indikatoren, wie andere Volatilitätsindikatoren, Transaktionsmengenindikatoren usw., zu kombinieren, um eine integrierte Strategie zu entwickeln, um die Entscheidungsgenauigkeit zu verbessern.
Die Strategie integriert Brin-Band, Kalkin-Kanal und Dynamik-Indikatoren, durch die Beurteilung der Beziehung zwischen diesen Indikatoren, wählen Sie die Durchbruchspunkte mit hoher Erfolgsrate Eintritt. Optimierungsmöglichkeiten in mehreren Bereichen wie Parameteroptimierung, Stop-Loss-Strategie, Wiedereintrittsbedingungen und Integration von Komplex-Indikatoren, können die Effektivität der Strategie weiter 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")