Ошибки, баги, вопросы - страница 1548
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Тогда прерывание расчета по событию не сделать.
ок. смотрите тогда в другую сторону.
Вы можете искусственно запараллелить - поместив второй индикатор на чарт.
И обращаясь к Глобальной переменной GlobalVariableSetOnCondition из обоих.
ок. смотрите тогда в другую сторону.
Вы можете искусственно запараллелить - поместив второй индикатор на чарт.
И обращаясь к Глобальной переменной GlobalVariableSetOnCondition из обоих.
Не понял.
ставите второй индикатор сигнальщик, который посылает вам в основной индикатор события от ЧартЕвент как пользовательское + меняет состояние глобальной переменное например на время в мс
В основном индикаторе отлавливаете это событие и начинаете расчет, + смотрите на глобальную переменную, чтоб в ней время мс было равным тому, с которым вы начали расчет.
Если в ней время поменялось, значит пришло новое событие - и вы обрываете свой текущий расчет.
как то так.
---
Или в сигнальщике просто при каждом чартевенте меняете мс в гп, а в основном лишь контролируете его
вобщем - второй индикатор распараллелит
Здравствуйте! Подскажите новичку. Никак не могу разобраться с событием 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
Ошибка в справке https://www.mql5.com/ru/docs/constants/structures/mqltraderequest
Добавили поле position но количество заполняемых полей осталось 4.Алексей, сюда писать бессмысленно, надо заявку в севисдек. Заодно и к рейтингу + будет )
ставите второй индикатор сигнальщик, который посылает вам в основной индикатор события от ЧартЕвент как пользовательское + меняет состояние глобальной переменное например на время в мс
В основном индикаторе отлавливаете это событие и начинаете расчет, + смотрите на глобальную переменную, чтоб в ней время мс было равным тому, с которым вы начали расчет.
Если в ней время поменялось, значит пришло новое событие - и вы обрываете свой текущий расчет.
как то так.
---
Или в сигнальщике просто при каждом чартевенте меняете мс в гп, а в основном лишь контролируете его
вобщем - второй индикатор распараллелит
Понял, спасибо. К сожалению, такое решение будет работать только в советнике (в котором нужно прервать расчет). В индикаторе такое не прокатит, т.к. вызов индикатором на индикатора на чарте не создает параллельную очередь, а попадает все в ту же очередь событий даже не конкретного чарта, а ВСЕХ чартов данного символа.
Как запихнуть индикатор в виде MQ5-ресурса, а не EX5-ресурса?