Bilaterale Arbitragestrategie basierend auf TSI- und HMACCI-Indikatoren


Erstellungsdatum: 2024-01-23 11:26:14 zuletzt geändert: 2024-01-23 11:26:14
Kopie: 0 Klicks: 575
1
konzentrieren Sie sich auf
1617
Anhänger

Bilaterale Arbitragestrategie basierend auf TSI- und HMACCI-Indikatoren

Überblick

Diese Strategie kombiniert bilaterale Handelssignale des TSI mit dem CCI-Index, wobei häufige Positionsöffnungen mit Arbitrage durchgeführt werden, um nachhaltigere Gewinne zu erzielen. Die entscheidende Logik ist der schnelle und langsame mittlere Gold- und Todesfork des TSI-Index, der in Kombination mit der HMACCI-Index-Poly-Hole-Signallinie die Kauf- und Verkaufsrichtung des Marktes bestimmen kann.

Strategieprinzip

Die Strategie basiert hauptsächlich auf einer Kombination von zwei Indikatoren, dem TSI und dem HMACCI.

Der TSI enthält eine schnelle und eine langsame Durchschnittslinie, um ein Kauf- und Verkaufssignal zu ermitteln. Wenn die schnelle Linie die langsame Linie von unten nach oben durchbricht, ist dies ein Kaufsignal und umgekehrt ein Verkaufssignal. Auf diese Weise können die Markttrends sensibler erfasst werden.

Der HMACCI-Indikator basiert auf dem herkömmlichen CCI-Indikator und verwendet den Hull-Moving-Average anstelle des Preises selbst, um einen Teil des Geräusches abzuschalten und die Überkauf-Überverkauf-Bereich zu beurteilen. Die Überkauf-Überverkauf-Bereich kann die Signalrichtung des TSI-Indikators erneut bestätigen.

Die Schlüssellogik der Strategie besteht darin, die Ergebnisse dieser beiden Indikatoren zu kombinieren und bestimmte zusätzliche Bedingungen zu setzen, um Fehlsignale zu filtern, z. B. den Schlusskurs der K-Linie vor der Untersuchung und den Höchst-Legendpreis vor mehreren Zyklen, um die Qualität des Umkehrsignals zu kontrollieren.

In Bezug auf die Eröffnung von Positionen, wenn die Bedingungen erfüllt sind, wird bei jedem K-Linie-Abschluss der Marktpreis eröffnet, während mehr Leerlauf gemacht wird. Auf diese Weise kann ein stabilerer Ertrag erzielt werden, aber das Risiko des Arbitrages muss eingehen.

Im Bereich Stop-Loss wurde ein Floating Stop-Loss und ein Full-Plating-Plating eingerichtet, um das Risiko für einseitige Transaktionen gut zu kontrollieren.

Strategische Vorteile

Es ist eine relativ stabile und zuverlässige Hochfrequenz-Arbitrage-Strategie. Die Hauptvorteile sind:

  1. Doppelte Messkombinationen, um Fehlsignale zu vermeiden
  2. Jede K-Linie eröffnet Positionen, häufige Arbitrage, Ertrag und Verlust schwanken gleichmäßig
  3. Strenge Logik und Stop-Loss-Bedingungen, um Risiken zu kontrollieren
  4. Eine hohe Fehlerfrequenz, kombiniert mit Trends und Umkehrungen
  5. Unbestimmte Präferenzen für alle Marktsituationen
  6. Die Parameter sind räumlich anpassbar und können für verschiedene Sorten optimiert werden

Risikoanalyse

Die wichtigsten Risiken, die zu beachten sind, sind:

  1. Mehr Gebührenverluste durch Hochfrequenzgeschäfte
  2. Es ist unmöglich, sich vollkommen vor Arbitrage zu schützen.
  3. Fehlgelegte Parameter können zu starken Einstiegs führen
  4. Es ist unerträglich, dass einseitige Verluste in kurzer Zeit entstehen.

Das Risiko kann durch folgende Maßnahmen verringert werden:

  1. Um den Einfluss der Gebühren zu reduzieren, sollte die Häufigkeit der Einlagerungen angepasst werden.
  2. Optimierung der Parameter zur Sicherstellung der Signalqualität
  3. Die Stop-Loss-Marge erhöht, aber mit mehr Verlusten verbunden.
  4. Verschiedene Sorten Parameter-Einstellungen testen

Optimierungsrichtung

Die Strategie hat noch viel Optimierungsmöglichkeiten, und zwar in folgenden Bereichen:

  1. Optimierung und Prüfung von Parametern wie Periode, Länge usw.
  2. Versuchen Sie verschiedene Kombinationen von Indikatoren, wie MACD, BOLL, etc.
  3. Änderungen an der Logik der Börsenöffnung, um strengere Filterbedingungen einzurichten
  4. Optimierung der Stop-Loss-Strategie, um dynamische und durchschlagende Stop-Losses zu erreichen
  5. Versuchen Sie mit einer maschinellen Lernmethode, um einen stabileren Parameterbereich zu finden
  6. Tests für Handelsarten und Zeiträume
  7. Es ist wichtig, dass man sich nicht zu radikal auf die Schwingungen einlässt, wenn man die Trends mit Indikatoren vergleicht.

