PositionGetInteger
PositionGetInteger
函数返回持仓需求属性,使用 PositionGetSymbol 或者 PositionSelect. 预选出来,仓位属性的类型是时间日期整型,有两种变体函数。
- 立即返回属性值
long PositionGetInteger(
ENUM_POSITION_PROPERTY_INTEGER property_id // 属性标识符
);- 返回true或者false,取决于函数执行成功与否,如果成功,性质值通过引用安置在最后参量的接受变量里。
bool PositionGetInteger(
ENUM_POSITION_PROPERTY_INTEGER property_id, // 属性标识符
long& long_var // 这里接受属性值
);参量
- property_id
[in] 仓位属性标识符,值可能是 ENUM_POSITION_PROPERTY_INTEGER 中的一个。
- long_var
[out] 接受要求性质的字符串变量值。
返回值
长整型 值。如果函数失败,返回0。 如果函数失败,返回0。
注释
对于"单边"持仓的解释就是 (ACCOUNT_MARGIN_MODE_RETAIL_NETTING and ACCOUNT_MARGIN_MODE_EXCHANGE),在任何时候一个交易品种 只能存在一个持仓。 该持仓是一个或多个交易的结果。 不要混淆有效 挂单的持仓,它只显示在工具箱窗口的交易标签。
如果允许单个持仓 (ACCOUNT_MARGIN_MODE_RETAIL_HEDGING),那么一个交易品种可以打开多个持仓。
为确保关于仓位的新数据的接收,在提及之前调用 PositionSelect() 函数。
例如:
//+------------------------------------------------------------------+
//| 交易函数 |
//+------------------------------------------------------------------+
void OnTrade()
{
//--- 检查持仓是否存在并显示其变化的时间
if(PositionSelect(_Symbol))
{
//--- 接收持仓ID为进一步工作
ulong position_ID=PositionGetInteger(POSITION_IDENTIFIER);
Print(_Symbol," position #",position_ID);
//--- 接收从1970.01.01开始的毫秒为单位的形成持仓的时间
long create_time_msc=PositionGetInteger(POSITION_TIME_MSC);
PrintFormat("Position #%d POSITION_TIME_MSC = %i64 milliseconds => %s",position_ID,
create_time_msc,TimeToString(create_time_msc/1000));
//--- 接收从1970.01.01开始的秒为单位的持仓最近变化的时间
long update_time_sec=PositionGetInteger(POSITION_TIME_UPDATE);
PrintFormat("Position #%d POSITION_TIME_UPDATE = %i64 seconds => %s",
position_ID,update_time_sec,TimeToString(update_time_sec));
//--- 接收从1970.01.01开始的毫秒为单位的持仓最近变化的时间
long update_time_msc=PositionGetInteger(POSITION_TIME_UPDATE_MSC);
PrintFormat("Position #%d POSITION_TIME_UPDATE_MSC = %i64 milliseconds => %s",
position_ID,update_time_msc,TimeToString(update_time_msc/1000));
}
//---
}