Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 2084

 
intersheff_mql5 #:

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

В autochartist есть вот такое диалоговое окно. 


При клике на кнопке Вид происходит очень быстрый переход на другой инструмент в том же окне.
Если кто то знает как это реализовано на уровне кода подскажите пожалуйста , очень нужно.
Возможно ли как то ускорить функцию ChartSetSymbolPeriod (я использую ее при клике на кнопке в своей системе.Работает очень медленно) или может быть есть какие то другие решения без этой функции. 
Буду рад и благодарен.
Да что-ж за мода такая пошла. Зачем засерать весь форум своим вопросом? В одном месте отвечают и этого не достаточно? С первого раза не доходит?
 

 Добрый день! Подскажите, что это за конструкция. Давно уже подсмотрел на форуме. Думал разберусь со временем, но нет.

#define MODE_f1    0x1
#define MODE_f2    0x2
#define MODE_f3    0x4
#define MODE_f4    0x8

bool expert::create_strategy(ulong m, int om, int cm)
  {
   magic=m;
   open_mode=om;
   close_mode=cm;
   ...
  }
int OnInit()
  {
   ...
   my_strat[i].create_strategy(MAGIC, MODE_f1|MODE_f2|MODE_f4,MODE_c2|MODE_c3);
   ...
  }
expert::check_open()
  {
   ...
   if(  ((open_mode & MODE_f1)==0 || f1)
      &&((open_mode & MODE_f2)==0 || f2)
      &&((open_mode & MODE_f3)==0 || f3)
      &&((open_mode & MODE_f4)==0 || f4)
     )
     {
      open_pos();
     }
   ...
  }
//Тут всё очень просто. Если F1==false, то ( !F1 || f1) будет true независимо от условия f1.
//Т.е., если Fn==true, то условие fn проверяется, а если Fn==false, условие fn не проверяется.
//Соответственно, для (0, 1, 0, 1) будут проверяться только условия f2 и f4, и если они оба выполняются, будет выполнен код open_pos()
 
Galim_V #:

 Добрый день! Подскажите, что это за конструкция. Давно уже подсмотрел на форуме. Думал разберусь со временем, но нет.

Это моя конструкция. Там небольшая неточность в коменте, "Fn" следует читать как "MODE_fn".

MODE_fn соответствуют битам в машинном представлении числа.

При вызове конструктора я указываю (фактически, складываю) некоторые из них.

А далее проверяю эти биты, и если бит выставлен в единицу, соответствующее условие открытия позиции "fn" проверяется, а если сброшен в ноль, то не проверяется.

 
Galim_V #:

 Добрый день! Подскажите, что это за конструкция. Давно уже подсмотрел на форуме. Думал разберусь со временем, но нет.

Честно говоря, я сам таких конструкций не писал. Но похоже, что таким образом задано пространство имён "expert".

PS. Вероятно, я не понял о чём вопрос 🤷🏻‍♂️
 
JRandomTrader #:

При вызове конструктора я указываю (фактически, складываю) некоторые из них.


Вы их не складываете, а перемножаете. Угу.
 
Sergey Gridnev #:

Вы их не складываете, а перемножаете. Угу.

В чём будет разница, если я вместо "|" поставлю "+" ? ))

 
Да, это код не боевой, а схема для примера, чисто показать, как это используется.
 
JRandomTrader #:

В чём будет разница, если я вместо "|" поставлю "+" ? ))

Я про & говорил
 
Когда вопрос неконкретизирован, каждый сам находит в коде место, на которое надо ответить ;)
 
Sergey Gridnev #:
Я про & говорил

Так это уже в OnTick().

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