
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.
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ử.
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:
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.
/*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)