Membeli Dips - MA200 Optimized Strategi

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

img

Gambaran umum

Strategi ini menggabungkan pendekatan kontrarian (membeli penurunan) dengan logika mengikuti tren (hanya ketika harga di atas MA200). Strategi ini bertujuan untuk menemukan waktu terbaik untuk membeli penurunan yang paling mungkin menguntungkan. Harga di atas rata-rata bergerak jangka panjang menunjukkan momentum yang meningkatkan kemungkinan keuntungan dari membeli aset selama kelemahan jangka pendek.

Prinsip Strategi

Strategi ini menghitung perubahan persentase keseluruhan harga selama periode lookback untuk menentukan apakah harga berada pada penurunan relatif. Ketika persentase perubahan keseluruhan di bawah -3%, harga dianggap di penurunan. Selain itu, strategi juga menetapkan rata-rata bergerak sederhana 200 hari sebagai indikator untuk menilai tren. Sinyal beli hanya dipicu ketika harga berada di atas rata-rata bergerak 200 hari. Dengan memanfaatkan prinsip reversi rata-rata dan pasangan panjang-pendek, strategi membeli penurunan selama tren naik untuk menghasilkan keuntungan.

Analisis Keuntungan

Strategi ini menggabungkan keuntungan dari kedua perdagangan tren dan perdagangan kontrarian. Di satu sisi, menggunakan rata-rata bergerak jangka panjang untuk menentukan tren menghindari membeli secara membabi buta selama tren menurun. Di sisi lain, membeli penurunan memberikan peluang masuk yang lebih baik selama koreksi jangka pendek. Kombinasi ini memastikan keamanan perdagangan dan probabilitas keuntungan yang lebih tinggi. Selain itu, strategi ini memiliki ruang optimasi yang besar untuk parameter yang dapat disesuaikan agar sesuai dengan pasar yang berbeda, memberinya kemampuan beradaptasi yang kuat.

Analisis Risiko

Risiko terbesar adalah bahwa harga dapat terus menurun setelah sinyal beli dipicu, yang mengarah pada kerugian yang diperbesar. Selain itu, jika pasar tetap terikat rentang untuk waktu yang lama dan harga gagal untuk menembus rata-rata bergerak, strategi juga akan gagal. Untuk mengurangi risiko tersebut, periode rata-rata bergerak dapat diperpendek sesuai dan kriteria pembelian dapat dioptimalkan untuk memastikan margin keamanan yang cukup.

Arahan Optimasi

Strategi dapat dioptimalkan dalam beberapa aspek: 1) mengoptimalkan periode rata-rata bergerak untuk beradaptasi dengan pasar yang berbeda; 2) mengoptimalkan kriteria pembelian untuk memastikan margin yang cukup; 3) menambahkan stop loss untuk mengendalikan kerugian; 4) menggabungkan indikator lain untuk menilai tren dan penurunan untuk meningkatkan akurasi.

Ringkasan

Secara umum, ini adalah strategi khas yang menggabungkan ide perdagangan trend dan contrarian. Ini memastikan keamanan perdagangan dan probabilitas menang yang lebih tinggi, dengan nilai praktis yang kuat. Peningkatan lebih lanjut pada stabilitas dan efek perdagangan nyata dapat dicapai melalui optimasi parameter dan optimasi 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 banyak