//--- 输入参数 input int order_time=0; // 订单开放时间
这两个测试器的问题都在于无法优化日期时间。因此才会出现这种被迫的丑陋。
我们早就应该解决这个问题了。
ZY OnTesterInit 可以帮助解决日期时间问题,但不是每个人都能做到。
这两个测试器的问题都在于无法优化日期时间。因此出现了这种被迫的丑陋现象。
我们早就应该解决这个问题了。
这里指的并不是日期时间--看:
if(time_now_str.hour==order_time && work==true && work_day==true)只是作者在变量名方面有问题
这不是日期时间--请看:
只是作者在变量名方面有问题我忏悔,我只读到了文章的引文部分。但日期时间问题确实存在。时间不仅应该通过 MQL 来优化,而且从人性化角度来说,也应该通过图形用户界面来优化。
如果其他人得到了检测结果怎么办?那就说不准了
是的,报告中没有提到这一点。这就是自定义报告强大的原因。尤其是在 MT5 中。
也许不用
//+------------------------------------------------------------------+ //| 专家勾选功能| //+------------------------------------------------------------------+ void OnTick() { //--- time_now_var=TimeCurrent(time_now_str);// 当前时间 switch(time_now_str.day_of_week) { case 1: if(mon==false){work_day=false;} else {work_day=true;} break; case 2: if(tue==false){work_day=false;} else {work_day=true;} break; case 3: if(wen==false){work_day=false;} else {work_day=true;} break; case 4: if(thu==false){work_day=false;} else {work_day=true;} break; case 5: if(fri==false){work_day=false;} else {work_day=true;} break; }
使用更简单的
//+------------------------------------------------------------------+ //| 专家勾选功能| //+------------------------------------------------------------------+ void OnTick() { time_now_var=TimeCurrent(time_now_str);// 当前时间 switch(time_now_str.day_of_week) { case 1: work_day=mon; break; case 2: work_day=tue; break; case 3: work_day=wen; break; case 4: work_day=thu; break; case 5: work_day=fri; break; } ...
正如人们常说的,这不是针对个人,只是一种愚蠢的习惯--当我看到一些效率低下的代码时,我无法视而不见。
我没有进一步研究代码。
也许不用
使用更简单的
正如人们常说的,这不是针对个人,只是一种愚蠢的习惯--当我看到一些效率低下的代码时,我无法视而不见。
我没有进一步研究代码。
谢谢您的评论。这个习惯很好,我自己有时也会这么做.....。
您的例子:
//+------------------------------------------------------------------+ //| 专家勾选功能| //+------------------------------------------------------------------+ void OnTick() { time_now_var=TimeCurrent(time_now_str);// 当前时间 switch(time_now_str.day_of_week) { case 1: work_day=mon; break; case 2: work_day=tue; break; case 3: work_day=wen; break; case 4: work_day=thu; break; case 5: work_day=fri; break; } ...
老实说,我不太明白,需要补充...因为在 "智能交易系统 "的输入变量中,您需要工作的星期被标记为 "true",如果您不需要在这一天工作,则标记为 "false"。
而变量 "work_day "会以 "true "或 "false "的形式发送答案。在你的例子中,变量变成了 "字符串 "类型,因此你必须再次进行比较。
因此,我支持代码优化,尽管在本 EA 中,这并不是优先事项。
这段代码是可以优化的:
//+------------------------------------------------------------------+ //| 专家勾选功能| //+------------------------------------------------------------------+ void OnTick() { //--- time_now_var=TimeCurrent(time_now_str);// 当前时间 work_day=true; switch(time_now_str.day_of_week) { case 1: if(mon==false){work_day=false;} break; case 2: if(tue==false){work_day=false;} break; case 3: if(wen==false){work_day=false;} break; case 4: if(thu==false){work_day=false;} break; case 5: if(fri==false){work_day=false;} break; }
代码量会减少,但工作速度不会降低......
也许您可以在函数中实现循环,这样代码量可能会减少,但处理速度会延长。
您也可以修改输入参数,然后修改代码,或许可以简化代码。
work_day=false; switch(time_now_str.day_of_week) { case 1: if (mon) work_day=true; break; case 2: if (tue) work_day=true; break; case 3: if (wen) work_day=true; break; case 4: if (thu) work_day=true; break; case 5: if (fri) work_day=true; break; }
您也可以提供这样的代码。但如果去掉 "else "操作符,源代码就只简化了一半。如果把 "if "运算符也去掉,只剩下 5 个赋值运算符,就会得到最佳变体。这就是建议的最佳变体。
switch(time_now_str.day_of_week) { case 1: work_day=mon; break; case 2: work_day=tue; break; case 3: work_day=wen; break; case 4: work_day=thu; break; case 5: work_day=fri; break; default: work_day=false; // в субботу и воскресенье не торгуем... }
但我完全不明白的是,变量会变成 "字符串 "类型。
新文章 在亚洲市场进行夜间交易: 如何保持盈利已发布:
这篇文章处理的是夜间交易的概念,以及使用 MQL5 来实现它们的交易策略。我们会进行测试并得出相应的结论。
在所有描述的例子中,我们可以看到在亚洲市场时段价格只在小范围内变化,看起来市场显示出“不确定性”。这样的变化可以认为是平盘。
我们可以看到在黄色长方形上的上下边界,它们在其中限制了价格波动的通道,很容易在已经形成的图表上画出一个通道,但是在实时中,我们不知道价格将会如何变化,而动荡性还是个问题。所以,我们应当怎样做呢?
我想可以通过使用布林带趋势指标来解决这个问题,因为它在平盘市场上可以显示出好的信号。
图 3. 在 EURUSD M30 上使用布林带
作者:Dmitriy Zabudskiy