错误、漏洞、问题 - 页 1394

 
Ilya Malev:

好了,下面是代码

我并不擅长使用指标,但这句话值得商榷

return(CopyBuffer(hnd, buf, index, 1, Arr)==1?Arr[0]:EMPTY_VALUE);

返回值

复制的数组元素 的数量,如果出错则为-1。

如果只有1个元素被复制,函数将返回它的值。 如果没有元素或有多于1个元素,函数将返回EMPTY_VALUE。

也许这样会更好?

return(CopyBuffer(hnd, buf, index, 1, Arr)>=1?Arr[0]:EMPTY_VALUE);
 
Ilya Malev:

好的,这里的代码是

纠正了这句话,似乎可以工作了))))

buffer2[i]=-MathRand()%5*Point();
 
Vladimir Pastushak:

纠正了这句话,似乎可以工作了 ))))

我最后自己也是这样调整的。但我想知道为什么他们改变了逻辑(在MT4中,刻度是好的,没有乘以点)。为什么没有可能使没有绘图的缓冲区(c DRAW_NONE)对图表比例 没有影响。

 
Vladimir Pastushak:

我对指标不是很在行,但这句话是有问题的

1.返回值 复制的数组元素数量 ,如果出错则为-1。

2.如果有1个元素被复制,函数将返回其值

声明1和2是矛盾的,你不觉得吗?
 
Ilya Malev:
声明1和2是矛盾的,你不觉得吗?

没有)))

1 它可以从1到极限

2只有当1个元素被复制时,如果2个或更多,它返回EMPTY_VALUE

在帮助中,它说

返回值

复制的数组元素 数量,或在错误情况下为-1。 在什么情况下,1个元素会被复制?

 
Ilya Malev:

我最后自己也是这样调整的。但我想知道为什么他们改变了逻辑(在MT4中,刻度是好的,没有乘以点)。为什么不画图的缓冲区(c DRAW_NONE)没有可能不影响图表比例

你不需要通过整个指标缓冲区。写作

for(int i=rates_total-MathMax(1, prev_calculated); i>=0; i--)

是完全不正确的。你有变量rate_total、 prev_calculated和指标偏移iStdDev在第一遍时,你需要填入空的索引。

指示灯转向

然后遍历指标缓冲区的其余索引(遍历意味着赋值)。

 
Karputov Vladimir:

你不需要通过整个指标缓冲区。入选

是完全不正确的。你有变量rate_total、 prev_calculated和指标偏移iStdDev在第一遍时,你需要填入空的索引。

然后遍历指标缓冲区的其余索引(遍历意味着赋值)。

在最初的版本中,我有一个函数,将所有的东西都填上零,其类型为

      for(int i=(int)SeriesInfoInteger(Symbol(), Period(), SERIES_BARS_COUNT)-1; i>=0; i--){
         buffer1[i]=0;
         buffer1[i]=0;
      }

在这种情况下,这并不重要。如果有空值,它们会在图表的开头,不会影响最末端的窗口比例。这里不是这样的,上面的同志已经想明白了。

 
Ilya Malev:

我最后自己也是这样调整的。但我想知道为什么他们改变了逻辑(在MT4中,刻度是好的,没有乘以点)。还有,为什么没有绘图的缓冲区(c DRAW_NONE)不可能影响图表的比例

下面是尝试的方法。

PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,EMPTY_VALUE);
plot_empty_value >>>
 
Vladimir Pastushak:

不)))

在什么条件下,1个元素会被复制?

是的)))

int  CopyBuffer(
    int       indicator_handle,     // handle индикатора
    int       buffer_num,           // номер буфера индикатора
    int       start_pos,            // откуда начнем 
    int       count,                // сколько копируем
    double    buffer[]              // массив, куда будут скопированы данные
    );
 
Ilya Malev:

是的)))

是的,那么你的线路是正确的。