Chiến lược này dựa trên hệ thống theo xu hướng chéo trung bình di chuyển kép. Nó kết hợp trung bình di chuyển đơn giản nhanh (SMA) và trung bình di chuyển cân nhắc chậm (VWMA), và tạo ra tín hiệu giao dịch khi hai đường băng ngang nhau.
Khi SMA nhanh vượt qua trên VWMA chậm, một tín hiệu mua được tạo ra. Khi SMA nhanh vượt qua dưới VWMA chậm, một tín hiệu bán được tạo ra. Chiến lược cũng sử dụng cơ chế dừng lỗ để kiểm soát rủi ro.
Logic cốt lõi của chiến lược này nằm trong hệ thống chéo trung bình động kép. Cụ thể, nó sử dụng các chỉ số kỹ thuật sau:
SMA nhanh có thời gian xem lại ngắn hơn để phản ứng nhanh chóng với những thay đổi giá, trong khi VWMA chậm có thời gian xem lại dài hơn để làm mịn. Khi xu hướng ngắn hạn và dài hạn liên kết theo cùng một hướng, SMA nhanh vượt trên VWMA chậm tạo ra tín hiệu mua, trong khi vượt dưới tạo ra tín hiệu bán.
Chiến lược cũng thiết lập các cơ chế dừng lỗ. Nó cắt giảm lỗ trong thời gian khi giá di chuyển theo hướng không thuận lợi.
Quản lý rủi ro:
Chiến lược có thể được cải thiện trong các khía cạnh sau:
Kết luận, đây là một chiến lược theo xu hướng rất thực tế. Nó sử dụng các giao dịch giao dịch trực quan để tạo ra các tín hiệu giao dịch, nắm bắt sự thay đổi xu hướng hiệu quả với sự phối hợp giữa các đường trung bình di chuyển nhanh và chậm. Cơ chế dừng lỗ cũng đảm bảo kiểm soát rủi ro tốt. Với các chỉ số bổ sung và tối ưu hóa tham số, chiến lược có thể đạt được hiệu suất giao dịch tốt hơn.
/*backtest start: 2023-11-23 00:00:00 end: 2023-11-28 00:00:00 period: 15m basePeriod: 5m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 //strategy(title="Bitlinc Entry v0.1 VWMA / SMA / MRSI SQQQ 94M", overlay=true, initial_capital=10000, currency='USD') strategy(title="Bitlinc Entry v0.1 VWMA / SMA / MRSI SQQQ 94M", 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 = close, title = "Simple MA Source") maFastLength = input(defval = 6, title = "Simple MA Length", minval = 1) // long ma maSlowSource = input(defval = high, title = "VW MA Source") maSlowLength = input(defval = 7, title = "VW MA Period", minval = 1) // === SERIES SETUP === // a couple of ma's... maFast = sma(maFastSource, maFastLength) maSlow = vwma(maSlowSource, maSlowLength) // === PLOTTING === fast = plot(maFast, title = "Fast MA", color = color.green, linewidth = 2, style = plot.style_line, transp = 30) slow = plot(maSlow, title = "Slow MA", color = color.red, linewidth = 2, style = plot.style_line, transp = 30) // === INPUT BACKTEST RANGE === FromMonth = input(defval = 1, 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 ? color.green : color.red) // === MRSI === // // basis = rsi(close, input(50)) ma1 = ema(basis, input(2)) ma2 = ema(basis, input(27)) oversold = input(32.6) overbought = input(63) //plot(ma1, title="RSI EMA1", color=blue) //plot(ma2, title="RSI EMA2", color=yellow) obhist = ma1 >= overbought ? ma1 : overbought oshist = ma1 <= oversold ? ma1 : oversold //plot(obhist, title="Overbought Highligth", style=columns, color=color.maroon, histbase=overbought) //plot(oshist, title="Oversold Highligth", style=columns, color=color.yellow, histbase=oversold) //i1 = hline(oversold, title="Oversold Level", color=white) //i2 = hline(overbought, title="Overbought Level", color=white) //fill(i1, i2, color=olive, transp=100) // === LOGIC === enterLongMrsi = crossover(ma1, oversold) exitLongMrsi = crossover(ma1, overbought) // Entry // strategy.entry(id="MRSI Long Entry", long=true, when=window() and enterLongMrsi) strategy.entry(id="MRSI Short Entry", long=false, when=window() and exitLongMrsi) //hline(50, title="50 Level", color=white)