Zusammenfassen

Die Strategie ist insgesamt eine stabile, zuverlässige und fehlerfreie binäre Arbitrage-Strategie. Sie kombiniert Trendbeurteilung und Reversal-Indikatoren, um durch häufige binäre Positionen einen stabilen Gewinn zu erzielen. Die Strategie selbst hat jedoch einen starken Optimierungsraum und Potenzial und ist eine hochfrequente Handelsideologie, die es wert ist, eingehend untersucht zu werden.

Strategiequellcode
/*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"}]
*/

// This source code is subject to the terms of the suns bipolarity
//©SeaSide420
//@version=4
strategy(title="TSI HMA CCI", default_qty_type=strategy.cash,default_qty_value=1000,commission_type=strategy.commission.percent,commission_value=0.001)
long = input(title="TSI Long Length", type=input.integer, defval=25)
short = input(title="TSI Short Length", type=input.integer, defval=25)
signal = input(title="TSI Signal Length", type=input.integer, defval=13)
length = input(33, minval=1, title="HMACCI Length")
src = input(open, title="Price Source")
ld = input(50, minval=1, title="Line Distance")
CandlesBack = input(8,minval=1,title="Candles Look Back")
StopLoss= input(3000,minval=1, title="Stop Loss")
TargetProfitAll= input(3000,minval=1, title="Target Profit Close All")
FromMonth=input(defval=1,title="FromMonth",minval=1,maxval=12)
FromDay=input(defval=1,title="FromDay",minval=1,maxval=31)
FromYear=input(defval=2020,title="FromYear",minval=2020)
ToMonth=input(defval=1,title="ToMonth",minval=1,maxval=12)
ToDay=input(defval=1,title="ToDay",minval=1,maxval=31)
ToYear=input(defval=9999,title="ToYear",minval=2017)
start=timestamp(FromYear,FromMonth,FromDay,00,00)
finish=timestamp(ToYear,ToMonth,ToDay,23,59)
window()=>true
ul = (ld)
ll = (ld-ld*2)
ma = hma(src, length)
cci = (src - ma) / (0.015 * dev(src, length))
price = close
double_smooth(src, long, short) =>
	fist_smooth = ema(src, long)
	ema(fist_smooth, short)
pc = change(price)
double_smoothed_pc = double_smooth(pc, long, short)
double_smoothed_abs_pc = double_smooth(abs(pc), long, short)
tsi_value = 100 * (double_smoothed_pc / double_smoothed_abs_pc)*10
tsi_value2=ema(tsi_value/10, signal)*10
cc = color.white
ct = color.new(color.gray, 90)
if cci<ll or cci[1]<ll
    cc:=color.red
if cci>ul or cci[1]>ul
    cc:=color.green
if cci<ul and cci>ll
    cc:=color.new(color.yellow, 90)
ccc = color.white
if cci>ul
    ccc:=color.green
if cci<cci[1] and cci<ul and cci>ll
    ccc:=color.red
if cci<ll
    ccc:=color.red
if cci>cci[1] and cci>ll and cci<ul
    ccc:=color.green
tsiplot= plot(tsi_value, color=color.lime)
tsiplot2=plot(tsi_value2, color=color.red)    
colorchange2 =tsi_value>tsi_value2?color.lime:color.orange
fill(tsiplot, tsiplot2, color=colorchange2, title="TSIBackground", transp=50)
band1 = hline(ul, "Upper Band 1", color=ct, linestyle=hline.style_dashed)
band0 = hline(ll, "Lower Band 1", color=ct, linestyle=hline.style_dashed)
fill(band1, band0, color=cc, title="MidBandBackground", transp=0)
band2 = hline(ul, "Upper Band 2", color=ct, linestyle=hline.style_dashed)
band3 = hline(ll, "Lower Band 2", color=ct, linestyle=hline.style_dashed)
cciplot2 = plot(cci, "CCIvHMA 2", color=color.black, transp=0, linewidth=5)
cciplot = plot(cci, "CCIvHMA", color=ccc, transp=0, linewidth=3)
hline(0, title="Zero")
hline(420, title="420")
hline(-420, title="-420")
fill(cciplot, cciplot2, color=ccc, title="CCIBackground", transp=0)
LongCondition=cci>cci[1] and cci>ll and src>src[CandlesBack] and tsi_value>tsi_value2
ShortCondition=cci<cci[1] and cci<ul and src<src[CandlesBack] and tsi_value<tsi_value2
plotshape(LongCondition, title="BUY", style=shape.circle, location=location.top, color=color.green)
plotshape(ShortCondition, title="SELL", style=shape.circle, location=location.top, color=color.red)
if  strategy.openprofit>TargetProfitAll
    strategy.close_all(when=window(),comment="close all profit target")
if LongCondition and strategy.openprofit>-1
    strategy.order("BUY", strategy.long,when=window())
if ShortCondition and strategy.openprofit>-1
    strategy.order("SELL", strategy.short,when=window())
strategy.exit("SL exit a sell", "SELL", loss = StopLoss,when=window())     
strategy.exit("SL exit a buy", "BUY", loss = StopLoss,when=window())