- 指标类型示例
- 指标属性和函数间的连接
- SetIndexBuffer
- IndicatorSetDouble
- IndicatorSetInteger
- IndicatorSetString
- PlotIndexSetDouble
- PlotIndexSetInteger
- PlotIndexSetString
- PlotIndexGetInteger
自定义指标
这是一组用来创建自定义指标的函数,这些函数不能用于编辑EA交易和脚本。
指标属性可以使用编译程序指令或使用函数来设定。若要更好的理解这点,建议您学习指标类型示例。
自定义指标中所有必要的运算都在预定义的OnCalculate()函数中,如果短时间使用OnCalculate()函数调用,如
int OnCalculate (const int rates_total, const int prev_calculated, const int begin, const double& price[]) |
而后rates_total参量包括price[]数组中的全部元素数量值,以输入参量传递到计算指标值中。
参量 prev_calculated 是先前调用的OnCalculate() 计算结果,允许为计算指标值组织一种节约算法,例如,如果当前值是rates_total = 1000, prev_calculated = 999, 足够为每个指标缓冲区计算值。
如果是关于输入数组价格的信息是不能利用的,它会为每个指标缓冲区计算1000个必要值。第一次调用OnCalculate() value prev_calculated = 0,如果price[]数组在某种程度上改变,case prev_calculated 会等于0。
begin参量表示价格数组原始值的数量,不包括计算数据。例如,如果Accelerator Oscillator 值(开头37个值没有计算)以输入参量使用,那么begin = 37。例如,列举一个简单指标:
#property indicator_chart_window
|
从"导航器" 界面离开到加速震荡指标窗口,我们认为该计算一定以先前指标的值为基础。
结果是,第一次调用prev_calculated的OnCalculate()值等于0,之后调用等于rates_total 值(直到增加价格图表的柱的数量)。
开始参量的值直接等于原始字节数量,加速指标的值不能根据指标逻辑值来计算。如果浏览自定义指标加速器.mq5的源代码,可以看到 OnInit() 函数线:
//--- 从被画的指数中设置第一柱
|
使用函数PlotIndexSetInteger(0, PLOT_DRAW_BEGIN, empty_first_values), 可以建立自定义指标的0指标数组中非存在第一值的编号,这样,我们不需要接收计算(empty_first_values). 因此,可以机械使用:
- 建立指标的原始值数字,不能用了计算另外自定义指标;
- 当调用另一自定义指标时,获得关于第一忽略值的数量信息,不需要进入计算逻辑值。