Strategi Perdagangan Kuantitatif Rata-rata Pergerakan Eksponensial Adaptif Nol Lag


Tanggal Pembuatan: 2024-02-19 15:38:02 Akhirnya memodifikasi: 2024-02-19 15:38:02
menyalin: 0 Jumlah klik: 841
1
fokus pada
1617
Pengikut

Strategi Perdagangan Kuantitatif Rata-rata Pergerakan Eksponensial Adaptif Nol Lag

Ringkasan

Adaptive Zero Lag Exponential Moving Average Quantitative Trading Strategy adalah strategi perdagangan kuantitatif yang dikembangkan berdasarkan Ehlers’s Zero Lag Exponential Moving Average ideology. Strategi ini menggunakan indeks bergerak rata-rata sebagai indikator dasar, dan menambahkan metode adaptif dari Instantaneous Frequency Measurement untuk secara dinamis mengoptimalkan indikator pergerakan rata-rata.

Prinsip Strategi

Gagasan inti dari strategi ini berasal dari teori filter lag nol John Ehlers. Meskipun indeks moving average adalah indikator teknis yang terkenal, ia memiliki masalah lag secara inheren. Dengan menambahkan faktor koreksi kesalahan dalam rumus perhitungan indeks moving average, Ehlers dapat secara efektif menghilangkan lag, sehingga indeks moving average dengan lag nol dapat lebih sensitif dalam melacak perubahan harga.

Dalam strategi EMA beradaptasi nol-lag, kami menggunakan metode pengukuran frekuensi langsung untuk mengadaptasi parameter siklus indeks bergerak rata-rata beradaptasi nol-lag. Pengukuran frekuensi langsung terbagi menjadi dua jenis, yaitu metode string dan metode sinkronisasi positif, yang dapat mengukur siklus dominan dari perubahan urutan harga. Kami melacak siklus terbaik yang dihitung oleh kedua metode pengukuran ini secara real-time, dan secara dinamis menetapkan parameter siklus indeks bergerak rata-rata berlagu nol, sehingga lebih sesuai dengan lingkungan pasar saat ini.

Ketika garis cepat (Zero Lagging Index Moving Average) melewati garis lambat (Ordinary Index Moving Average) melakukan over dan under, maka akan terbentuk sebuah sinyal strategi trading yang mirip dengan crossing moving averages.

Keunggulan Strategis

Strategi EMA self-adapting zero lag menggabungkan filter self-adapting zero lag dan metode self-adapting cycle optimization, dengan keuntungan sebagai berikut:

  1. Penghapusan Lag dan Sensitivitas Sinyal
  2. Parameter siklus adaptasi, adaptasi terhadap lingkungan pasar yang lebih luas
  3. Parameter kebijakan yang lebih sedikit, mudah untuk diuji dan dioptimalkan
  4. Konfigurasikan Stop Loss Stop Point, risiko mudah dikendalikan

Risiko Strategis

Ada beberapa risiko yang terkait dengan strategi EMA untuk beradaptasi di belakang nol, terutama:

  1. Dalam kondisi pasar tertentu, parameter siklus adaptasi-optimasi mungkin tidak berlaku
  2. Stop loss yang ditetapkan dengan tidak tepat dapat menyebabkan kerugian atau kerugian yang berlebihan
  3. Tes optimasi parameter yang tidak memadai dapat menyebabkan kinerja hard disk yang buruk

Untuk mengontrol risiko ini, kita perlu untuk menguji parameter pengaturan di berbagai lingkungan pasar, menyesuaikan stop loss yang tepat, dan melakukan pengujian yang memadai dalam simulasi lingkungan nyata dalam pengukuran ulang.

Arah optimasi strategi

Ada banyak ruang untuk optimasi dalam strategi EMA untuk beradaptasi dengan ketertinggalan nol, termasuk:

  1. Cobalah berbagai metode pengukuran siklus adaptasi, seperti MA adaptasi rata-rata fluktuasi
  2. Menambahkan kondisi penyaringan tambahan, seperti volume transaksi, pasangan moving average, dan sebagainya
  3. Optimalkan strategi stop loss seperti trailing stop, Chandelier Exit, dan lain-lain
  4. Dimensi posisi yang disesuaikan dengan manajemen risiko
  5. Konfirmasi multi-siklus waktu, meningkatkan kualitas sinyal

