Das von Ihnen bereitgestellte Skript basiert auf der Adaptive Zero Lag EMA (AZLEMA) -Strategie. Dieses Skript verwendet die Prinzipien der John Ehlers' Signalverarbeitung und eine Methode namens Cosine Instantaneous Frequency Measurement (IFM) zur Bestimmung der dominierenden Zyklusperiode, d.h. der Zeitdauer zwischen zwei identischen Punkten in aufeinanderfolgenden Zyklen in Ihren Handelsdaten.
Hier ist ein kurzer Überblick über die Funktionen des Handelsscripts:
Zunächst setzt es die Strategie mit einer Konfiguration von Standardinputs wie Periode, Adaptivmodus, Gewinnlimit, Schwelle, Stop-Loss-Punkte und Take-Profit-Punkte ein.
Es stellt dann Berechnungen für den adaptiven Modus mit einer Kombination von Differentialgleichungen und Ehlers
Es berechnet den durchschnittlichen Wert (EMA) der ausgewählten Datenquelle für den ausgewählten Zeitraum.
Es führt eine Schleifenoperation durch, um die Werte der Korrelation zwischen Gewinn und Fehler (Gain and Error Correlation, EC) zu finden, die den absoluten Fehler minimieren.
Anhand dieser Werte berechnet er den endgültigen EG-Wert und zeichnet den Wert von EC und EMA auf dem Diagramm.
Es schafft potenzielle Kauf- und Verkaufsbedingungen, die auf der Verknüpfung von EG und EMA über einem bestimmten Schwellenwert beruhen.
Es legt Regeln für den Ein- und Ausstieg aus Long- und Short-Positionen auf der Grundlage der zuvor festgelegten Kauf- und Verkaufsbedingungen fest. Für jede Position berechnet es die Losgröße und tritt eine Position ein, wenn die jeweilige Bedingung (Kauf/Verkauf) wahr ist. Es setzt für jede Position einen Stop-Loss und einen Trailing-Take-Profit.
Dieses Skript erscheint ziemlich umfassend und vielseitig, da es Ihnen erlaubt, mehrere Parameter zu ändern, um sich an verschiedene Handelsstile und Marktbedingungen anzupassen.
/*backtest start: 2023-08-08 00:00:00 end: 2023-09-07 00:00:00 period: 2h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy(title="Adaptive Zero Lag EMA", shorttitle="AZLEMA", overlay = true, initial_capital=1000, currency="USD", commission_type=strategy.commission.cash_per_contract, commission_value=0.000005, slippage = 5, pyramiding=1, calc_on_every_tick=true) src = input(title="Source", defval=close) Period = input(title="Period", defval = 20) adaptive = input(title="Adaptive?", defval=true) GainLimit = input(title="Gain Limit", defval = 15) Threshold = input(title="Threshold", defval=0.03, step=0.01) fixedSL = input(title="SL Points", defval=50) fixedTP = input(title="TP Points", defval=10) risk = input(title='Risk', defval=0.01, step=0.01) PI = 3.14159265359 s2 = 0.0 s3 = 0.0 delta = 0.0 inst = 0.0 len = 0.0 v1 = 0.0 v2 = 0.0 v4 = 0.0 //IF adaptive is true, use the Cosine IFM strategy for determining the dominant //cycle period if(adaptive) v1 := src - src[7] s2 := 0.2*(v1[1] + v1)*(v1[1] + v1) + 0.8*nz(s2[1]) s3 := 0.2*(v1[1] - v1)*(v1[1] - v1) + 0.8*nz(s3[1]) if (s2 != 0) v2 := sqrt(s3/s2) if (s3 != 0) delta := 2*atan(v2) for i = 0 to 100 v4 := v4 + delta[i] if (v4 > 2*PI and inst == 0.0) inst := i - 1 if (inst == 0.0) inst := inst[1] len := 0.25*inst + 0.75*nz(len[1]) Period := round(len) LeastError = 1000000.0 EC = 0.0 Gain = 0.0 EMA = 0.0 Error = 0.0 BestGain = 0.0 alpha =2/(Period + 1) EMA := alpha*src + (1-alpha)*nz(EMA[1]) for i = -GainLimit to GainLimit Gain := i/10 EC := alpha*(EMA + Gain*(src - nz(EC[1]))) + (1 - alpha)*nz(EC[1]) Error := src - EC if(abs(Error)<LeastError) LeastError := abs(Error) BestGain := Gain EC := alpha*(EMA + BestGain*(src - nz(EC[1]))) + (1-alpha)*nz(EC[1]) plot(EC, title="EC", color=orange, linewidth=2) plot(EMA, title="EMA", color=red, linewidth=2) buy = crossover(EC,EMA) and 100*LeastError/src > Threshold sell = crossunder(EC,EMA) and 100*LeastError/src > Threshold if buy strategy.entry("Enter Long", strategy.long) else if sell strategy.entry("Enter Short", strategy.short)