你好,请问开多没问题,平多怎么每次都失败了,指教一下:
14:57:01(本机时间 ): BK信号---------------
14:57:01(本机时间 ): 委托发出(rb1905,3428,2,买,开)
14:57:01(本机时间 ): 委托成功(rb1905,委托号:2LS261038)
14:57:01(本机时间 ): 成交(rb1905,3428,买,开,2,委托编号:2LS261038)
14:58:01(本机时间 ): SP信号---------------
14:58:01(本机时间 ): AL_BuyPosition() = 10
14:58:01(本机时间 ): 委托发出(rb1905,3427,2,卖,平)
14:58:01(本机时间 ): 委托失败(rb1905,原因:可平仓数量不足)
我的模型:
BK_BJ:=IF(C<O,1,0);
BK_BJ=1 && BKVOL=0 ,BK;
BARSBK=1 && BKVOL>0,SP;
SETMODRUNTYPE(1);
AUTOFILTER;
我的模组
VAR KN;//开仓手数
GLOBAL_VAR BKID;
GLOBAL_VAR SPID;
GLOBAL_VAR Mod1;
VOID MAIN()
{
KN = 2;
Mod1 = "螺纹1905_1分钟_NEW_1(1)";//模组名称
IF (Mod1.F_FreshSig() == 1) //如果当前信号是没有处理过的新信号并且没有消失
{
IF(Mod1.F_SigValid() == 1)
{
TDEAL();//执行开平仓函数
}
}
}
VOID TDEAL() //开平仓函数
{
IF (Mod1.F_Sig() == BK) //如果信号是买开信号
{
MessageOut("BK信号---------------");
BKID = T_Deal(Mod1.F_DealCode(),0,0,KN,Offers(Mod1.F_DealCode(),"ask1"));//以对价发出KN手的买开委托
}
IF (Mod1.F_Sig() == SP) //如果信号是卖平信号
{
MessageOut("SP信号---------------");
MessageOut("AL_BuyPosition() = " + AL_BuyPosition(Mod1.F_DealCode()));
IF (AL_BuyPosition(Mod1.F_DealCode()) > 0 && AL_BuyPosition(Mod1.F_DealCode()) < KN)//如果当前模型多头持仓小于KN大于0
{
SPID = T_Deal(Mod1.F_DealCode(),1,1,AL_BuyPosition(Mod1.F_DealCode()),Offers(Mod1.F_DealCode(),"bid1"));//以对价发出当前持仓手数的卖平委托
}
ELSE IF (AL_BuyPosition(Mod1.F_DealCode()) >= KN)//如果当前模型多头持仓大于等于KN手
{
SPID=T_Deal(Mod1.F_DealCode(),1,1,KN,Offers(Mod1.F_DealCode(),"bid1"));//以对价发出KN手数的卖平委托
}
}
}