
Strategi ini adalah strategi breakout based on moving averages. Strategi ini melakukan perdagangan berdasarkan pada pergerakan rata-rata dan tren naik dan turun yang ditetapkan dalam periode tertentu.
Prinsip-prinsip inti dari strategi ini adalah:
Tentukan rata-rata bergerak periode tertentu sebagai sumbu tengah.
Setel kisaran interval di atas dan di bawah sumbu tengah, kisaran interval diperoleh dengan mengalikan sumbu tengah dengan persentase tertentu. Garis lintasan atas adalah sumbu tengah dengan ((100% + setel persentase), dan garis lintasan bawah adalah sumbu tengah dengan ((100% - setel persentase))
Ketika harga naik dan menerobos garis atas, lakukan shorting; ketika harga turun dan menerobos garis bawah, lakukan over.
Harga pesanan ditetapkan sebagai harga garis atas dan bawah yang sesuai.
Ketika harga kembali ke sumbu tengah, posisi kosong akan keluar.
Dengan cara ini, strategi perdagangan dilakukan dengan menangkap harga yang terobosan melalui rata-rata bergerak dan kisaran intervalnya.
Strategi ini memiliki keuntungan sebagai berikut:
Konsepnya sederhana dan jelas, mudah dipahami dan diterapkan.
Dapat disesuaikan dengan parameter untuk menyesuaikan dengan kondisi pasar yang berbeda.
Garis tengah dan kisaran interval dapat secara efektif menyaring kebisingan pasar dan menangkap tren.
Mengatur risiko dengan melakukan pemesanan dengan harga terbatas.
Kembali ke sumbu tengah, stop loss untuk menghindari kerugian yang berlebihan.
Strategi ini juga memiliki beberapa risiko:
Pengaturan parameter interval yang tidak tepat dapat menyebabkan transaksi yang sering atau tidak cukup.
Penembusan kemungkinan besar akan terjadi penembusan palsu, dan kemungkinan akan terjadi kerusakan.
Garis tengah dan jarak tidak berfungsi saat situasi berubah-ubah.
Pembagian tim ini akan dihentikan secara paksa pada saat kembali ke garis tengah, dan mungkin akan terjadi kekalahan awal.
Solusi yang sesuai:
Parameter optimasi, memilih periode rata-rata bergerak yang sesuai dan persentase interval.
Dalam kombinasi dengan indikator lainnya, hindari penembusan palsu.
Meningkatkan intervensi manusia.
Periode rata-rata bergerak diatur lebih lama, dan intervalnya diperbesar sesuai.
Strategi ini dapat dioptimalkan dari arah berikut:
Menambahkan kondisi stop loss, seperti melacak stop loss, dan menghindari kerugian berlebihan.
Menambahkan filter indikator, seperti MACD, KD, dan lain-lain, untuk mengurangi false breakout.
Menambahkan fungsi optimasi parameter otomatis, sehingga parameter dapat disesuaikan secara real-time dengan perubahan pasar.
Meningkatkan kondisi untuk membuka posisi, menghindari hanya mengandalkan penembusan.
Optimalkan pengaturan parameter rata-rata bergerak dan interval.
Strategi ini secara keseluruhan merupakan strategi yang cukup praktis untuk menembus kisaran rata-rata bergerak. Konsepnya sederhana, mudah dipahami dan diimplementasikan, dengan filter kebisingan dalam kisaran kisaran, lebih efektif di pasar dengan tren yang lebih jelas. Namun ada juga beberapa risiko, perlu diperhatikan pengoptimalan parameter dan penggunaan dalam kombinasi dengan indikator lain.
/*backtest
start: 2023-01-01 00:00:00
end: 2023-08-15 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//Noro
//2018
//@version=3
strategy(title = "Robot WhiteBox ShiftMA", shorttitle = "Robot WhiteBox ShiftMA", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)
//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot, %")
per = input(3, title = "Length")
src = input(ohlc4, title = "Source")
shortlevel = input(10.0, title = "Short line (red)")
longlevel = input(-5.0, title = "Long line (lime)")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")
//SMAs
sma = sma(src, per)
shortline = sma * ((100 + shortlevel) / 100)
longline = sma * ((100 + longlevel) / 100)
plot(shortline, linewidth = 2, color = red, title = "Short line")
plot(sma, linewidth = 2, color = blue, title = "SMA line")
plot(longline, linewidth = 2, color = lime, title = "Long line")
//Trading
size = strategy.position_size
lot = 0.0
lot := size == 0 ? strategy.equity / close * capital / 100 : lot[1]
if (not na(close[per])) and size == 0 and needlong
strategy.entry("L", strategy.long, lot, limit = longline)
if (not na(close[per])) and size == 0 and needshort
strategy.entry("S", strategy.short, lot, limit = shortline)
if (not na(close[per])) and size > 0
strategy.entry("Close", strategy.short, 0, limit = sma)
if (not na(close[per])) and size < 0
strategy.entry("Close", strategy.long, 0, limit = sma)
if time > timestamp(toyear, tomonth, today, 23, 59)
strategy.close_all()