[存档!]任何菜鸟问题,为了不使论坛变得混乱。专业人士,不要路过。没有你,哪里都不能去 - 4. - 页 311

 
drknn:


1.蜡烛变量没有在任何地方使用。

2.航线

的写法不正确。它位于循环中--在循环的每个迭代中,你创建一个新的变量Cls。而且你不需要它在那里。下面的文字就足够了。


1.我忘了指出,指标工作还没有完成。但在任何情况下,这都不应该以任何方式影响这个特定功能的运作。

2.起初就是这样的。但当它开始给我一个错误时,我想问题可能出在把数据从一个数组传入一个数组。

 
drknn:

并试试这句话

将其改为


没有帮助。错误仍然是一样的。
 
drknn:
还有一件事。如果你在数组维度之一声明了一个4格维度,你就不能调用Buffer_OHLC[4][]--重点是编号从0开始,而不是1。所以你最多可以调用Buffer_OHLC[3][];


零单元格也可以保持为空。教科书中也描述了一个类似的例子。那么,一般来说,即使改变数组的大小,错误仍然存在。

PS 该指标应从另一个工具中获取数据,并将其应用于当前工具。也许我在解决这项任务时做了一些根本性的错误?

 
silhouette:


空单元格也可以保持为空。教科书中也描述了一个类似的例子。嗯,一般来说,即使改变了数组的大小,错误仍然存在。

PS 该指标应从另一个工具中获取数据并应用于当前工具。也许我在解决这个问题时做了一些根本性的错误?

你根本没有正确使用二维数组

 

1.将第一个索引与第二个索引互换

2.使用ArrayResize

 
silhouette:


零单元格也可以保持为空。教科书中也描述了一个类似的例子。那么,一般来说,即使改变数组的大小,错误仍然存在。

PS 该指标应从另一个工具中获取数据,并将其应用于当前工具。也许我在解决这项任务时,在原则上做错了什么?


声明了 Buffer_OHLC[4][]数组。你正在寻址一个不存在的数组单元,即Buffer_OHLC[4][i]--在你声明的数组中没有这样一个单元。其中最大的一个是Buffer_OHLC[3][i]。

让我解释一下:你在数组的第二维中声明了4个单元格(比方说,某个列数无限多的表格的4行)。由于编号从零开始,所以可以访问的第一行是Buffer_OHLC[0][],第二行是Buffer_OHLC[1][],第三行是Buffer_OHLC[2][],第四是Buffer_OHLC[3][]。在你声明的数组中不存在 Buffer_OHLC[4][]这一行!

 
当i>0时,[3,i]也不存在 :)
 

不要介意刹车,这是我第一次处理多维数组 :)

drknn, 谢谢你!我理解你的评论

tara:

1.将第一个索引与第二个索引对调

2. 使用ArrayResize

谢谢你!我有了结果。但我还想澄清一下ArrayResize函数 和数组第一维的大小。

   int counted_bars=IndicatorCounted();
   int limit=Bars-counted_bars-1;
   if (limit>1) 
      limit=Bars-1;
   
   ArrayResize(Buffer_OHLC,limit-1);
   for(int i=limit; i>=0; i--)
    {
      Buffer_OHLC[i][0]=iOpen (Smb,Period(),i);
      Buffer_OHLC[i][1]=iHigh (Smb,Period(),i);
      Buffer_OHLC[i][2]=iLow  (Smb,Period(),i);
      Buffer_OHLC[i][3]=iClose(Smb,Period(),i);
      
      if(Line==true)
       {
        Buffer_ind[i]=Buffer_OHLC[i][3];
       }
    }
   return(0);

当使用limit-1时,有一个图形,但弹出4051 "函数参数的无效值 "的错误。

 
谁能解释一下,如何在一个柱状图的任何时间开立订单,并且只在下一个柱状图上开立下一个订单?
 
silhouette:

不要介意刹车,这是我第一次处理多维数组 :)

如果你把多维数组看成是别的东西,就会更容易定位。也就是说,如果你为阵列找到一个能抓住其本质的模型--这个模型更容易保持在你的眼前。

一个一维数组是直线上的对象(从零开始的坐标射线)。这种阵列的一个例子是商店里的队列。排在第一位的是站在现在买东西的人后面的那个人。买东西的人不能被称为排在第一位的人--他正在买东西--他是零。他在一维数组的零单元内。

二维数组是在一个平面(坐标平面)上的对象。一个例子是一个礼堂。这样那样的行,这样那样的地方。在这个模型中加入行零和座零,你就有了一个二维数组的精确模型。

三维数组是空间(坐标空间)中的一个物体--该物体的坐标由三个数值给出。它是一个立方体,有面。一个模型可以是一栋住宅楼,入口号为0,楼层号为0,单元号为0(包括所有其他)。只要在每个入口处,平面编号从零开始。

四维数组 与一维数组类似。它是一条坐标射线,其中所有的点都是三维数组。该模型是一条街道。坐标阵列将由以下数值指定:门牌号、入口号、楼层号、单元号。

如此这般,进入多维度--从街道到地区,从地区到城市,从地区到城市,从城市到国家,从国家到行星......。