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

 
Vladimir Karputov:

У меня такое бывает на моем ноуте когда на агенте продолжается считаться задача (например накосячил в коде с открытием позиции и бедный агент шлёт и шлёт торговые приказы - а ему в ответ запреты, а он продолжает бомбить; в итоге все агенты давно окончили расчёты, а этот бедняга всё молотит и молотит).

То есть кратко: на агенте висит задача с прошлого задания и он продолжает с неё сражаться.

У меня такое сегодня было напротив, после того как агенты не работали более суток.

Я думаю, что там загвоздка с авторизацией и обменом данных, т.е. если долго не передается советник/история, то происходит переконнект со стороны клиента, а агент ещё ждет поступление файлов.
 
fxsaber :

Почти три миллиона тиков и всего 16К OrderSend. Но эти торговые приказы занимают треть времени. А ведь на каждом тике идут расчеты в советнике.

Отсюда и вопрос. Могли бы Вы прогнать код OrderSend в профилировщике? В каком месте там такой затык?

Предполагаю, что если заменить штатную функцию на свою, то будет работать быстрее. Наверное, в OrderSend идут какие-то дорогостоящие проверки и телодвижения. Например, если в советнике (+ индикаторы) нигде нет History-функций и OnTrade*, то формирование соответствующих записей/событий - пустая трата времени.

Понимаю, что у некоторых один прогон длится многие минуты. Но бывают случаи, как выше, - единицы секунд, если уделять внимание скорости выполнения. А тут оказывается, что запускаю Оптимизацию на три часа, а из них час - это OrderSend, среднее время выполнения которой 69 мкс (см. скрин):

  • TRADE_ACTION_PENDING - 104 мкс.
  • TRADE_ACTION_SLTP/TRADE_ACTION_MODIFY/TRADE_ACTION_REMOVE - 68 мкс.

Привет,

Получили ли вы полезный ответ от Metaquotes?

У меня есть клиент, который хочет использовать MT5 Strategy Tester для повышения производительности. Стратегия EA может легко использовать режим «Только доступные цены». Однако бэктест, занимающий 1,5 секунды с MT4, выполняется через 5 секунд с MT5!

В стратегии используется трейлинг-стоп, и, похоже, 90% времени бэктеста используется OrderSend ():


 
Alain Verleyen:

Привет,

Получили ли вы полезный ответ от Metaquotes?

У меня есть клиент, который хочет использовать MT5 Strategy Tester для повышения производительности. Стратегия EA может легко использовать режим «Только доступные цены». Однако бэктест, занимающий 1,5 секунды с MT4, выполняется через 5 секунд с MT5!

В стратегии используется трейлинг-стоп, и, похоже, 90% времени бэктеста используется OrderSend ():

Все ответы были даны только в этой теме. Похоже, что-то сделали

MetaQuotes Software Corp.:
  1. Tester: Оптимизирована и ускорена работа тестера стратегий.

Сам решил через Virtual.


ЗЫ Покажите свой советник.

Библиотеки: Virtual
Библиотеки: Virtual
  • 2018.10.03
  • www.mql5.com
Статьи и техническая библиотека по автоматическому трейдингу: Библиотеки: Virtual
 
fxsaber:

Похоже, что-то сделали

1930

Core 1  pass 0 returned result 99753711.00 in 0:00:03.729
Core 1  pass 1 returned result 99753711.00 in 0:00:03.432
Core 1  pass 2 returned result 99753711.00 in 0:00:03.401
Core 1  pass 3 returned result 99753711.00 in 0:00:03.354
Core 1  pass 4 returned result 99753711.00 in 0:00:03.323
Core 1  pass 5 returned result 99753711.00 in 0:00:03.385
Core 1  pass 6 returned result 99753711.00 in 0:00:03.448
Core 1  pass 7 returned result 99753711.00 in 0:00:03.369
Core 1  pass 8 returned result 99753711.00 in 0:00:03.369
Core 1  pass 9 returned result 99753711.00 in 0:00:03.385
Tester  optimization finished, total passes 10
Statistics      optimization done in 0 minutes 35 seconds
Statistics      shortest pass 0:00:03.323, longest pass 0:00:03.729, average pass 0:00:03.419


Virtual

