Tren Mengikuti Strategi Grid

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

img

Gambaran umum

Strategi ini adalah tren mengikuti strategi grid yang hanya panjang dan tidak pendek, memilih periode waktu ketika tren utama naik. ukuran grid default adalah 1xATR, membangun 1, 2, 3 tingkat grid ke bawah untuk mengejar pesanan, dan grid ke-5 menghentikan kerugian. ketika posisi kosong mencapai grid sebelumnya, seluruh grid bergerak ke atas untuk melacak harga.

Logika Strategi

  1. Gunakan garis EMA untuk menilai arah tren utama, EMA12 lebih besar dari EMA144 berarti tren utama naik
  2. Hanya buka posisi panjang ketika tren utama naik
  3. Ukuran grid default adalah 1xATR, multiplier dapat disesuaikan
  4. Membangun 1, 2, 3 tingkat grid ke bawah untuk melacak harga dan membuka posisi panjang secara terpisah
  5. Atur titik stop loss di grid ke-5
  6. Setelah membuka posisi, tetapkan titik stop loss dan ambil poin profit
  7. Tutup posisi ketika harga melewati titik mengambil keuntungan pada kenaikan
  8. Tutup posisi ketika harga mencapai titik stop loss pada musim gugur
  9. Setelah semua posisi ditutup, jika harga pecah melalui grid terakhir lagi, menghitung kembali lokasi grid dan jumlah untuk melacak ke atas

Strategi ini menggabungkan EMA untuk menentukan arah tren utama dan perdagangan grid untuk melacak harga. Ini dapat memperoleh pengembalian yang lebih besar dalam tren naik. Grid menetapkan beberapa titik harga untuk membuka posisi secara terpisah, yang mengurangi risiko per posisi. Pengaturan stop loss dan take profit mengunci keuntungan dan juga membatasi kerugian maksimum. Setelah semua posisi ditutup, strategi dapat menghitung kembali tingkat tinggi baru grid untuk membuka posisi lagi, memaksimalkan keuntungan.

Analisis Keuntungan

  1. Gunakan EMA untuk menentukan arah tren utama, hindari membuka posisi melawan tren
  2. Perdagangan grid dapat membuka posisi secara terpisah untuk mengurangi risiko posisi tunggal
  3. Stop loss dan mengambil keuntungan mengunci keuntungan, mengendalikan kerugian maksimum
  4. Setelah menutup semua posisi, menghitung ulang grid untuk melanjutkan mengejar dapat memperluas ruang keuntungan

Keuntungan utama adalah menggabungkan perdagangan tren dan perdagangan grid, yang memastikan keakuratan arah tren dan juga mencapai dispersi risiko perdagangan grid.

Analisis Risiko

  1. Penghakiman tren utama mungkin salah, memasuki arah yang salah
  2. Volatilitas samping yang signifikan yang menyebabkan kerugian besar pada jaringan
  3. Stop loss diaktifkan terlalu cepat, menutup semua posisi
  4. Tidak dapat kembali masuk ke titik masuk optimal setelah mundur

Risiko utama adalah penilaian yang salah tentang arah tren utama, yang akan menyebabkan pembukaan posisi melawan tren dan kerugian besar. Juga, jika ada volatilitas sisi tinggi dengan beberapa grid yang terperangkap, kerugian akan diperburuk. Selain itu, penurunan harga yang cepat dapat memicu stop loss dan menutup semua posisi, kehilangan peluang keuntungan berikutnya. Akan sulit untuk kembali memasuki tingkat grid optimal awal setelah pullback.

Keakuratan penilaian tren utama dapat ditingkatkan dengan mengoptimalkan parameter EMA. Mengatur interval grid dan ukuran entri pertama juga dapat mengendalikan kerugian keseluruhan. Posisi stop loss perlu mempertimbangkan frekuensi volatilitas pasar. Juga, pengambilan keuntungan dapat dipertimbangkan untuk posisi parsial daripada menutup semua posisi.

Arahan Optimasi

Strategi ini juga dapat dioptimalkan dalam aspek berikut:

  1. Mengoptimalkan parameter EMA untuk meningkatkan keakuratan penilaian tren utama
  2. Sesuaikan interval dan kuantitas grid untuk mengoptimalkan rasio risiko-manfaat
  3. Memperbaiki logika stop loss dan take profit, misalnya partial take profit, trailing stop loss dll.
  4. Menambahkan lebih banyak pembatasan pada kondisi masuk kembali untuk menghindari masuk kembali dini selama penarikan kembali
  5. Masukkan lebih banyak indikator untuk menentukan waktu masuk yang optimal, misalnya pola candlestick, sensitivitas indikator dll.
  6. Tambahkan deteksi deviasi untuk menghindari kerugian besar dalam kondisi pasar yang tidak normal

Dengan langkah-langkah optimalisasi ini, strategi dapat memperoleh keuntungan yang lebih besar selama tren yang signifikan, sementara juga mengendalikan risiko dan mengurangi kerugian dalam volatilitas sisi normal.

Ringkasan

Strategi ini menggabungkan perdagangan tren dan perdagangan grid secara organik. Ini menggunakan EMA untuk menentukan arah utama dan menggunakan perdagangan grid untuk membuka posisi secara terpisah untuk mengejar tren. Dengan manajemen risiko yang tepat termasuk stop loss, take profit dan mekanisme perhitungan ulang grid, strategi ini dapat menghasilkan keuntungan yang layak selama tren utama, sementara juga mengendalikan risiko. Optimasi lebih lanjut pada parameter dan akurasi penilaian dapat menyebabkan 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 banyak