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

 
x100intraday:

 Даже боюсь представить как. Вообще-то, нужен гибкий вариант, мне же не одну строку в неизменном виде нужно, а несколько разных формировать, в цикле... Если такое возможно, хотелось бы видеть пример поконкретнее...

 ...

Можно посложнее условия в #define ещё формировать в одну строку:

#define LOG(text,logs,html,type,spc,style)  if(type){if(logs){okLOG(text,spc);}if(html){okHTML(text,spc,style);}}  if(!type){if(logs){erLOG(text,spc);}if(html){erHTML(text,spc,style);}}

Не знаю правда, как Вашу задачу решить, не пробовал. Надо поэкспериментировать... ))

Может, если сформировать несколько подобных #define затем в цикле по условию выбирать, что Вам нужно.

Из строки в enum можно заранее подготовить функцию со switch. Но у Вас может быть очень большое кол-во вариантов, видимо, и этот способ не подойдёт...

О, вот ещё вариант! Можно генерировать файл mqh, который предварительно подключен к главному файлу. То есть должна быть функция, которая принимает строку и затем генерирует файл mqh. Файл будет всё время перезаписываться. Вот так точно получится.)))

 

 tol64, с варианта с #define меня прошибает холодный пот... Не спорю, что, наверное, можно вырулить таким способом куда надо, но это где-нибудь на Олимпиаде по программированию нестандартными способами - лишь бы достичь результата любой ценой. Вариант со switch я сразу отмёл по той же причине, о которой писал выше: не хочу заводить дополнительные немалые блоки кода из-за идеологически элементарной задачи. Мне кажется, должен быть совсем простой штатный способ... а то я уже начинаю чувствовать себя хакером, пытающимся взломать систему и добыть нужный результат изощрённым способом...

 В воздухе витает сутейный вопрос: возможно ли и как именно обратиться поэлементно к штатному списку тех же периодов таймфреймов, списку видимости объектов на таймфреймах и т. п. готовым спискам? Покамест я посредством грубой физической силы набиваю массив вручную и затем достаю оттуда поиндексно то, что мне нужно:

ENUM_TIMEFRAMES TFsArr[3]={PERIOD_M15, PERIOD_M20, PERIOD_M30);
 Доколе?! Может, можно сразу вынимать из предопределённого массива/списка эти элементы? Одно дело, если знаний у меня не хватает... но я ещё ни разу не встречал в чужом коде, чтобы кто-то обращался к предопределённым ресурсам без предварительной набивки подушки копиями перьев...
 
x100intraday:
 Каким образом я могу заранее подготовить строку с логическим(?) перечислением вроде: OBJ_PERIOD_M10|OBJ_PERIOD_H4, чтобы потом просто подставить в ObjectSetInteger() готовую переменную в виде склеенной строки? Пытался сперва склеивать символьно, а потом обёртывать в StringToInteger(), но не тут-то было... Ведь OBJ_PERIOD_...  - элемент типа enum, но имеющий флаговый hex-эквивалент типа int? Тогда такое перечисление больше смахивает на побитовую операцию "ИЛИ"...
Можно просто сложением, как-то так:
ObjectSetInteger(0,highlevel,OBJPROP_TIMEFRAMES,(int)OBJ_PERIOD_M10+(int)OBJ_PERIOD_H4);

т.е. сложением в инт переменную нужных енумов.

 

Нереально большие спреды:

На сервере AlpariFS пары GBPUSD 648, USDCHF 110

На сервере MQ-Demo GBPUSD 168, USDCHF 185

на остальных инструментах в пределах нормы.

Это что особенность тонкого рынка или баг MetaTrader 5 ???

ЗЫ теперь вроде фунт успокоился зато на канадце и австралийце спреды 88 и 61 соответственно. Швейцарец так и залип с 185 пункта спреда.

void OnStart()
  {
   while(!IsStopped()){Comment(SymbolInfoInteger(_Symbol,SYMBOL_SPREAD));Sleep(100);}
   Comment("");
  }
 
Swan:
Можно просто сложением, как-то так:

т.е. сложением в инт переменную нужных енумов.

 Откуда енумы вынимать? Они же вроде как вшиты в язык в виде предопределённых (зарезервированных) слов/значений. Не хочу заводить свой массив дубликатов енумов.
 
x100intraday:

Каким образом я могу заранее подготовить строку с логическим(?) перечислением вроде: OBJ_PERIOD_M10|OBJ_PERIOD_H4

Тогда такое перечисление больше смахивает на побитовую операцию "ИЛИ"...

оно не смахивает. оно такое и есть.

 Откуда енумы вынимать? Они же вроде как вшиты в язык в виде предопределённых (зарезервированных) слов/значений.

из енумов конечно же. в справку загляните

Не хочу заводить свой массив дубликатов енумов.

прийдется, хоть что нибудь, да завести. енумы, массивы, дефайны.

а то вы так дальше разглагольствования не продвинетесь

 
sergeev:

оно не смахивает. оно такое и есть.

из енумов конечно же. в справку загляните

прийдется, хоть что нибудь, да завести. енумы, массивы, дефайны.

а то вы так дальше разглагольствования не продвинетесь

 Так ежель заводить - тогда всё прекрасно, уже сделано. Но почему нельзя доступиться к хранилищу элементов списка, вшитых в язык в виде преопределённых имён и констант? Куда-то же разработчики упрятали все эти перечисления...
 
x100intraday:
 Откуда енумы вынимать? Они же вроде как вшиты в язык в виде предопределённых (зарезервированных) слов/значений. Не хочу заводить свой массив дубликатов енумов.

не понял вопроса)

ENUM_ы = целые числа, предопределённого массива/списка нет.

 
Swan:

не понял вопроса)

ENUM_ы = целые числа, предопределённого массива/списка нет.

ENUM_ы = это enum. Предопределенный список.
 
x100intraday:
Но почему нельзя доступиться к хранилищу элементов списка, вшитых в язык в виде преопределённых имён и констант? Куда-то же разработчики упрятали все эти перечисления...

чего??? вы же сами пользуетесь тем же ENUM_TIMEFRAMES.   это для вас что?

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