Strategi Perdagangan Kuantitatif Berdasarkan Indikator Vortex yang Ditingkatkan

Penulis:ChaoZhang, Tanggal: 2023-11-14 14:40:54
Tag:

img

Gambaran umum

Strategi ini adalah versi yang ditingkatkan dari strategi Indikator Vortex. Berdasarkan Indikator Vortex asli, ia menggabungkan beberapa fitur baru, termasuk memicu perdagangan berdasarkan ambang, meratakan garis vortex dengan EMA, menambahkan stop loss dan mengambil keuntungan, menerapkan strategi hanya panjang, hanya pendek atau panjang / pendek, dll. Ini cocok untuk investor yang ingin menerapkan Indikator Vortex yang ditingkatkan dalam perdagangan kuantitatif.

Prinsip-prinsip

Indikator inti dari strategi ini adalah Indikator Pusaran yang ditingkatkan. Indikator Pusaran tradisional membentuk garis pusaran positif dan negatif dengan menghitung jumlah mutlak fluktuasi harga. Ketika garis positif melintasi di atas garis negatif, itu mengirim sinyal beli. Ketika garis negatif melintasi di bawah garis positif, itu mengirim sinyal jual.

Strategi ini membuat upgrade berikut untuk Indikator Vortex tradisional:

  1. Sebagai gantinya hanya mengandalkan garis silang, ini memperkenalkan konsep ambang. Perdagangan hanya dipicu ketika spread antara garis positif dan negatif melebihi ambang yang telah ditetapkan sebelumnya. Ini membantu menyaring penyeberangan kecil dan tidak signifikan.

  2. Garis pusaran dihaluskan dengan EMA untuk mengurangi ketegangan kurva.

  3. Fungsi Stop Loss dan Take Profit ditambahkan. rasio Loss/Profit dapat diatur sebelumnya untuk pengendalian risiko yang lebih baik.

  4. Pedagang dapat memilih antara strategi hanya panjang, hanya pendek atau panjang/pendek untuk memenuhi kebutuhan yang berbeda.

Dengan perbaikan ini, strategi dapat mendeteksi tren dengan lebih handal dan berkinerja baik dalam backtest.

Analisis Keuntungan

  1. Indikator Vortex yang ditingkatkan menyaring sinyal yang tidak valid dan menghindari pemutusan palsu.

  2. Menggunakan ambang untuk sinyal alih-alih silang sederhana dapat lebih dapat diandalkan mendeteksi titik pembalikan tren.

  3. Fitur stop loss/take profit memungkinkan pra-penetapan rasio profit/loss untuk mengendalikan risiko untuk setiap perdagangan, selaras dengan prinsip perdagangan rasional.

  4. Memilih antara hanya panjang, hanya pendek atau panjang/pendek memberikan fleksibilitas untuk beradaptasi dengan tahap pasar yang berbeda dan memenuhi kebutuhan pedagang yang berbeda.

  5. Strategi ini memiliki parameter yang dirancang dengan baik dan hasil backtest yang baik, memberikan nilai praktis.

Analisis Risiko

  1. Strategi ini bekerja terutama untuk pasar tren. Kinerja dapat menderita selama pasar yang terikat kisaran.

  2. Garis pusaran secara inheren sensitif terhadap fluktuasi harga. pengaturan yang tidak benar dapat menyebabkan over-dagang.

  3. Jika ambang ditetapkan terlalu tinggi, mungkin gagal perdagangan. Jika diatur terlalu rendah, mungkin menghasilkan sinyal palsu. pengujian ekstensif diperlukan untuk menemukan tingkat yang optimal.

  4. Stop loss dapat diambil selama peristiwa black swan. Pedagang harus waspada terhadap risiko ini.

Arahan Optimasi

  1. Pertimbangkan untuk menggabungkan dengan indikator lain untuk konfirmasi sinyal dan penilaian yang lebih komprehensif.

  2. Uji sensitivitas parameter di berbagai saham dan optimalkan pengaturan.

  3. Penelitian teknik stop loss adaptif untuk menyesuaikan stop sepanjang tren utama.

  4. Memperkenalkan pembelajaran mesin dll untuk mengoptimalkan parameter secara otomatis.

  5. Menjelajahi metode indeksasi berdasarkan strategi ini untuk memperluas kapasitas.

