各位大神好,因部分品种因交易所限制开仓手数无法小仓位参与,我想实现按交易所最低开仓手数开仓后立即部分平仓。用加权跑原本的策略,然后在另建单元为主力合约跑以下检测实际持仓实现部分平仓功能。但是实际过程中,无法实现百分百发送委托,这个会是什么原因。
Params
Numeric xzLot(5); // 默认手数
Numeric Lots(1); // 默认手数
vars
Global String tmpMSyms2; //当前的真实主力合约
Numeric xzLot(1); // 限制开仓手数
Global Numeric lots1(0); // 全局多头持仓数
Global Numeric lots2(0); // 全局空头持仓数
Events
OnPosition(PositionRef pos)
{
lots1 = pos.longCanSellVolume; // 全局多头持仓数
lots2 = pos.shortCanCoverVolume; // 全局空头持仓数
}
OnBar(ArrayRef<Integer> indexs)
{
Commentary("限制开仓: " + Text(xzLot));
Commentary("需求开仓: " + Text(Lots));
Commentary("多头持仓: " + Text(lots1));
Commentary("空头持仓: " + Text(lots2));
if(lots1 != 0 and lots1 != Lots and xzLot != 1)
{
Sell(lots1 - Lots, 0);
Commentary("多头限仓平仓" + text(lots1 - Lots) + "手");
}
if(lots2 != 0 and lots2 != Lots and xzLot != 1)
{
BuyToCover(lots2 - Lots, 0);
Commentary("空头限仓平仓" + text(lots2 + Lots) + "手");
}
}