写了一段测试代码希望通过MaxContracts获得虚拟账户里最新的持仓合约数,结果在MarketPosition=1的时候总是返回0.
代码逻辑比较简单, 运行在实时行情下:
1. 连续3根Bar, 买入一手
2. 连续买入3次后,从下一根Bar每次卖出一手,直到 MarketPosition=0
具体代码如下:
Vars
Global Integer OrderOnBar(-1);
Events
OnInit()
{
PrintClear();
}
OnBarOpen(ArrayRef<Integer> indexes)
{
PlotAuto("BarIndex",Text(CurrentBar),Low);
}
OnBar(ArrayRef<Integer> indexs)
{
If(QuoteDataExist) {
If(BarsSinceEntry() <= 2)
{
Buy(1, 0);
If(CurrentBar <> OrderOnBar)
{
Print(Text(SystemDateTime) + " - Bar # " + Text(CurrentBar) + " - 买多1手");
Print("MarketPosition:" + Text(MarketPosition()));
Print("MaxContracts:" + Text(MaxContracts()));
Print("MaxContractsHeld:" + Text(MaxContractsHeld()));
Print("--------------------------------");
OrderOnBar = CurrentBar;
}
}
Else If(MarketPosition == 1)
{
Sell(1, 0);
If(CurrentBar <> OrderOnBar)
{
Print(Text(SystemDateTime) + " - Bar #" + Text(CurrentBar) + " - 平多1手");
Print("MarketPosition:" + Text(MarketPosition()));
Print("MaxContracts:" + Text(MaxContracts()));
Print("MaxContractsHeld:" + Text(MaxContractsHeld()));
Print("--------------------------------");
OrderOnBar = CurrentBar;
}
}
}
}
运行结果截图如下
从结果上可以看出:
1. MaxContractsHeld在下完3手多单后始终返回的是历史上最大的多头持仓3手
2. 从第一次开始平多单时MaxContracts就一直是0
我的问题是:
#1. MaxContracts返回值的含义是什么?
#2. 如果MaxContracts不能返回虚拟账户当前的实时持仓手数,那么应该用什么方式来获得?
谢谢老师回复,请问MaxContracts返回值的含义是什么呢?
CurrentContracts我也注意到了,不过这个是净持仓,当时想着用MaxContracts可以看到总持仓