PositionSelect(symbol) PositionGetInteger(POSITION_TYPE) - страница 4

 
Vladimir Karputov:


Вот же, ещё на первой странице:


здесь "m_position" - объект торгового класса CPositionInfo - Класс CPositionInfo является классом для упрощенного доступа к свойствам открытой рыночной позиции.

Обращение к позиции идёт через выбор позицию по индексу - SelectByIndex. После выбора позиции получаем тип позиции - PositionType. Дальше сравниваем тип позиции: это POSITION_TYPE_BUY или POSITION_TYPE_SELL.


Дальше. В посте  приведён код, который наглядно показывает (если конечно запустить его), что самая молодая позиция имеет индекс "PositionsTotal()-1". Если хотите получить свойства этой самой молодой позиции - то просто трансформируем код:

Вуаля. Вы обратились к свойству самой молодой позиции (но должен сказать, что надеяться на такую сортировку опасно, так как в будущем эта сортировка может быть изменена на противоположную).

Вы проверьте для начала исполнения кода. Выборка по условиям buy и  sell не работает. Предлагаемый вами первый код не имеет отношения к позициям, это не функции Position..., SelectByIndex ведут выборку между жеджингом и неттингом и далее выборка по условиям. Зачем вы предлагаете выборку по другой функции, если речь о том, что выборка через функции Position... глючит?
 
Vladimir Karputov:


Числа 3, 6, 8. Здесь 3 - это НАИМЕНЬШЕЕ, а вот число 6 - это число МЕНЬШЕЕ - конечно всё это относительно самого последнего числа 8. 

Добавлено: Вы бы лучше не изворачивались, а прочли пост выше ( ).

там нет 6 и 8, есть 2,3,4 - наименьшее 2, выбрано почему то 3, по вашей логике меньшее число, но в справке то написано НАИМЕНЬШЕЕ
 
ovak77:
там нет 6 и 8, есть 2,3,4 - наименьшее 2, выбрано почему то 3, по вашей логике меньшее число, но в справке то написано НАИМЕНЬШЕЕ


Вероятно Вы пропустили:

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

PositionSelect(symbol) PositionGetInteger(POSITION_TYPE)

Vladimir Karputov, 2017.03.28 11:14

  1. **
  2. В PositionSelect найдено нестабильное поведение (не всегда выбирается позиция с НАИМЕНЬШИМ тикетом) - заявка в СервисДеск #1705661, кстати это видно и на моих скриншотах.

***


 
Vladimir Karputov:


Вероятно Вы пропустили:


Кто из нас изворачивается? Вы из разрабов? Все разрабы вместо аудита кодинга предпочитают сочинять отговорки и оправдываться. Вы пропустили, вы не нашли - скрины конкретно доказывают неработоспособность функции, вы же вместо тестирования кодинга, отмазки лепите.
 

Я только пытаюсь остудить Ваш не в меру жаркий пыл.

На данный момент, если Вам нужно выбрать самую молодую позицию, рекомендую работать так:

   int i=PositionsTotal()-1;
   if(m_position.SelectByIndex(i)) // selects the position by index for further access to its properties
     {
      if(m_position.PositionType()==POSITION_TYPE_BUY)
         count_buys++;

      if(m_position.PositionType()==POSITION_TYPE_SELL)
         count_sells++;
     }
 
Короче, функции Position... стопудово глючные, я подключился через HistoryDealGetTicket и все стало идеально работать
 
ovak77:
Короче, функции Position... стопудово глючные, я подключился через HistoryDealGetTicket и все стало идеально работать
Просто надо внимательней читать документацию. Свойства позиций доступны исключительно когда они существуют, в истории позиций просто нету. В истории только ордера и сделки связанные с позициями, открытием\закрытием\модификацией.
 
  1. В PositionSelect найдено нестабильное поведение (не всегда выбирается позиция с НАИМЕНЬШИМ тикетом) - заявка в СервисДеск #1705661, кстати это видно и на моих скриншотах.

Исправлено! Проверено в билде 1580.

Поверить можно так: запустить советник ListPositions и дальше вручную открывать позиции в любом направлении по любым символам. Следить за выводом на экран - там будет чёткое соответствие номера позиции в общем списке PositionsTotal и временем открытия позиции.