
이 전략은가중된 양적 이동 평균 교차 전략(Weighted Quantitative Moving Average Crossover Strategy) 의 기본 아이디어는 가격, 거래량 등과 같은 여러 지표를 결합하여 빠른 라인과 느린 라인을 설계하고 금 포크와 사다리 포크가 발생할 때 구매 및 판매 신호를 발령하는 것입니다.
이 전략의 핵심 지표는 양적 이동 평균 (Quantitative Moving Average, QMA) 이다. QMA는 일정 기간 동안의 중도 평균 가격을 계산하여 트렌드 방향을 측정합니다. 일반 이동 평균과 다른 점은 가격의 무게 (중도 = 가격) 이다.*거래량은 시간이 지남에 따라 감소한다. 따라서, 최근 가격의 무게가 더 커지고, 시장의 변화에 더 빠르게 반응할 수 있다.
구체적으로, 이 전략은 빠른 QMA 라인을 구축하고 느린 QMA 라인을 구축한다. 빠른 라인 파라미터는 25일, 느린 라인 파라미터는 29일로 설정된다. 빠른 라인이 아래에서 느린 라인을 통과하면 구매 신호가 발생하고 빠른 라인이 위에서 아래에서 느린 라인을 통과하면 판매 신호가 발생한다.
일반 이동 평균에 비해 이 전략은 다음과 같은 장점이 있습니다.
이 전략에는 몇 가지 위험도 있습니다.
이러한 위험은 적절한 변수 주파수 조정, 엄격한 워크 포워드 분석, 그리고 다른 지표와 결합하여 완화할 수 있다.
이 전략에는 더 많은 최적화할 여지가 있습니다.
이 전략은 전반적으로 안정성이 좋은 단기 거래 전략이다. 단일 가격 평균에 비해, 이 전략의 지표는 시장 수요 공급 관계를 더 잘 반영한다. 매개 변수 조정 및 위험 관리 수단의 도입을 통해 이 전략은 장기적으로 안정적으로 작동하여 좋은 수익을 얻을 수 있다.
/*backtest
start: 2022-11-29 00:00:00
end: 2023-12-05 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy("Brad VWMACD Strategy 2233", overlay=false, max_bars_back=500,default_qty_type=strategy.percent_of_equity,commission_type=strategy.commission.percent, commission_value=0.18, default_qty_value=100)
// === 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"
// === INPUT SMA ===
//fastMA = input(defval = 16, type = integer, title = "FastMA", minval = 1 )
//slowMA = input(defval = 23, type = integer, title = "SlowMA", minval = 1)
fastMA = input(defval = 25, title = "FastMA", minval = 1 )
slowMA = input(defval = 29, title = "SlowMA", minval = 1)
Long_period = slowMA
Short_period = fastMA
Smoothing_period = input(9, minval=1)
xLongMAVolPrice = ema(volume * close, Long_period)
xLongMAVol = ema(volume, Long_period)
xResLong = (xLongMAVolPrice * Long_period) / (xLongMAVol * Long_period)
xShortMAVolPrice = ema(volume * close, Short_period)
xShortMAVol = ema(volume, Short_period)
xResShort = (xShortMAVolPrice * Short_period) / (xShortMAVol * Short_period)
xVMACD = xResShort - xResLong
xVMACDSignal = ema(xVMACD, Smoothing_period)
nRes = xVMACD - xVMACDSignal
//plot(nRes*20+slowMA, color=blue, style = line )
//plot(3000, color=red, style = line )
// === SERIES SETUP ===
buy = crossover( xVMACD,xVMACDSignal) // buy when fastMA crosses over slowMA
sell = crossunder( xVMACD,xVMACDSignal) // sell when fastMA crosses under slowMA
// === SERIES SETUP ===
//buy = crossover(vwma(close, fastMA),7+vwma(close, slowMA)) // buy when fastMA crosses over slowMA
//sell = crossunder(vwma(close, fastMA),vwma(close, slowMA)-7) // sell when fastMA crosses under slowMA
// === EXECUTION ===
strategy.entry("L", strategy.long, when = window() and buy) // buy long when "within window of time" AND crossover
strategy.close("L", when = window() and sell) // sell long when "within window of time" AND crossunder
// === EXECUTION ===
strategy.entry("S", strategy.short, when = window() and sell) // buy long when "within window of time" AND crossover
strategy.close("S", when = window() and buy) // sell long when "within window of time" AND crossunder
plotshape(window() and buy, style=shape.triangleup, color=green, text="up")
plotshape(window() and sell, style=shape.triangledown, color=red, text="down")
plot(xVMACD*100, title = 'FastMA', color = orange, linewidth = 2, style = line) // plot FastMA
plot(xVMACDSignal*100, title = 'SlowMA', color = aqua, linewidth = 2, style = line) // plot SlowMA