Функция OrderType возвращает 0, несмотря на то, что есть ордер на покупку или продажу
Здравствуйте, товарищи! Такая ситуация. Есть советник. Советник установлен на нескольких терминалах. Настройки практически одинаковые.
Почему то OrderType() возвращает 0 после чего позиция закрывается.
Вот что выдает сова при закрытии
2019.11.12 07:08:37.310 WebEA EURJPY,H1: Position closed, REST, 0 and 70 end
А что самое интересное, что в других трех терминалах эта же функция работает корректно и ничего не закрывает.
В чем может быть проблема подскажите пожалуйста.
0 это позиция типа OP_BUY. У вас в начале функции переменная type инициируется значением OP_BUY (0). Если условие if(OrderType()==type && OrderMagicNumber() == magic_number) ложное то в журнал выводится Position closed, REST, 0 and + значение переменной magic_number+ end
Зачем нужно вот эта конструкция мне не понятно if(order_type == "sell") { type = OP_SELL; } И какое значение значение на момент вызова
этой функции имеет переменная order_type не известно.
Здравствуйте, товарищи! Такая ситуация. Есть советник. Советник установлен на нескольких терминалах. Настройки практически одинаковые.
Почему то OrderType() возвращает 0 после чего позиция закрывается.
Вот что выдает сова при закрытии
2019.11.12 07:08:37.310 WebEA EURJPY,H1: Position closed, REST, 0 and 70 end
А что самое интересное, что в других трех терминалах эта же функция работает корректно и ничего не закрывает.
В чем может быть проблема подскажите пожалуйста.
ORDER_TYPE_BUY = OP_BUY = 0
- www.mql5.com
Зачем нужно вот эта конструкция мне не понятно if(order_type == "sell") { type = OP_SELL; } И какое значение значение на момент вызова этой функции имеет переменная order_type не известно.
order_type может принимать значения buy, sell или notrade
Суть проверки такая: нужно установить совпадает ли order_type с уже открытой позицией и если позиция открыта, пропустить ее, а остальных случаях закрыть.
К примеру order_type = buy и у нас есть открытый ордер на покупку. Вот тогда ничего делать не надо. А в остальных случаях его закрыть.
Как я понял, провера условия у меня задана некорректно, поэтому оно всегдла ложное.
Подскажите тогда пожалуйста, как правильно тут сделать.
Как я понял, провера условия у меня задана некорректно, поэтому оно всегдла ложное.
Подскажите тогда пожалуйста, как правильно тут сделать.
Для этого нужно по крайне мере знать что вы хотите в конечном виде получить.
Получается что OrderType() = OP_BUY, а type = 0
Функция OrderType() возвращает тип ордера предварительно выбранного функцией OrderSelect(). Константа OP_BUY это позиция на покупку и имеет цифровое значение равное нулю (0).
А если сделать так то прокатит, как думаете? Будет за строку считаться?
string type = 'OP_BUY';
Для этого нужно по крайне мере знать что вы хотите в конечном виде получить.
хочу сделать так. if(если order_type == "sell" и в терминале есть открытые ордера на продажу с нашим меджиком ) {операторы...}
то же самое при order_type == "buy" и в терминале есть открытые ордера на покупку с нашим меджиком.
Желательно все в одно условие.
А если сделать так то прокатит, как думаете? Будет за строку считаться?
:)
OrderSelect() выбирает ордер по его тикету или по порядковому номеру. У вас используется SELECT_BY_POS, это значит выбор по порядковому номеру. Функция OrdersTotal() возвращает кол-во всех открытых позиций и ордеров. И теперь подумаете есть ли у вас ордер с порядковым номером OrdersTotal()-1
Здравствуйте, товарищи! Такая ситуация. Есть советник. Советник установлен на нескольких терминалах. Настройки практически одинаковые.
Почему то OrderType() возвращает 0 после чего позиция закрывается.
Вот что выдает сова при закрытии
2019.11.12 07:08:37.310 WebEA EURJPY,H1: Position closed, REST, 0 and 70 end
А что самое интересное, что в других трех терминалах эта же функция работает корректно и ничего не закрывает.
В чем может быть проблема подскажите пожалуйста.