Chiến lược giao cắt đường trung bình động theo hàm mũ


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

Chiến lược giao cắt đường trung bình động theo hàm mũ

Tổng quan

Đây là một chiến lược giao dịch tự động dựa trên hai chu kỳ thời gian khác nhau. Nó sử dụng chỉ số kỹ thuật đơn giản, rất phù hợp cho người mới học và thực hành.

Nguyên tắc

Chiến lược này sử dụng hai đường trung bình di chuyển chỉ số, một là đường trung bình của chu kỳ thời gian lớn và một là đường trung bình của chu kỳ hiện tại. Khi đường trung bình của chu kỳ hiện tại đi qua đường trung bình của chu kỳ lớn, làm thêm; Khi đường trung bình của chu kỳ hiện tại đi qua đường trung bình của chu kỳ lớn, làm trống.

Cụ thể, chiến lược này bắt đầu bằng việc xác định hai tham số đường trung bình:

  1. tf - Chu kỳ thời gian lớn, đường nắng mặc định
  2. len - độ dài chu kỳ đường trung bình, mặc định là 3

Sau đó tính hai EMA:

  1. ma1 - EMA 3 ngày trên đường tuần hoàn lớn
  2. ma2 - EMA 3 ngày của chu kỳ hiện tại

Cuối cùng, vào logic giao dịch:

  • Làm nhiều hơn khi ma2 > ma1
  • Khi ma2 < ma1, hãy làm trống.

Do đó, các giao dịch tự động được thực hiện bằng cách đánh giá xu hướng theo đường trung bình của các chu kỳ thời gian khác nhau.

Ưu điểm

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

  1. Nguyên tắc đơn giản, dễ hiểu và thực hiện, rất phù hợp cho người mới học.
  2. Giao dịch theo xu hướng có thể mang lại lợi nhuận tốt hơn.
  3. Sử dụng chỉ số trung bình di chuyển, nhạy cảm hơn với sự thay đổi giá, có thể bắt kịp sự thay đổi xu hướng.
  4. Sự kết hợp của các đường trung bình khác nhau có thể tạo ra những lợi thế riêng biệt để tăng sự ổn định của hệ thống.
  5. Không cần quá nhiều tham số, dễ kiểm tra và tối ưu hóa, hoạt động trên đĩa cứng thuận tiện.

Rủi ro

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

  1. Theo dõi xu hướng không mạnh mẽ, có thể bị bỏ tù vì thị trường biến động.
  2. Có thể bị mất một số cơ hội.
  3. Không có khả năng lọc một cách hiệu quả các trục trặc chéo giữa hai đường thẳng.
  4. Chỉ dựa trên đường trung bình đơn giản, khó thích ứng với thị trường phức tạp.

Bạn có thể giảm rủi ro bằng cách thiết lập dừng lỗ, tối ưu hóa các tham số, hoặc thêm các chỉ số khác.

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

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

  1. Kiểm tra các tham số trung bình chu kỳ lớn khác nhau để tìm ra sự kết hợp tốt nhất.
  2. Tăng bộ lọc cho các chỉ số giao dịch để tránh các tín hiệu sai.
  3. Kết hợp với các chỉ số xu hướng, tăng cường cường độ và hiệu quả hoạt động.
  4. Thiết lập điểm dừng thích ứng để kiểm soát tổn thất đơn lẻ.
  5. Tối ưu hóa quản lý vị trí, điều chỉnh kích thước vị trí theo thị trường.
  6. Tham gia mô hình học máy để làm cho chiến lược thông minh hơn.

Tóm tắt

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

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