Core 1  pass 0 returned result 99753711.00 in 0:00:02.231
Core 1  pass 1 returned result 99753711.00 in 0:00:01.217
Core 1  pass 2 returned result 99753711.00 in 0:00:01.217
Core 1  pass 3 returned result 99753711.00 in 0:00:01.185
Core 1  pass 4 returned result 99753711.00 in 0:00:01.170
Core 1  pass 5 returned result 99753711.00 in 0:00:01.201
Core 1  pass 6 returned result 99753711.00 in 0:00:01.186
Core 1  pass 7 returned result 99753711.00 in 0:00:01.201
Core 1  pass 8 returned result 99753711.00 in 0:00:01.185
Core 1  pass 9 returned result 99753711.00 in 0:00:01.202
Tester  optimization finished, total passes 10
Statistics      optimization done in 0 minutes 13 seconds
Statistics      shortest pass 0:00:01.170, longest pass 0:00:02.231, average pass 0:00:01.299


Разница в три раза, как и было с 1881. Возможно, где-то в другом месте подкрутили. Но темы OrderSend, скорее всего, не касались.

 
fxsaber :

Все ответы были даны только в этой теме. Похоже, что-то сделали

Сам решил через Virtual.

Спасибо за Ваш ответ.
 
Ребята. Снова ошибка на сайте. 
Не могу с телефона ответить на сообщения в маркете. Не выпадает список. 
В отпуске, компьютера нет. 

Файлы:
 

При Оптимизации формируются пачки по 128 заданий для каждого Агента. А возможно ли формировать пачки другого размера?

Вот такая ситуация образовалась

Все Агенты, кроме одного, завершили свои задания. И окончания Оптимизации приходится ждать из-за одного Агента. А ведь можно же было добиться почти одновременного окончания работы всех Агентов.

Возьмем, например, как на скрине, 8 Агентов и 5376 заданий. 5376 / 8 = 672 задания. Значит, можно было формировать пачки размером 336 (=672/2), 168 (672/4) или 84 (672/8) заданий в каждой. И тогда все Агенты подошли бы к финишной черте одновременно.


Значение же 128 не учитывает этой кратности. Из-за этого время Оптимизации увеличивается при использовании нескольких ядер.

 

Захотел поставить оценку в КБ и не получилось. И судя по тому, что последние публикации вовсе не имееют оценок, то похоже, что эта проблема не только у меня.

Ну и уж заодно, хочется признаться, что система рейтинга (простое среднее арифметическое) заставляет желать лучшего. Ведь только что опубликованный код и имеющий одну оценку 5 звезд в рейтинге будет выше кода, который находится в KБ уже несколько лет и имеет 49 оценок 5 звезд и одну оценку в 4 звезды. Разве это справедливо ?

На мой взгляд, хотя бы такая формула была бы гораздо справедливее:

double R=Average*pow(N,0.1);

где:

R- искомый рейтинг

Average- средняя арифметическая оценка

N- число оценок.

 
fxsaber:

При Оптимизации формируются пачки по 128 заданий для каждого Агента. А возможно ли формировать пачки другого размера?

Вот такая ситуация образовалась

Все Агенты, кроме одного, завершили свои задания. И окончания Оптимизации приходится ждать из-за одного Агента. А ведь можно же было добиться почти одновременного окончания работы всех Агентов.

Возьмем, например, как на скрине, 8 Агентов и 5376 заданий. 5376 / 8 = 672 задания. Значит, можно было формировать пачки размером 336 (=672/2), 168 (672/4) или 84 (672/8) заданий в каждой. И тогда все Агенты подошли бы к финишной черте одновременно.


Значение же 128 не учитывает этой кратности. Из-за этого время Оптимизации увеличивается при использовании нескольких ядер.

В целом поддерживаю, но думаю, что правильней было реализовать возможность автоматической отмены задания агентам (оно уже реализовано при нажатии кнопки для запрета активности агента), если есть свободные агенты, а заданий раз в 5 больше и перераспределения снова заданий по всем агентам, в том числе удаленным.

 

Всем доброго дня! Прошу прощения за глупый вопрос. Ребята, подскажите, пожалуйста, как сделать так, чтобы при нажатии левой кнопкой мыши на button его свойство Pressed принимало значение true, а при отжатии - false. Сейчас ситуация такая, что при нажатии ничего не происходит, а а при отжатии Pressed меняется на противоположное.

Я так понимаю, что нужно переопределить обработчики событий CButton::OnMouseUp и CButton::OnMouseDown, только в каком месте это сделать, не представляю. Намекните, пожалуйста. Заранее спасибо!

Причина обращения: