Xu hướng theo chiến lược lưới điện

Tác giả:ChaoZhang, Ngày: 2023-12-08 12:05:17
Tags:

img

Tổng quan

Chiến lược này là một xu hướng theo chiến lược lưới chỉ đi dài và không đi ngắn, chọn các khoảng thời gian khi xu hướng chính tăng. Kích thước lưới mặc định là 1xATR, xây dựng 1, 2, 3 mức lưới xuống để theo đuổi lệnh, và lưới thứ 5 dừng lỗ. Khi vị trí trống đạt đến lưới trước đó, toàn bộ lưới di chuyển lên để theo dõi giá.

Chiến lược logic

  1. Sử dụng đường EMA để đánh giá hướng xu hướng chính, EMA12 lớn hơn EMA144 có nghĩa là xu hướng chính là lên
  2. Chỉ mở các vị trí mua khi xu hướng chính tăng
  3. Kích thước lưới mặc định là 1xATR, nhân có thể được điều chỉnh
  4. Xây dựng 1, 2, 3 mức lưới xuống để theo dõi giá và mở các vị trí dài riêng biệt
  5. Thiết lập điểm dừng mất mát tại lưới 5
  6. Sau khi mở các vị trí, đặt điểm dừng lỗ và lấy điểm lợi nhuận
  7. Đóng các vị trí khi giá vượt qua điểm lấy lợi nhuận khi tăng
  8. Đóng các vị trí khi giá đạt điểm dừng lỗ vào mùa thu
  9. Sau khi tất cả các vị trí được đóng, nếu giá phá vỡ qua lưới cuối cùng một lần nữa, tính toán lại vị trí lưới và số lượng để theo dõi lên

Chiến lược này kết hợp EMA để xác định hướng xu hướng chính và giao dịch lưới để theo dõi giá. Nó có thể đạt được lợi nhuận cao hơn trong xu hướng tăng. Mạng lưới đặt nhiều điểm giá để mở các vị trí riêng biệt, làm giảm rủi ro cho mỗi vị trí.

Phân tích lợi thế

  1. Sử dụng EMA để xác định hướng xu hướng chính, tránh mở các vị trí chống lại xu hướng
  2. Giao dịch lưới có thể mở các vị trí riêng biệt để giảm rủi ro vị trí duy nhất
  3. Dừng lỗ và lấy lợi nhuận khóa trong lợi nhuận, kiểm soát tổn thất tối đa
  4. Sau khi đóng tất cả các vị trí, tính toán lại lưới để tiếp tục theo đuổi có thể mở rộng không gian lợi nhuận

Ưu điểm chính là kết hợp giao dịch xu hướng và giao dịch lưới, đảm bảo tính chính xác của hướng xu hướng và cũng đạt được sự phân tán rủi ro của giao dịch lưới. Ngoài ra, tính toán lại lưới sau khi đóng các vị trí cho phép theo đuổi không giới hạn, thu được lợi nhuận khổng lồ khi có một cuộc biểu tình lớn.

Phân tích rủi ro

  1. Phán đoán xu hướng chính có thể sai, đi sai hướng
  2. Sự biến động bên cạnh đáng kể gây ra tổn thất lớn trong lưới điện
  3. Stop loss được kích hoạt quá nhanh, đóng tất cả các vị trí
  4. Không thể nhập lại điểm vào tối ưu sau khi rút lại

Rủi ro chính là đánh giá sai về hướng xu hướng chính, điều này sẽ dẫn đến việc mở các vị trí chống lại xu hướng và mất mát lớn. Ngoài ra, nếu có sự biến động bên cạnh cao với nhiều lưới bị mắc kẹt, tổn thất sẽ trở nên trầm trọng hơn. Ngoài ra, giảm giá nhanh có thể kích hoạt dừng lỗ và đóng tất cả các vị trí, mất cơ hội lợi nhuận tiếp theo. Sẽ rất khó để tái nhập vào mức lưới tối ưu ban đầu sau khi rút lui.

Độ chính xác của phán đoán xu hướng chính có thể được cải thiện bằng cách tối ưu hóa các thông số EMA. Điều chỉnh khoảng cách lưới và kích thước đầu tiên cũng có thể kiểm soát tổng số lỗ. Vị trí dừng lỗ cần phải xem xét tần suất biến động thị trường. Ngoài ra, việc lấy lợi nhuận có thể được xem xét cho các vị trí một phần thay vì đóng tất cả các vị trí.

Hướng dẫn tối ưu hóa

Chiến lược này cũng có thể được tối ưu hóa trong các khía cạnh sau:

  1. Tối ưu hóa các thông số EMA để cải thiện độ chính xác của đánh giá xu hướng chính
  2. Điều chỉnh khoảng thời gian lưới và số lượng để tối ưu hóa tỷ lệ rủi ro-lợi nhuận
  3. Cải thiện logic dừng lỗ và lấy lợi nhuận, ví dụ: lấy lợi nhuận một phần, dừng lỗ kéo dài vv
  4. Thêm nhiều hạn chế hơn về điều kiện nhập cảnh để tránh nhập cảnh sớm trong thời gian rút lui
  5. Bao gồm nhiều chỉ số hơn để xác định thời gian đầu vào tối ưu, ví dụ như mô hình nến, độ nhạy của chỉ số vv
  6. Thêm phát hiện ngoại lệ để tránh tổn thất lớn trong điều kiện thị trường bất thường

Với các biện pháp tối ưu hóa này, chiến lược có thể đạt được lợi nhuận cao hơn trong các xu hướng quan trọng, đồng thời kiểm soát rủi ro và giảm lỗ trong biến động bên thường.

Tóm lại

Chiến lược này kết hợp giao dịch xu hướng và giao dịch lưới một cách hữu cơ. Nó sử dụng EMA để xác định hướng chính và sử dụng giao dịch lưới để mở các vị trí riêng biệt để theo đuổi xu hướng. Với quản lý rủi ro thích hợp bao gồm cơ chế dừng lỗ, lấy lợi nhuận và tính toán lại lưới, chiến lược này có thể tạo ra lợi nhuận tốt trong các xu hướng chính, đồng thời kiểm soát rủi ro. Tăng cường tối ưu hóa các tham số và độ chính xác phán đoán có thể dẫn đến lợi nhuận cao hơn. Nó đáng để thử nghiệm chi tiết và tối ưu hóa cho giao dịch trực tiếp.


/*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
        




Thêm nữa