Strategi Kemasukan dan Keluar Saluran Harga Momentum


Tarikh penciptaan: 2023-12-06 16:44:32 Akhirnya diubah suai: 2023-12-06 16:44:32
Salin: 1 Bilangan klik: 613
1
fokus pada
1621
Pengikut

Strategi Kemasukan dan Keluar Saluran Harga Momentum

Gambaran keseluruhan

Strategi ini berdasarkan pada indikator saluran harga, menetapkan parameter momentum, membentuk garis tengah saluran harga dengan mengira nilai purata harga tertinggi dan terendah untuk kitaran yang berbeza, dan menetapkan garis panjang dan pendek sebagai asas. Apabila harga menembusi garis panjang, lakukan lebih banyak; apabila harga menembusi garis pendek, lakukan kosong.

Prinsip Strategi

Strategi ini menggunakan indikator saluran harga untuk mengira purata harga tertinggi dan terendah dalam tempoh yang berbeza, membentuk garis tengah saluran harga. Dengan garis tengah sebagai asas, garis panjang dan garis pendek ditetapkan melalui parameter pergeseran. Secara khusus, formula untuk mengira garis panjang adalah: garis tengah + ((( garis tengah × parameter garis panjang%); formula untuk mengira garis pendek adalah: garis tengah + ((( garis tengah × parameter garis pendek%).

Apabila harga lebih rendah daripada garis panjang, gunakan satu-satunya harga terhad untuk membuat banyak pesanan; apabila harga lebih tinggi daripada garis pendek, gunakan satu-satunya harga terhad untuk membuka tiket kosong.

Analisis kelebihan

Strategi ini mempunyai kelebihan berikut:

  1. Menggunakan indikator saluran harga, anda dapat menangkap trend harga dan tahap rintangan sokongan utama dengan berkesan.
  2. Dengan menggunakan pencatatan penembusan, anda boleh mengurangkan kerugian akibat penembusan palsu.
  3. Hentikan kerosakan secara langsung dengan garis tengah saluran harga sebagai standard, untuk mengelakkan kerugian yang berlebihan yang disebabkan oleh hentikan harga.

Analisis risiko

Strategi ini mempunyai beberapa risiko:

  1. Parameter terowong harga yang tidak betul boleh menyebabkan pergerakan positif atau terlalu banyak pergerakan palsu.
  2. Ia adalah satu cara untuk menembusi pasaran saham.
  3. Dalam tempoh ini, harga tidak dapat dihentikan dalam masa yang tepat.

Risiko boleh dikurangkan dengan mengoptimumkan parameter, menetapkan stop loss, atau menggabungkan penilaian indikator lain.

Arah pengoptimuman

Strategi ini boleh dioptimumkan dalam beberapa aspek:

  1. Parameter untuk mengoptimumkan saluran harga, mencari kombinasi terbaik.
  2. Cuba dengan pelbagai cara untuk membuka kedudukan, seperti bentuk K, isyarat kosong, dan sebagainya.
  3. Tambah seting stop loss untuk mengelakkan kerugian yang disebabkan oleh penurunan harga.
  4. Menggabungkan jumlah transaksi, kadar turun naik dan lain-lain untuk mengelakkan pecah palsu di pasaran saham.

ringkaskan

Strategi ini adalah berdasarkan kepada reka bentuk indikator saluran harga yang jelas, menggunakan penembusan membuka kedudukan boleh mengawal risiko dengan berkesan. Tetapi juga terdapat ruang untuk pengoptimuman parameter yang lebih besar, mekanisme hentikan kerosakan masih perlu disempurnakan dan sebagainya. Secara keseluruhan, strategi ini mempunyai nilai praktikal yang tertentu, layak untuk diuji dan dioptimumkan lebih lanjut.

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