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 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.
Để 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:
Đâ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)