이 전략은 이중 이동 평균 크로스오버 트렌드 다음 시스템을 기반으로 합니다. 빠른 단순 이동 평균 (SMA) 과 느린 가중 이동 평균 (VWMA) 을 결합하여 두 선이 서로 교차 할 때 거래 신호를 생성합니다.
빠른 SMA가 느린 VWMA를 넘을 때 구매 신호가 생성됩니다. 빠른 SMA가 느린 VWMA를 넘을 때 판매 신호가 생성됩니다. 전략은 위험을 제어하기 위해 스톱 로스 메커니즘을 사용합니다.
이 전략의 핵심 논리는 이중 이동 평균 크로스오버 시스템 (dual moving average crossover system) 에 있습니다. 구체적으로 다음과 같은 기술적 지표를 이용합니다.
빠른 SMA는 가격 변화에 빠르게 반응하기 위해 짧은 룩백 기간을 가지고 있으며 느린 VWMA는 평형화를 위해 더 긴 룩백 기간을 가지고 있습니다. 단기 및 장기 트렌드가 같은 방향으로 정렬되면 느린 VWMA 위에 빠른 SMA가 경로를 통과하면 구매 신호가 발생하고 아래로 경로를 통과하면 판매 신호가 발생합니다.
이 전략은 또한 스톱 로스 메커니즘을 설정합니다. 가격이 불리한 방향으로 움직일 때 시간적으로 손실을 줄입니다.
위험 관리:
이 전략은 다음과 같은 측면에서 향상될 수 있습니다.
결론적으로, 이것은 매우 실용적인 트렌드 다음 전략이다. 직관적인 이중 이동 평균 크로스오버를 사용하여 거래 신호를 생성하고, 빠르고 느린 이동 평균의 조정으로 트렌드 변화를 효과적으로 캡처합니다. 스톱 로스 메커니즘은 또한 좋은 위험 통제를 보장합니다. 보완적 인 지표와 매개 변수 최적화로 전략은 더 나은 거래 성능을 달성 할 수 있습니다.
/*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)