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

 
fxsaber:

Поможет, но давно не делаю инсталляцию. Достаточно всего двух exe-файлов.

один терминал для чистых библ поставить и обновлять

рабочий править под себя

BeyondCompare (или подобное в гугле) - сравнивать хоть файлы хоть каталоги на различия за 1 секунду. Вернуть к оригинальному коду любой кусок - 5 секунд.

Если сохранять каталоги оригинальных библ при выходе нового билда - то можно видеть внесенные исправления при каждом обновлении.

 
Kirill Belousov:

один терминал для чистых библ поставить и обновлять

рабочий править под себя

BeyondCompare (или подобное в гугле) - сравнивать хоть файлы хоть каталоги на различия за 1 секунду. Вернуть к оригинальному коду любой кусок - 5 секунд.

Если сохранять каталоги оригинальных библ при выходе нового билда - то можно видеть внесенные исправления при каждом обновлении.

Хорошая штука, спасибо!


А штатную поставку MQL5-папки хорошо бы выложить в кодобазу ZIP-архивом. И иметь возможность прямо из ME ее загружать и устанавливать, как и другие КБ-изделия.

 
Alexander:

Напишите в сервисдеск, будем смотреть.

Необходимо больше информации:

Спасибо

Предварительно могу сказать следующее:

1. На предыдущем билде всё работало хорошо (на каком именно билде сказать не могу, месяца 2-3 висел на сервере брокера)

2. На этом билде работают все режимы нормально, кроме "реальные тики". В режиме "реальные тики" зависает и оптимизация и одиночное тестирование.

Некоторое количество сделок советник успевает совершать, после чего тестер зависает. Профилирование показало, что всё время (почти) затрачено на отмеченное комментарием:

bool IsNewBar (string symbol, ENUM_TIMEFRAMES timeframe, bool exact, long &time)
{
  long currentTime = SeriesInfoInteger (symbol, timeframe, SERIES_LASTBAR_DATE); // все тормоза тут!

  if (exact)
  {
    if (time == 0)
    {
      time = currentTime;
      return (false);
    }
    else
    {
      if (currentTime > time)
      {
        time = currentTime;
        return  (true);
      }
    }
  }
  else
  {
    if (currentTime > time)
    {
      time = currentTime;
      return  (true);
    }
  }

  return (false);
}
//——————————————————————————————————————————————————————————————————————————————
Сервер RoboForex-MetaTrader 5. Пробовал на других серверах - аналогичная проблема.
 
Renat Fatkhullin:

Проверим запуск по Ctrl+F5.

Повторный запуск срабатывает, так как скорее всего агент бывает активен после первого вызова и висит в фоне несколько минут активированный в ожидании следующей задачи.

1703 - актуально.

 
fxsaber:

1703 - актуально.

Еще не добрались, стоит в списке.

 

Подскажите алгоритм (код не интересует, важна схема) следующего:

стоит задача получить минутные интервалы для дальнейших расчетов на срочной секции MOEX за период в несколько контрактов, пока делаю так:

1. определяю границы требуемого диапазона

2. перебираю этот диапазон с дискретизацией 1 минута и запоминаю текущий контракт и время

3. создаю массив уникальных контракт-время

4. разбиваю полученный в п.1 диапазон на диапазоны в границах каждого элемента массива из п.3

5. запрашиваю минутные интервалы в цикле с дискретизацией по числу элементов в п.3

6. склеиваю полученные массивы минутных интервалов

почему пошел по такому пути, в Splice бывают пропуски минутных баров, при чем даже в свежих диапазонах

PS. если кто предложит более оптимальный алгоритм, буду благодарен
 
Comment(NULL); // 'NULL' - expression of 'void' type is illegal
 
fxsaber:
Print(NULL); // 'NULL' - expression of 'void' type is illegal
Alert(NULL); // 'NULL' - expression of 'void' type is illegal
 

Обращаюсь в цикле к функции CalculateOptimization() для расчетов с использованием Alglib

#include <Math\Alglib\alglib.mqh>
#define BENCH(A)                                                              \
{                                                                             \
  const ulong StartTime=GetMicrosecondCount();                              \
  A;                                                                          \
  Print("Time["+#A+"] = "+(string)(GetMicrosecondCount()-StartTime)); \
  }




BENCH(
   for(int n=1; n<=num_combos; n++)
     {
      CalculateOptimization(n);
      if(error) return;
     }
)
2017.12.17 09:42:05.242 Model USDCHF,H1: Time[for(intn=1;n<=num_combos;n++){CalculateOptimization(n);if(error)return;)] = 8835

А в профилировщике как-то странно считается время:


МТ4/5

При увеличивающемся числе итераций цикла тайминг по классу начинает превышать общее время выполнения программы

и далеко не совпадает с реальным таймингом

2017.12.17 10:15:34.297 Model USDCHF,H1: Time[for(intn=1;n<=num_combos;n++){CalculateOptimization(n);if(error)return;)] = 435486

Так задумано или с писать в СД?

 

Не могу изменить баланс на счете.Когда открываю демо счет в Metatrader(скачанный с оф.сайта),ставлю 3000 eur,плечо 1 к 5, показывает баланс 50 000.Через Ava Metatrader вообще не выдает пароль и логин.