Chiến lược chéo trung bình động theo hàm số

Tác giả:ChaoZhang, Ngày: 2023-10-17 16:55:10
Tags:

img

Tổng quan

Đây là một chiến lược giao dịch tự động đi dài hoặc ngắn dựa trên sự chéo chéo của hai đường trung bình động theo cấp số nhân (EMA) với các khoảng thời gian khác nhau. Nó sử dụng các chỉ số kỹ thuật đơn giản và rất phù hợp cho người mới bắt đầu học và thực hành.

Nguyên tắc

Chiến lược này sử dụng hai EMA, một là EMA trên khung thời gian lớn hơn, và một là EMA trên khung thời gian hiện tại. Khi EMA hiện tại vượt qua trên EMA lớn hơn, nó sẽ dài. Khi EMA hiện tại vượt qua dưới EMA lớn hơn, nó sẽ ngắn.

Cụ thể, chiến lược đầu tiên xác định hai thông số EMA:

  1. tf - khung thời gian lớn hơn, mặc định hàng ngày.
  2. len - Thời gian EMA, mặc định 3.

Sau đó nó tính toán hai EMA:

  1. ma1 - EMA 3 ngày trên khung thời gian hàng ngày.
  2. ma2 - EMA 3 ngày trên khung thời gian hiện tại.

Cuối cùng, nó tham gia vào các hoạt động dựa trên:

  • Khi ma2 > ma1, nó sẽ dài.
  • Khi ma2 < ma1, nó đi ngắn.

Bằng cách đánh giá hướng xu hướng thông qua các chéo giữa hai EMA của các giai đoạn khác nhau, nó tự động hóa giao dịch.

Ưu điểm

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

  1. Nguyên tắc đơn giản, dễ hiểu và thực hiện, rất thích hợp cho người mới bắt đầu.
  2. Theo xu hướng, tuân theo xu hướng, có thể kiếm được lợi nhuận khá.
  3. Sử dụng EMA, nhạy cảm hơn với sự thay đổi giá, có thể bắt kịp thời sự đảo ngược xu hướng.
  4. Kết hợp các EMA của các giai đoạn khác nhau có thể sử dụng điểm mạnh tương ứng của họ và cải thiện sự ổn định của hệ thống.
  5. Không cần quá nhiều thông số, dễ dàng để thử nghiệm và tối ưu hóa, thuận tiện cho giao dịch trực tiếp.

Rủi ro

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

  1. Xu hướng yếu sau khả năng, có thể bị chém ở các thị trường khác nhau.
  2. Lại tụt lại trong hai vòng EMA, có thể bỏ lỡ một số cơ hội.
  3. Không thể lọc hiệu quả các giao thoa rối loạn giữa hai EMA.
  4. Chỉ dựa vào EMA đơn giản, khó thích nghi với thị trường phức tạp.

Rủi ro có thể được giảm bằng cách thiết lập dừng lỗ, tối ưu hóa các tham số, thêm các chỉ số khác v.v.

Tối ưu hóa

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

  1. Kiểm tra các thông số EMA giai đoạn lớn khác nhau để tìm ra sự kết hợp tối ưu.
  2. Thêm bộ lọc âm lượng để tránh tín hiệu sai.
  3. Bao gồm các chỉ số xu hướng để tăng kích thước và hiệu quả vị trí.
  4. Thiết lập stop loss thích nghi để kiểm soát lỗ giao dịch duy nhất.
  5. Tối ưu hóa kích thước vị trí theo điều kiện thị trường.
  6. Thêm các mô hình máy học để làm cho chiến lược thông minh hơn.

Kết luận

Chiến lược chéo EMA nắm bắt xu hướng với các chỉ số đơn giản, phù hợp cho người mới bắt đầu học và thực hành. Có nhiều chỗ để tối ưu hóa bằng cách giới thiệu các chỉ số và mô hình kỹ thuật hơn để phát triển các chiến lược giao dịch định lượng hiệu quả hơn.


/*backtest
start: 2023-09-16 00:00:00
end: 2023-10-16 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("Noro's Singapore Strategy", shorttitle = "Singapore str", 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")
tf = input("D", title = "Big Timeframe")
len = input(3, minval = 1, title = "MA length")
src = input(close, title = "MA Source")
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")

//MAs
ma1 = request.security(syminfo.tickerid, tf, sma(src, len))
ma2 = sma(src, len)
plot(ma1, linewidth = 2, color = blue, title = "Big TF MA")
plot(ma2, linewidth = 2, color = red, title = "MA")

//Trading
size = strategy.position_size
lot = 0.0
lot := size != size[1] ? strategy.equity / close * capital / 100 : lot[1]

if ma2 > ma1
    strategy.entry("L", strategy.long, needlong ? lot : 0, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
if ma2 < ma1
    strategy.entry("S", strategy.short, needshort ? lot : 0, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()

Thêm nữa