Volume Ratio反转交易策略(VR反转策略)是一个 based on volume indicator 的短周期反转交易策略。它通过计算某一时间段内的成交量与均量的比值,来判断市场主力是否进入,从而产生交易信号。该策略主要适用于短线范围内反转性较强的品种。
VR反转策略的核心指标是 Volume Ratio(简称VR),它代表了当前周期的成交量相对于一段时间内的平均成交量的比值。具体计算方法是:
VR = Current Volume / SMA(Volume, N)
其中N代表参数Length,当前周期成交量除以Length周期内成交量的简单移动平均。
当VR > 阈值时,认为是主力进入的信号。此时结合价格的向上或向下突破,产生买入和卖出信号。
该策略同时引入方向辅助判断指标dir。它通过当前周期收盘价与N周期前收盘价比较,大于1为多头方向,小于1为空头方向。
在VR大于指定阈值时,如果dir=1,产生买入信号,如果dir=-1,产生卖出信号。
VR反转策略最大的优势在于捕捉突发性的价格反转机会。当出现主力介入的信号时,策略可以快速做出判断,及时捕捉反弹或回落的机会。
其他优势还有:
尽管VR反转策略有一定的优势,但也存在一些风险需要注意:
此外,也需要注意防止过度交易、设置止损以控制单笔损失等。
VR反转策略还有进一步优化的空间,主要建议如下:
VR反转交易策略是一个简单直接、容易实施的短线量化策略。它通过捕捉主力出现的信号,抓住反转机会。该策略特别适合波动比较剧烈、反转明显的品种,但也需要注意风险控制。通过进一步优化,可以使策略更稳健,过滤掉更多假信号。
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy(title="Volume Ratio_30min", shorttitle="VR_30min")//,initial_capital=1000)
// User Input ------------------------------------------------------------------
len = input(20, title="Length", minval=1)
threshold = input(3,step=0.05, title="閾値")
// Volume Caliculetion ---------------------------------------------------------
vol = volume
sma=sma(volume,len)
vrs = vol / sma
// Direction -------------------------------------------------------------------
dirtime=input(1,"direction picker # bars")
dir=if close/close[dirtime] > 1
1
else
-1
// Plot ------------------------------------------------------------------------
plot(vrs, title="VRS", color=color.green, transp=0)
hline(1, title="baseline")
plot(threshold, color=color.white)
// ️⚠️⚠️Logic -----------------------------------------------------------------
long = vrs > threshold and dir == 1
short = vrs > threshold and dir ==-1
// Back Test Fnction -----------------------------------------------------------
start = timestamp(input(2019, "Start Year"), input(1, "Start Month"), input(1, "Start Day"), 0, 0)
end = timestamp(input(9999, "End Year"), input(1, "End Month"), input(1, "End Day"), 0, 0)
_testPeriod() => true
// Order -----------------------------------------------------------------------
if _testPeriod()
if long
strategy.entry("Long", strategy.long)
if short
strategy.entry("Short", strategy.short)