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

 
Artyom Trishkin:

存储文件夹: 文件 --> 打开数据文件夹 --> MQL4\Experts\Here.ex4

如果是这种情况,但EA在导航器中不可见,那么...恭喜你--你已经用完了导航仪中的可能程序。 你需要删除一些东西。不幸的是,MetaTrader4对导航仪能看到的程序数量有限制。我在创建大量指标时面临这个问题。为了不删除很多,我只是把代码复制到一个测试文件中,然后编译并运行它--我总是这样在一个文件中测试我需要的指标--删除文件内容,把新代码放进去,编译并测试--完成。然后是下一个--抹去文件的内容,在其中插入新的代码......,如此循环下去......。

谢谢你,我看看...我将在这里回信...在软件方面没有太多的...
 
Artyom Trishkin:

文件夹:文件 --> 打开数据文件夹 --> MQL4\Experts\Here.ex4

如果一切都相同,但EA在导航器中不可见,那么...恭喜你--你已经用完了导航仪中可能的程序。 你需要删除一些东西。不幸的是,MetaTrader4对导航器能看到的程序数量有限制。我在创建大量指标时面临这个问题。为了不删除很多,我只是把代码复制到一个测试文件中,然后编译并运行它--我总是这样在一个文件中测试我需要的指标--删除文件内容,把新代码放进去,编译并测试--完成。然后是下一个--抹去文件的内容,在其中插入新的代码......,如此循环下去......。

拷贝到数据目录中 - exps, indicators, scripts - 不够。在《导航仪》中......七月--不。

在我启动终端的文件夹里,它也是存在的。在 "导航仪 "中没有。




Artem - 谢谢你。我重新启动了终端 - 它就在那里。



 

我想创建一个数组,并把数值放在创建的数组中,但我想通过函数变量等来输入这些数值。 例如。

int q=8,w=9。

int mas[2]={q,w}.我们应该做的是mas[0]=q,mas[1]=w。有没有办法替代已经存储了必要计算的变量,并把它放到一个数组中? 是否可以用宏来做这件事?

 
Seric29:

我想创建一个数组,并把数值放在创建的数组中,但我想通过函数变量等来输入这些数值。 例如。

int q=8,w=9。

int mas[2]={q,w}.我们应该做的是mas[0]=q,mas[1]=w。是否可以通过替换已经存储了所需计算结果的变量来创建一个数组,并将其放入数组中? 是否可以用宏来做这件事?

本周早些时候,有人在"缺陷、错误、问题 " 主题中讨论了这个问题--结果是不可能的。

 
Igor Makanu:

你不能这样做,在本周初的"错误、错误、问题 " 主题中,有人讨论过这个问题--结果是没有。

我明白了。我见过有人在声明数组时用宏来分配列数,虽然在mql中通过变量初始化数组时传递列或行的值是被禁止的,但有人通过宏来做。这里的主题是https://www.mql5.com/ru/forum/95351。

#define ODD 5

双倍Max_D1[ODD]。

double Low_D1[ODD];

 
Seric29:

我明白了。我看到有人在声明数组时用宏来分配列数,虽然在mql中通过变量初始化数组时传递列或行是禁止的,但有人用宏来做。下面是主题https://www.mql5.com/ru/forum/95351。

#define ODD 5

双倍Max_D1[ODD]。

double Low_D1[ODD];

而这一行动的意义何在?: 一个数组可以用变量而不是常量进行初始化吗?- 答案是否定的。

你的宏将做手工工作,为数组的每个元素分配一个变量值,但这一点并没有改变

 
Igor Makanu:

以及这个行动的意义是什么? 你是如何提出这个问题的?: 一个数组可以用变量而不是常量进行初始化吗?- 答案是否定的。

你的宏将做手工工作,为每个数组元素分配一个变量值,但本质不会改变。

好吧,我认为有可能用它做一些事情。

 
Igor Makanu:

