Chiến lược lưới theo xu hướng


Ngày tạo: 2023-12-08 12:05:17 sửa đổi lần cuối: 2023-12-08 12:05:17
sao chép: 0 Số nhấp chuột: 1241
1
tập trung vào
1621
Người theo dõi

Chiến lược lưới theo xu hướng

Tổng quan

Chiến lược này là một chiến lược theo dõi lưới xu hướng chỉ làm nhiều mà không làm trống, chọn thời gian xu hướng lớn lên. Kích thước lưới mặc định là 1 lần ATR, theo dõi xuống để thiết lập lưới cấp 1, 2 và 3 để theo dõi, dừng mức 5. Nếu giá phá vỡ một lưới khi kho trống, toàn bộ lưới sẽ di chuyển lên theo dõi giá.

Nguyên tắc chiến lược

  1. Sử dụng đường trung bình EMA để xác định hướng của xu hướng lớn, EMA12 lớn hơn EMA144 được xác định là xu hướng lớn lên
  2. Chỉ đặt nhiều khi xu hướng lớn đi lên
  3. Kích thước lưới mặc định là 1 lần ATR, có thể điều chỉnh số lần
  4. Tạo một mạng lưới theo dõi giá xuống 1, 2 và 3 để mở thêm kho.
  5. Đặt điểm dừng
  6. Thiết lập điểm dừng và điểm dừng sau khi mở vị trí
  7. Khi giá tăng vượt qua điểm dừng
  8. Khi giá giảm kích hoạt điểm dừng lỗ
  9. Sau khi tất cả các vị trí đã bị xóa, nếu giá lại phá vỡ lưới cuối cùng, hãy tính lại vị trí và số lượng lưới, theo dõi lên

Chiến lược này thông qua EMA để xác định hướng của xu hướng lớn, sau đó kết hợp với chiến lược lưới để theo dõi, có thể thu được lợi nhuận lớn hơn trong xu hướng lớn đi lên. lưới thiết lập nhiều điểm giá, xây dựng lô hàng, có thể làm giảm rủi ro của một vị trí. thiết lập dừng lỗ cho phép lợi nhuận được khóa, cũng kiểm soát tổn thất tối đa. khi vị trí hoàn toàn bằng phẳng, có thể tính toán lại điểm cao của lưới, để mở lại vị trí, do đó tối đa hóa lợi nhuận.

Phân tích lợi thế

  1. Sử dụng EMA để đánh giá xu hướng lớn và tránh đặt cược ngược
  2. Chiến lược lưới có thể xây dựng kho hàng loạt, giảm rủi ro của một kho
  3. Cài đặt dừng lỗ để khóa lợi nhuận, kiểm soát lỗ tối đa
  4. Sau khi giảm vị thế, bạn có thể tính toán lại lưới để tiếp tục theo đuổi và mở rộng không gian lợi nhuận.

Ưu điểm chính của chiến lược này 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 xu hướng và phân tán rủi ro của chiến lược lưới. Ngoài ra, sau khi vị trí bị đóng cửa, lưới có thể được tính toán lại vô hạn, do đó có thể kiếm được nhiều tiền khi có một làn sóng lớn.

Phân tích rủi ro

  1. Có thể đánh giá sai xu hướng, đi sai hướng
  2. Hành động này đã gây ra những cú hích lớn, khiến mạng lưới bị tổn thất nặng nề.
  3. Mức lỗ đạt điểm dừng quá nhanh, tất cả các vị trí đều bị xóa
  4. Không thể quay trở lại điểm xuất phát tốt nhất

Nguy cơ chính là sai lầm trong việc đánh giá xu hướng lớn, điều này có thể dẫn đến việc xây dựng vị trí đối kháng và thua lỗ lớn. Ngoài ra, nếu tình hình thị trường xảy ra biến động mạnh, thiệt hại sẽ tăng lên khi nhiều lưới bị giam giữ cùng một lúc. Ngoài ra, giá giảm nhanh chóng cũng có thể gây ra lỗ dừng dẫn đến hoàn toàn thanh toán vị trí và mất cơ hội kiếm lợi nhuận tiếp theo. Sau khi giá hồi phục, rất khó để quay trở lại vị trí lưới tốt nhất ban đầu.

Bạn có thể cải thiện tính chính xác trong việc đánh giá xu hướng lớn bằng cách tối ưu hóa các tham số EMA. Điều chỉnh khoảng cách lưới và số lần đầu tiên cũng có thể kiểm soát tổn thất tổng thể. Cài đặt vị trí điểm dừng lỗ cần phải tính đến tần suất biến động của thị trường. Ngoài ra, bạn cũng có thể xem xét một số vị trí bị dừng lại sau khi kiếm được lợi nhuận, chứ không phải là tất cả các vị trí bằng phẳng.

Hướng tối ưu hóa

Chiến lược này cũng có thể được tối ưu hóa theo các hướng sau:

  1. Tối ưu hóa các tham số EMA để tăng độ chính xác trong việc đánh giá xu hướng lớn
  2. Điều chỉnh khoảng cách và số lượng lưới, tối ưu hóa tỷ lệ lợi nhuận rủi ro
  3. Cải thiện logic dừng lỗ, chẳng hạn như dừng một số vị trí, dừng lỗ di chuyển
  4. Tăng giới hạn về điều kiện tái nhập cảnh để tránh tái nhập cảnh quá sớm trong quá trình hồi phục
  5. Kết hợp với các chỉ số khác để đánh giá thời gian nhập cảnh, như hình dạng đường K, độ nhạy của chỉ số và nhiều hơn nữa
  6. Tăng khả năng đánh giá bất thường, tránh thiệt hại lớn trong các trường hợp bất thường

Thông qua 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 lớn hơn trong các tình huống lớn, đồng thời kiểm soát rủi ro và giảm tổn thất trong các biến động bình thường.

Tóm tắt

Chiến lược này là sự kết hợp hữu cơ giữa giao dịch xu hướng và giao dịch lưới. Nó sử dụng EMA để xác định hướng lớn, sau đó sử dụng chiến lược lưới để xây dựng các vị trí theo dõi.

Mã nguồn chiến lược
/*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