Membeli Dips - MA200 Strategi yang Optimum

Penulis:ChaoZhang, Tarikh: 2024-01-08 16:54:21
Tag:

img

Ringkasan

Strategi ini menggabungkan pendekatan yang bertentangan (membeli penurunan) dengan logik mengikuti trend (hanya apabila harga di atas MA200). Strategi ini bertujuan untuk mencari masa terbaik untuk membeli penurunan yang paling mungkin menguntungkan. Harga di atas purata bergerak jangka panjang menunjukkan momentum yang meningkatkan kemungkinan mendapat keuntungan daripada membeli aset semasa kelemahan jangka pendek.

Prinsip Strategi

Strategi ini mengira perubahan peratusan keseluruhan harga sepanjang tempoh melihat kembali untuk menentukan sama ada harga berada pada penurunan relatif. Apabila peratusan perubahan keseluruhan di bawah -3%, harga dianggap di penurunan. Di samping itu, strategi ini juga menetapkan purata bergerak mudah 200 hari sebagai penunjuk untuk menilai trend. Isyarat beli hanya dicetuskan apabila harga di atas purata bergerak 200 hari. Dengan menggunakan prinsip pembalikan purata dan pasangan pendek panjang, strategi membeli penurunan semasa trend menaik untuk membuat keuntungan.

Analisis Kelebihan

Strategi ini menggabungkan kelebihan kedua-dua perdagangan trend dan perdagangan kontrarian. Di satu pihak, menggunakan purata bergerak jangka panjang untuk menentukan trend mengelakkan membeli secara membabi buta semasa trend menurun. Di sisi lain, membeli penurunan memberikan peluang kemasukan yang lebih baik semasa pembetulan jangka pendek. Kombinasi ini memastikan kedua-dua keselamatan perdagangan dan kebarangkalian keuntungan yang lebih tinggi. Di samping itu, strategi ini mempunyai ruang pengoptimuman yang besar untuk parameter yang boleh diselaraskan untuk sesuai dengan pasaran yang berbeza, memberikan daya adaptasi yang kuat.

Analisis Risiko

Risiko terbesar adalah bahawa harga mungkin terus menurun selepas isyarat beli mencetuskan, yang membawa kepada kerugian yang diperbesar. Di samping itu, jika pasaran kekal terikat julat untuk masa yang lama dan harga gagal menembusi purata bergerak, strateginya juga akan gagal. Untuk mengurangkan risiko tersebut, tempoh purata bergerak boleh diperpendek dengan sewajarnya dan kriteria pembelian boleh dioptimumkan untuk memastikan margin keselamatan yang mencukupi.

Arahan pengoptimuman

Strategi ini boleh dioptimumkan dalam beberapa aspek: 1) mengoptimumkan tempoh purata bergerak untuk menyesuaikan diri dengan pasaran yang berbeza; 2) mengoptimumkan kriteria beli untuk memastikan margin yang mencukupi; 3) menambah stop loss untuk mengawal kerugian; 4) menggabungkan penunjuk lain untuk menilai trend dan penurunan untuk meningkatkan ketepatan.

Ringkasan

Secara umum, ini adalah strategi biasa yang menggabungkan idea perdagangan trend dan bertentangan. Ia memastikan kedua-dua keselamatan perdagangan dan kebarangkalian kemenangan yang lebih tinggi, dengan nilai praktikal yang kuat. Penambahbaikan lanjut terhadap kestabilan dan kesan perdagangan sebenar dapat dicapai melalui pengoptimuman parameter dan pengoptimuman stop loss.


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

//@version=4
strategy("Buy The Dips - MA200 Optimised", overlay=false)

//Moving average
MAinp = input(defval = 100, title = "MA", type = input.integer, minval = 1, step = 1)
MA=sma(close, MAinp)

//Percent change
inp_lkb = input(1, title='Lookback Period')
 
perc_change(lkb) =>
    overall_change = ((close[0] - close[lkb]) / close[lkb]) * 100

// Call the function    
overall = perc_change(inp_lkb)

// === INPUT BACKTEST RANGE ===
fromMonth = input(defval = 1,    title = "From Month",      type = input.integer, minval = 1, maxval = 12)
fromDay   = input(defval = 1,    title = "From Day",        type = input.integer, minval = 1, maxval = 31)
fromYear  = input(defval = 2020, title = "From Year",       type = input.integer, minval = 1970)
thruMonth = input(defval = 1,    title = "Thru Month",      type = input.integer, minval = 1, maxval = 12)
thruDay   = input(defval = 1,    title = "Thru Day",        type = input.integer, minval = 1, maxval = 31)
thruYear  = input(defval = 2112, title = "Thru Year",       type = input.integer, minval = 1970)

showDate  = input(defval = true, title = "Show Date Range", type = input.bool)

start     = timestamp(fromYear, fromMonth, fromDay, 00, 00)        // backtest start window
finish    = timestamp(thruYear, thruMonth, thruDay, 23, 59)        // backtest finish window
window()  => true       // create function "within window of time"

//Entry/Exit
strategy.entry(id="long", long = true, when = window() and overall<-3 and close > MA) 
strategy.close(id="long", when = window() and overall>1)


bgcolor(color = showDate and window() ? color.gray : na, transp = 90) 
plot(overall, color=color.black, title='Overall Percentage Change', linewidth=3)
band1 = hline(1, "Upper Band", color=#C0C0C0)
band0 = hline(-2, "Lower Band", color=#C0C0C0)
fill(band1, band0, color=#9915FF, transp=90, title="Background")
hline(0, title='Center Line', color=color.orange, linestyle=hline.style_solid, linewidth=2)

Lebih lanjut