以及这一行动的意义? 你是如何提出这个问题的?: 一个数组可以用变量而不是常量进行初始化吗?- 答案是否定的。

你的宏将做手工工作,为数组中的每个元素分配一个变量值,但这一点并没有改变。

你能创建一个返回常量值的函数来解决这个问题吗?

 
Seric29:

能否创建一个返回常量值的函数来解决这个问题?

不,你不能

你混淆了初始化和赋值的概念;它们的本质是一样的,但使用的时刻(时间)是不同的;初始化是在你描述一个数组的字符串中--在那里你用常量初始化它,而赋值,当你在描述一个数组(数组元素)后的任何地方给它任意赋值时

我不知道如何解释你的要求,以及我为什么要写你不能

当使用数组时,没有你提出的这种问题,显然从写代码开始,你就没有假设使用数组,现在你只需要重写代码或为每个数组元素手动分配一个变量值即可。

有时,为了不使变量 "相乘",我可以使用数组,如果数组有3-4个以上的元素,在编写程序时混淆数组元素数量的危险性很高;我使用用#define设置的常量值--代码是可读的,你就不会犯错,像这样。

#define  open   0
#define  take   1
#define  loss   2
#define  profit 3
void OnStart()
  {
  double order[4];
  order[open] =  OrderOpenPrice();
  order[take] =  OrderTakeProfit();
  order[loss] =  OrderStopLoss();
  order[profit]= OrderProfit();
  }

也许我不明白你的问题的明确性。
塞里奇29

这样的问题,我想创建一个数组,并立即把值放在创建的数组中,但我想通过变量函数等来反馈这些值。 例子。

int q=8,w=9。

int mas[2]={q,w}.我们应该做的是mas[0]=q,mas[1]=w。是否可以通过替换已经存储了必要计算的变量来创建一个数组,并将其放入数组中? 是否可以用宏来做这个?

当描述一个数组时?- 需要用变量进行初始化吗?- 以上回答了2次

或将多个变量值分配给一个数组?- 答案也是不可能的,但由于无效的语法。

你不能在大括号中应用变量,即{1,2,3}--这将被编译器跳过,但{a,b,c}--你不能这样做,因为编译器会期望进行算术(逻辑)运算或运算符=(lvalue, rvalue)...所以,你应该研究语言的语法,但这可能不是关于语言的可能性。

 
Igor Makanu:

不,你不能。

你混淆了初始化和赋值的概念--它们的本质是一样的,但使用的时刻(时间)是不同的;初始化是在你描述一个数组的字符串中--在那里你用常量初始化它,而赋值是,在你描述一个数组之后,你在任何地方给一个数组(数组元素)赋值。

我不知道如何解释你的要求,以及我为什么要写你不能

当使用数组时,没有你提出的这种问题,显然从写代码开始,你就没有假设使用数组,现在你只需要重写代码或为每个数组元素手动分配一个变量值即可。

有时,为了不使变量 "相乘",我可以使用数组,如果数组有3-4个以上的元素,在编写程序时混淆数组元素数量的危险性很高;我使用用#define设置的常量值--代码是可读的,你就不会犯错,像这样。

嗯,是的,程序中声明的元素有一个混合使用。例如,我声明输入参数,从这些参数中我需要采取全局变量并查看它们,但有一个问题,输入参数不能是一个数组,第二个例子我写了一个函数并开始通过循环处理,这里也最好使用一个数组,我开始参数到一个数组,同样变量数组是不可能的,必须像你上面写的每个单元格中的一个值,第三个例子将很好,能够使用一个数组作为参数函数(这里他是萌芽状态)。至于用数组代替变量,是的,它使程序变得紧凑,我也是这样做的。在C++中,你可以在初始化的时候写进变量,也许在12以下的版本中不能,这里他们把它变得更便宜,导致了这样的后果。总的来说,我理解并感谢你的回答。

原因: