Cross Timeframe Hull Moving Average Strategi Beli Jual

Penulis:ChaoZhang, Tanggal: 2023-11-07 16:54:14
Tag:

img

Gambaran umum

Strategi ini didasarkan pada indikator Hull Moving Average, menghitung Hull MA pada kerangka waktu yang berbeda dan membandingkan tren Hull MA di seluruh kerangka waktu untuk mengidentifikasi perubahan tren.

Logika Strategi

  1. Parameter input: periode Hull MA Periode, kerangka waktu HMA2 Resolution2, kerangka waktu HMA3 Resolution3

  2. Menghitung nilai HMA Hull MA bars saat ini

  3. Menghitung nilai Hull MA HMA2 pada kerangka waktu Resolution2

  4. Menghitung nilai Hull MA HMA3 pada kerangka waktu Resolution3

  5. Bandingkan hubungan magnitudo antara HMA, HMA2, HMA3

  6. Membuat sinyal beli ketika HMA>HMA2>HMA3

  7. Menghasilkan sinyal jual ketika HMA

  8. Tampilkan Hull MA nilai dan sinyal pada kerangka waktu yang berbeda di atas kiri grafik

  9. Gunakan warna untuk membedakan tren naik dan turun

Analisis Keuntungan

  1. Menggunakan beberapa kerangka waktu dapat menyaring kebocoran palsu dan menghindari perangkap.

  2. Parameter kerangka waktu yang dapat disesuaikan, dapat disesuaikan dengan periode dan volatilitas yang berbeda.

  3. Tampilan sinyal real-time, operasi intuitif.

  4. Tren Hull MA yang ditampilkan membantu menentukan tren saat ini.

Analisis Risiko

  1. Pengaturan parameter yang tidak tepat dapat menyebabkan overtrading.

  2. Kerangka waktu yang lebih panjang Hull MA memiliki efek keterlambatan, mungkin melewatkan titik balik tren.

  3. Mungkin menghasilkan sinyal palsu di sekitar transisi bull-bear.

  4. Strategi breakout cenderung terjebak oleh breakout palsu.

  5. Komisi perdagangan tidak dipertimbangkan yang berdampak pada keuntungan aktual.

Risiko dapat dikurangi dengan mengoptimalkan parameter, menggabungkan indikator lain untuk penyaringan, dan memungkinkan stop loss yang lebih luas.

Arahan Optimasi

  1. Mengoptimalkan periode Hull MA yang dapat disesuaikan dengan periode dan volatilitas yang berbeda.

  2. Tambahkan indikator volume untuk menghindari kebocoran palsu.

  3. Tambahkan osilator untuk menentukan kekuatan tren.

  4. Mengintegrasikan model pembelajaran mesin untuk waktu pembelian/penjualan.

  5. Gabungkan indikator sentimen untuk mendeteksi hype pasar.

  6. Sesuaikan strategi stop loss untuk manajemen risiko yang lebih baik.

  7. Sesuaikan kondisi pembelian/penjualan dengan sinyal indikator lainnya.

  8. Tambahkan saluran harga atau strategi perdagangan berbasis gelombang.

Kesimpulan

Strategi ini menggunakan multi-timeframe Hull MA untuk menentukan arah tren dengan membandingkan kemiringan rata-rata bergerak di seluruh jangka waktu dan menghasilkan sinyal pada pembalikan tren. Multi-timeframe Hull MA lebih efektif dalam menyaring breakout palsu daripada MA tunggal. Tetapi strategi ini juga memiliki keterbatasan dalam penyesuaian parameter, penentuan tren dll. Mengintegrasikan lebih banyak indikator, mengoptimalkan parameter, meningkatkan stop loss dapat meningkatkan profitabilitas dan mengendalikan risiko.


