Chiến lược đột phá giá trung bình động kép


Ngày tạo: 2023-11-21 15:33:52 sửa đổi lần cuối: 2023-11-21 15:33:52
sao chép: 1 Số nhấp chuột: 601
1
tập trung vào
1617
Người theo dõi

Chiến lược đột phá giá trung bình động kép

Tổng quan

Chiến lược này sử dụng hai đường trung bình di chuyển để đánh giá xu hướng và đột phá của giá. Khi giá lên đường, hãy làm trống, khi giá xuống đường, hãy làm nhiều hơn để kiểm soát rủi ro.

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

  1. Sử dụng hàm sma() để tính hai đường trung bình di chuyển ngắn hạn và dài hạn, tương ứng với đường ray lên xuống của chiến lược giao dịch.
  2. Tính toán giá mua và giá bán: giá mua là giá dưới đường ray nhân với một hệ số nhỏ hơn 1 và giá bán là giá trên đường ray nhân với một hệ số lớn hơn 1.
  3. Khi giá lên đường, hãy mở một vị trí trống ở mức giá thị trường; khi giá xuống đường, hãy mở nhiều vị trí ở mức giá giới hạn.
  4. Thiết lập năm, tháng và ngày để kiểm soát chu kỳ giao dịch của chiến lược.
  5. Xóa tất cả các vị trí khi kết thúc hoặc vượt quá phạm vi ngày.

Phân tích lợi thế

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

  1. Sử dụng hệ thống hai đường ray, nó có thể lọc tiếng ồn thị trường và nhận ra xu hướng.
  2. Sử dụng đợt phá giá để xác định thời điểm vào thị trường có thể giảm tín hiệu sai.
  3. Sử dụng đơn giá giới hạn để giảm chi phí cho các cú sốc thị trường.
  4. Có thể dễ dàng điều chỉnh chu kỳ giao dịch, kiểm soát rủi ro chiến lược.

Phân tích rủi ro

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

  1. Việc phá vỡ hai đường ray dễ gây ra nguy cơ mất mát liên tục. Bạn có thể thiết lập Exit Stop Loss để kiểm soát tổn thất.
  2. Khi các chỉ số giao dịch được thực hiện, có thể có nguy cơ giao dịch quá nhiều.
  3. Giá giới hạn có thể khiến bạn bỏ lỡ một số cơ hội mua hàng. Bạn có thể cân nhắc thay đổi giá thành thị trường.

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

Chính sách này có thể được tối ưu hóa theo các khía cạnh sau:

  1. Kiểm tra các kết hợp trung bình di chuyển với độ dài khác nhau để tìm tham số tối ưu.
  2. Tăng Volumes đánh giá doanh số vượt trội.
  3. Thêm cơ chế dừng lỗ thích ứng, điều chỉnh giá dừng lỗ theo thời gian thực.
  4. Thêm mô hình học máy để đánh giá xu hướng.

Tóm tắt

Chiến lược tổng thể của chiến lược này rất rõ ràng và dễ hiểu, thông qua hệ thống hai làn đường để xác định xu hướng, giá phá vỡ thời gian vào thị trường, có thể lọc tiếng ồn để đạt được lợi nhuận ổn định, cũng có một số không gian để cải tiến và tối ưu hóa. Nhìn chung, đây là một chiến lược giao dịch định lượng có giá trị thực tế có thể lặp lại.

Mã nguồn chiến lược
/*backtest
start: 2023-11-13 00:00:00
end: 2023-11-20 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=3
strategy(title = "Noro's Shift MA Strategy v1.0", shorttitle = "Shift MA str 1.0", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)

//Settings
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot, %")
per = input(3, defval = 1, minval = 1, maxval = 1000, title = "Length")
src = input(ohlc4, title = "Source")
buylevel = input(-5.0, defval = -5.0, minval = -100, maxval = 0, title = "Buy line (lime)")
selllevel = input(0.0, defval = 0.0, minval = -100, maxval = 100, title = "Sell line (red)")
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) 
buy = sma * ((100 + buylevel) / 100)
sell = sma * ((100 + selllevel) / 100)
plot(buy, linewidth = 2, color = lime, title = "Buy line")
plot(sell, linewidth = 2, color = red, title = "Sell 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
    strategy.entry("L", strategy.long, lot, limit = buy)
    
if (not na(close[per]))    
    strategy.entry("Close", strategy.short, 0, limit = sell)

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