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

 
EQU:

Сижу.. Смотрю..

Ни в жисть не поверю, что MQL5 и MQL4 писала одна команда..(((

MQ4 - полёт..

MQ5 - децкий лепет.. Никого не хотел обидеть - но..(((


Вот сколько интересно времени прошло с момента выхода MT4? Года через 2 и MT5 будет считаться "совершенной торговой системой"...
 
Dmitriy2:

 

Я не видел эту тему... да то же самое...

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

А вобще я просто поражаюсь такому подходу... Оказывается не в первый раз такой вопрос поднимается(уверен и не раз в дальнейшем будет возникать у других людей), и каждый раз "как в первый раз" тратить кучу своего и чужого рабочего времени что бы объяснить что нужно сделать что-бы этот баг обойти...

А нужно всего то добавить в ТЕСТЕР этот рекомендуемый в той ветке всего ОДИН Sleep(1000) при запуске эксперта.

Не должно быть так что бы оболочка подразумевала глюки, причем совершенно точно определенные, и эти глюки нужно было обходить в коде. Причем ТЕРМИНАЛ работает корректно и правильно, ОШИБОК НЕТ(в данной ситуации). А вот работа тестера ОТЛИЧАЕТСЯ от работы терминала.

 

ps EQU привет:) 

Ещё раз повторяю. Мы заранее порекомендовали, как следует работать с индикаторами, описали это в документации (кто-то просто не читает документацию).

Сразу после создания хэндла индикатора данных ещё нет. Они должны быть рассчитаны, причём совсем в другом потоке. То, что в клиентском терминале Вы сразу получаете данные, считайте это везением. В очередной раз Вы можете не получить данных.

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

PS Ну не надо на каждой итерации создавать хэндл по-новой - неправильно это с любых точек зрения.

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Типы индикаторов
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Типы индикаторов
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы индикаторов / Типы индикаторов - Документация по MQL5
 
stringo:

Ещё раз повторяю. Мы заранее порекомендовали, как следует работать с индикаторами, описали это в документации (кто-то просто не читает документацию).

Сразу после создания хэндла индикатора данных ещё нет. Они должны быть рассчитаны, причём совсем в другом потоке. То, что в клиентском терминале Вы сразу получаете данные, считайте это везением. В очередной раз Вы можете не получить данных.

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

PS Ну не надо на каждой итерации создавать хэндл по-новой - неправильно это с любых точек зрения.

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

   if(ХендлПараболик(ТФОткрытияпоSAR,SAR_stepОткрытияпоSAR,SAR_maximumОткрытияпоSAR,2)==true)
      ЗначениеПараболик=Параболик(ТФОткрытияпоSAR,SAR_stepОткрытияпоSAR,SAR_maximumОткрытияпоSAR,1);

//+----------------------------------------------------------------------------+
//Функция создания и проверки хендла Parabolic SAR                    MQL5     |
//+----------------------------------------------------------------------------+
bool ХендлПараболик(ENUM_TIMEFRAMES период,double step,double maximum,int бар)
  {
   Parabolic=iSAR(СИМВОЛ,период,step,maximum);
   for(int i=0;i<100;i=i+1)
     {
      if(BarsCalculated(Parabolic)>бар)
         return(true);
      Sleep(50);
     }
   return(false);
  }
//+------------------------------------------------------------------+


//+----------------------------------------------------------------------------+
//Функция Parabolic SAR                                               MQL5     |
//+----------------------------------------------------------------------------+
double Параболик(ENUM_TIMEFRAMES период,double step,double maximum,int бар)
  {
   double ЗначениеParabolic[1];
   CopyBuffer(Parabolic,0,бар,1,ЗначениеParabolic);
   return(ЗначениеParabolic[0]);
  }
 
Кто нибудь знает как получить индекс текущей торговой сессии для функции SymbolInfoSessionTrade(). В справке сказано только что Порядковый номер сессии, для которой нужно получить время начала и время окончания. Индексация сессий начинается с 0.
Документация по MQL5: Получение рыночной информации / SymbolInfoSessionQuote
Документация по MQL5: Получение рыночной информации / SymbolInfoSessionQuote
  • www.mql5.com
Получение рыночной информации / SymbolInfoSessionQuote - Документация по MQL5
 
 
Спасибо за подсказку.
 

Порекомендуйте пожалуйста. Нужна ли такая строка в начале советника

void OnTick()
{
   if(!MQL5InfoInteger(MQL5_TRADE_ALLOWED)) return;
Если нет, то в каких случаях она нужна?
 
gpwr:

Порекомендуйте пожалуйста. Нужна ли такая строка в начале советника

Если нет, то в каких случаях она нужна?

 

Эта функция проверяет включён ли вот этот флажок:


 
gpwr:

Порекомендуйте пожалуйста. Нужна ли такая строка в начале советника

Если нет, то в каких случаях она нужна?

 

Если торговля mql5-программе запрещена (например, Вы сняли чек-бокс разрешенности торговать данному эксперту при его запуске), то никакие торговые операции проводиться не будут. Сам советник будет работать как обычно. Проверьте сами.
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций - Документация по MQL5
 
Urain:

Эта функция проверяет включён ли вот этот флажок:

Нет, это сообщение о другой галочке, которая ставится при запуске эксперта или скрипта