[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 823
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Всем привет!
Ребята, помогите разобраться...Каким образом сделать так, чтобы при открытии ордера от определенного уровня (со стопом и тейком)
советник не открывал второй, третий и т.д. ордера. А открывал следующий ордер только после закрытия первого по стопу либо тейку.
Требуется помощь: есть 2 отложенных ордера(в разные стороны), при срабатывании одного, нужно закрыть другой. Код, как показано ниже. Как его грамотно оформить, что-бы не было ошибки с неправильным номером тикета и работал нормально, буквально пару строчек нужно, чтоб в советник засунуть, я что-то никак не научусь. Заранее спасибо.
Когда переменная "Tip" получает значение? Должна после OrderSelect().
OrderSelect(Total,SELECT_BY_TICKET,MODE_TRADES);
Tip=OrderType();
if(Tip==OP_SELL)
Требуется помощь: есть 2 отложенных ордера(в разные стороны), при срабатывании одного, нужно закрыть другой. Код, как показано ниже. Как его грамотно оформить, что-бы не было ошибки с неправильным номером тикета и работал нормально, буквально пару строчек нужно, чтоб в советник засунуть, я что-то никак не научусь. Заранее спасибо.
Проверить есть ли рыночные ордера.
Если есть, проверить есть ли отложенники
Если есть, удалить
Я так и делал циклом for, но у меня путаница начинается, OrdersTotal() возвращает количество ордеров (2), если я вычту единицу, то какой ордер будет выбран: первый или второй, ну а дальше та же путаница с тикетами. В общем ошибка 4108 - неправильный номер тикета, и ещё Alert(Ticket) возвращает номер больше 0, даже если советник только запущен и ордеров нет.
Разберись внимательно: SELECT_BY_TICKET или SELECT_BY_POS ???
Почитай в справке про OrderSelect()
SELECT_BY_TICKET номера ордеров на сервере компании, например #12345 и #12399
SELECT_BY_POS номера ордеров "в личном списке", т.е. для двух ордеров один будет иметь #0, другой #1
Если так оставлю, правильно будет? Вроде работает, может какие return или RefreshRates нужны, одним словом будет работать в реале?
Нет, не будет
eugggy:
А нельзя ли подробнее? Нельзя))). Я имею ввиду, если сильно не придираться, где, что, неправильно и как исправить?
Я так и делал циклом for, но у меня путаница начинается, OrdersTotal() возвращает количество ордеров (2), если я вычту единицу, то какой ордер будет выбран: первый или второй, ну а дальше та же путаница с тикетами. В общем ошибка 4108 - неправильный номер тикета, и ещё Alert(Ticket) возвращает номер больше 0, даже если советник только запущен и ордеров нет.
Вам же ответили подробно и без придирок:
Vinin :
Проверить есть ли рыночные ордера.
Если есть, проверить есть ли отложенники
Если есть, удалить Разными последовательными циклами forА нельзя ли подробнее? Нельзя))). Я имею ввиду, если сильно не придираться, где, что, неправильно и как исправить?
Я повторюсь.
Проверить что есть рыночный ордер,
Если есть, проверить что е сть отложенник.
Если есть, то удалить.
Если что, то код завтра набросаю. Хотя где то в этой ветке уже это было.
Я понимаю, но это для вас легко, двумя for проверить, а я попробовал - не получается, поэтому и спрашиваю. Как будто я программист с 5-ти летним стажем. На счёт нельзя))) - это я в шутку.
Мысль я понял, но с осуществлением у меня проблемы, плохо знаком с перебором ордеров, в справке почти ничего нет, в учебнике не для средних умов написано. В общем набросайте код, если не сложно или может книги какие есть по MQL4, чтоб простой человек понять мог.
и ещё своими словами изложить, что должен советник делать