Hochfrequente Absicherungsstrategie auf Basis von MACD-Barfarbe und linearer Regression

Schriftsteller:ChaoZhang, Datum: 2023-10-27 10:42:54
Tags:

img

Übersicht

Diese Strategie kombiniert MACD-Barfarbe und lineare Regressionsindikatoren, um einen hochfrequenten Umkehrhandel zu erzielen, der besonders für kurzfristige Arbitrage und Hedging geeignet ist.

Strategie Logik

Die Strategie besteht aus folgenden Hauptbestandteilen:

  1. MACD-Barfarbe als Trendbeurteilungsindikator. Wenn die MACD-Barfarbe grün ist, zeigt sie einen Aufwärtstrend an, daher sollten keine Short-Orders platziert werden. Wenn die MACD-Bar rot ist, zeigt sie einen Abwärtstrend an, daher sollten keine Long-Orders platziert werden.

  2. Lineare Regression als der wichtigste Handelssignalindikator. Gehen Sie lang, wenn der Preis über die lineare Regressionslinie geht, und gehen Sie kurz, wenn der Preis unter die Linie geht.

  3. PAC-Kanal, der durch die EMA von hohen, niedrigen und schließenden Preisen gebildet wird, um die Richtung der linearen Regressionslinie zu bestimmen.

  4. EMA 89 als Stop-Loss-Linie, die Positionen schließt, wenn der Preis wieder über diese Linie geht.

Die Logik für Handelssignale lautet:

Langes Signal: Die lineare Regression überschreitet den unteren PAC-Band UND die lineare Regression ist nach oben geneigt UND die MACD-Bar ist nicht rot.

Kurzsignal: Die lineare Regression kreuzt sich unterhalb des oberen PAC-Bandes UND die lineare Regression neigt nach unten UND der MACD-Streifen ist nicht grün.

Ausgangssignal: Der Kurs fällt unter die EMA 89.

Diese Strategie kombiniert Trendbeurteilung und Schlüsselpreisniveaus, um einen Hochfrequenz-Hedging-Handel zu erzielen.

Analyse der Vorteile

  1. Die MACD-Barfarbe hilft, den Haupttrend zu bestimmen und vermeidet den Handel gegen den Trend.

  2. Die lineare Regression ist glatt und filtert Geräusche aus.

  3. Der EMA-Kanal definiert eindeutig eine bullische/bärenische Verzerrung.

  4. Der Stop-Loss ist vernünftigerweise so eingestellt, dass die Gewinne maximiert werden.

  5. Die hohe Handelsfrequenz macht es für den algorithmischen Handel geeignet.

  6. Erreicht Absicherungstransaktionen und kann von Marktbereichen profitieren.

Risikoanalyse

  1. Die Parameter der linearen Regression und des Kanals müssen optimiert werden, sonst können sie versagen.

  2. Der Stop-Loss kann häufig während großer Kursschwankungen ausgelöst werden.

  3. Eine hohe Handelsfrequenz bedeutet, dass die Transaktionskosten erheblich sein können.

  4. Der MACD hat eine gewisse Verzögerung und kann kurzfristige Trendumkehrungen verpassen.

  5. Die EMA-Kanäle müssen auch kontinuierlich optimiert werden, um sich an sich ändernde Marktbedingungen anzupassen.

Optimierungsrichtlinien

  1. Anpassung der linearen Regressions- und Kanalparameter an die unterschiedlichen Instrumente.

  2. Erweitern Sie den Stop-Loss-Bereich, wobei das Risiko-Rendite-Verhältnis über 1 bleibt.

  3. Optimieren Sie die MACD-Parameter, um mehr kurzfristige Signale zu erfassen.

  4. Versuchen Sie andere Indikatoren, um die lineare Regression zu ersetzen, wie Bollinger Bands.

  5. Hinzufügen von Positionsgrößen, um übermäßige Einwegverluste zu vermeiden.

  6. Einbeziehen Sie andere Indikatoren wie RSI, um einige Handelssignale zu filtern.

Schlussfolgerung

Diese Strategie kombiniert mehrere technische Indikatoren, um einen Hochfrequenz-Hedging-Handel zu erreichen. Ihre Stärke liegt darin, kurzfristige Umkehrungen mit angemessener Risikokontrolle zu erfassen, was sie sehr geeignet für Bereichsgebundene Marktbedingungen macht. Gleichzeitig sind bestimmte Parameteroptimierungen und Verbesserungen erforderlich, um Überanpassung zu verhindern. Mit einem ordnungsgemäßen Management kann sie zu einer sehr praktischen Hochfrequenz-Handelsstrategie werden.


