Новая версия платформы MetaTrader 4 build 1170 - страница 5

 
Интересное наблюдение

Forum on trading, automated trading systems and testing trading strategies

New MetaTrader 4 build 1170

aretz70, 2019.01.28 02:31

before my mt4 update to build 1170 or 1160 i had 8-9ms latency to my trade-server. after the update i had ~30ms. after reinstall build 1090, i have again 8-9ms...!
 
fxsaber:
Интересное наблюдение

Обычная ложная тревога, не забывайте принудительный рескан списка точек доступа делать.

 

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

Особенности языка mql4, тонкости и приёмы работы

fxsaber, 2019.02.07 15:50

Жестко ошибался на тему сортировки ордеров в истории. Сортировка по времени закрытия не всегда, к сожалению.

Проверочный скрипт

#property strict

void OnStart()
{
  datetime time = INT_MAX;
  
  for (int i = OrdersHistoryTotal() - 1; i >= 0; i--)
    if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
    {
      if (OrderCloseTime() > time)
      {
        Print(time);
        OrderPrint();
        
//        break;
      }
      
      time = OrderCloseTime();
    }
}


Почему такой элементарный код не накатал сразу для самопроверки - загадка.

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

Возможно, ордера хранятся на разных MT5-серверах, а потом при синхронизации такая ерунда выходит. Надеюсь, что это баг Терминала, а не торгового MT4-сервера. Ну и хотелось бы, чтобы в MTтакого не происходило со сделками.


 

Заметил такую неприятную особенность в MT4.

Если компилирую что-то в ME, то в Терминале проверяются все запущенные EX4 (даже те, что не компилировал) на предмет изменения. И если изменение произошло - перезапускаются.

Например

  1. Установил индикатор Indicator.ex4. Он крутится несколько суток на боевом счету.
  2. Взял на флешку MQL-папку и на другом компе программировал, включая изменение этого Indicator.ex4.
  3. Скопировал MQL-папку с другого компа обратно на боевой Терминал.
  4. В боевоем Терминале в ME создаю Test.ex4 и это вызывает автоматический перезапуск Indicator.ex4  в боевом Терминале. А этот индикатор планировался перезапуститься в выходные, чтобы было безопасно.

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

Не знаю, как с этим обстоят дела в MT5. Если так же, хотелось бы и там соответствующего исправления.

 

Версия 1170 сегодня сбросились настройки и пропали сохранённые шаблоны графиков. Состояние метатрейдера как при первой установке, нету данных счета и сервера через который совершались сделки.

Такое уже происходит не первый раз, на разных версиях и на разных компьютерах. Windows 7 раньше был, на планшете, компе, теперь на вин 10.

Сейчас установлен Windows 10 Pro, лицензия, последние обновления ставятся регулярно.

Есть какие нибудь варианты, что бы сохранялись настройки профиля со всеми объектами на графиках?

по умолчанию

 
Freeman FeNiX:

Версия 1170 сегодня сбросились настройки и пропали сохранённые шаблоны графиков. Состояние метатрейдера как при первой установке, нету данных счета и сервера через который совершались сделки.

Такое уже происходит не первый раз, на разных версиях и на разных компьютерах. Windows 7 раньше был, на планшете, компе, теперь на вин 10.

Сейчас установлен Windows 10 Pro, лицензия, последние обновления ставятся регулярно.

Есть какие нибудь варианты, что бы сохранялись настройки профиля со всеми объектами на графиках?


За шаблоны говорить не буду, ими не пользуюсь (Пусть Создатели не поймут меня неправильно. Шаблон создается, как основа творения. Именно на его основе создается профиль (шаблон - первооснова творения профиля) ). Но, нужно иметь свой профиль. Сохраните его под уникальным именем. Хорошо еще иметь архивную копию (иногда бывает очень нужно). До кучи, хорошо иметь в архиве боевые terminal.exe и metaeditor.exe.

 
fxsaber:

Заметил такую неприятную особенность в MT4.

