Strategi Penembusan Saluran Rata-rata yang Bergerak

Penulis:ChaoZhang, Tanggal: 2023-12-12 17:38:19
Tag:

img

Gambaran umum

Ini adalah strategi penembusan saluran rata-rata bergerak berdasarkan rata-rata bergerak dan saluran rentang.

Logika Strategi

Logika inti dari strategi ini adalah:

  1. Tetapkan garis rata-rata bergerak periode tertentu sebagai garis tengah.

  2. Tentukan garis saluran atas dan bawah dengan mengalikan garis tengah dengan persentase tertentu.

  3. Ketika harga pecah di atas garis atas, pergi pendek. Ketika harga pecah di bawah garis bawah, pergi panjang.

  4. Menetapkan harga order pada baris atas/bawah yang sesuai.

  5. Tutup posisi ketika harga kembali ke garis tengah.

Jadi itu diperdagangkan berdasarkan retakan saluran rata-rata bergerak.

Analisis Keuntungan

Keuntungan dari strategi ini adalah:

  1. Konsep sederhana dan jelas, mudah dipahami dan diimplementasikan.

  2. Parameter yang dapat disesuaikan sesuai dengan kondisi pasar yang berbeda.

  3. Garis tengah dan rentang saluran dapat menyaring kebisingan pasar dan menangkap tren.

  4. Batasi perintah kontrol risiko.

  5. Potong kerugian saat harga kembali ke garis tengah.

Analisis Risiko

Ada juga beberapa risiko:

  1. Pengaturan parameter yang tidak benar dapat menyebabkan perdagangan yang berlebihan/tidak cukup.

  2. Probabilitas tinggi dari kegagalan palsu dan stop loss.

  3. Kegagalan garis tengah dan saluran di bawah perubahan pasar yang besar.

  4. Keluar prematur saat dipaksa untuk menutup di garis tengah.

Solusi:

  1. Mengoptimalkan parameter seperti periode MA dan persentase saluran.

  2. Tambahkan indikator lain seperti volume untuk menghindari kebocoran palsu.

  3. Tingkatkan intervensi manual.

  4. Gunakan periode MA yang lebih lama dan rentang saluran yang lebih luas.

Optimalisasi

Strategi dapat ditingkatkan dari aspek berikut:

  1. Tambahkan metode stop loss seperti trailing stop untuk membatasi kerugian.

  2. Tambahkan indikator penyaringan seperti MACD untuk mengurangi sinyal palsu.

  3. Aktifkan pengoptimalan parameter otomatis.

  4. Tambahkan lebih banyak kriteria posisi terbuka di luar breakout.

  5. Optimalkan parameter MA dan saluran.

Kesimpulan

Sebagai kesimpulan, ini adalah strategi breakout saluran MA yang praktis. Ini memiliki logika sederhana untuk penggunaan yang mudah, sementara rentang saluran dapat menyaring kebisingan. Ini berkinerja baik di pasar tren. Tetapi risiko ada dan parameter bersama dengan filter tambahan perlu dioptimalkan untuk perdagangan aktual. Strategi ini memiliki nilai praktis dan pengembangan tertentu.


/*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()

Lebih banyak