Эта стратегия основана на двойной системе пересечения движущейся средней тенденции. Она сочетает в себе быструю простую движущуюся среднюю (SMA) и медленную взвешенную движущуюся среднюю (VWMA) и генерирует торговые сигналы, когда две линии пересекают друг друга.
Когда быстрая SMA пересекает медленную VWMA, генерируется сигнал покупки. Когда быстрая SMA пересекает медленную VWMA, генерируется сигнал продажи. Стратегия также использует механизм стоп-лосса для контроля рисков.
Основная логика этой стратегии заключается в двойной системе перекрестного использования скользящей средней, которая использует следующие технические показатели:
Когда краткосрочные и долгосрочные тенденции выстраиваются в одном направлении, быстрое пересечение SMA выше медленной VWMA генерирует сигналы покупки, а пересечение ниже генерирует сигналы продажи.
Стратегия также устанавливает механизмы остановки убытков. Она сокращает убытки во времени, когда цена движется в неблагоприятном направлении.
Управление рисками:
Стратегия может быть улучшена в следующих аспектах:
В заключение, это очень практичная стратегия следующего тренда. Она использует интуитивно понятные перекрестки двойных скользящих средних для генерации торговых сигналов, эффективно улавливая изменения тренда с координацией быстрых и медленных скользящих средних. Механизм остановки потерь также обеспечивает хороший контроль рисков. С помощью дополнительных индикаторов и оптимизации параметров стратегия может достичь еще лучших торговых результатов.
/*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)