Если компилирую что-то в ME, то в Терминале проверяются все запущенные EX4 (даже те, что не компилировал) на предмет изменения. И если изменение произошло - перезапускаются.

Например

  1. Установил индикатор Indicator.ex4. Он крутится несколько суток на боевом счету.
  2. Взял на флешку MQL-папку и на другом компе программировал, включая изменение этого Indicator.ex4.
  3. Скопировал MQL-папку с другого компа обратно на боевой Терминал.
  4. В боевоем Терминале в ME создаю Test.ex4 и это вызывает автоматический перезапуск Indicator.ex4  в боевом Терминале. А этот индикатор планировался перезапуститься в выходные, чтобы было безопасно.

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

Не знаю, как с этим обстоят дела в MT5. Если так же, хотелось бы и там соответствующего исправления.

При переинициализации установленного на чарт индикатора (например компиляция или смена параметров)  терминал отдает во все прочие индикаторы на этом чарте команду на полный пересчет через prev_calculated=0. Видимо в целях не допустить пропуска тиков. Получается не очень хорошо. MT4, 1170.

Если на чарт кинуть два индикатора с разными именами (например test-on-calc и test-on-calc1) с кодом что ниже

#property strict
#property indicator_chart_window

input bool bvar=false;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
  Print(MQLInfoString(MQL_PROGRAM_NAME)," do OnInit..."); 
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
   if(prev_calculated==0) Print(MQLInfoString(MQL_PROGRAM_NAME)," do full recalc...");
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+

и переинициализировать test-on-calc (смена параметров), то в журнале получим это:

2019.02.12 17:52:43.151    test-on-calc1 USDCAD,H1: test-on-calc1 do full recalc...
2019.02.12 17:52:43.151    test-on-calc USDCAD,H1: test-on-calc do full recalc...
2019.02.12 17:52:43.051    test-on-calc USDCAD,H1: initialized
2019.02.12 17:52:43.051    test-on-calc USDCAD,H1: test-on-calc do OnInit...
2019.02.12 17:52:43.035    test-on-calc USDCAD,H1: uninit reason 5

Проверил, в MT5 1985 такого нет.

 
Freeman FeNiX:

Версия 1170 сегодня сбросились настройки и пропали сохранённые шаблоны графиков. Состояние метатрейдера как при первой установке, нету данных счета и сервера через который совершались сделки.

Такое уже происходит не первый раз, на разных версиях и на разных компьютерах. Windows 7 раньше был, на планшете, компе, теперь на вин 10.

Сейчас установлен Windows 10 Pro, лицензия, последние обновления ставятся регулярно.

Есть какие нибудь варианты, что бы сохранялись настройки профиля со всеми объектами на графиках?


Скорее всего, установлено обновление, которое эквивалентно полной переустановке Windows. С Win 10 такое сплошь и рядом. Тут, к сожалению никто ничего не может исправить, кроме парней из Microsoft.

 
Sergey Tselikov:

При переинициализации установленного на чарт индикатора (например компиляция или смена параметров)  терминал отдает во все прочие индикаторы команду на полный пересчет через prev_calculated=0. Видимо в целях не допустить пропуска тиков. Получается не очень хорошо. MT4, 1170.

Здесь ничего криминального, т.к. обнуления prev_calculated - штатная фишка. Например, нажать Обновить на графике.

Описанный мною случай несколько другой - там идет снятие старого EX4 и постановка нового.

 
fxsaber:

Здесь ничего криминального, т.к. обнуления prev_calculated - штатная фишка. Например, нажать Обновить на графике.

Описанный мною случай несколько другой - там идет снятие старого EX4 и постановка нового.

Имхо как раз именно этот случай.

Криминальное в том, что нет основания для полного пересчета индикатора.

По факту получится, что при добавлении (компиляция=выгрузка старого+загрузка нового, изменение параметров, ...) на чарт еще одного любого индикатора - всем уже имеющимся будет отдана команда на полный пересчет. Зачем? Пустышка в примере не отнимает ресурсов на свой пересчет.

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