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

 
comp:
Тогда прерывание расчета по событию не сделать.

ок. смотрите тогда в другую сторону.

Вы можете искусственно запараллелить - поместив второй индикатор на чарт.

И обращаясь к Глобальной переменной GlobalVariableSetOnCondition из обоих.

 
o_O:

ок. смотрите тогда в другую сторону.

Вы можете искусственно запараллелить - поместив второй индикатор на чарт.

И обращаясь к Глобальной переменной GlobalVariableSetOnCondition из обоих.

Не понял.
 
comp:
Не понял.

ставите второй индикатор сигнальщик, который посылает вам в основной индикатор события от ЧартЕвент как пользовательское + меняет состояние глобальной переменное например на время в мс

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

Если в ней время поменялось, значит пришло новое событие - и вы обрываете свой текущий расчет.

как то так.

---

Или в сигнальщике просто при каждом чартевенте меняете мс в гп, а в основном лишь контролируете его

вобщем - второй индикатор распараллелит

 

Здравствуйте! Подскажите новичку. Никак не могу разобраться с событием OnBookEvent. 

Если вызывать это событие из onTick() , то все работает. Если onTick() будет пустым, то ничего не работает. Я что-то никак не пойму, OnBookEvent вызывается при изменении в стакане, т.е это отдельный обработчик события, по сути так же как и onTick() вызывается при возникновении тика. Почему не работает?

Вот так все работает. Ну, как работает, печатает "Что нибудь" при возникновении тика, а не при изменении в стакане. Например, изменился объем заявок, по определенной цене, должен вызваться обработчик изменения в стакане OnBookEvent , но этого не происходит. Если onTick() оставить пустым, то даже печатать ничего не будет..

 int OnInit()

  {   

    if ( !MarketBookAdd( "RTS-6.16" ))

    {

      Print( "Error ",GetLastError() );

    }

    else

    {

      Print("Done");

    }

void OnDeinit(const int reason)

  {

MarketBookRelease("RTS-6.16");

  }

void OnTick()

{

OnBookEvent(_Symbol);

}

void OnBookEvent(const string &symbol)

  {

   MqlBookInfo book[];

   MarketBookGet("RTS-6.16", book);

   if(ArraySize(book) == 0)

   {

      printf("Failed load market book price. Reason: " + (string)GetLastError());

      return;

   }

 Print("Что-нибудь");

 
Только что попробовал на других инструментах, там все работает!!! Как такое может быть? Не работает только на Ртс!!!
 
вопрос снят, само все заработало О_о!
 

Ошибка в справке https://www.mql5.com/ru/docs/constants/structures/mqltraderequest

SL & TP Modification

Торговый приказ на модификацию уровней StopLoss и/или TakeProfit. Требуется указание 4 полей:

action

symbol

sl

tp

position

Добавили поле position но количество заполняемых полей осталось 4.
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура торгового запроса
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура торгового запроса
  • www.mql5.com
Стандартные константы, перечисления и структуры / Структуры данных / Структура торгового запроса - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Alexey Viktorov:

Ошибка в справке https://www.mql5.com/ru/docs/constants/structures/mqltraderequest

Добавили поле position но количество заполняемых полей осталось 4.
Алексей, сюда писать бессмысленно, надо заявку в севисдек. Заодно и к рейтингу + будет )
 
Alexey Volchanskiy:
Алексей, сюда писать бессмысленно, надо заявку в севисдек. Заодно и к рейтингу + будет )
Стар я уже стал за рейтингом гоняться:)))) Не исправят и не надо.
 
o_O:

ставите второй индикатор сигнальщик, который посылает вам в основной индикатор события от ЧартЕвент как пользовательское + меняет состояние глобальной переменное например на время в мс

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

Если в ней время поменялось, значит пришло новое событие - и вы обрываете свой текущий расчет.

как то так.

---

Или в сигнальщике просто при каждом чартевенте меняете мс в гп, а в основном лишь контролируете его

вобщем - второй индикатор распараллелит

Понял, спасибо. К сожалению, такое решение будет работать только в советнике (в котором нужно прервать расчет). В индикаторе такое не прокатит, т.к. вызов индикатором на индикатора на чарте не создает параллельную очередь, а попадает все в ту же очередь событий даже не конкретного чарта, а ВСЕХ чартов данного символа.

Как запихнуть индикатор в виде MQ5-ресурса, а не EX5-ресурса?

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