Chiến lược đột phá kênh trung bình di chuyển

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

img

Tổng quan

Đây là một chiến lược đột phá kênh trung bình động dựa trên trung bình động và kênh phạm vi. Nó sử dụng đường trung bình động và đường kênh trên / dưới để xác định sự đột phá cho các tín hiệu giao dịch.

Chiến lược logic

Logic cốt lõi của chiến lược này là:

  1. Đặt đường trung bình động của một khoảng thời gian nhất định như đường trung tâm.

  2. Thiết lập đường kênh trên và dưới bằng cách nhân đường giữa với một số phần trăm nhất định.

  3. Khi giá phá vỡ trên đường trên, mua ngắn. Khi giá phá vỡ dưới đường dưới, mua dài.

  4. Đặt giá lệnh ở các đường trên/dưới tương ứng.

  5. Đóng các vị trí khi giá quay trở lại đường giữa.

Vì vậy, nó giao dịch dựa trên sự đột phá của kênh trung bình động.

Phân tích lợi thế

Những lợi thế của chiến lược này là:

  1. Khái niệm đơn giản và rõ ràng, dễ hiểu và thực hiện.

  2. Các tham số có thể điều chỉnh phù hợp với các điều kiện thị trường khác nhau.

  3. Đường trung và phạm vi kênh có thể lọc tiếng ồn thị trường và bắt được xu hướng.

  4. Hạn chế lệnh kiểm soát rủi ro.

  5. Giảm lỗ khi giá trở lại đường trung bình.

Phân tích rủi ro

Ngoài ra còn có một số rủi ro:

  1. Cài đặt tham số không chính xác có thể gây ra giao dịch quá mức / không đủ.

  2. Khả năng phá vỡ sai và dừng lỗ cao.

  3. Thất bại của đường trung và kênh dưới sự biến động thị trường lớn.

  4. Rời sớm khi buộc phải đóng cửa ở đường trung tâm.

Giải pháp:

  1. Tối ưu hóa các thông số như thời gian MA và tỷ lệ phần trăm kênh.

  2. Thêm các chỉ số khác như khối lượng để tránh đột phá sai.

  3. Tăng sự can thiệp bằng tay.

  4. Sử dụng thời gian MA dài hơn và phạm vi kênh rộng hơn.

Tối ưu hóa

Chiến lược có thể được cải thiện từ các khía cạnh sau:

  1. Thêm các phương pháp dừng lỗ như dừng lại để hạn chế lỗ.

  2. Thêm các chỉ số lọc như MACD để giảm tín hiệu sai.

  3. Khả năng tối ưu hóa tham số tự động.

  4. Thêm thêm các tiêu chí vị trí mở ngoài breakout.

  5. Tối ưu hóa MA và các thông số kênh.

Kết luận

Tóm lại, đây là một chiến lược đột phá kênh MA thực tế. Nó có một logic đơn giản để dễ sử dụng, trong khi phạm vi kênh có thể lọc tiếng ồn. Nó hoạt động tốt trong thị trường xu hướng. Nhưng rủi ro tồn tại và các thông số cùng với các bộ lọc bổ sung cần tối ưu hóa cho giao dịch thực tế. Chiến lược có giá trị thực tế và phát triển nhất định.


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

//Noro
//2018

//@version=3
strategy(title = "Robot WhiteBox ShiftMA", shorttitle = "Robot WhiteBox ShiftMA", 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")
src = input(ohlc4, title = "Source")
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")

//SMAs
sma = sma(src, per) 
shortline = sma * ((100 + shortlevel) / 100)
longline = sma * ((100 + longlevel) / 100)
plot(shortline, linewidth = 2, color = red, title = "Short line")
plot(sma, linewidth = 2, color = blue, title = "SMA line")
plot(longline, linewidth = 2, color = lime, 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 = longline)
    
if (not na(close[per])) and size == 0 and needshort
    strategy.entry("S", strategy.short, lot, limit = shortline)
    
if (not na(close[per])) and size > 0 
    strategy.entry("Close", strategy.short, 0, limit = sma)
    
if (not na(close[per])) and size < 0 
    strategy.entry("Close", strategy.long, 0, limit = sma)

if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()

Thêm nữa