Новая версия платформы MetaTrader 5 build 2615: Фундаментальный анализ и комплексный критерий в тестере стратегий - страница 31

 

Нормальное ли это поведение в пропусках, при получении остатка от деления?

void OnStart()
{
   ulong mcs = 5000000; //5 секунд
   ulong cnt = 0;
      
   while(!_StopFlag)
   {
      cnt = GetMicrosecondCount();      
      
      if( !(cnt % mcs) ) 
         PrintFormat("Прошло: %.3f сек", cnt / 1000000.0);      
   }
}
2020.10.05 07:13:48.928 TestScript (MNQZ20,M1)  Прошло: 5.000 сек
2020.10.05 07:13:53.928 TestScript (MNQZ20,M1)  Прошло: 10.000 сек
2020.10.05 07:13:58.928 TestScript (MNQZ20,M1)  Прошло: 15.000 сек
2020.10.05 07:14:03.928 TestScript (MNQZ20,M1)  Прошло: 20.000 сек
2020.10.05 07:14:08.928 TestScript (MNQZ20,M1)  Прошло: 25.000 сек
2020.10.05 07:14:13.928 TestScript (MNQZ20,M1)  Прошло: 30.000 сек
2020.10.05 07:14:18.928 TestScript (MNQZ20,M1)  Прошло: 35.000 сек
2020.10.05 07:14:23.928 TestScript (MNQZ20,M1)  Прошло: 40.000 сек
2020.10.05 07:14:33.928 TestScript (MNQZ20,M1)  Прошло: 50.000 сек
2020.10.05 07:14:38.928 TestScript (MNQZ20,M1)  Прошло: 55.000 сек
2020.10.05 07:14:43.928 TestScript (MNQZ20,M1)  Прошло: 60.000 сек
2020.10.05 07:14:48.928 TestScript (MNQZ20,M1)  Прошло: 65.000 сек
2020.10.05 07:14:58.928 TestScript (MNQZ20,M1)  Прошло: 75.000 сек
2020.10.05 07:15:03.928 TestScript (MNQZ20,M1)  Прошло: 80.000 сек
2020.10.05 07:15:08.928 TestScript (MNQZ20,M1)  Прошло: 85.000 сек
2020.10.05 07:15:13.928 TestScript (MNQZ20,M1)  Прошло: 90.000 сек
2020.10.05 07:15:18.928 TestScript (MNQZ20,M1)  Прошло: 95.000 сек
2020.10.05 07:15:28.928 TestScript (MNQZ20,M1)  Прошло: 105.000 сек
2020.10.05 07:15:33.928 TestScript (MNQZ20,M1)  Прошло: 110.000 сек
cnt
 
Roman:

Нормальное ли это поведение в пропусках, при получении остатка от деления?

Нормально.

 
fxsaber:

Нормально.

Мне думается, что не нормально.
Хотелось бы понять в чём причина.

 
Roman:

Хотелось бы понять в чём причина.

Вам надо почитать, как устроен GetMicrosecondsCount. Он зависит от частоты процессора, загрузки ядер CPU и т.д. Плавать может очень серьезно, вплоть до тормозов.

Поэтому GetMicrosecondsCount вовсе не обязан принимать в цикле все подряд значения. Результат и так довольно стабильный вышел.

 
fxsaber:

Вам надо почитать, как устроен GetMicrosecondsCount. Он зависит от частоты процессора, загрузки ядер CPU и т.д. Плавать может очень серьезно, вплоть до тормозов.

Поэтому GetMicrosecondsCount вовсе не обязан принимать в цикле все подряд значения. Результат и так довольно стабильный вышел.

К сожалению в документации нет этого пояснения. Благодарю.

 
Все время, пока разрыв связи не восстановится
2020.10.05 08:49:27.363 Network '': connection to RannForex-Server lost
2020.10.05 08:49:40.992 Network '': authorized on RannForex-Server through as.eu 6 (ping: 52.91 ms, build 2615)
2020.10.05 08:49:40.992 Network '': previous successful authorization performed from xxx on 2020.10.05 08:30:04
2020.10.05 08:49:41.078 Network '': terminal synchronized with RannForex Limited: 2 positions, 0 orders, 67 symbols, 0 spreads
2020.10.05 08:49:41.078 Network '': trading has been enabled - hedging mode
2020.10.05 08:49:42.912 Network '': scanning network for access points
2020.10.05 08:49:44.632 Network '': scanning network finished
2020.10.05 08:49:44.632 Network '': auto connecting to a better access point with 93 % quality (previous: 91 %)
2020.10.05 08:49:44.632 Network '': connection to RannForex-Server lost
2020.10.05 08:49:45.308 Network '': authorized on RannForex-Server through as.eu 5 (ping: 38.59 ms, build 2615)
2020.10.05 08:49:45.308 Network '': previous successful authorization performed from xxx on 2020.10.05 08:51:41
2020.10.05 08:49:45.360 Network '': terminal synchronized with RannForex Limited: 2 positions, 0 orders, 67 symbols, 0 spreads
2020.10.05 08:49:45.360 Network '': trading has been enabled - hedging mode


