老师,我想问下期权的 position结构体里,我想要获得 认购CALL 和 PUT 期权的 逐笔盈亏 和 成交额应该用哪个。
解释一下,我用A_GetPosition 获得账户持仓
A_GetPosition(CallOptions[i], Pos))
OnCall= (Pos.longAvgPrice * Pos.longCurrentVolume) * contractunit }
//longOpenTotalAmount (还是用这个?)
OnProfit=Pos.longFloatProfitO (函数里写的ctp才能用Pos.longFloatProfitO,模拟账户可以用这个嘛?)
逐笔盈亏是按现价和平均成本计算的。 现在我这么写是按结算价的。
成交额也就是买入时的成本。用Pos.longFloatProfitO在模拟账户里可以嘛?
请帮我明确下。
完全取不到值啊。模拟账户的问题嘛?A_GetPosition 结果是True的,账户也有持仓。但是Pos. 全部都为0. 在onbar里也驱动试过了。
Vars
Series<Numeric> OnCall; //记录开仓时的持仓权利金
Series<Numeric> OnProfit; //记录持仓盈亏
Events
OnBarOpen(ArrayRef<Integer> indexs)
{
Position pos;
Bool ret = A_GetPosition(pos,Symbol);
Print("A_GetPosition:" + IIFString(ret, "True", "False") + "," + Text(pos));
Print("****检查*****");
Print("longMarketValue= " + Text(Pos.longMarketValue));
Print("longAvgPrice= " + Text(Pos.longAvgPrice));
Print("longAvgPriceO= " + Text(Pos.longAvgPriceO));
Print("longCurrentVolume= " + Text(Pos.longCurrentVolume));
Print("shortCurrentVolume= " + Text(Pos.shortCurrentVolume));
Print("longFloatProfite= " + Text(Pos.longFloatProfit));
Print("longFloatProfitO= " + Text(Pos.longFloatProfitO));
Print("longOpenTotalAmount= " + Text(Pos.longOpenTotalAmount));
Print("longUseMarginAmount= " + Text(Pos.longUseMarginAmount));
OnCall = (Pos.longAvgPrice * Pos.longCurrentVolume) * contractunit * 100;//longOpenTotalAmount
Print("OnCall= " + Text(OnCall));
}
一个是持仓 一个是持仓金额
你需要哪个就用哪个
模拟是最大程度模拟真实,不排除可能有的柜台取不到
实盘前自己都可以先测试