Ошибки, баги, вопросы - страница 2858

 
Сергей Таболин:

Фильтры включены все.

В смысле "включены"? Если стоят галочки, значит соотв. проходы выбрасываются из таблицы. Фильтры нужно снять.

Попробуйте на других билдах.

[Удален]  
Stanislav Korotky:

В смысле "включены"? Если стоят галочки, значит соотв. проходы выбрасываются из таблицы. Фильтры нужно снять.

Попробуйте на других билдах.

Как раз наоборот! Если снимаю галочку - соответствующие проходы НЕ отображаются!

"Галочка" - значит показывать!
 

Подскажите варианты решения такой технической задачи.

Закрывается Терминал с работающими 20 советниками. Каждый из советников кушает около 5 Мб, если верить MQL-данным.


Однако, при запуске каждый из советников потребляет около 1 гига. Поэтому если запустить Терминал после закрытия, то сразу стартует 20 советников, и одновременное потребление подскакивает до 20 гигов.


Какие есть варианты после старта Терминала последовательно "запустить" советники, что работали перед закрытием Терминала до этого? На вскидку, нужно отслеживать потребление памяти Терминалом и, как только оно ниже определенной границы, разрешать "стартовать" очередному советнику. Однако, нужно еще определить - какому. Т.е. советники должны выстроиться по какому-то признаку в очередь.


В общем, какие мысли по возможной реализации?

 
fxsaber:

В общем, какие мысли по возможной реализации?

реализаций можно много придумать

но все равно сведется к задаче обмена данными между ЕА

самое простое - в начале каждого советника в OnTick() прописать проверку разрешения на инициализацию и саму инициализацию выполнять там же OnTick() - это позволит не восстанавливать чарты и потом запускать на них ЕА , да и сохранение перед закрытием ЕА возможно будет выполнить в OnDeinit()

ну а кто будет управлять этим зоопарком, не принципиально - или главный ЕА или сервис

 

В логе тестера

2020.09.28 00:41:09.491 wrong tester bar time
2020.09.28 00:41:09.491 history error 9 in undefined function

Что это значит?

 
Aleksey Vyazmikin:

В логе тестера

Что это значит?

Это значит, что при получении очередного значения m1 ohlc (или состояния бара при тестировании по ценам открытия) в поле time оказался 0

undefined function означает, что проблема произошла вне предопределённых функций (OnTick, OnTimer etc), то есть в основном цикле тестера

 
Slava:

Это значит, что при получении очередного значения m1 ohlc (или состояния бара при тестировании по ценам открытия) в поле time оказался 0

undefined function означает, что проблема произошла вне предопределённых функций (OnTick, OnTimer etc), то есть в основном цикле тестера

Весь день всё работало нормально, а потом это началось. Что я могу сделать, как пользователь?

 
Slava:

Это значит, что при получении очередного значения m1 ohlc (или состояния бара при тестировании по ценам открытия) в поле time оказался 0

undefined function означает, что проблема произошла вне предопределённых функций (OnTick, OnTimer etc), то есть в основном цикле тестера

Я не понимаю, у меня в коде ошибка или это ошибка в терминале? Стер всю историю - не помогло.

Добавлено:

Нашёл у себя функцию, отключение которой позволяет избегать ошибки, но в другом советнике эта функция работает корректно! Как так? Могу сбросить в личку.

Даже когда функция включена эта баговая, то  OnTick() полностью проходит на первом баре, а потом та ошибка.

На разных терминалах ошибка подтверждается.

Запустил по тикам - ошибки нет...

Но, странность в логе:

2020.09.28 17:22:22.327 2020.09.18 09:45:02   Test_01

По тикам если смотреть инструмент, то первый тик был ровно в 10:00, да и торговая сессия ещё закрыта в это время. Это в визуальном режиме, без галки первый принт приходит в 10 часов.

 
Igor Makanu:

самое простое - в начале каждого советника в OnTick() прописать проверку разрешения на инициализацию

Это и есть основная загвоздка задачи.
 
fxsaber:
Это и есть основная загвоздка задачи.

Попробуйте обратить внимание на ID графиков и по старшинству запускать. Но это не отменяет взаимодействие советников. Или сделать файл или может быть база SQLite с ID графиков в последовательности запуска.

Что-то типа, при первой инициализации, если в списке отсутствует Chart_ID() то он вносится в список. Если закрывается не по причине закрытия терминала, то из списка удаляется. Таким образом можно будет настроить взаимодействие советников.