Ошибки, баги, вопросы - страница 1548
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Здравствуйте! Подскажите новичку. Никак не могу разобраться с событием 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-ресурса?
Понял, спасибо. К сожалению, такое решение будет работать только в советнике (в котором нужно прервать расчет). В индикаторе такое не прокатит, т.к. вызов индикатором на индикатора на чарте не создает параллельную очередь, а попадает все в ту же очередь событий даже не конкретного чарта, а ВСЕХ чартов данного символа.
Как запихнуть индикатор в виде MQ5-ресурса, а не EX5-ресурса?
Ребята! В чем может быть проблема? выставляю ордер
m_trade.SellLimit(1,Ask+40,_Symbol,0,0,ORDER_TIME_GTC,0,"")
Он выставляется. И..с такой же скоростью удаляется. В советнике всего одна(уже) строчка! Эта! Т.е это не мой советник ордер удаляет. В чем проблема?
Никак. Тем более нельзя пытаться править сам код (текст программы) из другой программы.
Могу в коде нести с собой EX5 в виде массива. Создавать EX5-файл в песочнице и подключать его в виде ресурса.
Просто зачем такой геморрой, когда логичнее было бы сделать все то же самое, если бы можно было подключать сразу MQ5-ресурс.