文章 "MQL5 简介:如何编写简单的EA 交易和自定义指标" - 页 5

 
Grzegorz Korycki:

向人们解释 mql5 并不容易。(就像编程书籍一样,90% 的人都不知道如何开始。例如,他们打开这本关于 C 语言编程的书,第一个 "简单示例 "就用很小的字体写了整整一页。在我的一生中,我只读过一本好的编程书,它可以教任何人编程。究其原因,这些书的作者可能都是优秀的程序员,但不幸的是,他们都是非常糟糕的老师。编程其实可以很简单,当我有更多时间的时候,我就会为MQL4 编程语言编写一个简单的教程来证明这一点。它适合所有人,甚至是完全的初学者。最大的错误是教人们语言的细节,他们的大部分工作应该是ctrl+C和ctrl+v,使用谷歌搜索命令,最重要的是--保持一切都非常简单。我懂 10 多种编程语言(我从 7 岁开始编程),但我仍然被这个 11KB 的 "简易示例"(!!!)的解释方式吓坏了。我想知道有没有真正的编程初学者通过这个例子学会了 MQL5。我很怀疑,如果有的话,一只手的手指就能数过来。

说得太对了。我是编码新手,我可以告诉您,您说得完全正确。我需要了解编码的结构。程序的布局。我一直在网上搜索如何让新手理解的教程。这是不可能的。有没有什么办法可以指导我找到这样的教程。我从 Youtube 下载的视频都是一样的。谢谢
 

Ibrahim Melssen:
I have copy paste the Expert Advisor and try to test it with Strategytester. But it doesn't make any trades. I am new to MQL5 and programming so maybe I just made a stupid mistake. It compiled without any errors. I'd really like the strategy! Anyone ideas why it doesn't run on strategytester..?

男人们也一样,我似乎找不到原因

 
Guin:

我是mql5 编程 方面的新手。


我想通过这个示例来学习,但我对建立指标末尾的循环有点迷茫。他到底在哪里给 day_n 变量赋值?


因为循环会检查day_n<day_t。程序如何知道 day_n 的值?



它又是如何计算出来的?让我们假设 rate_total = 10,并且还没有计算过的条形图。因此 prev_calculated = 0


day_t=time[0] (今天!因为是倒数)/PeriodSeconds......因为是从 1970 年开始计算,所以假设是从 10 天前开始计算。

所以 day_t=10.现在检查 dayt 是否大于 dayn。我不知道 dayn,但我知道 dayt=10。因为没有值,所以我会假设 dayn 为零。

那么 dayn 也就变成了 10。好的。

prev_calculated + 1= 1。

DayT=time[1](昨天)/period......记住,是从 10 天前开始计算......但现在只计算到昨天,应该是 9,对吗?

但现在 dayN < dayT 是假的。然后开始执行 else 表达式。好吧,我明白了。我明白了。


然后计算所有的 bu[] 和 bd[]。好的。当 prev < 总比率为假时,循环结束。

但是,当新的条形图出现,并且它再次变为 true 时,我会再次从零开始计算吗?还是从 10 开始,直接进入 else 部分?


谢谢!!!!

您需要将其分为两部分:

1 在第一个时间指标应用于图表时: prev_calculated =0 , i = 0, i++ 直到 i = rates_total,它退出循环(time[0] 是过去的,而不是现在的。)

2 新条形图开始:prev_calculated 将小于 rates_total,因此条件为真,循环将仅在该新条形图上运行

 

你好@Guin

我认为您的问题还没有得到正确的回答。如果您使用了示例中的代码,您可能会得到一个不可见的指标,它没有任何意义,您也无法在图表上看到它。这是因为代码从未经过此代码块:

if(day_n < day_t){
        day_n = day_t;
        h_day = high[i];
        l_day = low[i]
}

原因是没有手动将 day_n 设置为任何默认值,而且比较 day_n < day_t 的结果总是 false。调试器显示,day_n 在未明确设置时的值是 "2076449103"。

只需将 day_n 的定义改为类似的值即可:

int day_n = 0, day_t;


希望能帮到你。


Guin:

我是mql5 编程 新手。


我想通过这个示例来学习,但我对建立指标末尾的循环有点迷茫。他到底在哪里给 day_n 变量赋值?


因为循环会检查day_n<day_t。程序如何知道 day_n 的值?

 

很棒的文章、

感谢分享