TBQ监控器手动换月的手数问题和自动换月的一个设想

问题一:TBQ运行策略时遇到主力合约更换,监控器会显示实仓与信号仓不一致,只要手动同步就可以了吧?我想问的是开仓手数会不会更换?比如原来开5手,那么自动换合约也是再开5手?还是按开仓的保证金来算?比如我设置每次开仓只用2万元,那么它会算出一个开仓手数是5手;当换月后,假设新合约价格只有原合约价格的一半,那么按2万元来算,它新开的手数应该是10手,实际同步换仓会自动调节手数吗?问题二:我想在data0上插入888主力合约连续,在data1上插入777主力合约连续。然后监控两者的持仓量,当data1.OpenInt[1]>=data0.openint[1],在data0上平仓,在data1上开仓。是不是相当于换月了呢?然后次主力合约会慢慢变成主力合约。等待新的次主力合约的持仓量与主力合约相等时,再进行一次操作。不过由于编程水平不高,也不清楚这样运行,实际中会有什么样的问题。随便写了一个错误百出的程序,请各位老师指教,批评,改正。Params Numeric FastLength(5);// 短期指数平均线参数 Numeric SlowLength(20);// 长期指数平均线参数Vars Series<Numeric> AvgValue1; Series<Numeric> AvgValue2; Series<Numeric> kaiguan;Events OnBar(ArrayRef<Integer> indexs) { AvgValue1 = AverageFC(Close,FastLength); AvgValue2 = AverageFC(Close,SlowLength); PlotNumeric(\"MA1\",AvgValue1); PlotNumeric(\"MA2\",AvgValue2); If(MarketPosition <>1 && AvgValue1[1] > AvgValue2[1]) { Buy(1,Open); } If(MarketPosition <>-1 && AvgValue1[1] < AvgValue2[1]) { SellShort(1,Open); } If(data1.OpenInt[1]>=data0.openint[1]) { If(MarketPosition==1 and kaiguan==1) { data0.sell(0,data0.open); data1.buy(1,data1.open); kaiguan=0; } If(MarketPosition==-1 and kaiguan==1) { data0.BuyToCover(0,data0.open); data1.SellShort(1,data1.open); kaiguan=0; } } If(kaiguan==0 and data1.OpenInt[1]<0.8*data0.openint[1]) { kaiguan=1; } }

手数取决于你代码里写的多少加载888 和777来自己换月是可行,但确保编程代码没有问题