Trend Mengikut Strategi Grid

Penulis:ChaoZhang, Tarikh: 2023-12-08 12:05:17
Tag:

img

Ringkasan

Strategi ini adalah trend yang mengikuti strategi grid yang hanya panjang dan tidak pendek, memilih tempoh masa apabila trend utama naik. Saiz grid lalai adalah 1xATR, membina 1, 2, 3 tahap grid ke bawah untuk mengejar pesanan, dan grid ke-5 menghentikan kerugian. Apabila kedudukan kosong mencapai grid sebelumnya, seluruh grid bergerak ke atas untuk mengesan harga.

Logika Strategi

  1. Gunakan garis EMA untuk menilai arah trend utama, EMA12 lebih besar daripada EMA144 bermakna trend utama adalah ke atas
  2. Hanya buka kedudukan panjang apabila trend utama naik
  3. Saiz grid lalai adalah 1xATR, pengganda boleh diselaraskan
  4. Membina 1, 2, 3 tahap grid ke bawah untuk mengesan harga dan membuka kedudukan panjang secara berasingan
  5. Tetapkan titik stop loss di grid ke-5
  6. Selepas membuka kedudukan, menetapkan titik stop loss dan mengambil mata keuntungan
  7. Tutup kedudukan apabila harga memecahkan titik mengambil keuntungan pada kenaikan
  8. Tutup kedudukan apabila harga mencapai titik stop loss pada musim gugur
  9. Selepas semua kedudukan ditutup, jika harga pecah melalui grid terakhir lagi, mengira semula lokasi grid dan kuantiti untuk mengesan ke atas

Strategi ini menggabungkan EMA untuk menentukan arah trend utama dan perdagangan grid untuk mengesan harga. Ia boleh memperoleh pulangan yang lebih besar dalam trend menaik. Grid menetapkan beberapa titik harga untuk membuka kedudukan secara berasingan, yang mengurangkan risiko setiap kedudukan. Tetapan stop loss dan mengambil keuntungan mengunci keuntungan dan juga mengehadkan kerugian maksimum. Selepas semua kedudukan ditutup, strategi dapat mengira semula tahap tinggi baru grid untuk membuka kedudukan lagi, memaksimumkan keuntungan.

Analisis Kelebihan

  1. Gunakan EMA untuk menentukan arah trend utama, elakkan membuka kedudukan terhadap trend
  2. Perdagangan grid boleh membuka kedudukan secara berasingan untuk mengurangkan risiko kedudukan tunggal
  3. Hentikan kerugian dan ambil keuntungan mengunci keuntungan, mengawal kerugian maksimum
  4. Selepas menutup semua kedudukan, mengira semula grid untuk terus mengejar boleh meluaskan ruang keuntungan

Kelebihan utama adalah menggabungkan perdagangan trend dan perdagangan grid, yang memastikan ketepatan arah trend dan juga mencapai penyebaran risiko perdagangan grid.

Analisis Risiko

  1. Penghakiman tren utama mungkin salah, memasuki arah yang salah
  2. Volatiliti sampingan yang ketara yang menyebabkan kerugian besar dalam grid
  3. Stop loss diaktifkan terlalu cepat, menutup semua kedudukan
  4. Tidak dapat memasuki semula titik kemasukan optimum selepas menarik balik

Risiko utama adalah pertimbangan yang salah mengenai arah trend utama, yang akan membawa kepada pembukaan kedudukan terhadap trend dan kerugian besar. Juga, jika terdapat turun naik sisi tinggi dengan pelbagai grid yang terperangkap, kerugian akan diperburuk. Di samping itu, penurunan harga yang cepat boleh mencetuskan stop loss dan menutup semua kedudukan, kehilangan peluang keuntungan berikutnya. Ia akan menjadi sukar untuk memasuki semula tahap grid optimum awal selepas penarikan balik.

