Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Обратите внимание на справку:
PositionSelect - При независимом представлении позиций (ACCOUNT_MARGIN_MODE_RETAIL_HEDGING) по каждому символу одновременно может быть открыто несколько позиций. В этом случае, PositionSelect выберет позицию с наименьшим тикетом.
Теперь снова вопрос: где видно тикеты открытых позиций, время их открытия и тип позиций?
Даже больше, сейчас покажу на примере, что именно Вы делаете, выбирая позицию по СИМВОЛУ...
В этом коде сначала идёт выбор позиции через PositionSelect - выбор позиции по символу. В итоге, так как счёт у вас hadge - Вы выбираете позицию с НАИМЕНЬШИМ тикетом. Дальше идёт обход по всему списку позиций, чтобы Вы просто видели, какие позиции и какие тикеты у них.
Порядок работы с кодом:
А вот пример:
Открыта позиция BUY 0.02 лота
Открыта позиция BUY 0.04 лота
Открыта позиция SELL 0.06 лота
Не надо приплетать хеджинг и неттинг, я прописал код, когда перед открытием новой позиции старая закрывается также как в неттинге, в любой момент времени открыта только одна позиция и все равно при данных условиях функция(и) Position... не могут выбрать нужную сделку по типу из двух предложенных: buy и sell. В функциях Position... ошибка, баг. Вы посмотрите внимательно скрины, зачем вы доказываете недоказуемое?
Выбирает позицию с наименьшим тикетом: где вы на скрине видите что Position... выбрали наименьший тикет, если наименьший тикет №2 у позиции buy, которая еще открыта, но высвечивается как false? Это баг функции или в справке написано то, что не соответствует истине?
Не надо гнать за хеджинг и неттинг, я прописал код, когда перед открытием новой позиции старая закрывается также как в неттинге, в любой момент времени открыта только одна позиция и все равно при данных условиях функция(и) Position... не могут выбрать нужную сделку по типу из двух предложенных: buy и sell. В функциях Position... ошибка, баг. Вы посмотрите внимательно скрины, зачем вы доказываете недоказуемое?
Не надо гнать за хеджинг и неттинг, ***
*** не могут выбрать нужную сделку по типу из двух предложенных: buy и sell. ***
Вам уже несколько раз показали: хотите ВЫБРАТЬ, значит нужно обойти список позиций.
И Вы так и не сформулировали, что же Вам нужно:
Но на первом скрине чётко видны две позиции.
Но на первом скрине чётко видны две позиции.
Там на третий скрин нужно смотреть - PositionSelect выбрало позицию не с НАИМЕНЬШИМ тикетом, а просто с МЕНЬШИМ.
Вам уже несколько раз показали: хотите ВЫБРАТЬ, значит нужно обойти список позиций.
И Вы так и не сформулировали, что же Вам нужно:
Там на третий скрин нужно смотреть - PositionSelect выбрало позицию не с НАИМЕНЬШИМ тикетом, а просто с МЕНЬШИМ.
В чем разница между наименьшим и меньшим? Сами то поняли, что написали? Позиция buy с тикетом №2 - это наименьший тикет, а какой у вас номер тикета интерпретируется как МЕНЬШИЙ?
Наименьший тикет №2, а функции Position... высвечивают ее как false, а позицию sell с тикетом №3, как true.
Давно определились, надо выбрать позицию по условиям, коих всего две: тип buy и sell. О выборе какой то конкретной позиции уже речи быть не может, она по двум то простейшим условиям глючит, подключать ее к серьезной выборке было бы абсурдным, весь депозит сольет.
Вот же, ещё на первой странице:
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
PositionSelect(symbol) PositionGetInteger(POSITION_TYPE)
Vladimir Karputov, 2017.03.27 14:52
Вы выделяете всего ОДНУ позицию. Соответственно для неё будет или BUY или SELL. Если нужно сделать обход по всем позициям, то нужен цикл - от "PositionsTotal()-1", до ">=0":
здесь "m_position" - объект торгового класса CPositionInfo - Класс CPositionInfo является классом для упрощенного доступа к свойствам открытой рыночной позиции.
Обращение к позиции идёт через выбор позицию по индексу - SelectByIndex. После выбора позиции получаем тип позиции - PositionType. Дальше сравниваем тип позиции: это POSITION_TYPE_BUY или POSITION_TYPE_SELL.
Дальше. В посте #5 приведён код, который наглядно показывает (если конечно запустить его), что самая молодая позиция имеет индекс "PositionsTotal()-1". Если хотите получить свойства этой самой молодой позиции - то просто трансформируем код:
Вуаля. Вы обратились к свойству самой молодой позиции (но должен сказать, что надеяться на такую сортировку опасно, так как в будущем эта сортировка может быть изменена на противоположную).
Давно определились, надо выбрать позицию по условиям, коих всего две: тип buy и sell. О выборе какой то конкретной позиции уже речи быть не может, она по двум то простейшим условиям глючит, подключать ее к серьезной выборке было бы абсурдным, весь депозит сольет.
В чем разница между наименьшим и меньшим? Сами то поняли, что написали? Позиция buy с тикетом №2 - это наименьший тикет, а какой у вас номер тикета интерпретируется как МЕНЬШИЙ?
Числа 3, 6, 8. Здесь 3 - это НАИМЕНЬШЕЕ, а вот число 6 - это число МЕНЬШЕЕ - конечно всё это относительно самого последнего числа 8.
Добавлено: Вы бы лучше не изворачивались, а прочли пост выше (#28 ).