Kesimpulan

Strategi ini membuat beberapa peningkatan terhadap Indikator Vortex tradisional dan membentuk sistem perdagangan kuantitatif yang relatif matang dan dapat diandalkan. Menggabungkan penyaringan tren dan kontrol risiko, ini menghindari risiko overfit dari perdagangan yang tersebar dan memanfaatkan kemampuan penangkapan tren dari indikator itu sendiri. Dengan optimasi parameter lebih lanjut dan teknik kombinasi, strategi dapat dibuat lebih stabil dan responsif. Secara keseluruhan, ini memiliki nilai praktis sebagai versi yang ditingkatkan dari strategi Indikator Vortex.


/*backtest
start: 2023-10-14 00:00:00
end: 2023-11-13 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// [Guz] Custom Vortex
// Custom version of the Vortex indicators that adds many features:
// -Triggers trades after a threshold is reached instead of the normal vortex lines cross (once the difference between the 2 lines is important enough)
// -Smooths the Vortex lines with an EMA
// -Adds Take Profit and Stop Loss selection
// -Adds the possibility to go Long only, Short only or both of them
// ! notice that it uses 10% position size and 0.04% trade fee, found on some crypto exchanges futures contracts
// Allows testing leverage with position size moddification (values above 100%, to be done with caution)
// Not an investment advice 

//@version=4
strategy(title="%-[Guz] Vortex Indicator Custom", shorttitle="%-[Guz] Vortex Indicator Custom", overlay=true)

period_ = input(300, title="Length", minval=2)
VMP = sum( abs( high - low[1]), period_ )
VMM = sum( abs( low - high[1]), period_ )
STR = sum( atr(1), period_ )
ema_len = input(title="EMA Length", defval=7)
tresh= input(title="Threshold", defval=16.2, step=0.1)
VIP = ema(VMP / STR,ema_len)
VIM = ema(VMM / STR,ema_len)
//plot(VIP, title="VI +", color=#2962FF)
//plot(VIM, title="VI -", color=#E91E63)

condition_long = crossover(VIP-VIM, tresh/100)
condition_close = cross(VIP-VIM,0)
condition_short = crossunder(VIP-VIM, -tresh/100)

is_short=input(true,title="Do Short?")
is_long=input(true,title="Do Long?")


if (condition_long and is_long)
    strategy.entry("VortexLE", strategy.long, comment="Long Algo")
if (condition_short and is_short)
	strategy.entry("VortexSE", strategy.short, comment="Short Algo")
if (condition_close)
    strategy.close_all()

//plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)


stop_loss_long_percent = input(2.5, title="Stop Loss Long", minval=0.1, step=0.1)
stop_loss_long = (1-stop_loss_long_percent/100)*strategy.position_avg_price

take_profit_long_percent = input(1.5, title="Take Profit Long", minval=0.1, step=0.1)
take_profit_long = (1+take_profit_long_percent/100)*strategy.position_avg_price


stop_loss_short_percent = input(2.5,title="Stop Loss Short", minval=0.1, step=0.1) 
stop_loss_short = (1+stop_loss_short_percent/100)*strategy.position_avg_price

take_profit_short_percent = input(1.7,title="Take Profit Short", minval=0.1, step=0.1)
take_profit_short = (1-take_profit_short_percent/100)*strategy.position_avg_price

strategy.exit("TP-SL Long", "VortexLE",  limit = take_profit_long , stop = stop_loss_long) //, trail_price = trail_price_long , trail_offset = trail_offset_long) //, trail_offset=tsl_offset_tick, trail_price=tsl_offset_tick) 
strategy.exit("TP-SL Short", "VortexSE",  limit = take_profit_short , stop = stop_loss_short)  
 


Lebih banyak