/*backtest
start: 2022-10-20 00:00:00
end: 2023-10-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
// strategy("Sonic R + Linear Reg + Kumo Cloud + Barcolor MACD", overlay=true,default_qty_value=10000,initial_capital=200,currency=currency.USD, pyramiding=1)
EMA = input(defval=89, title="EMA Signal")
HiLoLen     = input(34, minval=2,title="High Low channel Length")
pacC        = ema(close,HiLoLen)
pacL        = ema(low,HiLoLen)
pacH        = ema(high,HiLoLen)
DODGERBLUE = #1E90FFFF
// Plot the Price Action Channel (PAC) base on EMA high,low and close//
L=plot(pacL, color=DODGERBLUE, linewidth=1, title="High PAC EMA",transp=90)
H=plot(pacH, color=DODGERBLUE, linewidth=1, title="Low PAC EMA",transp=90)
C=plot(pacC, color=DODGERBLUE, linewidth=2, title="Close PAC EMA",transp=80)
//Moving Average//
signalMA =ema(close,EMA)
plot(signalMA,title="EMA Signal",color=black,linewidth=3,style=line)
linereg = linreg(close, EMA, 0)
plot(linereg, color = orange, title = "Linear Regression Curve", style = line, linewidth = 1)
//////ICHIMOKU/////////
conversionPeriods = input(9),
basePeriods = input(26, minval=1, title="Base Line")
laggingSpan2Periods = input(52, minval=1, title="Lagging Span"),
displacement = input(26, minval=1)
donchian(len) => avg(lowest(len), highest(len))
conversionLine = donchian(conversionPeriods)
baseLine = donchian(basePeriods)
leadLine1 = avg(conversionLine, baseLine) 
leadLine2 = donchian(laggingSpan2Periods-1)
p1 = plot(leadLine1, offset = displacement-1, color=gray,title="Senkou span A", transp=90)
p2 = plot(leadLine2, offset = displacement-1, color=gray, title="Senkou span B", transp=90)
fill(p1, p2, color = leadLine1 > leadLine2 ? green : red, title="Kumo Cloud")
///////////////// MACD BARCOLOR /////////////////////
fastLength = input(12)
slowlength = input(26)
MACDLength = input(9)
MACD = ema(close, fastLength) - ema(close, slowlength)
aMACD = ema(MACD, MACDLength)
delta = MACD - aMACD
hisup= iff(delta>delta[1] and delta>0, 1,
	     iff(delta<delta[1], -1, nz(hisup[1], 0)))
hisdown = iff(delta<delta[1] and delta<0, 1,
	     iff(delta>delta[1], -1, nz(hisdown[1], 0)))
barcolor(hisup==1 and MACD>0 ? lime: hisdown==1 and MACD<0 ? red : blue )
///////////// SIGNAL ///////////////
conbuy = iff(crossover(linereg,pacL) and rising(linereg,5), 1,
	     iff(crossover(linereg,pacH) or (crossunder(linereg,pacL) and pacL<signalMA), -1, nz(conbuy[1], 0)))
consell = iff(crossunder(linereg,pacH) and falling(linereg,5), 1,
	     iff(crossunder(linereg,pacL) or (crossover(linereg,pacH) and pacH>signalMA), -1, nz(consell[1], 0)))
golong= conbuy==1 and close>open and open<pacH and close>linereg and hisdown!=1
goshort= consell==1 and close<open and open>pacL and close<linereg and hisup!=1
if(golong)
    strategy.entry("Buy",strategy.long)
if(goshort)
    strategy.entry("Sell",strategy.short)
closelong= conbuy==-1
closeshort=consell==-1
if(closelong)
    strategy.close("Buy")
if(closeshort)
    strategy.close("Sell")
 ////////////// TP and SL//.
//SL = input(defval=200.00, title="Stop Loss Point", type=float, step=1)
//rr= input(defval=0.1,title="Reward/Risk",type=float)
//useTPandSL = input(defval = false, title = "Use exit order strategy?")
//Stop = SL
//Take=SL*rr
//Q = 100
//if(useTPandSL)
//    strategy.exit("Out Long", "Buy", qty_percent=Q, profit= Take, loss=Stop)
//    strategy.exit("Out Short", "Sell", qty_percent=Q, profit= Take, loss=Stop) 

Mehr