股票量化软件:赫兹量化利用对象轻松制作复杂指标
第一个例子
在我们开始制作指标之前,我们先看看包含缓冲区数组的对象,其最基本形式是什么样子的:
class CIndicatorPlot { public: double array[]; };
它只有一个公开数组。 至于目前,重要的是它是公开的,如此我们就可以在将其设置为缓冲区,或设置/访问它拥有的数据(与任何其它指标一样)。
现在我们来处置指标:为了应用一些概念,我们将创建一个指标,该指标显示 10 个具有不同周期和平均值的 RSI。 我们将从属性、输入、和 OnInit 函数开始。
#property indicator_buffers 11 #property indicator_plots 11 input int firstPeriod = 6; input int increment = 2; CIndicatorPlot indicators[]; int handles[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit() { ArrayResize(indicators, 11); //--- indicator buffers mapping for (int i=0; i<11; i++) { SetIndexBuffer(i, indicators[i].array, INDICATOR_DATA); PlotIndexSetInteger(i, PLOT_DRAW_TYPE, DRAW_LINE); } for (int i=0; i<10; i++) PlotIndexSetInteger(i, PLOT_LINE_COLOR, clrRed); PlotIndexSetInteger(10, PLOT_LINE_COLOR, clrCyan); PlotIndexSetInteger(10, PLOT_LINE_STYLE, STYLE_DASH); PlotIndexSetInteger(10, PLOT_LINE_WIDTH, 2); ArrayResize(handles, 10); for (int i=0; i<10; i++) handles[i] = iRSI(NULL, PERIOD_CURRENT, firstPeriod+i*increment, PRICE_CLOSE); //---