이 전략은가중화된 양적 이동 평균 크로스오버 전략기본 아이디어는 가격, 거래량 및 기타 지표에 기초하여 빠르고 느린 라인을 설계하고 골든 크로스와 데드 크로스가 발생하면 구매 및 판매 신호를 생성하는 것입니다.
이 전략의 핵심 지표는 양적 이동 평균 (QMA) 이다. QMA는 일정 기간 동안 중량 된 평균 가격을 계산하여 트렌드 방향을 측정한다. 일반 이동 평균과 달리 QMA의 가격의 무게 (중량 = 가격 * 거래량) 는 시간이 지남에 따라 감소 할 것이다. 따라서 최신 가격은 시장 변화에 더 빠르게 반응할 수 있는 더 큰 무게를 가지고 있다.
특히, 이 전략은 25일로 빠른 QMA 라인과 29일로 느린 QMA 라인을 구축한다. 빠른 라인이 느린 라인을 넘을 때 구매 신호를 생성하고 느린 라인을 넘을 때 판매 신호를 생성한다.
일반 이동 평균에 비해 이 전략은 다음과 같은 장점을 가지고 있습니다.
이 전략에는 또한 몇 가지 위험이 있습니다.
위의 위험은 빈도를 적절히 조정하고, 엄격하게 앞으로의 분석을 수행하고, 다른 지표를 통합함으로써 완화 될 수 있습니다.
이 전략의 더 많은 최적화를 위한 여지가 있습니다.
일반적으로, 이것은 안정적인 단기 거래 전략이다. 단일 가격 평균에 비해, 그 지표는 시장의 수요와 공급 관계를 더 잘 반영할 수 있다. 적절한 매개 변수 조정과 위험 관리로, 이 전략은 장기적으로 안정적으로 작동하고 건전한 이익을 얻을 수 있다.
/*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