PositionGetSymbol

Возвращает символ соответствующей открытой позиции и автоматически выбирает позицию для дальнейшей работы с ней при помощи функций PositionGetDouble, PositionGetInteger, PositionGetString.

string  PositionGetSymbol(
   int  index      // номер в списке позиций
   );

Параметры

index

[in]  Номер позиции в списке открытых позиций.

Возвращаемое значение

Значение типа string. Если позиция не найдена, то вернется пустая строка. Для получения кода ошибки нужно вызвать функцию GetLastError().

Примечание

При "неттинговом" учете позиций (ACCOUNT_MARGIN_MODE_RETAIL_NETTING и ACCOUNT_MARGIN_MODE_EXCHANGE) по каждому символу в любой момент времени может быть открыта только одна позиция, которая является результатом одной или более сделок. Не следует путать между собой позиции и действующие отложенные ордера, которые также отображаются на вкладке "Торговля" в панели "Инструменты".

При независимом представлении позиций (ACCOUNT_MARGIN_MODE_RETAIL_HEDGING) по каждому символу одновременно может быть открыто несколько позиций.

Пример:

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- получим количество открытых позиций на счёте
   int total=PositionsTotal();
   for(int i=0i<totali++)
     {
      //--- получаем символ позиции по индексу цикла i
      ResetLastError();
      string symbol=PositionGetSymbol(i);
      
      //--- если символ позиции успешно получен, то позиция по индексу i автоматически становится выбранной
      //--- и можно получать её свойства при помощи PositionGetDouble, PositionGetInteger, PositionGetString
      if(symbol!="")
        {
         ENUM_POSITION_TYPE type=(ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE);
         PrintFormat("Position symbol at index %d: %s, position type: %s"isymbolStringSubstr(EnumToString(type), 14));
        }
      else
        {
         PrintFormat("PositionGetSymbol(%d) failed. Error %d"iGetLastError());
         continue;
        }
     }
   /*
   результат:
   Position symbol at index 0GBPUSDposition typeSELL
   Position symbol at index 1EURUSDposition typeBUY
   */
  }

Смотри также

PositionsTotal(), PositionSelect(), Свойства позиций