OnCaculate事件因Tick的推送过来而触发,他有两种方式进行调用:
int OnCalculate(const int rates_total,//指标数组的全部元素个数
const int prev_calculated,//前一次计算完的指标数组的个数
const int begin,//指标数组最早的其实元素序号
const double &price[])//本指标计算需要用到的K线的单个数组
这里比较难理解的是这个price数组。其实这个price数组是由指标初始阶段的一个参数#property ndicator_applied_price来定义的。
定义的一般方式是:
#property indicator_applied_price PRICE_OPEN
上面的语句表示OnCaculate事件里使用的price数组是OPEN开盘价对应的数组。
如果不使用上面的语句对进行price数组进行指定,则默认price数组使用CLOSE收盘价的数组。
总结:可以看到上面这种OnCaculate事件的调用仅适合用于K线单个数组的技术指标的调用。
==============================
方式2:
int OnCalculate (const int rates_total, // размер входных таймсерий
const int prev_calculated, // обработано баров на предыдущем вызове
const datetime& time[], // Time
const double& open[], // Open
const double& high[], // High
const double& low[], // Low
const double& close[], // Close
const long& tick_volume[], // Tick Volume
const long& volume[], // Real Volume
const int& spread[] // Spread
);
方式二相对于第一种调用方式的不同在于:引入了K线所有对应的数值数组,这样可以全面使用K线对应的各种数据进行我们所需要的处理和操作。
暂无评论内容