Rangka Masa Rangka Hull Moving Average Strategi Beli Jual

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

img

Ringkasan

Strategi ini adalah berdasarkan kepada penunjuk Hull Moving Average, mengira Hull MA pada jangka masa yang berbeza dan membandingkan trend Hull MA merentasi jangka masa untuk mengenal pasti perubahan trend.

Logika Strategi

  1. Parameter input: Tempoh MA Hull Tempoh, kerangka masa HMA2 Resolution2, HMA3 kerangka masa Resolution3

  2. Mengira bar semasas Hull MA nilai HMA

  3. Mengira nilai Hull MA HMA2 pada jangka masa Resolution2

  4. Mengira nilai Hull MA HMA3 pada jangka masa Resolution3

  5. Bandingkan hubungan besar antara HMA, HMA2, HMA3

  6. Menghasilkan isyarat beli apabila HMA>HMA2>HMA3

  7. Menghasilkan isyarat jual apabila HMA

  8. Tampilkan nilai dan isyarat Hull MA pada jangka masa yang berbeza di bahagian kiri atas carta

  9. Gunakan warna untuk membezakan aliran naik dan turun

Analisis Kelebihan

  1. Menggunakan pelbagai kerangka masa boleh menapis pelarian palsu dan mengelakkan perangkap.

  2. Parameter jangka masa yang boleh disesuaikan, dapat disesuaikan dengan tempoh dan turun naik yang berbeza.

  3. Penampilan isyarat masa nyata, operasi intuitif.

  4. Tren MA Hull yang dilihat membantu menentukan trend semasa.

Analisis Risiko

  1. Tetapan parameter yang tidak betul boleh menyebabkan perdagangan berlebihan.

  2. Tempoh masa yang lebih panjang Hull MA mempunyai kesan kelewatan, mungkin terlepas titik perubahan trend.

  3. Mungkin menghasilkan isyarat palsu di sekitar peralihan lembu-bull.

  4. Strategi melarikan diri cenderung untuk terperangkap oleh pelarian palsu.

  5. Komisen dagangan tidak dipertimbangkan yang memberi kesan kepada keuntungan sebenar.

Risiko boleh dikurangkan dengan mengoptimumkan parameter, menggabungkan penunjuk lain untuk penapisan, dan membenarkan kerugian berhenti yang lebih luas.

Arahan pengoptimuman

  1. Mengoptimumkan tempoh Hull MA yang dapat disesuaikan dengan tempoh dan turun naik yang berbeza.

  2. Tambah penunjuk kelantangan untuk mengelakkan gangguan palsu.

  3. Tambah pengayun untuk menentukan kekuatan trend.

  4. Memasukkan model pembelajaran mesin untuk masa beli / jual.

  5. Gabungkan penunjuk sentimen untuk mengesan hype pasaran.

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

  7. Sesuaikan keadaan beli/jual dengan isyarat penunjuk lain.

  8. Tambah saluran harga atau strategi perdagangan berdasarkan gelombang.

Kesimpulan

Strategi ini menggunakan Hull MA pelbagai jangka masa untuk menentukan arah trend dengan membandingkan cerun purata bergerak di seluruh jangka masa dan menghasilkan isyarat pada pembalikan trend. Multi-timeframe Hull MA lebih berkesan dalam menapis pecah palsu daripada MA tunggal. Tetapi strategi ini juga mempunyai batasan dalam penyesuaian parameter, penentuan trend dll. Mengintegrasikan lebih banyak penunjuk, mengoptimumkan parameter, meningkatkan stop loss dapat meningkatkan keuntungan dan mengawal 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 lanjut