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

 
Andrey Sokolov:

问候。能否请你告诉我一些事情?

是否有可能获得一个变量的名称而不是它的值?例如,打印一个变量名称。

#define PRINTVAR(x) Print(" " ##x); Print(x)
void OnStart()
  {
      long anyvar=(long)TimeLocal();
      PRINTVAR(anyvar);
  
  }

结果。

2020.08.24 14:46:05.394    test (USDCHF,H1)     anyvar
2020.08.24 14:46:05.394    test (USDCHF,H1)    1598280365

可能是未发布的功能:-)类似于 "C",但还不能使用

 
Andrey Sokolov:

你需要获得变量本身的名称。

如果不知道名字,又没有任何区别特征,就无法做到这一点。例如,你可以得到所有等于5的变量的名称,并打印它们的名称,发现,打印。或所有字符串变量的名称。但无论如何,它都是一个变量枚举。

 
Maxim Kuznetsov 谢谢你
 
Andrey Sokolov:
Maxim Kuznetsov 谢谢


是的,这也是一个按名称选择变量的问题。

例如,有变量a1、a2、a3、a4、a5,等等。你也必须在这些变量中搜索,选择哪一个有 "a "和5,然后使用它。

那么几乎没有办法。变量名称只能从预处理程序中访问(#macros)。

我们必须改变内部逻辑,例如,使用对象哈希数组的名称来代替变量。然后,键和值都可以同时使用。或者在长期存储的情况下使用SQLite。或者把它们结合起来 :-)

但就是这样,没有算法的知识,建议也是白搭。

 
Andrey Sokolov:

是的,这也是一个按名称选择变量的问题。

例如,有变量a1、a2、a3、a4、a5,等等。我们也需要列举这些变量,选择哪一个有 "a "和5,然后使用它。

把名字写在一个数组中,然后翻阅数组。

 

大家好!我的问题是关于MT4测试器,mql4语言
,请告诉我在初始化数组时有什么错误。我创建了一个有750个元素的一维数组。我把所有750个元素的值都初始化为50.0。

这意味着在第一个和随后的刻度上,索引为0的第一个数组项 必须有50.0的值,索引为749的最后一个数组项必须有50.0的值。

事实上,事实证明,最后一个数组项的值为0。而第一个,应该是50.0。

这个问题。如何在初始化后使数组的所有值(包括最后一个)都有50.0的值

以下是我的代码

double S_L[750]={50.0};

空白的OnTick()
{
if (Day()==4&&Month()==1&&Year()==2010&&Hour()==0&&Minute()==0)

打印("=========================749======= " ,S_L[749]," =0= " ,S_L[0])。

}

日志的Print() 值的底部

2020.08.24 17:43:55.427 GBPUSD,M1: 在0:00:00.047(总时间0:00:02.422)中处理了52255个tick事件(1440条,53256条状态)。

2020.08.24 17:43:55.407 2010.01.04 00:00:53 tester(b.org) gbpusd,m1: =========================749======= 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:52 tester(b.ord) gbpusd,m1: =========================749======= 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:50 tester(b.ord) gbpusd,m1: =========================749======= 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:47 tester(b.ord) gbpusd,m1: =========================749======= 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:45 tester(b.ord) gbpusd,m1: =========================749======= 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:43 tester(b.ord) gbpusd,m1: =========================749======= 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:41 tester(b.ord) gbpusd,m1: =========================749======= 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:40 tester(b.ord) gbpusd,m1: =========================749======= 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:37 tester(b.ord) gbpusd,m1: =========================749======= 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:35 tester(b.ord) gbpusd,m1: =========================749======= 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:32 tester(b.ord) gbpusd,m1: =========================749======= 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:30 tester(b.ord) gbpusd,m1: =========================749======= 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:28 tester(b.orders) gbpusd,m1: =========================749======= 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:26 tester(b.ord) gbpusd,m1: =========================749======= 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:25 tester(b.ord) gbpusd,m1: =========================749======= 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:22 tester(b.ord) gbpusd,m1: =========================749======= 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:20 tester(b.ord) gbpusd,m1: =========================749======= 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:17 tester(b.ord) gbpusd,m1: =========================749======= 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:15 tester(b.ord) gbpusd,m1: =========================749======= 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:13 tester(b.ord) gbpusd,m1: =========================749======= 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:11 tester(b.ord) gbpusd,m1: =========================749======= 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:10 tester(b.ord) gbpusd,m1: =========================749======= 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:07 tester(b.ord) gbpusd,m1: =========================749======= 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:05 tester(b.ord) gbpusd,m1: =========================749======= 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:02 tester(b.ord) gbpusd,m1: =========================749======= 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00 tester(b.ord) gbpusd,m1: =========================749======= 0 = 0= 50

2020.08.24 17:43:55.385 2010.01.01 00:00:00 Tester(B.ORD.)测试开始。


谢谢你的帮助


Документация по MQL5: Основы языка / Переменные
Документация по MQL5: Основы языка / Переменные
  • www.mql5.com
Переменные должны быть объявлены перед их использованием. Для идентификации переменных используются уникальные имена. Описания переменных используются для их определения и объявления типов. Описание не является оператором. Индексом массива может быть только целое число. Допускаются не более чем четырехмерные массивы. Нумерация элементов массива...
 
ANDREY:

这是我的。

在哪里?))

 
Alexey Viktorov:

在哪里?)

在我编辑的帖子的顶部。谢谢你的答复。

 

ANDREY:

问题。我怎样才能使我的数组的所有值(包括最后一个)在初始化后都有一个50.0的值

int OnInit()
{
   ArrayInitialize(S_L, 50.0);
}
 
Igor Makanu:

谢谢你的提示。顺便说一下,我想澄清一下.....在Kovalev的教程中说,数组 可以与它的声明同时初始化(就像我做的那样),不需要任何特殊的函数。我知道科瓦列夫的教程有些过时了。问:我的理解是否正确,现在在mql4中,数组应该只用 一个函数进行初始化?

ArrayInitialize(S_L, 50.0)

谢谢你。

Документация по MQL5: Операции с массивами / ArrayInitialize
Документация по MQL5: Операции с массивами / ArrayInitialize
  • www.mql5.com
Функция ArrayResize() позволяет задать для массива размер с некоторым запасом для его будущего увеличения без физического перераспределения памяти. Это сделано для улучшения быстродействия, так как операции по распределению памяти...
原因: