Chiến lược giao dịch chéo SMA

Tác giả:ChaoZhang, Ngày: 2023-12-25 16:03:48
Tags:

img

Tổng quan

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

Chiến lược logic

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

Bằng cách thiết lập các tham số thời gian SMA khác nhau, các tham số chiến lược có thể được điều chỉnh một phần để thích nghi với môi trường thị trường khác nhau.

Phân tích lợi thế

  • Sử dụng chỉ số SMA nổi tiếng với logic đơn giản
  • Các tham số thời gian SMA có thể tùy chỉnh với khả năng thích nghi mạnh mẽ
  • Phạm vi thời gian backtesting có thể được thiết lập cho tối ưu hóa tham số
  • Sử dụng chéo để tạo tín hiệu có một hiệu ứng lọc nhất định và có thể giảm các giao dịch sai

Phân tích rủi ro

  • Bản thân SMA có tác dụng chậm và có thể bỏ lỡ các cơ hội ngắn hạn
  • Không thể xác định động lực của xu hướng, hiệu quả của việc tạo tín hiệu có thể không ổn định
  • Cài đặt tham số thời gian SMA không chính xác sẽ làm tăng tín hiệu sai

Để giải quyết các rủi ro trên, các biện pháp sau đây có thể được thực hiện:

  • Giảm ngắn chu kỳ SMA để cải thiện độ nhạy
  • Bao gồm các chỉ số khác để xác định động lực xu hướng
  • Tìm kết hợp tham số tối ưu bằng cách sử dụng các công cụ tối ưu hóa tham số

Hướng dẫn tối ưu hóa

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

Tóm lại

Đây là một chiến lược theo xu hướng điển hình. Bằng cách áp dụng nguyên tắc đơn giản của chéo trung bình động đôi, nó có thể đạt được kết quả theo dõi tốt khi các thông số được đặt đúng cách. Tuy nhiên, SMA tự nó có một hiệu ứng chậm nhất định và không thể xác định động lực của xu hướng. Do đó, trong ứng dụng thực tế, các công cụ phụ trợ khác cần được giới thiệu để tạo thành một sự kết hợp chỉ số, và bổ sung bằng phương tiện tối ưu hóa tham số tự động và kiểm soát rủi ro, để làm cho chiến lược có lợi nhuận ổn định.


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

Thêm nữa