PositionGetString
PositionGetString
函数返回持仓需求属性,使用PositionGetSymbol或者PositionSelect预选出来。仓位属性可以是字符串型。有2种变体函数。
- 立即返回属性值
string PositionGetString(
ENUM_POSITION_PROPERTY_STRING property_id // 属性标识符
);- 返回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=0; i<total; i++)
{
//--- 通过自动选择仓位取得下一个仓位的编号以访问它的属性
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:", type, ticket);
//--- 在标题下方打印选定仓位的所有字符串型属性
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_SYMBOL, value))
return;
PrintFormat("%-*s%-s", w, header, value);
//--- 在日志中显示仓位注释
header="Comment:";
w=(header_width==0 ? header.Length()+1 : header_width);
if(!PositionGetString(POSITION_COMMENT, value))
return;
PrintFormat("%-*s%-s", w, header, value);
//--- 在日志中显示外部系统中的仓位 ID
header="External ID:";
w=(header_width==0 ? header.Length()+1 : header_width);
if(!PositionGetString(POSITION_EXTERNAL_ID, value))
return;
PrintFormat("%-*s%-s", w, header, value);
}