Strategi mengikuti tren berdasarkan rata-rata pergerakan Hull


Tanggal Pembuatan: 2023-09-19 16:40:00 Akhirnya memodifikasi: 2023-09-19 16:40:00
menyalin: 1 Jumlah klik: 638
1
fokus pada
1617
Pengikut

Ringkasan

Strategi ini didasarkan pada indikator Hull Moving Average yang dikemukakan oleh Alan Hull, yang merupakan strategi pelacakan tren. Instrumen ini dapat secara efektif mengurangi efek keterlambatan rata-rata bergerak, dan lebih sensitif terhadap perubahan harga. Strategi ini menggunakan Hull Moving Average untuk menilai arah tren dan mengirim sinyal perdagangan dengan kombinasi kondisi penyaringan tambahan.

Prinsip Strategi

  1. Hull Moving Average dihitung untuk periode pendek dan periode panjang. Periode pendek menentukan arah perdagangan tertentu, dan periode panjang menentukan arah tren besar.

  2. Ketika periode pendek Hull MA di atas berputar-putar, perhitungkan bahwa terjadi pergeseran tren.

  3. Meningkatkan harga untuk menembus Hull MA, memastikan keberhasilan penembusan.

  4. Meningkatkan kondisi tingkat perubahan harga untuk menghindari terobosan yang tidak diinginkan.

  5. Tetapkan kondisi stop loss dan stop loss, kendalikan risiko.

Analisis Keunggulan

Strategi ini memiliki beberapa keuntungan dibandingkan dengan rata-rata bergerak biasa:

  1. Hull MA bereaksi lebih cepat terhadap perubahan harga dan dapat menangkap perubahan tren tepat waktu.

  2. Struktur Hull MA ganda dapat menilai tren dua dimensi waktu besar dan kecil.

  3. Kondisi harga terobosan dan perubahan rasio dapat secara efektif memfilter terobosan palsu.

  4. Stop loss yang dinamis dapat mengunci keuntungan dan mengendalikan risiko.

Analisis risiko

Strategi ini juga memiliki risiko sebagai berikut:

  1. Parameter yang tidak disetel dengan benar dapat melewatkan perubahan tren harga.

  2. Salah menilai tren besar dapat menyebabkan perdagangan berlawanan arah.

  3. Stop loss set over wide dapat menyebabkan kerugian yang lebih besar.

  4. Terlalu sering melakukan transaksi, meningkatkan biaya transaksi dan risiko tergelincir.

Arah optimasi

Ada beberapa hal yang dapat dioptimalkan:

  1. Optimalkan siklus Hull MA, seimbang sensitivitas dan kelancaran.

  2. Optimalkan parameter Entry dan Exit untuk menemukan nilai optimal.

  3. Uji kekuatan parameter dari berbagai varietas untuk meningkatkan kemampuan adaptasi strategi.

  4. Indikator kuantitatif untuk menghindari risiko deviasi.

  5. Menambahkan kondisi, meningkatkan stabilitas strategi.

Meringkaskan

Secara keseluruhan, strategi ini memanfaatkan kecepatan respons Hull MA untuk melacak tren secara tepat waktu, dengan kemampuan profitabilitas yang lebih kuat dengan asumsi pengendalian risiko. Namun, perlu memperhatikan pengoptimalan parameter dan pencegahan beberapa risiko sistematis yang lebih sulit dihindari.

Kode Sumber Strategi
/*backtest
start: 2023-09-11 00:00:00
end: 2023-09-12 22:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
//SeaSide420
strategy("SS420FX", overlay=true, default_qty_type=strategy.percent_of_equity, max_bars_back=720, default_qty_value=100, calc_on_order_fills= true, calc_on_every_tick=true, pyramiding=0)
q=input(title="HullMA Short",defval=14)
z=input(title="HullMA Long",defval=14)
dt = input(defval=0.0010, title="Decision Threshold", type=float, step=0.0001)
SL = input(defval=-50000.00, title="Stop Loss in $", type=float, step=1)
TP = input(defval=100000.00, title="Target Point in $", type=float, step=1)
ot=1
n2ma=2*wma(close,round(q/2))
nma=wma(close,q)
diff=n2ma-nma
sqn=round(sqrt(q))
n2ma1=2*wma(close[1],round(q/2))
nma1=wma(close[1], q)
diff1=n2ma1-nma1
sqn1=round(sqrt(q))
n1=wma(diff,sqn)
n2=wma(diff1,sqn)
z2ma=2*wma(close[11],round(z/2))
zma=wma(close[11],z)
ziff=n2ma-nma
zqn=round(sqrt(z))
z2ma1=2*wma(close[12],round(z/2))
zma1=wma(close[12], z)
ziff1=n2ma1-nma1
zqn1=round(sqrt(z))
z1=wma(diff,sqn)
z2=wma(diff1,sqn)
z1e=z1>z2?green:black
z2e=z1>z2?black:red
z3e=z1>z2?green:red
n1e=plot(z1, title="HMA1", color=z1e, linewidth=2, offset=2)
n2e=plot(z2, title="HMA2", color=z2e, linewidth=2, offset=2)
fill(n1e, n2e, color=z3e, transp=80)
confidence=(security(syminfo.tickerid, 'D', close)-security(syminfo.tickerid, 'D', close[1]))/security(syminfo.tickerid, 'D', close[1])
closelong = n1<n2 and close<n2 and confidence<dt or strategy.openprofit<SL or strategy.openprofit>TP
if (closelong)
    strategy.close("Long")
closeshort = n1>n2 and close>n2 and confidence>dt or strategy.openprofit<SL or strategy.openprofit>TP
if (closeshort)
    strategy.close("Short")
longCondition = n1>n2 and z1>z2 and strategy.opentrades<ot and confidence>dt and close>n1
if (longCondition)
    strategy.entry("Long",strategy.long)
shortCondition = n1<n2 and z1<z2 and strategy.opentrades<ot and confidence<dt and close<n1 
if (shortCondition)
    strategy.entry("Short",strategy.short)