Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
А если ордер будет отменён сервером?
То на следующем тике советник увидит, что позиций нет, и все будет хорошо. Но дублирования не будет.
Думается мне, что при учёте маркет-ордеров, необходимо - если таковой нашёлся - возвращать допустим WRONG_VALUE - позиций не может быть меньше нуля. Это будет сигналом, что есть неучтённый маркет-ордер. Но никак не добавлять число позиций.
Это зависит от логики конкретной ТС.
В самом примитивном случае, когда допускается одна сделка в рынке, достаточно возвращать любое отличное от 0 значение, 1 тоже подойдет.
То на следующем тике советник увидит, что позиций нет, и все будет хорошо. Но дублирования не будет.
Это зависит от логики конкретной ТС.
В самом примитивном случае, когда допускается одна сделка в рынке, достаточно возвращать любое отличное от 0 значение, 1 тоже подойдет.
Ему (советнику) уже на этом тике будет выдано значение больше на количество маркет-ордеров. Т.е., физически их два, а ф-ция выдаст в результате 3.
Считаю это не нормальным поведением. Нужно всегда отдывать валидное число, без виртуальных позиций, которых в итоге может и не оказаться.
Ведь есть такие стратегии, которые требуют точных расчётов по точному и определённому количеству позиций, объёмов, совокупных уровней стоп/тейк, и проч. ...
Это зависит от логики конкретной ТС.
В самом примитивном случае, когда допускается одна сделка в рынке, достаточно возвращать любое отличное от 0 значение, 1 тоже подойдет.
Андрей, функция, у которой запрашивают количество или объём или ещё какие-либо количественные данные, обязана выдать их точное значение.
Вроде как не в игрушки же играемся :)
Андрей, функция, у которой запрашивают количество или объём или ещё какие-либо количественные данные, обязана выдать их точное значение.
Рассматривается конкретный пример советника с одной сделкой в рынке, и он в 99% случаев пишется ошибочно. До сложных еще добраться нужно.
Если очень хочется, переименуй функцию в IsPosition и сделай ее булевой: return(Res>0);
Рассматривается конкретный пример советника с одной сделкой в рынке, и он в 99% случаев пишется ошибочно. До сложных еще добраться нужно.
Если очень хочется, переименуй функцию в IsPosition и сделай ее булевой: return(Res>0);
Ну неее..., рассматривается пример некой общей библиотечной функции "на все случаи жизни"...
Кстати, интересное предложение сделать булевой - по примеру многих стандартных mql5-функций - с возвратом результата исполнения в виде значения bool, и количества позиций посредством передачи значения в переменную по ссылке.
Ну неее..., рассматривается пример некой общей библиотечной функции "на все случаи жизни"...
Да, универсальная.
Да, универсальная.
Предложенный вами вариант решения содержит неточность при отмене ордера сервером. Хочу обсудить варианты отработки этой неточности. Без них предложение сырое.
Отвлечемся от MT5 в сторону MT4. Торгует советник. Вдруг брокер по своей технической ошибке (не Вы) выставляет на Вашем счете позицию, которая успешно проходит фильтр советника свой-чужой - мэджик, символ и т.д. Через секунду брокер исправляет свою ошибку - удаляет (не закрывает даже) свою позицию с Вашего счета.
Ваша ТС сломается?
ЗЫ Помню случаи, как отлично нагревал любителей советников один крупный брокер. Он "по ошибке" пополнял счет на очень крупную сумму. Советник открывал, соответственно, позицию с очень крупным лотом. Затем брокер исправлял "ошибку" - снимал неправильно начисленные деньги. Счет выносило по стопауту.
Отвлечемся от MT5 в сторону MT4. Торгует советник. Вдруг брокер по своей технической ошибке (не Вы) выставляет на Вашем счете позицию, которая успешно проходит фильтр советника свой-чужой - мэджик, символ и т.д. Через секунду брокер исправляет свою ошибку - удаляет (не закрывает даже) свою позицию с Вашего счета.
Ваша ТС сломается?
ЗЫ Помню случаи, как отлично нагревал любителей советников один крупный брокер. Он "по ошибке" пополнял счет на очень крупную сумму. Советник открывал, соответственно, позицию с очень крупным лотом. Затем брокер исправлял "ошибку" - снимал неправильно начисленные деньги. Счет выносило по стопауту.
Artyom Trishkin:
Мы говорим не о ТС.
В примере мы говорим о конкретной описанной ситуации с ТС. И там вопрос оставлен без ответа.
Функция и возвращает то, что физически есть на счете. И она врет ровно настолько же, насколько врала бы в MT4. Т.е. нормально все.