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

 
ANDREY:

我的理解是否正确,现在在mql4中,数组应该只用 函数来初始化

不一定,但最好用测试脚本来检查这种问题。

void OnStart()
{
   int arr_1[10] = {123};
   int arr_2[10] = {0,1,2,3,4,5,6,7,8,9};
   int arr_3[10];
   ArrayInitialize(arr_3,777);
   ArrayPrint(arr_1);   // 123   0   0   0   0   0   0   0   0   0
   ArrayPrint(arr_2);   // 0 1 2 3 4 5 6 7 8 9
   ArrayPrint(arr_3);   // 777 777 777 777 777 777 777 777 777 777
}
ANDREY:

Kovalev的教程说,你可以在声明数组 的同时初始化 它(就像我做的那样),而不需要任何特殊的函数。

在我的例子中,你的变量是arr_1 - 所以你可以用一个空值来初始化它!- 而如果是另一个,那么数组的第一个元素将是一个初始化值,其余的都是空值。

我认为教程建议你像我的例子arr_2那样初始化

 

下午。

你需要在你的EA中直观地看到它所使用的指标值。你不必完全按照它的样子来画。在每个蜡烛图上标记指标的点值就很足够了。我试图通过对象OBJ_ARROW 来做,发现锚点不能在对象的中心。它要么比物体高,要么比物体低。因此,这些点并不与指标的实际值相吻合。你能提出解决这个问题的办法吗?

通过OBJ_ARROW显示指标

 
Oleg Remizov:

下午。

你需要在你的EA中直观地看到它所使用的指标值。你不必完全按照它的样子来画。在每个蜡烛图上标记指标的点值就很足够了。我试图通过对象OBJ_ARROW 来做,发现锚点不能在对象的中心。它要么比物体高,要么比物体低。因此,这些点并不与指标的实际值相吻合。为这个问题提出一个解决方案。

创建一个包含所有必要指标的模板,并以测试者或专家顾问的名字保存它。

 
Alexey Viktorov:

创建一个包含所有你想要的指标的模板,并以测试者或EA的名称保存它。

不幸的是,该模板对我不起作用。有必要在设置中启用/禁用显示指标的功能,而绘图应直接从EA中完成。EA应该能够在一个文件中传输。

 
Oleg Remizov:

不幸的是,该模板对我不起作用。指示器显示功能应在设置中打开/关闭,而绘图应直接从EA中完成。我希望能在一个文件中转移EA。

这些都是奇怪的愿望。如果你想让你的EA工作,只是工作,那么把它作为一个资源附在上面就足够了,它将不需要任何显示,而且不需要指标文件就能工作。而如果你想要的正是显示,那么不给指标文件的意义何在?

 
Alexey Viktorov:

这是个奇怪的要求。如果你想让EA工作,只是工作,那么把它作为一个资源附在上面就可以了,没有指标文件它也能工作。如果你想看到确切的映射,不给指标文件有什么意义呢?

这并不是说我不想给一个指标文件。一个需要额外文件的专家顾问不能在市场上发布。事实上,把你工作所需的一切都放在一个文件里是很方便的。

此外,如果有几个指标缓冲区,我并不总是需要显示所有的指标缓冲区。例如,我有一个Ishimoku的指标。它有5条线,但只应选择其中一条在专家顾问中使用。我想只显示其中一个,而不是整个指标。

 
Igor Makanu:

不一定,但最好用测试脚本来检查这种问题。

你的变量在我的例子中是arr_1 - 所以你可以用一个空值来初始化!- 而如果是另一个,那么数组的第一个元素将是一个初始化值,其他的都是空的。

我认为教程建议你像我的例子arr_2那样初始化

谢谢你为我提供的宝贵信息。

 
Oleg Remizov:

这并不是说我不想给一个指标文件。一个需要额外文件的专家顾问不能在市场上发布。而在一般情况下,把工作所需的一切都放在一个文件里是很方便的。

此外,如果有几个指标缓冲区,我并不总是需要显示所有的指标缓冲区。例如,我有一个Ishimoku的指标。它有5条线,但只应选择其中一条在专家顾问中使用。这是我们想要显示的唯一一个,而不是整个指标。

那么,这些指标是作为市场的资源来使用的。但用户需要它做什么呢?没有人对开设职位 的原则感兴趣。如果你愿意,你可以在描述中描述整个策略。有人需要它吗?

 
Igor Makanu:


我想教科书上建议你像我的例子arr_2那样初始化

下面是Kovalev教科书中关于在声明数组的同时初始化它的内容

8.4.4 阵列初始化

一个数组只能用适当类型的常量来初始化。一维和多维数组用逗号隔开的一维常量序列来初始化。序列被括在大括号内。

int Mas_i[3][4] = { 0, 1, 2, 3, 10, 11, 12, 13, 20, 21, 22, 23 }

double Mas_d[2][3] = { 0.1, 0.2, -0.3, -10.2, 1.5, 7.0 };

bool Mas_b[5] = { false, true, false, true, true }

初始化序列 中可以跳过一个或多个常数。

在我看来,从教科书上看,当一个数组被声明时,整个数组被初始化为所有的数据,而不仅仅是数组的第一个元素。
如果我误解了教程,请你告诉我我误解了什么,我将不胜感激。

 
Alexey Viktorov:

嗯,这就是他们把指标作为市场的资源。但用户需要它做什么呢?没有人对开设职位 的原则感兴趣。如果你愿意,你可以在描述中描述整个策略。有人需要它吗?

根据我的观察,用户喜欢专家顾问在屏幕上显示各种信息:绘制箭头、线条、通道等,以展示 "人工智能 "的活跃程度)。

根据指标,专家顾问提供跟踪。我想把这个过程可视化,让用户可以看到带有StopLoss的虚线。

原因: