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..?
向人们解释 mql5 并不容易。(就像编程书籍一样,90% 的人都不知道如何开始。例如,他们打开这本关于 C 语言编程的书,第一个 "简单示例 "就用很小的字体写了整整一页。在我的一生中,我只读过一本好的编程书,它可以教任何人编程。究其原因,这些书的作者可能都是优秀的程序员,但不幸的是,他们都是非常糟糕的老师。编程其实可以很简单,当我有更多时间的时候,我就会为MQL4 编程语言编写一个简单的教程来证明这一点。它适合所有人,甚至是完全的初学者。最大的错误是教人们语言的细节,他们的大部分工作应该是ctrl+C和ctrl+v,使用谷歌搜索命令,最重要的是--保持一切都非常简单。我懂 10 多种编程语言(我从 7 岁开始编程),但我仍然被这个 11KB 的 "简易示例"(!!!)的解释方式吓坏了。我想知道有没有真正的编程初学者通过这个例子学会了 MQL5。我很怀疑,如果有的话,一只手的手指就能数过来。
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..?
男人们也一样,我似乎找不到原因
我是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 的定义改为类似的值即可:
希望能帮到你。
我是mql5 编程 新手。
我想通过这个示例来学习,但我对建立指标末尾的循环有点迷茫。他到底在哪里给 day_n 变量赋值?
因为循环会检查day_n<day_t。程序如何知道 day_n 的值?
很棒的文章、
感谢分享