Sumber daya yang dimuat... Pemuatan...

Strategi Perdagangan Berbasis Derivatif

Penulis:ChaoZhang, Tanggal: 2024-01-12 11:06:28
Tag:

img

Gambaran umum

Strategi ini menginvestasikan persentase yang sama dari modal berdasarkan memanfaatkan 1st, 2nd, 3rd dan 4th time derivatives dari Hull Moving Average (HMA).

Logika Strategi

Strategi pertama menghitung HMA. Hull Moving Average adalah rata-rata bergerak tertimbang yang dihitung dengan rumus berikut:

hullma = wma(2*wma(src,sm/2)-wma(src,sm),round(sqrt(sm))) 

dimana src adalah harga dan sm adalah parameter input yang mengontrol panjang rata-rata.

Strategi kemudian menghitung kecepatan (derivatif pertama), akselerasi (derivatif kedua), jerk (derivatif ketiga) dan jounce (derivatif keempat). ini dihitung dengan mengambil perbedaan antara HMA dan nilai tertinggalnya dibagi dengan panjang len. misalnya, perhitungan kecepatan adalah:

speed = (hullma-hullma[len])/len

Derivatif lainnya dihitung dengan cara yang sama.

Strategi ini menentukan masuk dan keluar dengan melihat tanda-tanda akselerasi, goyang, dan melompat. Jika ketiga indikator positif, itu akan pergi panjang. Jika ketiga negatif, itu akan pergi pendek.

Selain itu, strategi ini juga akan melacak stop loss untuk mengunci keuntungan. posisi panjang akan memiliki stop loss yang ditetapkan berdasarkan persentase input yang dapat disesuaikan, dan posisi pendek juga.

Analisis Keuntungan

Keuntungan utama dari strategi ini adalah menggunakan beberapa turunan sebagai sinyal masuk dan keluar, yang dapat menyaring beberapa sinyal palsu.

Keuntungan lain adalah bahwa strategi ini sangat fleksibel. Ini memiliki beberapa parameter yang dapat disesuaikan termasuk panjang HMA, panjang berbagai turunan, persentase stop loss dll yang dapat dioptimalkan untuk pasar yang berbeda.

Penggunaan trailing stop yang dapat disesuaikan juga merupakan keuntungan. Ini dapat membantu strategi menangkap lebih banyak keuntungan di pasar tren, sementara keluar secara tepat waktu selama pasar bergolak, membatasi penarikan maksimum.

Analisis Risiko

Risiko utama dari strategi ini adalah penurunan hit rate karena peristiwa mendadak. Jika tidak ada filter yang relevan, peristiwa berita utama dapat menyebabkan beberapa derivatif memberikan sinyal yang salah pada saat yang sama, yang mengarah pada kerugian yang lebih besar. Beberapa filter berita dapat diimplementasikan atau strategi dapat dihentikan untuk beberapa waktu setelah peristiwa ledakan untuk mengurangi risiko ini.

Risiko lain adalah parameter dapat dengan mudah overfit. Panjang HMA, panjang turunan dll semua dapat mempengaruhi hasil. Ini membutuhkan backtesting yang ketat untuk mengevaluasi ketahanan parameter ini di berbagai pasar. Juga persentase stop loss yang tertinggal seharusnya tidak terlalu luas, jika tidak kerugian bisa bola salju.

Arahan Optimasi

Strategi ini dapat dioptimalkan dengan beberapa cara:

  1. Tambahkan filter berdasarkan peristiwa ledakan untuk menghentikan perdagangan untuk beberapa waktu setelah peristiwa berita utama, menghindari titik masuk yang hilang yang menyebabkan kerugian besar

  2. Melakukan pengujian ketahanan parameter di seluruh pasar.Backtest pada produk yang berbeda, periode waktu untuk mengevaluasi stabilitas parameter

  3. Mencoba untuk meningkatkan logika entri. Memperkenalkan model pembelajaran mesin untuk mengidentifikasi tren alih-alih penilaian positif/negatif sederhana

  4. Memperbaiki metodologi stop loss. Gunakan volatilitas atau machine learning stop alih-alih stop trailing persentase sederhana

  5. Logika saat ini bergantung terutama pada berhenti, bisa menambahkan tambahan upside trailing atau target keluar keuntungan

Kesimpulan

Ini adalah tren jangka waktu yang mengikuti strategi yang menggunakan beberapa turunan dari Hull Moving Average sebagai sinyal masuk dan keluar dengan trailing stop untuk mengunci keuntungan. Keuntungan utama termasuk menyaring sinyal palsu menggunakan beberapa turunan, parameter yang dapat disetel fleksibel dll. Risiko yang perlu dicatat termasuk dampak dari peristiwa ledakan dan overfit parameter potensial. Strategi dapat dioptimalkan dengan menambahkan filter, meningkatkan ketahanan parameter, meningkatkan logika masuk / keluar dan sebagainya untuk menjadikannya sistem perdagangan otomatis yang lebih andal.


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy(title="Derivative Based Strategy", shorttitle="DER", currency="USD", calc_on_order_fills=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10, initial_capital=1000)
len = input(1, minval=1, title="Derivatives Length")
sm = input(4, minval=1, title="HMA Length")
longTrailPerc=input(title="Trail Long Loss %", type=float,minval=0.0,step=0.1,defval=25)*0.01
shortTrailPerc=input(title="Trail Short Loss %",type=float,minval=0.0,step=0.1,defval=25)*0.01
longStopPrice=0.0
shortStopPrice=0.0
src = input(ohlc4, title="Source")
hullma = wma(2*wma(src,sm/2)-wma(src,sm),round(sqrt(sm)))
speed = (hullma-hullma[len])/len
accel = (speed-speed[len])/len
jerk = (accel-accel[len])/len
jounce = (jerk-jerk[len])/len
plot(speed, color=green)
plot(accel, color=purple)
plot(jerk, color=red)
plot(jounce, color=blue)
// hline(0, linestyle=solid, color=black)
if accel>0 and jerk>0 and jounce>0// and strategy.opentrades==0
    strategy.entry("openlong", strategy.long)
if accel<0 and jerk<0 and jounce<0// and strategy.opentrades==0
    strategy.entry("openshort",strategy.short)
speed_profit = (strategy.openprofit-strategy.openprofit[1])/len
accel_profit = (speed_profit-speed_profit[1])/len
jerk_profit = (accel_profit-accel_profit[1])/len
longStopPrice:=if(strategy.position_size>0)
    stopValue=ohlc4*(1-longTrailPerc)
    max(stopValue,longStopPrice[1])
else
    0
shortStopPrice:=if(strategy.position_size<0)
    stopValue=ohlc4*(1+shortTrailPerc)
    min(stopValue,shortStopPrice[1])
else
    999999
if(strategy.position_size>0)
    strategy.exit(id="closelong",stop=longStopPrice)
if(strategy.position_size<0)
    strategy.exit(id="closeshort",stop=shortStopPrice)


Lebih banyak