Dựa trên chiến lược giao dịch giao thoa đường trung bình động kép đơn giản


Ngày tạo: 2023-12-25 16:03:48 sửa đổi lần cuối: 2023-12-25 16:03:48
sao chép: 0 Số nhấp chuột: 643
1
tập trung vào
1623
Người theo dõi

Dựa trên chiến lược giao dịch giao thoa đường trung bình động kép đơn giản

Tổng quan

Chiến lược này được thiết kế dựa trên nguyên tắc giao thoa vàng của đường trung bình di chuyển đơn giản (SMA). Chiến lược sử dụng hai SMA, tức là SMA nhanh và SMA chậm, tạo ra tín hiệu mua khi SMA nhanh phá vỡ SMA chậm từ phía dưới; tạo ra tín hiệu bán khi SMA nhanh phá vỡ SMA chậm từ phía trên.

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

Chiến lược này chủ yếu dựa trên hai đường chỉ số SMA. Trong đó, thiết lập ngắn hơn trong thời gian SMA nhanh, có thể nắm bắt biến động giá nhanh hơn; thiết lập dài hơn trong thời gian SMA chậm, có thể lọc một số tiếng ồn. Khi SMA nhanh từ phía dưới giao SMA chậm, cho thấy giá trong ngắn hạn tăng nhanh hơn, tạo ra tín hiệu mua.

Bằng cách đặt các tham số chu kỳ SMA khác nhau, các tham số của chiến lược có thể được điều chỉnh ở một mức độ nhất định để phù hợp với các môi trường thị trường khác nhau. Đồng thời, chiến lược cũng cho phép đặt phạm vi thời gian đo đạc, thuận tiện để kiểm tra các tham số chiến lược trên dữ liệu lịch sử.

Phân tích lợi thế

  • Sử dụng chỉ số SMA nổi tiếng, các nguyên tắc đơn giản và dễ hiểu
  • Các tham số chu kỳ SMA có thể tùy chỉnh, thích ứng mạnh mẽ
  • Có thể thiết lập phạm vi thời gian phản hồi để tối ưu hóa tham số
  • Tạo tín hiệu theo cách chéo, có một số tác dụng lọc đối với tín hiệu đột phá, có thể giảm giao dịch sai

Phân tích rủi ro

  • SMA tự nó bị tụt hậu, có thể bỏ lỡ cơ hội đường ngắn
  • Không thể đánh giá được cường độ của xu hướng, hiệu quả của tín hiệu có thể không ổn định
  • Các tham số của chu kỳ SMA được thiết lập không chính xác, sẽ làm tăng tín hiệu sai

Các biện pháp sau đây có thể được áp dụng để đối phó với những rủi ro trên:

  • Giảm thời gian SMA và tăng độ nhạy
  • Kết hợp các chỉ số khác để đánh giá sức mạnh của xu hướng
  • Tìm các tham số tốt nhất với công cụ tối ưu hóa tham số

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

  • Tăng chiến lược dừng lỗ, kiểm soát tổn thất đơn lẻ
  • Tăng cơ chế quản lý vị trí
  • Kết hợp với các chỉ số kỹ thuật khác
  • Thêm các thuật toán học máy để tối ưu hóa tham số động

Tóm tắt

Chiến lược này là một trong những chiến lược theo dõi xu hướng điển hình. Sử dụng nguyên tắc giao chéo đơn giản, có thể có hiệu quả theo dõi tốt hơn nếu các tham số được thiết lập phù hợp. Tuy nhiên, SMA có một số chậm trễ, không thể đánh giá cường độ của xu hướng. Do đó, trong ứng dụng thực tế, cần giới thiệu các công cụ phụ trợ khác để tạo ra một danh mục chỉ số, đồng thời hỗ trợ các phương tiện kiểm soát rủi ro và tối ưu hóa tham số tự động hóa, để chiến lược có thể ổn định và có lợi nhuận.

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

//@version=3
//strategy(title="MA Cross Entry & Exit w/Date Range", overlay=true, initial_capital=10000, currency='USD')

strategy(title="SMA Cross Entry & Exit Strategy", overlay=true)

// Credit goes to this developer for the "Date Range Code"
// https://www.tradingview.com/script/62hUcP6O-How-To-Set-Backtest-Date-Range/


// === GENERAL INPUTS ===
// short ma
maFastSource   = input(defval = open, title = "Fast MA Source")
maFastLength   = input(defval = 36, title = "Fast MA Period", minval = 1)
// long ma
maSlowSource   = input(defval = open , title = "Slow MA Source")
maSlowLength   = input(defval = 46, title = "Slow MA Period", minval = 1)

// === SERIES SETUP ===
// a couple of ma's..
maFast = sma(maFastSource, maFastLength)
maSlow = sma(maSlowSource, maSlowLength)


// === PLOTTING ===
fast = plot(maFast, title = "Fast MA", color = red, linewidth = 2, style = line, transp = 30)
slow = plot(maSlow, title = "Slow MA", color = green, linewidth = 2, style = line, transp = 30)

// === INPUT BACKTEST RANGE ===
FromMonth = input(defval = 9, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2018, title = "From Year", minval = 2017)
ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 9999, title = "To Year", minval = 2017)

// === FUNCTION EXAMPLE ===
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
window()  => time >= start and time <= finish ? true : false // create function "within window of time"

// === LOGIC ===
//enterLong = crossover(maFast, maSlow)
//exitLong = crossover(maSlow, maFast)
enterLong = crossover(maSlow, maFast)
exitLong = crossover(maFast, maSlow)


// Entry //
strategy.entry(id="Long Entry", long=true, when=window() and enterLong)
strategy.entry(id="Short Entry", long=false, when=window() and exitLong)

// === FILL ====

fill(fast, slow, color = maFast > maSlow ? green : red)