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

 
Nikolai Semko:

Да, конечно, такой вариант тоже имеет право на жизнь. Спасибо!
Но, по сути, это тоже самое что и мой вариант под № 1 с периодичностью таймера 100 мс.

А не проще сделать эксперта с привязкой к символу на котором работает. Потом открыть все символы, и на каждый график применить шаблон с данным советником.

for(int i=PositionsTotal()-1;i>=0;i--)
     {
      if(PositionGetSymbol(i)==Symbol())
        {
         //Код
        };

     }
 
SEM:
А не проще сделать эксперта с привязкой к символу на котором работает. Потом открыть все символы, и на каждый график применить шаблон с данным советником.

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

 
Nikolai Semko:

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

Реализация.

Особенности языка mql5, тонкости и приёмы работы
Особенности языка mql5, тонкости и приёмы работы
  • 2018.01.28
  • www.mql5.com
В данной теме будут обсуждаться недокументированные приёмы работы с языком mql5, примеры решения тех, или иных задач...
[Удален]  
Nikolai Semko:
  1. через таймер c опросом всех символов. (можно, конечно, только опрашивать новое значение функции TimeCurrent(), но в этом случае погрешность будет равна 1 секунде, т.к. эта функция возвращает значение в секундах)

Я правильно понимаю, что других вариантов (более простых и изящных) не существует? Или (надеюсь) я не прав?

Миллисекундный таймер + SymbolInfoTick() получите время в миллисекундах.

 
Да , я уже давал эту ссылку на Вашу реализацию в 22214 сообщении. Повторюсь - считаю этот вариант пока самым разумным. И похоже,  что лучше реализации в плане минимальности нагрузки на процессор и актуальности получаемого момента нового тика просто не существует.
 
Nikolai Semko:
  1. через таймер c опросом всех символов. (можно, конечно, только опрашивать новое значение функции TimeCurrent(), но в этом случае погрешность будет равна 1 секунде, т.к. эта функция возвращает значение в секундах)

Я правильно понимаю, что других вариантов (более простых и изящных) не существует? Или (надеюсь) я не прав?

Миллисекундный таймер + SymbolInfoTick() получите время в миллисекундах.

Alexey Kozitsyn:

Миллисекундный таймер + SymbolInfoTick() получите время в миллисекундах.

Это все вариант 1. Я такую конструкцию(Миллисекундный таймер + цикл SymbolInfoTick() ) и имел ввиду. Функцию TimeCurrent()  я затронул, т.к. она возвращает "время прихода последней котировки по любому символу, доступного в окне "Обзор рынка", а не только по текущему символу, но к сожалению возвращает только секунды, что очень грубо для тиков.  
Объективно вариант с пользовательскими прерываниями все же гораздо рациональней, т.к. при нем не требуется организовывать цикл с дорогой функцией  SymbolInfoTick, причем постоянно, даже когда котировки спят, нагружая таким образом процессор в холостую. А так же потому, что погрешность вычисления прихода нового тика может равняться периодичности таймера и будут теряться все тики между выполнением OnTimer если таковых тиков было больше 1.
ЗЫ Речь про mql5. На mql4 пользовательские прерывания не работают должным образом. Поэтому для mql4 вариант только через таймер.
 
Nikolai Semko:
Да , я уже давал эту ссылку на Вашу реализацию в 22214 сообщении. Повторюсь - считаю этот вариант пока самым разумным. И похоже,  что лучше реализации в плане минимальности нагрузки на процессор и актуальности получаемого момента нового тика просто не существует.

В Сервисах будет нормальный функционал.

 
fxsaber:

В Сервисах будет нормальный функционал.

надеюсь... 

 

Терминал (1874) при переключении на другой торговый сервер перестает показывать (чарт или запрос) баровую историю кастомного символа. После перезагрузки Терминала история показывается. Стоит переключиться снова на другой сервер - ситуация повторяется.


Тиковая история не страдает при переключении торгового сервера. Там бага этого нет.

 
template <typename T>
class CLASS
{
public:  
  T Func() { return(0); }
};

class CLASS2 : public CLASS<int>
{
public:
  CLASS2()
  {
    this.Func(); // ALT+G в ME не производит переход на int CLASS<int>:Func()
  }
};

Так и должен себя вести ME?