新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 1016

 
Oleh Fedorov:

你好。

难道没有人要对《图片报》的帖子 说些什么吗?

也许把它放在一个新的主题里是有意义的,这样会有更多人看到它?如果是这样,就请版主把它贴出来...或者自己创造一个?

是的,创建一个单独的主题。只要尽量选择正确的论坛版块来创建主题。

 

请给我一个忠告,初级的。阵列。

我正在学习,不明白。

double tick[2,2];

void OnTick()
  {
  tick[1,1] = Ask;
  tick[1,2] = NormalizeDouble(tick[1,1]*100*_Point,_Digits);
  OrderSend(Symbol(),OP_BUYSTOP,0.01,tick[1,2],3,0,0,"bs2",0,0,clrBlue); 
}

我在编译过程中没有得到错误,但当我在终端运行时得到一个关键错误

为什么在打印tick[1,1] 值的注释时,会把数字四舍五入到小数点后4位

为什么它不仅不能正确计算tick[1,2],而且还拒绝复制tick[1,1]单元格的数据tick[1,2]=tick[1,1];

最后,为什么在创建订单时,如果我引用一个存储价格的数组单元格tick[1,2] 来代替价格值,它就会认为这个变量同时是两个值(在提示中存在滑移值的跳动)

 
Gilmor:

请给我一个忠告,初级的。阵列。

我正在学习,不明白。

我在编译过程中没有得到错误,但当我在终端运行时得到一个关键错误

为什么在打印tick[1,1] 值的注释时,会把数字四舍五入到小数点后4位

为什么它不仅不能正确计算tick[1,2],而且还拒绝复制tick[1,1]单元格的数据tick[1,2]=tick[1,1];

最后,为什么在创建订单时,如果我引用一个存储价格的数组单元格tick[1,2] 来代替价格值,它就会认为这个变量同时是两个值(在提示中存在滑移值的跳动)

因为在OrderSend函数参数中,像所有其他函数一样,逗号起了作用。只要文本中出现逗号,它就会被当作传入值的分隔符。打勾[1][2]

 
Alexey Viktorov:

因为在OrderSend函数参数中,像所有其他函数一样,逗号起了作用。只要文本中出现逗号,它就会被当作传入值的分隔符。打勾[1][2]

谢谢你。也许你也能回答其他问题?:)
 
Gilmor:
谢谢你。也许你也能回答一些其他问题? :)

你能回答这个问题吗肉(2.55=367.12)

 
Alexey Viktorov:

你能回答这个问题吗,肉(2.55=367.12)

明白了。

double tick[2,2];

void OnTick()
  {
  tick[1,1] = Ask;
  tick[1,2] = NormalizeDouble(tick[1,1]*100*_Point,_Digits);
  }
double tick[2,2];

创建了一个顶行2个单元、底行2个单元的数组。

void OnTick()
  {
  tick[1,1] = Ask;
 Comment (tick[1,1])

结果。图表上的价格是0.84478,但顶部的评论显示为0.8448 ????为什么要四舍五入到小数点后4位?

double tick[2,2];

void OnTick()
  {
  tick[1,1] = Ask;
  tick[1,2] = tick[1,1];
  }

按照写入单元格的逻辑,我将数组中的单元格1的数据复制到同一数组的单元格2。其结果是一个关键的错误

为什么?

double tick[2,2];

void OnTick()
  {
  tick[1,1] = Ask;
  tick[1,2] = NormalizeDouble(tick[1,1]*100*_Point,_Digits);
  }

我们要在数组的单元格2中添加挂单的未来价格值。换句话说,我们想在卖出价上增加100点,然后在下单时在价格参数中指定数组的这个单元。但是当执行这个命令时,我们又得到了同样的错误。


为什么?

 
Gilmor:

按照写入单元格的逻辑,我将数据从数组的单元格1复制到同一数组的单元格2。其结果是一个关键的错误

为什么?

因为你不明白什么是数组,如果你读了帮助,而它没有工作,让我们 "在我们的手指上"

它是一个数组声明

double tick[2,2];

它告诉编译器保留 "4个内存单元" --> 2x2

而对最低元素的访问索引为0,即在你的例子中,数组tick[2,2],将只有这些数组元素

tick[0,0]tick[0,1)

tick[1,0]tick[1,1)

数组中有4个元素,对吗?....,但数组中最年轻的索引是0,而不是像你希望的那样(或者像你在口头计算时习惯的那样)从1开始。


因此,数组中最高级的元素将有一个数字:数组大小减去1

如果你超过了数组的尺寸,你会得到一个关键的执行错误--你的截图,即对于数组tick[2,2] 来说,没有这样一个数组元素的数字tick[2,2]

 

好吧,至少我承认自己是个初学者 :)

谢谢你。

好吧,"在你的手指上 "的事情是一种习惯。"在你的手指上,"这更容易理解。如果我向一个完全不懂这种语言的人解释,我就得用脚趾头来澄清=))

 
Gilmor:

好吧,至少我承认自己是个初学者 :)

谢谢你。

好吧,"在你的手指上 "的事情是一种习惯。"在你的手指上,"这更容易理解。而如果我向一个对这种语言零基础的人解释,我就得用脚趾头来澄清=))

初学者并不丢人,越是这样的分支越是有主题的--对于初学者来说,这也是为数不多的可以快速回答你问题的论坛之一;)

嗯,此外,请阅读帮助的开头https://docs.mql4.com/ru/basis/variables

 
Igor Makanu:

对于一个新手来说,这并不丢人,尤其是这是为数不多的能让你的问题得到快速回答的论坛之一;)

并在此基础上,阅读帮助的开头https://docs.mql4.com/ru/basis/variables

谢谢你。