PositionGetString

函数返回持仓需求属性,使用PositionGetSymbol或者PositionSelect预选出来。仓位属性可以是字符串型。有2种变体函数。

1. 立即返回属性值

string  PositionGetString(
   ENUM_POSITION_PROPERTY_STRING  property_id      // 属性标识符
   );

2. 返回true或者false,取决于函数执行成功与否,如果成功,性质值通过引用安置在最后参量的接受变量里。

bool  PositionGetString(
   ENUM_POSITION_PROPERTY_STRING  property_id,     // 属性标识符
   string&                        string_var       // 这里接受属性值
   );

参量

property_id

[in] 仓位属性标识符,值可能是 ENUM_POSITION_PROPERTY_STRING 中的一个。

string_var

[out]  接受要求性质的字符串变量值。

返回值

字符串 值。如果函数失败,返回空字符串。

注释

对于"单边"持仓的解释就是 (ACCOUNT_MARGIN_MODE_RETAIL_NETTING and ACCOUNT_MARGIN_MODE_EXCHANGE),在任何时候一个交易品种 只能存在一个持仓。 该持仓是一个或多个交易的结果。 不要混淆有效 挂单的持仓,它只显示在工具箱窗口的交易标签。

如果允许单个持仓 (ACCOUNT_MARGIN_MODE_RETAIL_HEDGING),那么一个交易品种可以打开多个持仓。

为确保关于仓位的新数据的接收,在提及之前调用 PositionSelect() 函数。

示例:

//+------------------------------------------------------------------+
//| 脚本程序起始函数                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- 在账户中的所有仓位中循环
   int total=PositionsTotal();
   for(int i=0i<totali++)
     {
      //--- 通过自动选择仓位取得下一个仓位的编号以访问它的属性
      ulong ticket=PositionGetTicket(i);
      if(ticket==0)
         continue;
      
      //--- 取得仓位类型并显示用于仓位字符串属性列表的标题
      string type=(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE ? "Buy" : "Sell");
      PrintFormat("String properties of an open position %s #%I64u:"typeticket);
      
      //--- 在标题下方打印选定仓位的所有字符串型属性
      PositionPropertiesStringPrint(15);
     }
   /*
  结果:
   String properties of an open position Buy #2810798881:
   Symbol:        EURUSD
   Comment:       Test PositionGetString
   External ID:   
   */
  }
//+------------------------------------------------------------------+
//| 在日志中显示选定仓位的字符串型属性 |
//+------------------------------------------------------------------+
void PositionPropertiesStringPrint(const uint header_width=0)
  {
   uint   w=0;
   string header="";
   string value="";
   
//--- 定义标题文字和标题栏位的宽度
//--- 如果传给函数的标题宽度为0, 则宽度为标题文字行的大小+1
   header="Symbol:";
   w=(header_width==0 ? header.Length()+1 : header_width);
//--- 取得并在日志中以指定标题宽度显示仓位的交易品种
   if(!PositionGetString(POSITION_SYMBOLvalue))
      return;
   PrintFormat("%-*s%-s"wheadervalue);
   
//--- 在日志中显示仓位注释
   header="Comment:";
   w=(header_width==0 ? header.Length()+1 : header_width);
   if(!PositionGetString(POSITION_COMMENTvalue))
      return;
   PrintFormat("%-*s%-s"wheadervalue);
   
//--- 在日志中显示外部系统中的仓位 ID
   header="External ID:";
   w=(header_width==0 ? header.Length()+1 : header_width);
   if(!PositionGetString(POSITION_EXTERNAL_IDvalue))
      return;
   PrintFormat("%-*s%-s"wheadervalue);
  }

另见

PositionGetSymbol()PositionSelect()仓位属性