Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 1075

Alexey Viktorov:

Игорь, не затруднит описать теорию, как посчитать на сколько бит сдвинуть.

в справке написаны все ТФ которые может сгенерировать терминал https://www.mql5.com/ru/docs/constants/objectconstants/visible

константа OBJ_ALL_PERIODS это ‭1 1111 1111 1111 1111 1111‬ т.е все единички

если мы будем побитово сдвигать вправо, то слева будет заполнение нулями

считаем из справки кол-во ТФ которые перечислены выше OBJ_ALL_PERIODS , я насчитал 9 штук, возможно на один ошибся - проверить вроде не сложно


ЗЫ: можно сделать комбинацию сдвиг + ИЛИ, получим отображать все ТФ и тот который посчитали необходимым добавить, примерно так:


( OBJ_ALL_PERIODS >> 9 ) | OBJ_PERIOD_H4

вроде должно поучиться отображать все что ниже PERIOD_H1 и ТФ PERIOD_H4

Документация по MQL5: Константы, перечисления и структуры / Константы объектов / Видимость объектов
Документация по MQL5: Константы, перечисления и структуры / Константы объектов / Видимость объектов
  • www.mql5.com
Комбинация флагов видимости объекта определяет таймфреймы графика, на которых объект отображаем. Для установки/получения значения свойства OBJPROP_TIMEFRAMES можно использовать функции ObjectSetInteger()/ObjectGetInteger...
Igor Makanu:

в справке написаны все ТФ которые может сгенерировать терминал https://www.mql5.com/ru/docs/constants/objectconstants/visible

константа OBJ_ALL_PERIODS это ‭1 1111 1111 1111 1111 1111‬ т.е все единички

если мы будем побитово сдвигать вправо, то слева будет заполнение нулями

считаем из справки кол-во ТФ которые перечислены выше OBJ_ALL_PERIODS , я насчитал 9 штук, возможно на один ошибся - проверить вроде не сложно

Спасибо, но это не теория, а более конкретно о текущем случае. А как-же вы насчитали 9? Или вы считали только для mql4... ведь в mql5 периодов гораздо больше.

Alexey Viktorov:

Спасибо, но это не теория, а более конкретно о текущем случае. А как-же вы насчитали 9? Или вы считали только для mql4... ведь в mql5 периодов гораздо больше.

я считал из справки mql5 и ссылку дал на mql5!

это не теория, а практика! а Вы спорить любите - это факт! )))

ЗЫ: Ваш пример с вычитанием будет корректно работать, но нужно от чегонить "отталкиваться", я бы опять от OBJ_ALL_PERIODS  начал, вычел бы из него все ненужные периоды

OBJ_ALL_PERIODS   - OBJ_PERIOD_H2 - OBJ_PERIOD_H3 - OBJ_PERIOD_H4 - OBJ_PERIOD_H6 - OBJ_PERIOD_H8 - OBJ_PERIOD_H12 - OBJ_PERIOD_D1 - OBJ_PERIOD_W1 - OBJ_PERIOD_MN1

ЗЫ: выражение  OBJ_PERIOD_H2 | OBJ_PERIOD_H3 | OBJ_PERIOD_H4 | OBJ_PERIOD_H6 | OBJ_PERIOD_H8 | OBJ_PERIOD_H12 | OBJ_PERIOD_D1 | OBJ_PERIOD_W1 | OBJ_PERIOD_MN1

можно посчитать и использовать через #define

Igor Makanu:

я считал из справки mql5 и ссылку дал на mql5!

это не теория, а практика! а Вы спорить любите - это факт! )))

ЗЫ: Ваш пример с вычитанием будет корректно работать, но нужно от чегонить "отталкиваться", я бы опять от OBJ_ALL_PERIODS  начал, вычел бы из него все ненужные периоды

ЗЫ: выражение  OBJ_PERIOD_H2 | OBJ_PERIOD_H3 | OBJ_PERIOD_H4 | OBJ_PERIOD_H6 | OBJ_PERIOD_H8 | OBJ_PERIOD_H12 | OBJ_PERIOD_D1 | OBJ_PERIOD_W1 | OBJ_PERIOD_MN1

