相对活力指数(RVI)是一种衡量价格变动活力的技术分析指标,其由John Ehlers开发。RVI的主要目的是通过比较多个时期内的收盘价与开盘价之差,评估市场活力的相对强度。RVI指标包括两条线:RVI主线和RVI信号线。
在MT4平台上,RVI指标是默认包含的技术指标之一,安装过程相对直接。你只需要依次点击MT4菜单栏上的“插入-技术指标-震荡指标-Relative Vigor Index”。在弹出的指标属性框中,你可以根据需要设置相关参数,然后点击“确定”,RVI指标就会出现在当前图表上。
要获取RVI指标的数据,可以使用iRVI()函数。iRVI()函数的结构如下:
double iRVI(
string symbol, // 交易品种名称
int timeframe, // 图表时间周期
int period, // 指标计算的平均周期值
int mode, // 模式(MODE_MAIN, MODE_SIGNAL),也就是获取哪根线
int shift // 指标索引/序号
);
参数说明:
- symbol:交易品种名称,当前窗口货币对为Symbol(),你也可以自定义参数,例如
input string symname = “USDJPY”
。 - timeframe:图表周期,指一分钟 M1 到月线 MN1 共 9 个图表周期。你可以自定义参数,如:
input ENUM_TIMEFRAMES Period_x = PERIOD_M30;
。其中,PERIOD_M30表示30分钟周期。 - period:指标计算的平均周期值参数,默认是10,你可以自行定义参数,例如
input int rvi_period = 10;
。 - mode:获取指标线的类型,有MODE_MAIN(RVI主线)、MODE_SIGNAL(RVI信号线)。
- shift:获取对应指标线的索引/序号,0指当前最新K线所对应的值,然后从右往左分别是1、2、3、4…。
举例获取USDJPY三十分钟图表中最新0号K线对应的RVI主线和信号线值,参考代码:
double USJPYRVI_0 = iRVI("USDJPY", PERIOD_M30, 10, MODE_MAIN, 0); // RVI主线
double USJPYRVISignal_0 = iRVI("USDJPY", PERIOD_M30, 10, MODE_SIGNAL, 0); // RVI信号线
如果你想获取多个周期的RVI和RVI信号线值,可以使用数组结合for循环来实现。例如,你可以创建一个数组来存储你关注的周期,然后使用for循环来遍历这个数组,获取每个周期的RVI值:
int periods[] = {5, 10, 15, 20, 30};
for (int i=0; i<ArraySize(periods); i++) {
double rvi_main = iRVI("USDJPY", periods[i], 10, MODE_MAIN, 0);
double rvi_signal = iRVI("USDJPY", periods[i], 10, MODE_SIGNAL, 0);
Print("The RVI main line value for period ", periods[i], " is ", rvi_main);
Print("The RVI signal line value for period ", periods[i], " is ", rvi_signal);
}
这段代码将会打印出每个你关注的周期的RVI主线和信号线值。
总的来说,RVI指标的编程并不复杂。只要理解了iRVI()函数的参数和使用方法,就可以灵活地在你的MT4编程中使用RVI指标。