Momentum Strategi Pembukaan dan Penutupan Saluran Harga

Penulis:ChaoZhang, Tanggal: 2023-12-06 16:44:32
Tag:

img

Gambaran umum

Strategi ini didasarkan pada indikator saluran harga. Dengan menetapkan parameter momentum, ia menghitung nilai rata-rata harga tertinggi dan terendah dalam siklus yang berbeda untuk membentuk garis tengah saluran harga, dan menetapkan garis panjang dan pendek berdasarkan ini. Ketika harga menembus garis panjang, itu akan panjang; ketika harga menembus garis pendek, itu akan pendek. Kondisi penutupan adalah bahwa harga regresi ke garis tengah saluran.

Prinsip Strategi

Strategi ini menggunakan indikator saluran harga untuk menghitung nilai rata-rata harga tertinggi dan terendah dalam siklus yang berbeda untuk membentuk garis tengah saluran. Berdasarkan garis tengah, garis panjang dan pendek ditetapkan melalui parameter pergeseran. Secara khusus, rumus perhitungan garis panjang adalah: garis tengah + (parameter garis tengah × garis panjang %); rumus perhitungan garis pendek adalah: garis tengah + (parameter garis tengah × garis pendek%).

Ketika harga lebih rendah dari garis panjang, buka posisi panjang dengan perintah batas; ketika harga lebih tinggi dari garis pendek, buka posisi pendek dengan perintah batas.

Analisis Keuntungan

Strategi ini memiliki keuntungan berikut:

  1. Menggunakan indikator saluran harga dapat secara efektif menangkap tren harga dan tingkat pendukung/resistensi utama.
  2. Pembukaan posisi pada breakout dapat mengurangi kerugian dari breakout palsu.
  3. Metode stop loss secara langsung mengambil garis tengah saluran harga sebagai standar untuk menghindari kerugian yang berlebihan dari stop mengejar.

Analisis Risiko

Strategi ini juga memiliki beberapa risiko:

  1. Pengaturan parameter saluran harga yang tidak benar dapat melewatkan tren aktif atau menghasilkan terlalu banyak pecah palsu.
  2. Metode pembukaan breakout menimbulkan tingkat tertentu dari biaya slippage.
  3. Tidak dapat menghentikan kerugian tepat waktu selama retracement harga yang cepat.

Risiko di atas dapat dikurangi dengan mengoptimalkan parameter, menetapkan perintah stop loss, atau menggabungkan indikator lain untuk penilaian.

Arahan Optimasi

Strategi dapat dioptimalkan dalam aspek berikut:

  1. Mengoptimalkan parameter saluran harga untuk menemukan kombinasi terbaik.
  2. Cobalah metode pembukaan yang berbeda seperti pola candlestick dan sinyal indikator.
  3. Tambahkan pengaturan order stop loss untuk mencegah kerugian dari penurunan harga yang cepat.
  4. Gabungkan volume perdagangan, volatilitas dan indikator lainnya untuk menghindari kebocoran palsu di pasar saham.

Kesimpulan

Ide desain strategi ini berdasarkan indikator saluran harga jelas. Menggunakan breakout untuk membuka posisi dapat secara efektif mengendalikan risiko. Tetapi ada juga ruang optimasi parameter yang besar dan mekanisme stop loss yang perlu ditingkatkan. Secara keseluruhan, strategi ini memiliki nilai praktis tertentu dan layak untuk pengujian dan optimasi lebih lanjut.


/*backtest
start: 2022-11-29 00:00:00
end: 2023-12-05 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=3
strategy(title = "Noro's PCMA Strategy v1.0", shorttitle = "PCMA 1.0", 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")
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")

//Price Channel
h = highest(high, per)
l = lowest(low, per)
c = (h + l) / 2
ll = c + ((c / 100) * longlevel)
sl = c + ((c / 100) * shortlevel)

//Lines
shortcolor = needshort ? red : na
longcolor = needlong ? lime : na
plot(sl, linewidth = 2, color = shortcolor, title = "Short line")
plot(c, linewidth = 2, color = blue, title = "SMA line")
plot(ll, linewidth = 2, color = longcolor, 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 = ll, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
    
if (not na(close[per])) and size == 0 and needshort
    strategy.entry("S", strategy.short, lot, limit = sl, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
    
if (not na(close[per])) and size > 0 
    strategy.entry("Close", strategy.short, 0, limit = c, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
    
if (not na(close[per])) and size < 0 
    strategy.entry("Close", strategy.long, 0, limit = c, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))

if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()

Lebih banyak