можно посчитать и использовать через #define

Когда спорят, не ставят вопросительный знак, а в моём тексте только вопросы.

А вот теперь я понял откуда 9. Оказывается сдвиг от максимального... я считал от начала.

Всё остальное на любителя.
Alexey Viktorov:

А вот теперь я понял откуда 9. Оказывается сдвиг от максимального... я считал от начала.

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

[Удален]
Igor Makanu:

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

Игорь, это не серьёзно. Если не можете аргументировать - то это просто пшик. Не хотите доказывать свою правоту, тогда лучше и вовсе не встревать в дискуссию...

Сергей Таболин:

Игорь, это не серьёзно. Если не можете аргументировать - то это просто пшик. Не хотите доказывать свою правоту, тогда лучше и вовсе не встревать в дискуссию...

хм, о чем речь? я должен доказать, что 

OBJ_ALL_PERIODS >> 9

выставит флаги в 1  у всех ТФ которые описаны в справке выше чем OBJ_ALL_PERIODS отсчитав 9 строк ?

займитесь азами двоичного счета, это очевидно, я не могу доказывать 2 х 2 = ? 

;)

[Удален]
Igor Makanu:

хм, о чем речь? я должен доказать, что 

выставит флаги в 1  у всех ТФ которые описаны в справке чем OBJ_ALL_PERIODS ?

займитесь азами двоичного счета, это очевидно, я не могу доказывать 2 х 2 = ? 

;)

Я не об этом.

"и с помощью логического NOT решить - инвертировать биты, но терминала нет - не помню как в MQL NOT побитовое сделать, а онлайн справку читать не хочу"

Я о том, что или уж или приведите доказательство, или не мутите воду )))

"Ошибиться может каждый. Признать ошибку может только сильный!". Если это ещё никто не озвучивал, то это моё мудростьё ))). Если уже кто-то говорил - я повторил мудростьё мудрого чела )))

Как прочитать большой файл в одну строку?

FileReadString()

When reading from a bin-file. the length of a string to read must be specified. When reading from a txt-file the string length is not required, and the string will be read from the current position to the line feed character "\r\n". When reading from a csv-file, the string length isn't required also, the string will be read from the current position till the nearest delimiter or till the text string end character.

Единственный флаг для всего файла это FILE_BIN, но он в MQL5 в отличие от MQL4 имеет ограничение в 4095 байт. Как еще можно получить большой текст из файла в одну строку?
Сергей Таболин:

Я не об этом.

"и с помощью логического NOT решить - инвертировать биты, но терминала нет - не помню как в MQL NOT побитовое сделать, а онлайн справку читать не хочу"

Я о том, что или уж или приведите доказательство, или не мутите воду )))

"Ошибиться может каждый. Признать ошибку может только сильный!". Если это ещё никто не озвучивал, то это моё мудростьё ))). Если уже кто-то говорил - я повторил мудростьё мудрого чела )))

все равно не понял Ваших претензий? Вы предлагаете мне Вам что то доказывать? - зачем? ))))

вот воспроизвел через NOT и проверил все обсужденные варианты:

void OnStart()
  {
//---
   uint TForiginal=OBJ_PERIOD_M1|OBJ_PERIOD_M2|OBJ_PERIOD_M3|OBJ_PERIOD_M4|OBJ_PERIOD_M5|OBJ_PERIOD_M6|OBJ_PERIOD_M10|
                   OBJ_PERIOD_M12|OBJ_PERIOD_M15|OBJ_PERIOD_M20|OBJ_PERIOD_M30|OBJ_PERIOD_H1;

   uint TFwithNOT=(~OBJ_PERIOD_H1&OBJ_PERIOD_H2)-1;
   uint TFwithShift=OBJ_ALL_PERIODS>>9;
   Print("TForiginal = ",TForiginal);
   Print("TFwithNOT = ",TFwithNOT);
   Print("TFwithShift = ",TFwithShift);
  }
//+------------------------------------------------------------------+

вариант с NOT работает с любыми ТФ, но заполнять по принципу (~ТФ_ниже которого отображаем & ТФ_на один старше от необходимого ТФ)-1;