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

Tác giả:ChaoZhang, Ngày: 2023-11-21 15:33:52
Tags:

img

Tổng quan

Chiến lược này sử dụng hai đường trung bình động để xác định xu hướng giá và đột phá. Đi ngắn khi giá vượt qua đường ray phía trên và đi dài khi giá vượt qua đường ray phía dưới. Thiết lập các lối ra dừng lỗ để kiểm soát rủi ro.

Nguyên tắc

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

Ưu điểm

Chiến lược này có những lợi thế sau:

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

Rủi ro

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

  1. Các bước đột phá đường ray hai có thể dễ dàng dẫn đến rủi ro mất liên tục.
  2. Khi mục tiêu giao dịch đi vào hợp nhất, có nguy cơ quá nhiều giao dịch. Khoảng cách giữa đường ray trên và dưới có thể được mở rộng phù hợp.
  3. Lệnh giới hạn có thể bỏ lỡ một số cơ hội mua.

Tối ưu hóa

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

  1. Kiểm tra các kết hợp khác nhau của chiều dài trung bình động để tìm các thông số tốt nhất.
  2. Tăng chỉ số khối lượng để xác định sự đột phá về khối lượng giao dịch.
  3. Tăng cơ chế dừng lỗ thích nghi để điều chỉnh giá dừng lỗ trong thời gian thực.
  4. Tăng các mô hình học máy để xác định hướng xu hướng.

Tóm lại

Ý tưởng tổng thể của chiến lược này là rõ ràng và dễ hiểu. Bằng cách sử dụng hệ thống đường sắt kép để xác định xu hướng và sử dụng đột phá giá để xác định thời gian nhập cảnh, nó có thể lọc tiếng ồn và đạt được lợi nhuận ổn định.


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

Thêm nữa