Так между делом. Раньше пробовал вот такую комбинацию
bool result = PositionSelect( PositionGetSymbol(index) );
По логике должна была нормально отрабатывать. Но возникала в некоторых ситуациях, как заметил выбиралась первая позиция в переборе и все. Ошибок не возникало по коду, но отработка была не по всему массиву позиций. Хотя сейчас почитал документацию поPositionSelect, может и правильно делает данная комбинация =)
При "неттинговом" учете позиций (ACCOUNT_MARGIN_MODE_RETAIL_NETTING и ACCOUNT_MARGIN_MODE_EXCHANGE) по каждому символу в любой момент времени может быть открыта только одна позиция, которая является результатом одной или более сделок. Не следует путать между собой позиции и действующие отложенные ордера, которые также отображаются на вкладке "Торговля" в панели "Инструменты". При независимом представлении позиций (ACCOUNT_MARGIN_MODE_RETAIL_HEDGING)
по каждому символу одновременно может быть открыто несколько позиций. В
этом случае, PositionSelect выберет позицию с наименьшим тикетом.
Так между делом. Раньше пробовал вот такую комбинацию
По логике должна была нормально отрабатывать. Но возникала в некоторых ситуациях, как заметил выбиралась первая позиция в переборе и все. Ошибок не возникало по коду, но отработка была не по всему массиву позиций. Хотя сейчас почитал документацию по PositionSelect, может и правильно делает данная комбинация =)
Есть разница в переборе по тикету на неттинге/хеджинге, Я так-же споткнулся, то работает, то не работает. В общем, нужно применять универсальное решение
Есть разница в переборе по тикету на неттинге/хеджинге, Я так-же споткнулся, то работает, то не работает. В общем, нужно применять универсальное решение
Нет никакой разницы. Если позиция только одна, независимо от типа счёта, netting или hadge, она всего одна и имеет индекс 0.
ни какой. не работает функция , которая в шапке. или выдает ошибки, выбирает противоположную позицию, или не срабатывает вторая позиция, пока не закроется первая.
ни какой. не работает функция , которая в шапке. или выдает ошибки, выбирает противоположную позицию, или не срабатывает вторая позиция, пока не закроется первая.
Выкладывайте цикл какой пробуете использовать с вашими изменениями. Уже даже интересно посмотреть стало, что вы там наваяли..
Ну и зачем вы прогоняете модификацию по Symbol, может правильней по тикету?
Так между делом. Раньше пробовал вот такую комбинацию
По логике должна была нормально отрабатывать. Но возникала в некоторых ситуациях, как заметил выбиралась первая позиция в переборе и все. Ошибок не возникало по коду, но отработка была не по всему массиву позиций.
Хотя сейчас почитал документацию по PositionSelect, может и правильно делает данная комбинация =)
При независимом представлении позиций (ACCOUNT_MARGIN_MODE_RETAIL_HEDGING) по каждому символу одновременно может быть открыто несколько позиций. В этом случае, PositionSelect выберет позицию с наименьшим тикетом.
Так между делом. Раньше пробовал вот такую комбинацию
По логике должна была нормально отрабатывать. Но возникала в некоторых ситуациях, как заметил выбиралась первая позиция в переборе и все. Ошибок не возникало по коду, но отработка была не по всему массиву позиций.
Хотя сейчас почитал документацию по PositionSelect, может и правильно делает данная комбинация =)
Есть разница в переборе по тикету на неттинге/хеджинге, Я так-же споткнулся, то работает, то не работает. В общем, нужно применять универсальное решение
где вы увидели, что нужен тикет, прочитайте внимательно справку, как работает PositionGetTicket
где в этих функциях тикет
Это не действия с позициями. Это всего-лишь информация о выбранной позиции.
1. В структуре MqlTradeRequest которая входит в OrderSend для модификации, закрытия позиции.
2. Для выборки ордеров и сделок принадлежащих этой позиции, из истории ордеров и сделок.
3. Остальное найдите сами.
Есть разница в переборе по тикету на неттинге/хеджинге, Я так-же споткнулся, то работает, то не работает. В общем, нужно применять универсальное решение
Нет никакой разницы. Если позиция только одна, независимо от типа счёта, netting или hadge, она всего одна и имеет индекс 0.
***не работает адекватно, пока не останется одна позиция.
Не работает какой вариант?
***не работает адекватно, пока не останется одна позиция.
Для мутивалютки даже применяю подобное. Уже как-то описывал это на форуме.
Не работает какой вариант?
ни какой. не работает функция , которая в шапке. или выдает ошибки, выбирает противоположную позицию, или не срабатывает вторая позиция, пока не закроется первая.
ни какой. не работает функция , которая в шапке. или выдает ошибки, выбирает противоположную позицию, или не срабатывает вторая позиция, пока не закроется первая.
Выкладывайте цикл какой пробуете использовать с вашими изменениями. Уже даже интересно посмотреть стало, что вы там наваяли..
Ну и зачем вы прогоняете модификацию по Symbol, может правильней по тикету?
Хотя конечно если вам все ордера нужно в куче прогнать.
Посмотрите Trade.mqh в немВыкладывайте цикл какой пробуете использовать с вашими изменениями. Уже даже интересно посмотреть стало, что вы там наваяли..