ACCOUNT_TRADE_ALLOWED выдает нулевое значение.

2020.10.05 08:49:27.410   ::AccountInfoInteger(ACCOUNT_TRADE_ALLOWED) = 0
...
2020.10.05 08:49:45.291   ::AccountInfoInteger(ACCOUNT_TRADE_ALLOWED) = 0


Правильно ли это? Советники Алертили, будто брокер мне запретил торговлю, а на самом деле был реконнект.


К сожалению, в этот момент не мониторил TERMINAL_CONNECTED.


ЗЫ Проблема обходится через TERMINAL_CONNECTED. Лучше не тратить время на этот пост.

 

По прежнему остается баг с функциями ParameterSetRange/ParameterGetRange: установка значений с помощью ParameterSetRange отрабатывает яко-бы успешно, но последующий вызов ParameterGetRange возвращает старые значения, как будто ParameterSetRange не вызывался. Таким образом, не представляется возможным узнать актуальные значения настроек оптимизации.

Прикладываю тестовый эксперт. Включаем вручную оптимизацию для параметра Fast (например, от 10 до 20 с шагом 1), а параметр Slow автоматически включается самим MQL-кодом, т.е. для него переключается режим в enabled=true и конечная величина диапазона ставится равной 2*20 (20 - берется из Fast).

В логе тестера читаем, что изменения вступили в силу:

2020.10.05 16:35:38.046 Tester  input parameter 'Slow' set to: enable=true, value=10, start=10, step=1, stop=40
2020.10.05 16:35:38.046 Experts optimization frame expert TestParams (EURUSD,Daily) processing started

Однако в логе эксперта, на основе значений, возвращаемых в MQL-код, получаем:

2020.10.05 16:35:38.046 TestParams (EURUSD,D1)  Enabled: true false
2020.10.05 16:35:38.046 TestParams (EURUSD,D1)  Trying to adjust: 10 10 1 20
2020.10.05 16:35:38.046 TestParams (EURUSD,D1)  Mismatch: got old values: false, 0 should be: true, 40
Основной сценарий использования, который данным багом нарушен: параметры подстраиваются в коде коммерческого эксперта, а анализируются в коде коммерческой библиотеки, подключенной к этому эксперту. Исходные коды у продуктов, разумеется, разные.
Файлы:
 

In the German forum someone asked about the option to sort the products in the market for special offers and bargains. I think this could motivate some people to buy.

На немецком форуме кто-то спросил о возможности сортировки продуктов на рынке для специальных предложений и сделок. Я думаю, что это могло бы мотивировать некоторых людей на покупку.

Like that(?): / Вот так(?)


 
Carl Schreiber:

In the German forum someone asked about the option to sort the products in the market for special offers and bargains. I think this could motivate some people to buy.

На немецком форуме кто-то спросил о возможности сортировки продуктов на рынке для специальных предложений и сделок. Я думаю, что это могло бы мотивировать некоторых людей на покупку.

Like that(?): / Вот так(?)


Это вряд ли, потому что в Маркете нет понятия спец.предложения (автор оговаривает и реализует условия подручными средствами).

Зато вот что давно стоило бы добавить, так это закладку для Обновленных продуктов. В принципе не понятно, почему её нет, так как она является полным аналогом новых продуктов (такая закладка есть), но только в разрезе новых версий.

 

Если скопировать terminal64.exe в другую папку и запустить там, то выдает в лог такое.

2020.10.07 08:38:03.923 Network demo account '35774636' was allocated on MetaQuotes-Demo
2020.10.07 08:38:04.002 Network '35774636': authorization on 78.140.180.201:443 failed (Service is not available)

Какой-то левый IP адрес оставили в дистрибутиве.

inetnum:        78.140.180.0 - 78.140.180.255
netname:        METAQUOTES
descr:          MetaQuotes Software Corp.
descr:          PO Box N-7776-348, Templeton Building, Lyford Cay
descr:          Nassau, Bahamas