if(prev_calculated==0)start=均线大周期-1;prev_calculated==0就是如果代码第一次执行,没有计算过的K线。那么start=均线大周期-1;要减1的原因在于价格数组是0开始的,使用均线大周期(程序设置的是10),而不是使用小周期的值(程序设置的是5)。这个跟库文件的计算方式有关:对比库文件和执行的代码
当新柱在载入指标的图表上出现时开始缓冲区的计算,黄色突出显示了直到需要计算的缓冲区的柱的编号,已计算的柱数的本地计数器就是用于它的,我们需要它是因为在新一天的开始时把prev_calculated常量重设为0, 尽管这样的重置是有必要的。 轴点指标的完整代码可以在Pivots.mq5文件中找到。 2. 基本策略 让我们根据所...
int start; 使用'if' 语句返回索引值(最低价、最高价、开盘价和收盘价),如果 prev_calculated 等于 0,则 start 值 = 1;或把返回的值(prev_calculated-1)分配给 start: if(prev_calculated==0) { haLow[0]=low[0]; haHigh[0]=high[0]; haOpen[0]=open[0]; haClose[0]=close[0]; start=1...
if(prev_calculated==0){haLow[0]=low[0];haHigh[0]=high[0];haOpen[0]=open[0];haClose[0]=close[0];start=1;}elsestart=prev_calculated-1;在主循环的 “for” 主体里进行计算,“for” 运算符由三个表达式和可执行运算符组成。这三个表达式将是:i=start: 对应起始位置。i<rates_total && !
//| 自定义指标迭代函数 | //+---+ int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], 我们来检查一下编写彩色指标的细节: #property indicator_buffers 2 ///指标缓存数量 #property in...
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[]) { //--- return value of prev_calculated for next call ...
否则,就用 _prev_calculated - 1. 索引只重新计算最后一个柱。 计算指标缓冲区值的循环由 for 运算符执行 - 为了每一个已重新计算的指标缓冲区值,我们调用其主体中的趋势判断函数 TrendDetector。因此,只覆写这个函数,我们就能为计算趋势方向实施不同的计算式。在本例中,指标其他部分事实上并没有改变(外界...
MQL5真是大势所趋啊,很高级,很智能
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[]){ // 声明变量。
intOnCalculate(constintrates_total,constintprev_calculated,constintbegin,constdouble&price[]) {return(rates_total); } 此函数的第一个版本的参数中包括 time[] 数组,而该数组中的元素则包含所有柱的时间。 使用第二个版本时,以及编制 EA 程序、安排对于从指标到其它时间框架上各柱时间的访问时,我们采用 Cop...