Новая версия платформы MetaTrader 5 build 1930: Плавающие окна графиков и .Net библиотеки в MQL5 - страница 6

 
fxsaber:

Так как данный инструмент является форексным, то его имя должно кодироваться совершенно определённым образом: 3 символа базовой валюты плюс 3 символа валюты котирования. Плюс возможен некий постфикс.

Как раз при следующей загрузке происходит проверка и замена.

Переназовите символ. Скажем, в EURUSD_TESTER, тогда тестирование будет возможно.

 

Билд 1931

2018.10.29 10:01:26.259 Trades  'xxxxx': cancel order #94667646 sell limit 2.00 BR-10.19 at 79.82
2018.10.29 10:01:51.529 Trades  'xxxxx': accepted cancel order #94667646 sell limit 2.00 BR-10.19 at 79.82
2018.10.29 10:02:01.291 Trades  'xxxxx': cancel order #94667646 sell limit 2.00 BR-10.19 at 79.82 placed for execution in 35038.319 ms

Уже 35 секунд....

 
Slava:

Так как данный инструмент является форексным, то его имя должно кодироваться совершенно определённым образом: 3 символа базовой валюты плюс 3 символа валюты котирования. Плюс возможен некий постфикс.

Как раз при следующей загрузке происходит проверка и замена.

Переназовите символ. Скажем, в EURUSD_TESTER, тогда тестирование будет возможно.

К сожалению, это не вариант. Делаю это не просто так

Основная причина здесь

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


Однако, почти всегда такая точность является излишней. Поэтому хочется обойти эту навязчивость/несовершенство MetaTrader 5 тестера. В MetaTrader 4 это сделать легко - там есть возможность поменять валюту счета прямо в тестере. MetaTrader 5 же лишен такой возможности.

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

// Создание копии символа для ускорения Тестера
#property script_show_inputs

#include <Symbol.mqh>

void OnStart()
{
  const SYMBOL Symb("TESTER_" + _Symbol); // Создали символ

  if (Symb.IsExist()) // Если символ создан
  {
    Symb = _Symbol; // Скопировали с основного символа все свойства и баровую историю (+ тиковую, если кастомный) - клон

    // Сделали валюты символа валютой счета
    Symb.SetProperty(SYMBOL_CURRENCY_PROFIT, AccountInfoString(ACCOUNT_CURRENCY));
    Symb.SetProperty(SYMBOL_CURRENCY_MARGIN, AccountInfoString(ACCOUNT_CURRENCY));

    if (Symb.On()) // Включили в Обзор рынка
      ChartOpen(Symb.Name, PERIOD_CURRENT); // Открыли график нового символа
  }
}


Результат


Таким образом достигается бесплатное ускорение Тестера/Оптимизатора.

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Библиотеки: Symbol

fxsaber, 2018.02.21 11:25

ЗЫ Замерил досконально на EURGBP. Выигрыш по времени получается в ~2 раза. Сделки полностью совпадают. Действительно, бесплатно!

 
prostotrader:

Билд 1931

Уже 35 секунд....

Конкретно по этой ситуации запросите все логи у брокера. Там сразу будет видно, где затык.

 
fxsaber:

Конкретно по этой ситуации запросите все логи у брокера. Там сразу будет видно, где затык.

Уже запрашивал.

Результат = 0

 
prostotrader:

Уже запрашивал.

Результат = 0

Ничего не прислали?

 
Во время Оптимизации в логе такие записи
pass 2072 returned result 29601.00 in 0:00:04.774

Чтобы понять, каким входным параметрам это соответствует, нужно идти во вкладку Оптимизации и искать соответствующий номер прохода.

Возможно ли в лог помимо номера прохода писать еще значения его входных параметров?

 
fxsaber:

Ничего не прислали?

Действительно, ничего не прислали

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

ФОРТС. Вопросы по исполнению

prostotrader, 2018.10.19 12:17

Михаил, добрый день!
 
Сегодня по транзакции: обработка операции MoveOrder заняла 473 микросекунды, операция DelOrder - 255 микросекунд.
Помочь с проблемой в терминалах и ПО сторонней разработки мы, увы не имеем технической возможности.

С уважением,
Тимур Бутаев

Техническая поддержка ПАО Московская Биржа
T +7 (495) 733-95-07
E help@moex.com

 ПАО Московская Биржа

 

 

--- Первоначальное сообщение ---
С: alas@mail.ru
Отправленные: 19.10.2018 10:51:53
По: help@moex.com
Копия: 
Тема: задержки (N1309578N)
 

Добрый день!

Вот уже почти 4 года я веду "войну" с задержками в терминале МТ5.
Сегодня, задерка исполнения торгового приказа, составила 17 СЕКУНД

2018.10.19 10:02:00.372 Trades 'ххххх': cancel order #94304144 sell limit 1.00 U500-3.19 at 2138.50
2018.10.19 10:02:17.448 Trades 'ххххх': accepted cancel order #94304144 sell limit 1.00 U500-3.19 at 2138.50
2018.10.19 10:02:17.449 Trades 'ххххх': cancel order #94304144 sell limit 1.00 U500-3.19 at 2138.50 placed for execution in 17072.105 ms
Просьба прислать тайминги по заявке 32841112183 (#94304144 - в терминале МТ5)


Михаил

Их надо просить MT5-логи, а не сколько биржа что-то там исполняла.

 
fxsaber:

К сожалению, это не вариант. Делаю это не просто так

Основная причина здесь


Однако, почти всегда такая точность является излишней. Поэтому хочется обойти эту навязчивость/несовершенство MetaTrader 5 тестера. В MetaTrader 4 это сделать легко - там есть возможность поменять валюту счета прямо в тестере. MetaTrader 5 же лишен такой возможности.

Поясните, почему лишён? Может я что-то не вижу или не понимаю?


 
Slava:

Поясните, почему лишён? Может я что-то не вижу или не понимаю?

На момент написания того комментария был лишен. Текущее состояние не всегда помогает. Например, есть режим Оптимизации "по всем символам из Обзора рынка". И если там даже только два символа EURUSD и AUDNZD, то, как минимум, один символ будет тянуть за собой тики конвертации. Что уж говорить, когда символов больше двух.


А так у меня десятки кастомных символов. Все имеют USD/USD. В таком режиме все летает, как надо. Но стоит перезагрузить терминал, настройки сбрасываются.

Более того, даже в одиночных режимах Тестера при переключении со штатного символа на другой штатный символ нужно почти каждый раз менять валюту счета Тестера. Забыл поменять - получил замедление Оптимизации в два раза.

С кастомными же USD/USD забыть ничего нельзя. Символ тянется только один всегда.

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