Keakuratan penghakiman trend utama dapat ditingkatkan dengan mengoptimumkan parameter EMA. Penyesuaian selang grid dan saiz entri pertama juga dapat mengawal kerugian keseluruhan. Kedudukan stop loss perlu mempertimbangkan kekerapan turun naik pasaran. Juga, mengambil keuntungan boleh dipertimbangkan untuk kedudukan separa dan bukannya menutup semua kedudukan.

Arahan pengoptimuman

Strategi ini juga boleh dioptimumkan dalam aspek berikut:

  1. Mengoptimumkan parameter EMA untuk meningkatkan ketepatan penilaian trend utama
  2. Sesuaikan selang grid dan kuantiti untuk mengoptimumkan nisbah risiko-balasan
  3. Meningkatkan logik stop loss dan mengambil keuntungan, contohnya mengambil keuntungan separa, kehilangan stop trailing dll
  4. Tambah lebih banyak sekatan pada syarat kemasukan semula untuk mengelakkan kemasukan semula awal semasa penarikan balik
  5. Masukkan lebih banyak penunjuk untuk menentukan masa kemasukan yang optimum, contohnya corak candlestick, kepekaan penunjuk dll.
  6. Tambah pengesanan yang luar biasa untuk mengelakkan kerugian besar dalam keadaan pasaran yang tidak normal

Dengan langkah-langkah pengoptimuman ini, strategi boleh memperoleh keuntungan yang lebih besar semasa trend yang signifikan, sambil juga mengawal risiko dan mengurangkan kerugian dalam turun naik sampingan biasa.

Ringkasan

Strategi ini menggabungkan perdagangan trend dan perdagangan grid secara organik. Ia menggunakan EMA untuk menentukan arah utama dan menggunakan perdagangan grid untuk membuka kedudukan secara berasingan untuk mengejar trend. Dengan pengurusan risiko yang betul termasuk mekanisme stop loss, mengambil keuntungan dan pengiraan semula grid, strategi ini dapat menghasilkan keuntungan yang baik semasa trend utama, sambil juga mengawal risiko. Pengoptimuman lanjut pada parameter dan ketepatan penghakiman boleh membawa kepada keuntungan yang lebih tinggi.


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

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © zxcvbnm3260

//@version=5
strategy("grid strategy long", overlay=true)


// 版本更新记录:
// v1.0 2021/11/09 只做多、不做空,选择大趋势向上的时间段。网格大小默认为1倍ATR,往下1、2、3个网格吃单,第5个网格止损。空仓时到达往上一个网格则网格整体抬升。(Only go long, not short, choose a time period when the general trend is up. The default grid size is 1x ATR, the next one, two, and three grids will take orders, and the fifth grid will stop loss. When the empty position reaches the upper grid, the grid as a whole rises.)


X_ATR = input.float(title='网格大小是多少倍ATR?', defval = 1)


// 1.基础变量
ema169 = ta.ema(close, 169)
ema144 = ta.ema(close, 144)
ema12 = ta.ema(close, 12)

ema576 = ta.ema(close, 576)
ema676 = ta.ema(close, 676)

plot(ema169, color=color.new(color.orange, 0), linewidth=2)
// plot(ema144, color=color.orange)
plot(ema12,  color=color.blue)
// plot(ema676, color=color.orange, linewidth=1)

mtr = math.max(high - low, math.abs(close[1] - high), math.abs(close[1] - low))
atr = ta.ema(mtr, 30)

is_0930 = hour(time, 'GMT-4') == 9  and minute(time, 'GMT-4') == 30
is_1500 = hour(time, 'GMT-4') == 15 and minute(time, 'GMT-4') == 00
is_1530 = hour(time, 'GMT-4') == 15 and minute(time, 'GMT-4') == 30

is_yangxian = close>open
is_yinxian = close<open

// 2.基本趋势标记

big_trend  = ema12 >= ema169 ? 1 : 0
big_trend2 = ema12 <= ema169 ? 1 : 0

// 背景的变色处理:
bgcolor(big_trend == 1 ? color.new(color.green, 90) : color.new(color.red, 90) )

// 3.网格点位初始化

grid_size = atr * X_ATR // 网格大小
        
price_entry1 = open - grid_size*1
price_entry2 = open - grid_size*2
price_entry3 = open - grid_size*3
price_stop_loss = open - grid_size*5

price_exit1 = price_entry1 + grid_size*1
price_exit2 = price_entry2 + grid_size*1
price_exit3 = price_entry3 + grid_size*1

qty1 = int(1000/price_entry1)
qty2 = int(1000/price_entry2)
qty3 = int(1000/price_entry3)


// 标出各种点位
slm_lines_time(time, price_entry1, price_entry2, price_entry3, price_stop_loss, price_exit1)=>
    time2 = time + 1000*3600*24*5
    line.new(time, price_stop_loss, time2, price_stop_loss, color=color.red, xloc = xloc.bar_time, width=2)  // 止损位
    line.new(time, price_entry1, time2, price_entry1, color=color.green, xloc = xloc.bar_time)  // 
    line.new(time, price_entry2, time2, price_entry2, color=color.green, xloc = xloc.bar_time)  // 
    line.new(time, price_entry3, time2, price_entry3, color=color.green, xloc = xloc.bar_time)  // 
    line.new(time, price_exit1,  time2, price_exit1,  color=color.green, xloc = xloc.bar_time, width=2)  // 

slm_lines(time, price_entry1, price_entry2, price_entry3, price_stop_loss, price_exit1)=>
    line.new(bar_index, price_stop_loss, bar_index[5], price_stop_loss, color=color.red, xloc = xloc.bar_index, width=2)  // 止损位
    line.new(bar_index, price_entry1, bar_index[5], price_entry1, color=color.green, xloc = xloc.bar_index)  // 
    line.new(bar_index, price_entry2, bar_index[5], price_entry2, color=color.green, xloc = xloc.bar_index)  // 
    line.new(bar_index, price_entry3, bar_index[5], price_entry3, color=color.green, xloc = xloc.bar_index)  // 
    line.new(bar_index, price_exit1,  bar_index[5], price_exit1,  color=color.green, xloc = xloc.bar_index, width=2)  // 


// 4.网格点位更新和下单

is_entry0 = big_trend==1 and year>=2020

var is_entry = false

// 未进场时:
if is_entry0 and not is_entry
    is_entry := true
    
    grid_size := atr * X_ATR // 网格大小
    
    price_entry1 := close - grid_size*1
    price_entry2 := close - grid_size*2
    price_entry3 := close - grid_size*3
    price_stop_loss := close - grid_size*5
    
    price_exit1 := price_entry1 + grid_size*1
    price_exit2 := price_entry2 + grid_size*1
    price_exit3 := price_entry3 + grid_size*1
    
    qty1 := int(1000/price_entry1)
    qty2 := int(1000/price_entry2)
    qty3 := int(1000/price_entry3)
    
    // slm_lines(time, price_entry1, price_entry2, price_entry3, price_stop_loss, price_exit1)
    
    strategy.entry("open1", strategy.long, qty1, limit = price_entry1)
    strategy.entry("open2", strategy.long, qty2, limit = price_entry2)
    strategy.entry("open3", strategy.long, qty3, limit = price_entry3)
    
    strategy.exit("close1", qty = qty1, limit = price_exit1, stop = price_stop_loss)
    strategy.exit("close2", qty = qty2, limit = price_exit2, stop = price_stop_loss)
    strategy.exit("close3", qty = qty3, limit = price_exit3, stop = price_stop_loss)

// 已进场的各类情况

// 1.止损
if is_entry and close <= price_stop_loss
    strategy.close_all()
    is_entry := false

// 2.网格抬升
if is_entry and close >= price_exit1
    is_entry := false
        




Lebih lanjut