Dengan cara optimasi ini, diharapkan dapat meningkatkan strategi untuk meningkatkan tingkat kemenangan, tingkat keuntungan, indikator penyesuaian risiko, dan lain-lain.

Meringkaskan

Strategi EMA beradaptasi nol-lagu yang berhasil digabungkan dengan filter berlagu nol dan ide optimasi siklus dinamis, adalah strategi perdagangan kuantitatif dengan parameter yang lebih sedikit, mudah dioperasikan dan dioptimalkan. Ini memiliki karakteristik responsif, beradaptasi, dan berkinerja baik di pasar yang sedang tren. Bersama dengan alat manajemen stop loss dan posisi yang tepat, stabilitas dan profitabilitas dapat ditingkatkan.

Kode Sumber Strategi
/*backtest
start: 2024-01-19 00:00:00
end: 2024-02-18 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy(title="Adaptive Zero Lag EMA v2", shorttitle="AZLEMA", overlay = true)

src = input(title="Source",  defval=close)
Period = input(title="Period",  defval = 20)
adaptive = input(title="Adaptive Method", options=["Off", "Cos IFM", "I-Q IFM", "Average"], defval="Off")
GainLimit = input(title="Gain Limit",  defval = 10)
Threshold = input(title="Threshold", type = float, defval=0.05, step=0.01)
fixedSL = input(title="SL Points", defval=70)
fixedTP = input(title="TP Points", defval=5)
risk = input(title='Risk', defval=0.01, step=0.01)

//##############################################################################
//I-Q IFM
//#############################################################################
range = input(title="Max Period",  defval=60, minval=8, maxval=100)

PI = 3.14159265359
imult = 0.635
qmult = 0.338
inphase = 0.0
quadrature = 0.0
re = 0.0
im = 0.0
deltaIQ = 0.0
instIQ = 0.0
lenIQ = 0.0
V = 0.0

P = src - src[7]
inphase := 1.25*(P[4] - imult*P[2]) + imult*nz(inphase[3])
quadrature := P[2] - qmult*P + qmult*nz(quadrature[2])
re := 0.2*(inphase*inphase[1] + quadrature*quadrature[1]) + 0.8*nz(re[1])
im := 0.2*(inphase*quadrature[1] - inphase[1]*quadrature) + 0.8*nz(im[1])
if (re!= 0.0)
    deltaIQ := atan(im/re)
for i=0 to range
    V := V + deltaIQ[i]
    if (V > 2*PI and instIQ == 0.0)
        instIQ := i
if (instIQ == 0.0)
    instIQ := nz(instIQ[1])
lenIQ := 0.25*instIQ + 0.75*nz(lenIQ[1])

//##############################################################################
//COSINE IFM
//#############################################################################
s2 = 0.0
s3 = 0.0
deltaC = 0.0
instC = 0.0
lenC = 0.0
v1 = 0.0
v2 = 0.0
v4 = 0.0

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)
    deltaC := 2*atan(v2)
for i = 0 to range
    v4 := v4 + deltaC[i]
    if (v4 > 2*PI and instC == 0.0)
        instC := i - 1
if (instC == 0.0)
    instC := instC[1]
lenC := 0.25*instC + 0.75*nz(lenC[1])

if (adaptive == "Cos IFM")
    Period := round(lenC)
if (adaptive == "I-Q IFM")
    Period := round(lenIQ)
if (adaptive == "Average")
    Period := round((lenC + lenIQ)/2)

//##############################################################################
//ZERO LAG EXPONENTIAL MOVING AVERAGE
//##############################################################################
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
strategy.initial_capital = 50000
if (time>timestamp(2016, 1, 1 , 0, 0))
    //LONG
    balance = strategy.initial_capital + strategy.netprofit
    lots = ((risk * balance)/fixedSL)*1
    strategy.entry("BUY", strategy.long, qty=lots, oca_name="BUY",  when=buy)
    strategy.exit("B.Exit", "BUY", qty_percent = 100, loss=fixedSL, trail_offset=15, trail_points=fixedTP)
    //SHORT
    strategy.entry("SELL", strategy.short, qty=lots, oca_name="SELL", when=sell)
    strategy.exit("S.Exit", "SELL", qty_percent = 100, loss=fixedSL, trail_offset=15, trail_points=fixedTP)