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

 
大家下午好。我不是一个很好的程序员,所以我不明白一些简单的事情。我有这样的问题:我必须在我的EA中选择被SL关闭的最后一笔订单。
 
Igor Makanu:

你不能把简单的任务复杂化!...说,我闲来无事就把新的酒吧 定义功能包装成一个类))))

说到点子上了。


这个想法很清楚,但它更正确 >= 在所有的可能性中

if((timer1++)>=Timer1) { timer1 = 0; Print("Timer №1"); }
if((timer2++)>=Timer2) { timer2 = 0; Print("Timer №2"); }
 
leonerd:

这个想法很清楚,只是更正确 >= 在所有的可能性中

没有检查,立即取消打印变量,看看是否有1个错误,然后要么你的版本,要么不归零,并给计数器timer1和timer2赋值=1。

作为一个选项,你也可以用这种方式试试。


if((++timer1)>=Timer1) { timer1 = 0; Print("Timer №1"); }
if((++timer2)>=Timer2) { timer2 = 0; Print("Timer №2"); }
 
Igor Makanu:

没有检查,立即解开变量,看看是否有1个错误,然后要么你的版本,要么不归零,并将值=1分配给计数器timer1和timer2。

然而,该方法当然不能保证有一定的周期性。一个定时器中的代码执行可能超过另一个定时器的时间。

 
leonerd:

然而,该方法当然不能保证有一定的周期性。一个定时器中的代码执行可能超过另一个定时器的时间。

你在哪里可以得到一个在Windows系统上保证的实时定时器?- 如果系统过载,就会出现延误。

在MQL中 - 如果你用复杂的计算方法重载了OnTick(),那么在它被执行之前,OnTimer()事件将不会发生。

也就是说,即使是MT4也足以进行复杂的计算,如果不是的话,则是MT5--它确实在C++的水平上工作,但缺乏性能通常与糟糕的计算算法有关--使用剖析器,不要在没有任何东西可以计算的地方,直到出现一个新的条形图,不要计算整个历史,如果你在最后1到3条上使用信号,只计算100条...有很多不同的版本

HH:与图形对象一起工作会降低一切速度,与字符串一起工作也会降低性能--理论上是这样,但最近我没有注意到,比如与时间转换函数一起工作--在剖析器中可以毫不含糊地看到,大量的时间都花在这里--我们尽量少使用这个代码片段

Профилирование кода - Разработка программ - MetaTrader 5
Профилирование кода - Разработка программ - MetaTrader 5
  • www.metatrader5.com
Профилирование — это сбор характеристик программы во время ее выполнения. При профилировании замеряется время выполнения и количество вызовов отдельных функций и строк в коде программы. При помощи этого инструмента программист может найти наиболее медленные участки кода и провести их оптимизацию. Профилирование можно проводить на обычном...
 
Igor Makanu:

以及在哪里可以保证在Windows系统上得到一个实时计时器?- 如果系统过载,就会出现延误

在MQL中也是如此 - 如果你用OnTick()加载了复杂的计算,那么在它被执行之前,OnTimer()事件将不会发生。

也就是说,即使是MT4也足以进行复杂的计算,如果不是的话,则是MT5--它确实在C++的水平上工作,但缺乏性能通常与糟糕的计算算法有关--使用剖析器,不要在没有任何东西可以计算的地方,直到出现一个新的条形图,不要计算整个历史,如果你在最后1到3条上使用信号,只计算100条...有很多不同的版本

HH:用图形对象工作会使一切都变慢,用字符串工作也会降低性能--理论上是这样,但最近我没有注意到,像用时间转换函数工作也是一种痛苦--显然,剖析器中的一切都可以看到,很多时间都花在这里--我们尽量少使用这部分代码

同意,标准计时器也不能保证什么。嗯,谢谢,我们会试一试。

 

下午好,亲爱的朋友们!

请告诉我,在MKL4中,是否可以在一个符号开仓的同时设置另一个符号的开仓?也许这样的问题已经讨论过了,那就给我一个链接。

谢谢你。

 
novichok2018:

下午好,亲爱的朋友们!

请告诉我,在MKL4中,是否可以在一个符号开仓的同时设置另一个符号的开仓?也许这样的问题已经讨论过了,那就给我一个链接。

谢谢你。

这个问题还没有完全提出来。
但一般来说--你可以。但不是同时,而是在这两种情况中的任何一种中顺序进行。
 
Artyom Trishkin:
这个问题的表述并不完整。
但在一般情况下,你可以。但不是在同一时间,而是在两种情况下连续进行。

这很好。我如何在代码中描述它?例如,如果条件正确,我在9:00开了一个英镑的买入头寸,我也开了一个欧元的买入头寸(在9:00)。

 
novichok2018:

很好。我如何在代码中描述它?例如,如果条件在9:00时已经形成,并且对英镑的买入被打开,那么对欧元的买入也被打开(在9:00)。

怎么打开的?开放的原因是什么?
原因: