Chiến lược đột phá phạm vi trung bình động


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

Chiến lược đột phá phạm vi trung bình động

Tổng quan

Chiến lược này là một chiến lược phá vỡ phân đoạn dựa trên trung bình di chuyển. Nó sẽ dựa trên trung bình di chuyển của một chu kỳ và đường ray lên xuống được thiết lập để đánh giá giá phá vỡ để thực hiện giao dịch.

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

Các nguyên tắc cốt lõi của chiến lược này là:

  1. Đặt trung bình di chuyển của một chu kỳ nhất định, làm trục trung tâm.

  2. Đặt phạm vi khoảng trên và dưới trục trung tâm, phạm vi khoảng được lấy bằng cách nhân theo một tỷ lệ phần trăm nhất định bằng trục trung tâm. Đường trên là trục trung tâm nhân ((100% + % thiết lập) và đường dưới là trục trung tâm nhân ((100% - % thiết lập))

  3. Khi giá tăng vượt qua đường ray trên, bạn sẽ thả lỗ; khi giá giảm vượt qua đường ray dưới, bạn sẽ thả nhiều hơn.

  4. Giá đặt hàng được thiết lập là giá đường ray lên xuống tương ứng.

  5. Khi giá quay trở lại trục trung tâm, vị thế yên sẽ rời khỏi.

Do đó, chiến lược giao dịch được thực hiện bằng cách nắm bắt sự đột phá của giá thông qua đường trung bình di chuyển và phạm vi của nó.

Phân tích lợi thế

Chiến lược này có những ưu điểm sau:

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

  2. Có thể điều chỉnh thông qua các tham số để thích ứng với các môi trường thị trường khác nhau.

  3. Trục trung tâm và phạm vi phân đoạn có thể lọc hiệu quả tiếng ồn thị trường và nắm bắt xu hướng.

  4. Lệnh mua với giá giới hạn có thể kiểm soát rủi ro.

  5. Khi quay trở lại trục trung tâm, dừng lỗ để tránh thua lỗ quá mức.

Phân tích rủi ro

Chiến lược này cũng có một số rủi ro:

  1. Thiết lập tham số khoảng không đúng có thể dẫn đến giao dịch thường xuyên hoặc không đầy đủ.

  2. Có nhiều khả năng phá vỡ sẽ xảy ra phá vỡ giả và có thể gây hư hỏng.

  3. Trong trường hợp biến động mạnh, đường trục trung tâm và phạm vi khoảng không có hiệu lực.

  4. Lệnh dừng bắt buộc khi quay trở lại đường trung tâm, có thể xuất phát sớm.

Giải pháp tương ứng:

  1. Các tham số tối ưu hóa, chọn chu kỳ trung bình di chuyển phù hợp và tỷ lệ phần trăm khoảng

  2. Kết hợp với các chỉ số khác, tránh phá vỡ giả.

  3. Tăng cường các biện pháp can thiệp nhân tạo

  4. Chu kỳ trung bình di chuyển được thiết lập dài hơn, và khoảng cách được mở rộng thích hợp.

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

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

  1. Thêm các điều kiện dừng lỗ, chẳng hạn như theo dõi dừng lỗ và tránh thua lỗ quá mức.

  2. Thêm các bộ lọc chỉ số như MACD, KD, v.v. để giảm đột phá giả.

  3. Thêm chức năng tối ưu hóa tham số tự động để tham số có thể được điều chỉnh theo thời gian thực theo sự thay đổi của thị trường.

  4. Tăng điều kiện mở cửa để tránh chỉ dựa vào phá vỡ.

  5. Tối ưu hóa các tham số của chu kỳ trung bình di chuyển và khoảng thời gian.

Tóm tắt

Chiến lược này nói chung là một chiến lược phá vỡ khoảng di chuyển trung bình tương đối thực tế. Khái niệm của nó đơn giản, dễ hiểu và thực hiện, lọc tiếng ồn qua phạm vi khu vực, hiệu quả tốt hơn trong thị trường có xu hướng rõ ràng hơn. Nhưng cũng có một số rủi ro, cần chú ý đến tối ưu hóa tham số và sử dụng kết hợp với các chỉ số khác. Có một số giá trị thực tế và phát triển.

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