Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 1166
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Подскажите, пожалуйста, как задать отбор ордеров по символу для OrdersTotal()?
сейчас если на одной паре есть открытый ордер, то на других уже не открывает.
Подскажите, пожалуйста, как задать отбор ордеров по символу для OrdersTotal()?
сейчас если на одной паре есть открытый ордер, то на других уже не открывает.
Посмотрите в кодобазу, там в каждом советнике есть пример
Посмотрите в кодобазу, там в каждом советнике есть пример
Я не программист(
для меня сложновато.
Я не программист(
для меня сложновато.
не сложно
для написания базового ЕА вот весь функционал https://www.mql5.com/ru/forum/131859
по сабжу OrdersTotal() - это всего открытых ордеров (нумерация с 0 ) в терминале, затем нужно их выбирать по одному (перебрать в цикле) с помощью OrderSelect() и с нужными ордерами производите манипуляции
Подскажите, пожалуйста, как задать отбор ордеров по символу для OrdersTotal()?
сейчас если на одной паре есть открытый ордер, то на других уже не открывает.
периодически, по мере необходимости проверять (самому считать) свои ордера.
У меня в каждом советнике есть цикл (здоровенный метод), который вызывается перед важными действиями:
for(int pos=OrdersTotal()-1; pos>=0;pos--) {
if (!OrderSelect(pos,SELECT_BY_POS,MODE_TRADES)) {
selectFailed=true; /* не удалось "выбрать" ордер - статистика может быть неверной */
continue;
}
if (OrderCloseTime()!=0) { /* ордер закрыт но ещё не удалён из списка*/ continue; }
if (OrderMagicNumber()==0) { /* ордер выставлен юзером */ } continue;
else if (OrderMagicNumber()!=_Magic) { /* ордер выставлен другим советником */ continue; }
if (OrderSymbol()!=_Symbol) { /* ордер с правильным Magic но на другом символе */ continue; }
/// обработка рабочих ордеров, с правильным Magic на символе советника (то есть наш ордер)
/// проверяются несработки, считается кол-во, статистика, позиции и прочее
}
проверка ордера по символу выделена цветом
периодически, по мере необходимости проверять (самому считать) свои ордера.
У меня в каждом советнике есть цикл (здоровенный метод), который вызывается перед важными действиями:
for(int pos=OrdersTotal()-1; pos>=0;pos--) {
if (!OrderSelect(pos,SELECT_BY_POS,MODE_TRADES)) {
selectFailed=true; /* не удалось "выбрать" ордер - статистика может быть неверной */
continue;
}
if (OrderCloseTime()!=0) { /* ордер закрыт но ещё не удалён из списка*/ continue; }
if (OrderMagicNumber()==0) { /* ордер выставлен юзером */ } continue;
else if (OrderMagicNumber()!=_Magic) { /* ордер выставлен другим советником */ continue; }
if (OrderSymbol()!=_Symbol) { /* ордер с правильным Magic но на другом символе */ continue; }
/// обработка рабочих ордеров, с правильным Magic на символе советника (то есть наш ордер)
/// проверяются несработки, считается кол-во, статистика, позиции и прочее
}
проверка ордера по символу выделена цветом
По теме, как понял тикеты исторических ордеров могут теряться. Вопрос могут ли изменятся тикеты (SELECT_BY_TICKET) ордеров в МТ4 и тикеты сделок и позиций в МТ5.
И так же может ли после ОрдерСелект по тикету ордер смениться со временем. Например на следующий день. Советник не отключается.
Если отложенный ордер стал рыночным можно посмотреть по типу ордера. Если рыночный закрылся, то смотрим время закрытия ордера, не равно нулю OrderCloseTime()!=0
Если отложенный ордер закрылся по времени жизни, то как отследить по тикету ордера.
И вопрос, время жизни есть и в рыночных ордерах(МТ4), работает?
Подскажите, пожалуйста, как задать отбор ордеров по символу для OrdersTotal()?
сейчас если на одной паре есть открытый ордер, то на других уже не открывает.
Вопрос снят, разобрался. Всем спасибо.
Здравствуйте, уважаемые! Не пойму, что не так, почему пишет Alert: time3-time1 = wrong datetime?
потому что число получилось отрицательное :-)
по приведённой логике time1 __всегда__ больше time3
потому что число получилось отрицательное :-)
по приведённой логике time1 __всегда__ больше time3
Спасибо! мозги иногда отключаются.