Die Strategie nutzt die zweite Kurve, um die Höhen und Tiefen der K-Linie anzupassen, um ein Handelssignal zu erzeugen. Wenn der tatsächliche Preis die Anpassungskurve durchbricht, erzeugt dies ein Kauf- und Verkaufssignal. Die Strategie versucht, die wichtigsten Unterstützungs- und Widerstandswerte mit Hilfe eines mathematischen Modells zu identifizieren, um einen Durchbruch zu erzielen.
Die wichtigsten Bestandteile und Regeln der Strategie sind:
Anpassung der Höhen und Tiefen: Anpassung der Höhen und Tiefen der K-Linien mit dem Minimum-Doppel der Sekundärkurve.
Kaufsignal: Ein Kaufsignal wird erzeugt, wenn der K-Linie-Abschlusskurs die Oberbahnkurve durchbricht.
Verkaufssignal: Es wird ein Verkaufssignal erzeugt, wenn der K-Linie-Schlusskurs die Unterbahnkurve durchbricht.
N-Zyklus-Verifizierung: Ein Durchbruch, der N-Zyklen dauert, ist erforderlich, um einen False-Break zu vermeiden.
Nachlasssignal: Es gibt kein eindeutiges Nachlasssignal, die Haltedauer wird durch Rückmessung und Optimierung bestimmt.
Diese Strategie versucht, die Schlüsselpreise durch mathematische Modelle zu identifizieren und bei einem Durchbruch einzutreten.
Die wichtigsten Vorteile dieser Strategie gegenüber anderen Systemen sind:
Es wird eine mathematische Anpassung der Modelle verwendet, um subjektive Beurteilungen zu erleichtern.
Die Methode ist neu und kombiniert Handelstechnologien mit statistischen Modellen.
Einführung von Mehrzeit-Verifizierung, um falsche Durchbrüche zu filtern.
Die Optimierung der Rückmeldung erlaubt die Suche nach der optimalen Haltedauer.
Das ist nicht sehr schwierig, es kann flexibel angepasst werden.
Das Modell wird automatisch aktualisiert und benötigt keine Wartung.
Die parametrische Robustheit kann für verschiedene Sorten und Zyklen geprüft werden.
Die Optimierung und Validierung durch maschinelles Lernen ist möglich.
Insgesamt sind die Neuigkeiten hoch und es lohnt sich, sie zu erkunden.
Aber diese Strategie birgt auch folgende Risiken:
Die Anpassung hängt von der Parameterwahl ab und kann überoptimiert sein.
Es gibt eine Verzögerung in der Anpassungskurve, die Verluste nicht vollständig vermeiden kann.
Es besteht die Gefahr, dass die Transaktionsmenge nicht berücksichtigt wird.
Statistische Arbitrage ist schwierig, um langfristig stabil zu sein.
Die Rücklaufphase ist kurz und die Modellstabilität muss überprüft werden.
Die Anpassung an die Umgebung mehrerer Sorten muss geprüft werden.
Die Festposition kann nicht dynamisch angepasst werden.
Die Rücknahmequote muss streng beurteilt werden.
Nach der oben erwähnten Analyse kann diese Strategie in folgenden Bereichen verbessert werden:
Die robustheit der Parameter wird in verschiedenen Marktumgebungen getestet.
Die Veröffentlichung des Berichts wurde von der Regierung der Türkei unterstützt.
Optimierung der Ein- und Ausstiegslogik und Verbesserung der Signalqualität.
Erstellung eines dynamischen Positionsmanagementmodells.
Einführung einer Stop-Loss-Strategie, um Verluste zu begrenzen.
Optimierung der Finanzmanagementstrategie.
Die Rückmeldung der Fensterrollung wird bestätigt.
Bewertung der Ertragsfähigkeit von mehreren Sorten.
Die Modelle werden mit Hilfe von maschinellem Lernen optimiert.
Die Strategie als Ganzes hat einen gewissen Innovations- und Experimentierwert. Die langfristige Stabilität der Erträge von Statistical Arbitrage steht jedoch noch vor der Prüfung. Die Stabilität der Strategie, die Risiken und die Erträge müssen in der Rückmeldung umfassend geprüft werden, um Überanpassung zu verhindern und die Anpassungsfähigkeit der Strategie in wechselnden Märkten zu bewahren.
/*backtest
start: 2023-08-23 00:00:00
end: 2023-09-22 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
//
// ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ //
strategy(title = " Strategy Quadratic Semaphore ",
shorttitle = "SQS",
overlay = true,
precision = 8,
calc_on_order_fills = true,
calc_on_every_tick = true,
backtest_fill_limits_assumption = 0,
default_qty_type = strategy.fixed,
default_qty_value = 2,
initial_capital = 10000,
pyramiding=5,
currency = currency.USD,
linktoseries = true)
//
// ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ //
backTestSectionFrom = input(title = "═══════════════ From ═══════════════", defval = true, type = input.bool)
FromMonth = input(defval = 1, title = "Month", minval = 1)
FromDay = input(defval = 1, title = "Day", minval = 1)
FromYear = input(defval = 2019, title = "Year", minval = 2014)
backTestSectionTo = input(title = "════════════════ To ════════════════", defval = true, type = input.bool)
ToMonth = input(defval = 31, title = "Month", minval = 1)
ToDay = input(defval = 12, title = "Day", minval = 1)
ToYear = input(defval = 9999, title = "Year", minval = 2014)
Config = input(title = "══════════════ Config ══════════════", defval = true, type = input.bool)
p = input(6)
length = input(30)
//
backTestPeriod() => (time > timestamp(FromYear, FromMonth, FromDay, 00, 00)) and (time < timestamp(ToYear, ToMonth, ToDay, 23, 59))
//
//
// ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ //
x1 = bar_index
x2 = sqrt(x1)
y = high
//
S11 = sum(x2,length) - sqrt(sum(x1,length)) / length
S12 = sum(x1*x2,length) - (sum(x1,length) * sum(x2,length)) / length
S22 = sum(sqrt(x2),length) - sqrt(sum(x2,length)) / length
Sy1 = sum (y*x1,length) - (sum(y,length) * sum(x1,length)) / length
Sy2 = sum (y*x2,length) - (sum(y,length) * sum(x2,length)) / length
//
max1 = sma(x1,length)
max2 = sma(x2,length)
may = sma(y,length)
b2 = ((Sy1 * S22) - (Sy2*S12))/(S22*S11 - sqrt(S12))
b3 = ((Sy2 * S11) - (Sy1 * S12))/(S22 * S11 - sqrt(S12))
b1 = may - b2*max1 - b3*max2
qr = b1 + b2*x1 + b3*x2
//
yl = low
//
Sy1l = sum(yl*x1,length) - (sum(yl,length) * sum(x1,length)) / length
Sy2l = sum(yl*x2,length) - (sum(yl,length) * sum(x2,length)) / length
//
mayl = sma(yl,length)
b2l = ((Sy1l * S22) - (Sy2l*S12))/(S22*S11 - sqrt(S12))
b3l = ((Sy2l * S11) - (Sy1l * S12))/(S22 * S11 - sqrt(S12))
b1l = mayl - b2l*max1 - b3l*max2
qrl = b1l + b2l*x1 + b3l*x2
//
period = round(p/2)+1
hh = qr[period]
ll = qrl[period]
countH = 0
countL = 0
buy=0
sell=0
//
for i = 1 to period-1
if qr[i]<hh
countH:=countH+1
if qrl[i]>ll
countL:=countL+1
for i = period+1 to p+1
if qr[i]<hh
countH:=countH+1
if qrl[i]>ll
countL:=countL+1
if countH==p
pivotH = high[period]
buy := 1
if countL==p
pivotL = low[period]
sell := 1
//
plotshape(buy == 1 , text='💣', style=shape.arrowup, location=location.belowbar, color=#32CD32, textcolor=color.white, offset=0, transp=0,size=size.auto)
plotshape(sell == 1 , text='🔨', style=shape.arrowdown, location=location.abovebar, color=#FF0000, textcolor=color.white, offset=0, transp=0,size=size.auto)
//
if (backTestPeriod())
strategy.entry("long", true, 1, when = buy == 1)
strategy.entry("short", false, 1, when = sell == 1)