强力指数(Force Index)是由亚历山大·埃尔德(Alexander Elder)博士开发的一种量价合一的技术指标,主要用于衡量价格变动的力度。Force Index结合了价格、交易量和时间间隔,以揭示趋势的起点、终点和可能的反转。
要在MT4中安装Force Index指标,可以在MT4上方菜单栏依次点击-插入-技术指标-振荡指标-Force Index,在出来指标属性框中设置好相关参数后,点“确定”即可将Force Index插入到当前图表中。如下图所示:
在MT4平台上,获取Force Index指标数据可以使用iForce()函数。其函数结构如下:
double iForce(
string symbol, // 交易品种名称
int timeframe, // 图表时间周期
int period, // 指标计算的平均周期值
int ma_method, // MA平均方法
int applied_price, // 价格应用
int shift // 指标索引/序号
);
其中参数说明:
- symbol:交易品种名称,当前窗口货币对为 Symbol()。要自行定义参数,可以参考
input string symname = "XAUUSD"
之类。 - timeframe:图表周期,指一分钟 M1 到月线 MN1 共 9 个图表周期。要自行定义参数,可以参考用 int 或者 ENUM_TIMEFRAMES,如:
input ENUM_TIMEFRAMES Period_x = PERIOD_CURRENT
;0 和 PERIOD_CURRENT 都代表当前图表周期。 - period:指标计算的平均周期值参数,默认 13,要自行定义参数,用 int 就可以,如
input int force_period = 13;
。 - ma_method:MA平均方法,指简单移动平均(SMA)、指数移动平均(EMA)等。默认用的是 MODE_EMA,如果需要自行定义,可以用 int 或 ENUM_MA_METHOD 来定义参数,如:
input ENUM_MA_METHOD ma_method = MODE_EMA
;之类。 - applied_price:价格类型,指收盘价、最高价、最低价等。默认用的是 PRICE_CLOSE,如果需要自行定义,可以用 int 或 ENUM_APPLIED_PRICE 来定义参数,如:
input ENUM_APPLIED_PRICE APP_PRICE = PRICE_CLOSE
;之类。 - shift:获取对应指标线的索引/序号,0指当前最新 K 线所对应的值,然后从右往左分别是 1、2、3、4…,这种规则排序。
获取当前图表中从右侧开始第二个 K 线,也就是 1 号 K 线对应的 Force Index 值,参考代码:
double Force_1 = iForce(Symbol(), 0, 13, MODE_EMA, PRICE_CLOSE, 1);
跨图表获取黄金 XAUUSD 一小时 H1 图表中最新 0 号 K 线对应的 Force Index 值,参考代码:
double XAUUSDForce_0 = iForce("XAUUSD", PERIOD_H1, 13, MODE_EMA, PRICE_CLOSE, 0);
同样,我们可以获取美元兑日元 USDJPY 三十分钟 M30 图表中最新 0 号 K 线对应的 Force Index 值:
double USDJPYForce_0 = iForce("USDJPY", PERIOD_M30, 13, MODE_EMA, PRICE_CLOSE, 0);
如果要获取多个单位的 Force Index 指标的值,可以定义数组并结合 for() 循环来编写。例如,要获取最近五个单位的 Force Index 指标的值,可以这样编写:
double ForceArray[5];
for(int i=0; i<5; i++)
{
ForceArray[i] = iForce(Symbol(), 0, 13, MODE_EMA, PRICE_CLOSE, i);
}
总的来说,Force Index 指标的编程并不复杂,实际的外汇 EA 编程开发中根据需要演变 iForce() 函数的参数即可。