Вопросы от "чайника" - страница 117

 
meneo:

Как такое может быть? (см расчет переменной k и значения всех переменных в режиме отладки) 

Да очень просто. lparam - типа long  (целое), wdpix - типа int (целое). Частное  lparam/wdpix - типа long (целое). Так как lparam < wdpix, то lparam/wdpix ==0.

См. Справочник MQL5 / Основы языка / Типы данных / Приведение типов  

 
meneo:

а как учесть промежутки между соседними барами на графике? они могут сильно разниться

если такое увидите, обязательно в сервисдеск про ошибку напишите.
 
Всем спасибо! )
 
Подскажите, а можно ли узнать какой эксперт запущен в другом окне?
 
meneo:
Подскажите, а можно ли узнать какой эксперт запущен в другом окне?
Напрямую вроде нельзя (если я чего не пропустил).  Но можно научить "отличать" своих от "чужих". Если в проекте замешано несколько программ, можно прописать им протокол обмена любезностями через кастомные сообщения. Щёб здоровались, шляпу снимали, выворачивали карманы и т.п.
 

а еще можно ли сделать перебор по перечислениям

как-нидь так?

for (int i = PERIOD_M1;i<=PERIOD_D;i++) 

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

а еще можно ли сделать перебор по перечислениям

как-нидь так?

for (int i = PERIOD_M1;i<=PERIOD_D;i++) 

Так точно не прокатит.

Насчёт вот так - надо попробовать.

for (ENUM_TIMEFRAMES i = PERIOD_M1;i<=PERIOD_D;i++) {}

Почему-то подозреваю что не заработает, хотя "теоретически" есть шанс. :)

 

Ну попробовал.

void OnStart()
  {
//---
   for (ENUM_TIMEFRAMES i = PERIOD_M1;i<=PERIOD_D;i++) { Print(EnumToString(i));}
  }
//+------------------------------------------------------------------+

Даже компилять не хочет.

'ForEnum.mq5'    ForEnum.mq5    1    1
'i' - unexpected token    ForEnum.mq5    15    25
'i' - undeclared identifier    ForEnum.mq5    15    25
'PERIOD_D' - undeclared identifier    ForEnum.mq5    15    42
'i' - parameter for EnumToString must be an enumeration    ForEnum.mq5    15    77
4 error(s), 0 warning(s)        5    1

А ведь казалось бы - ничего противозаконного.

 
MetaDriver:

Ну попробовал.

Даже компилять не хочет.

А ведь казалось бы - ничего противозаконного.


для работы с enum наверно все таки стоит добавить хотя бы такие функции как

enum::GetName и  enum::GetValue

ну и конструкцию языка foreach

тогда перебор будет автоматизирован самим MQL

 

А вот это, само сабой, работает.

#property script_show_inputs

input  ENUM_TIMEFRAMES P = PERIOD_D1;
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   for (int i = PERIOD_M1;i<=P;i++)  // { Print(EnumToString(ENUM_TIMEFRAMES(i)));}
    {
      string S=EnumToString(ENUM_TIMEFRAMES(i));
      if (StringGetCharacter(S,0)=='P')   

        {{{{ Print(S);  }}}}

    }

  }

И что характерно - не говорит что P - unexpected token  или там  undeclared identifier

А даже наоборот, как постоянному клиенту все удобства предоставляет



Странно всё ето .....  ;)