Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Здравствуйте. У меня возникла немного другая проблема, но также при закрытии ордеров.
Написал человеку советника, суть стратегии в локировании ордеров, т.е. при достижении определенной прибыли по всем открытым ордерам, они закрываются. Ордера разнонаправленные, вот функция, которая определяет прибыль по ордерам и при необходимости вызывает функцию закрытия ордеров:
Кроме этой функции нигде в советнике не вызывается функция закрытия ордеров OrderClose_f, а вот собственно и она:
Проблема в том, что периодически советник закрывает только один последний ордер, а остальные остаются в рынке. Заказчик при этом использует виртуальный сервер, демо счета, и несколько различных брокеров, если подобная проблема возникает, то единовременно у всех брокеров. А вот в ТЕСТЕРЕ СТРАТЕГИЙ советник работает как часы.
Когда ордера не закрываются то советник ПИШЕТ ОШИБКУ 4109. Кто сталкивался с подобной проблемой помогите пожалуйста...
(с)при достижении определенной прибыли по всем открытым ордерам... Вот интересно, а откуда у вас появляется профит с ордеров?
Ну на всякий случай приложу код закрытия позиций, а вот как закрыть ордера, тот код уже выкладывал, можете вернутся назад и забрать.
У вас получается так: есть сигнал на закрытие, срабатывает функция и закрывает первую попавшую позицию, и хорошо если убыточную, то цикл закрытия продолжится, а вот если закроет прибыльную, тогда исчезает условие для закрытия и ничего не происходит: вот тут условие и останавливается, так-как баланс стал меньше прописанного.
(с)при достижении определенной прибыли по всем открытым ордерам... Вот интересно, а откуда у вас появляется профит с ордеров?
Ну на всякий случай приложу код закрытия позиций, а вот как закрыть ордера, тот код уже выкладывал, можете вернутся назад и забрать.
У вас получается так: есть сигнал на закрытие, срабатывает функция и закрывает первую попавшую позицию, и хорошо если убыточную, то цикл закрытия продолжится, а вот если закроет прибыльную, тогда исчезает условие для закрытия и ничего не происходит: вот тут условие и останавливается, так-как баланс стал меньше прописанного.
Я не пояснил некоторые строки...
Здесь происходит выход из функции если профит по ордерам не достиг нужного значения. А дальше сумма профитов по ордерам не проверяется, а следующий цикл for закрывает все ордера, открытые советником и кстати ордер с самым большим профитом (в этом алгоритме) всегда закрывается первым.
Я не пояснил некоторые строки...
Здесь происходит выход из функции если профит по ордерам не достиг нужного значения. А дальше сумма профитов по ордерам не проверяется, а следующий цикл for закрывает все ордера, открытые советником и кстати ордер с самым большим профитом (в этом алгоритме) всегда закрывается первым.
Начнем с того, что всё что с профитом или убытком, не может быть ордером по определению.
Я ваш код читал, и написал причину не закрывания - вы читали?
Дублирую:
"У вас получается так: есть сигнал на закрытие, срабатывает функция и закрывает первую попавшую позицию, и хорошо если убыточную, то цикл закрытия продолжится, а вот если закроет прибыльную, тогда исчезает условие для закрытия и ничего не происходит: вот тут условие и останавливается, так-как баланс стал меньше прописанного."
Более правильно закрывать не самый прибыльный, а самый крупный, именно с самым большим лотом нужно закрывать первым, потому как изменение цены на один тик, отразиться сильно на эквити, и хорошо если в положительную сторону. Ведь есть разница, или 0.01 лот изменится на один тик, или 0.5 лота!
Ставьте функции которые выложил, они у меня работают на реале с мартином уже несколько лет, и проблем не обнаружено, начинает закрывать с максимального лота на уменьшение. Я так понял у вас тоже мартин присутствует.
Я ваш код читал, и написал причину не закрывания - вы читали?
Да читал, и использовал Ваш код для закрытия позиций, я ценю Ваше желание помочь, но причина все же не в этом.
Этот цикл находится в функции OrderClose_f, которая лишь получает тикет позиции, которую нужно закрыть, это оболочка функции OrderClose, а в выше представленном цикле for, i это счетчик попыток закрытия.
Когда происходит выход из цикла, то управление передается в вызывающую функцию, а именно в OrderCloseSumProfit(), т.е сюда:
Я весь подсчет прибыли по открытым позициям повторно не производится, он уже был сделан выше. У меня в функции два цикла for, второй стоит после проверки по прибыли.
Напоминаю, что в тестере все работает как часы, и когда на демо что-то не срабатывает, то советник выдает ошибку 4109, как будто торговля запрещена, но вручную все закрывается, это либо косяк vps (но тогда была бы ошибка типа "нет связи"), либо мне нужно как, то ее обработать, может разнонаправленные позиции подругому закрывать (сразу), может паузы больше делать, может вы с подобным сталкивались и выяснили, что дело в ДЦ или VPS, подскажите...
Да читал, и использовал Ваш код для закрытия позиций, я ценю Ваше желание помочь, но причина все же не в этом.
Этот цикл находится в функции OrderClose_f, которая лишь получает тикет позиции, которую нужно закрыть, это оболочка функции OrderClose, а в выше представленном цикле for, i это счетчик попыток закрытия.
Когда происходит выход из цикла, то управление передается в вызывающую функцию, а именно в OrderCloseSumProfit(), т.е сюда:
Я весь подсчет прибыли по открытым позициям повторно не производится, он уже был сделан выше. У меня в функции два цикла for, второй стоит после проверки по прибыли.
Напоминаю, что в тестере все работает как часы, и когда на демо что-то не срабатывает, то советник выдает ошибку 4109, как будто торговля запрещена, но вручную все закрывается, это либо косяк vps (но тогда была бы ошибка типа "нет связи"), либо мне нужно как, то ее обработать, может разнонаправленные позиции подругому закрывать (сразу), может паузы больше делать, может вы с подобным сталкивались и выяснили, что дело в ДЦ или VPS, подскажите...