AvgVM
- Göstergeler
- Sürüm: 1.0
- Etkinleştirmeler: 5
根据Volumes改编,跟踪市场活跃度,当成交量突破水平值时,就告诉你,市场已经开始大幅波动,你结合其他指标判断趋势方向,此时下单很容易获利,胜率较高,而在水平线下方,则是行情的睡眠期,即便你能获利,那你也得经受住反复的来回拉锯走势,这样的订单既耗时又耗精力。
//+------------------------------------------------------------------+
//| 迭代函数(前向遍历,与标准 MT5 MACD/Volume 指标一致) |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
int limit = rates_total - prev_calculated;
if(limit > 1) limit = rates_total - 1;
for(int i = limit; i >=0 ; i--)
{
// USDJPYm 等 m 类符号的 tick_volume 常返回 0,需回退使用真实成交量 volume[]
double currentVol = (double)tick_volume[i];
//double currentVol = (tv != 0.0) ? tv : (double)volume[i];
// 计算均线:需要连续 avm 根成交量(i 之后还需 avm-1 根,故 i+avm <= rates_total)
if(i <= rates_total- avm)
{
double sum = 0.0;
for(int j = 0; j < avm; j++)
{
double v = (double)tick_volume[i + j];
if(v == 0.0) v = (double)volume[i + j];
sum += v;
AvgBuffer[i] = sum / avm;
}
}
else
{
// 历史不足 avm 根,留空(属正常,前 avm-1 根无均线)
AvgBuffer[i] = 0.0;
VolAboveBuffer[i] = 0.0;
VolBelowBuffer[i] = 0.0;
continue;
}
