Новая версия платформы MetaTrader 5 build 1595: доступ к ценовой истории - страница 10

 
Правильно ли понимаю, что статические массивы быстрее копировать через структуры, чем через ArrayCopy?
template <typename T>
struct ARRAY
{
  T Array[100];
};

void OnStart()
{
  ARRAY<int> Array1, Array2;
  
  Array1 = Array2;
}
 
MQL5-ошибка
#property strict

template <typename T>
struct ARRAY
{
  T Simple[100];
};

void OnStart()
{
  int ArraySimple[100];
  ARRAY<int> Array;

  Print(ArrayResize(Array.Simple, 10)); // MQL4: -1, MQL5: 10
  Print(ArrayResize(ArraySimple, 10));  // MQL4: 10, MQL5: 10
  
  Print(ArraySize(ArraySimple));        // MQL4: 10,  MQL5: 100
  Print(ArraySize(Array.Simple));       // MQL4: 100, MQL5: 100
}
 
Sergey Dzyublik:

Сделана защита от дурака, что бы избежать утечек на этапе написания.
Если у вас свой велосипед и ему мешает warning - придется писать примерно так:


Да видимо все таки придется перетряхивать весь код. Спасибо

 

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

Советник в тестере открывает позицию на первом баре новой недели, но цена исполнения получается почему-то не текущая, а close с прошлой недели. В случае если на выходных был гэп - разница цен очень велика. Вот посмотрите на скриншот, советник открывает позицию в понедельник, и закрывает во вторник, логика советника очень проста, чисто ради теста. На скриншоте например хорошо виден гэп на eurusd 24 апреля - цена исполнения почему-то получилась с предыдущей пятницы. Хотя судя по истории баров - даже спред был небольшим, такое большое проскальзывание невозможно.
Тестировал на MetaQuotes-Demo, в режиме реальных тиков, D1, хедж счёт, с января 2016 по сегодня.

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

Мне кажется в тестере что-то не работает.

Файлы:
 

скажите, почему выражение:

   string s_211   = "(" + DoubleToString(0,1) + "%)";

выводит в журнал такую запись:

2017.05.04 10:07:15.617 (EURUSD,M5)     (9223372036854775808.0%)


значения:

2017.05.04 10:18:21.590    tb=99281.36 p0=-2.35 p210=-2.35 r211=2.454107253666918e-3151


в то время как:

s_211=DoubleToString(r211,1);
   Print(s_211);

выводит как положено 0.0

 
Vladimir Karputov:


Я не первый раз сталкиваюсь с ситуацией, когда при обновлении или переключении к другому серверу из профиля слетают начисто индикаторы и советники. В итоге профиль становиться девственно чистым. Я даже где-то писал и просил - при ошибках НЕ УДАЛЯТЬ из профиля записанные параметры советников. 

Но имеем то, что имеем: не редка ситуация, когда после обновления советники вываливаются на инициализации или вообще вылетают. В итоге они также ВЫЧИЩАЮТСЯ из профиля и, как ранее говорил, профиль становится девственно чистым - в нём не остаётся и следа от настроек советников.

Поэтому я проста стал защищаться - создаю копию профиля и когда советники при обновлении вылетают - просто копирую из сохранённого профиля файлы графиков в текущий профиль. Я так уже привык и это намного безопаснее и нервы бережёт.


Вчера столкнулся с такой ситуацией,


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

Или когда ребенок нажимает кнопку выключния питания - и все терминалы закрываются принудительно!

после загрузки - загружается профиль, но с непоследними сохраненными данными.  

 
Vladislav Andruschenko:

скажите, почему выражение:

выводит в журнал такую запись:


в то время как:

выводит как положено 0.0

Не воспроизводится на 1596 билде (другого нет под рукой). Проверьте свой код
 
Rashid Umarov:
Не воспроизводится на 1596 билде (другого нет под рукой). Проверьте свой код


РЕШЕНО: Я два раза обьявил тип переменной. 

Спасибо.

билд 1596

функция расчета убытка по балансу в процентах. 

Баланс поставил 100 000 и убыток в 2 доллара () в процентах 0,002 %

но вот незадача, на график в Label выводится непонятная цифра.

при чем в МТ4 - та же самая формула, все одинаково, но выводится нормально. 

   if((tb-p0)!=0)double r211 = NormalizeDouble(((p210*100)/(tb-p0)),2);

журнал:

r211=4.240371962148508e-316 (string)r211=2.454106937464905e-315 DoubleToString(r211, 1)=0.0



на график вывожу уже полученную строку:

   string s_211   = "(" + DoubleToString(r211,2) + "%)";


получаю:



в комментарий та же цифра выводится:

Comment(s_211);


 

Файлы:
 
Vladislav Andruschenko:



Спасибо.

билд 1596

функция расчета убытка по балансу в процентах. 

Баланс поставил 100 000 и убыток в 2 доллара () в процентах 0,002 %

но вот незадача, на график в Label выводится непонятная цифра.

при чем в МТ4 - та же самая формула, все одинаково, но выводится нормально. 

журнал:



на график вывожу уже полученную строку:


получаю:



в комментарий та же цифра выводится:


 


Пожалуйста предоставьте минимальный код, который можно запустить. Не отрывки, а целостный файл, с минимум кода и в котором можно увидеть данную ошибку.
 
Vladimir Karputov:

Пожалуйста предоставьте минимальный код, который можно запустить. Не отрывки, а целостный файл, с минимум кода и в котором можно увидеть данную ошибку.
Выше прикрепил.