/*backtest
start: 2023-10-07 00:00:00
end: 2023-11-06 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//
strategy("wtfBUYorSELLffs",overlay=true,currency="USD",initial_capital=100000,default_qty_type=strategy.percent_of_equity,default_qty_value=100,commission_type=strategy.commission.percent,commission_value=0.1)
Period=input(title="Hull MA Period",type=input.integer,defval=6,minval=1)
Resolution2=input(title="HMA2 Resolution", type=input.resolution,defval="60")
Resolution3=input(title="HMA3 Resolution", type=input.resolution,defval="240")
Price=input(title="Source of Price",type=input.source,defval=open)
xOffset       = input(40, title="Panel offset (X-Axis)")
yOffset       = input(0, title="Panel offset (y-Axis)")
lightgray = #D3D3D3FF
pnlTextColor = color.silver
pnlColor = color.black
HMA = hma(Price,Period)
HMA2 = security(syminfo.tickerid, Resolution2, HMA,barmerge.gaps_off,barmerge.lookahead_off)
HMA3 = security(syminfo.tickerid, Resolution3, HMA,barmerge.gaps_off,barmerge.lookahead_off) 
HUP = HMA > HMA[1]
H1UP = security(syminfo.tickerid, Resolution2, HUP,barmerge.gaps_off,barmerge.lookahead_off)
H2UP = security(syminfo.tickerid, Resolution3, HUP,barmerge.gaps_off,barmerge.lookahead_off) 

int barSize = timeframe.isdaily ? timeframe.multiplier*86400000 : 
           timeframe.isseconds? timeframe.multiplier*1000 :
           timeframe.isminutes? timeframe.multiplier*60000 : (time[0]-time[1])
int   lapos_x = timenow + barSize*xOffset
float lapos_y = highest(20) + yOffset*syminfo.mintick * syminfo.pointvalue
f_draw_infopanel(_x, _y, _line, _text)=>
    _rep_text = ""
    for _l = 0 to _line
        _rep_text := _rep_text + "\n"
    _rep_text := _rep_text + _text
    // var label _la = na
    // label.delete(_la)
//     _la := label.new(
//          x=_x, y=_y, 
//          text=_rep_text, xloc=xloc.bar_time, yloc=yloc.price, 
//          color=pnlColor, style=label.style_labelup, textcolor=pnlTextColor, size=size.normal)
// f_draw_infopanel(lapos_x, lapos_y, 8, "╚═══════════════════════╝")
f_draw_infopanel(lapos_x, lapos_y, 6,  "HMA3 on TF " + Resolution3 + "  = " + tostring(HMA3,"#.####") + (H2UP ? " BUY" : " SELL"))
f_draw_infopanel(lapos_x, lapos_y, 4,  "HMA2 on TF " + Resolution2 + "  = " +  tostring(HMA2,"#.####") + (H1UP ? " BUY" : " SELL"))
f_draw_infopanel(lapos_x, lapos_y, 2,  "HMA1 on TF " + timeframe.period + "  = " + tostring(HMA,"#.####") + (HUP ? " BUY" : " SELL"))
f_draw_infopanel(lapos_x, lapos_y, 0,  "╔═════════ HMA(" + tostring(Period,"#") +") ════════╗")
change_color=HMA>HMA3?color.green:color.red
change_color2=HMA2>HMA3?color.lime:color.yellow
plot1=plot(HMA3,color=change_color2,title="3 Hull MA Line",linewidth=2,transp=75)
plot2=plot(HMA2,color=change_color,title="2 Hull MA Line",linewidth=2,transp=75)
plot3=plot(HMA,color=color.white,title="Hull MA Line",linewidth=2,transp=75)
fill(plot1,plot3,color=change_color,transp=90)
fill(plot2,plot3,color=change_color2,transp=75)
if (H2UP and H1UP and HUP)
    strategy.entry("BUY",strategy.long)
if (not H2UP and not H1UP and not HUP)
    strategy.entry("SELL",strategy.short)

Lebih banyak