Strategi Pembukaan dan Penutupan Saluran Harga Momentum

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

img

Ringkasan

Strategi ini berdasarkan pada penunjuk saluran harga. Dengan menetapkan parameter momentum, ia mengira nilai purata harga tertinggi dan terendah dalam kitaran yang berbeza untuk membentuk garisan tengah saluran harga, dan menetapkan garis panjang dan pendek berdasarkan ini. Apabila harga menembusi garis panjang, ia pergi panjang; apabila harga menembusi garis pendek, ia pergi pendek. Syarat penutupan adalah bahawa harga regresi ke garisan tengah saluran.

Prinsip Strategi

Strategi ini menggunakan penunjuk saluran harga untuk mengira nilai purata harga tertinggi dan terendah dalam kitaran yang berbeza untuk membentuk garis tengah saluran. Berdasarkan garis tengah, garis panjang dan pendek ditetapkan melalui parameter pergeseran. Khususnya, formula pengiraan garis panjang adalah: garis tengah + (parameter garis tengah × garis panjang%); formula pengiraan garis pendek adalah: garis tengah + (parameter garis tengah × garis pendek%).

Apabila harga lebih rendah daripada garis panjang, buka kedudukan panjang dengan pesanan had; apabila harga lebih tinggi daripada baris pendek, buka kedudukan pendek dengan pesanan had. Kaedah stop loss untuk kedudukan panjang dan pendek adalah harga regresi ke saluran pertengahan.

Analisis Kelebihan

Strategi ini mempunyai kelebihan berikut:

  1. Menggunakan penunjuk saluran harga dapat menangkap dengan berkesan trend harga dan tahap sokongan / rintangan utama.
  2. Pembukaan kedudukan pada breakouts boleh mengurangkan kerugian daripada breakouts palsu.
  3. Kaedah stop loss secara langsung mengambil garis tengah saluran harga sebagai standard untuk mengelakkan kerugian yang berlebihan daripada berhenti mengejar.

Analisis Risiko

Strategi ini juga mempunyai beberapa risiko:

  1. Tetapan parameter saluran harga yang tidak betul mungkin terlepas daripada trend aktif atau menghasilkan terlalu banyak pecah palsu.
  2. Kaedah pembukaan pecah melibatkan tahap tertentu kos slippage.
  3. Tidak dapat menghentikan kerugian tepat pada masanya semasa kenaikan harga yang cepat.

Risiko di atas boleh dikurangkan dengan mengoptimumkan parameter, menetapkan perintah stop loss, atau menggabungkan penunjuk lain untuk penilaian.

Arahan pengoptimuman

Strategi ini boleh dioptimumkan dalam aspek berikut:

  1. Mengoptimumkan parameter saluran harga untuk mencari kombinasi terbaik.
  2. Cuba kaedah pembukaan yang berbeza seperti corak candlestick dan isyarat penunjuk.
  3. Tambah tetapan perintah stop loss untuk mengelakkan kerugian daripada penurunan harga yang cepat.
  4. Gabungkan jumlah dagangan, turun naik dan penunjuk lain untuk mengelakkan pecah palsu di pasaran saham.

Kesimpulan

Idea reka bentuk strategi ini berdasarkan penunjuk saluran harga adalah jelas. Menggunakan breakout untuk membuka kedudukan dapat mengawal risiko dengan berkesan. Tetapi terdapat juga ruang pengoptimuman parameter yang besar dan mekanisme stop loss yang perlu ditingkatkan. Secara keseluruhan, strategi ini mempunyai nilai praktikal tertentu dan bernilai pengujian dan pengoptimuman 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 lanjut