自编的下单软件怎么只出现信号,不开仓 [文华财经知识]
- 咨询内容:
此主题相关图片如下:未命名.jpg
此主题相关图片如下:qq截图20120130092040.png
我的下单组件是开仓信号持续300秒开仓,平仓立即发出;但怎么只出现信号?
- 赢顺技术人员:
//该组件仅仅用来示范如何编写算法交易组件
//用户需要根据自己交易经验,编写组件再实际应用!!!//主要策略:设定超价参数,开平仓时,自动根据超价参数调整委托价格,提高成交价几率。
这是我的下单组件,
VAR N;//定义超价参数。
VAR KN;//定义开仓手数。
VAR PN;//定义平仓手数。
VAR BKID;//定义BK委托ID
VAR SKID;//定义SK委托ID
VAR BPID;//定义BP委托ID
VAR SPID;//定义SP委托ID
VAR LastState;
VOID MAIN()//主函数。
{
N=1;
KN=1;
PN=1;
LastState=ReadGlobal("LASTSTATE");
IF(F_FreshSig()==1&&F_SigValid()==1)//如果是未处理过的新信号
{
IF(F_Sig()==BK&&CurrentTime()-F_SigTime()>=300) //如果取出的信号为BK
{
BKID=T_Deal(F_DealCode(),0,0,KN,Offers(F_DealCode(),"ask1")+MinPrice(F_DealCode())*N);//买开指定手数。
}
IF(F_Sig()==SK&&CurrentTime()-F_SigTime()>=300) //如果取出的信号为SK
{
SKID=T_Deal(F_DealCode(),1,0,KN,Offers(F_DealCode(),"bid1")-MinPrice(F_DealCode())*N);//卖开指定手数。
}
IF(F_Sig()==BP) //如果取出的信号为BP
{
IF(F_SellPosition()<PN&&F_SellPosition()>0)
{
BPID=T_Deal(F_DealCode(),0,1,F_SellPosition(),Offers(F_DealCode(),"ask1")+MinPrice(F_DealCode())*N);//买平指定手数。
//此句中T_Deal的第3个参数为2,表示平今,只适用于上交所合约,如果绑定非上交所合约时,请将2改为1即可。下同理。
}
IF(F_SellPosition()>=PN)
{
BPID=T_Deal(F_DealCode(),0,1,PN,Offers(F_DealCode(),"ask1")+MinPrice(F_DealCode())*N);//买平指定手数。
}
}
IF(F_Sig()==SP) //如果取出的信号为SP
{
IF(F_BuyPosition()<PN&&F_BuyPosition()>0)
{
SPID=T_Deal(F_DealCode(),1,1,F_BuyPosition(),Offers(F_DealCode(),"ask1")-MinPrice(F_DealCode())*N);//买平指定手数。
}
IF(F_BuyPosition()>=PN)
{
SPID=T_Deal(F_DealCode(),1,1,PN,Offers(F_DealCode(),"ask1")-MinPrice(F_DealCode())*N);//买平指定手数。
}
}
}
ELSE IF(F_FreshSig()==0)//如果是处理过的信号
{
LastState=0;
IF(F_Sig()==BK) //如果取出的信号为BK
{
IF(T_OrderState(BKID)==1&&LastState==0)//买开委托全部成交
{
MessageOut("成交已完成!");
LastState=1;
}
}
IF(F_Sig()==SK) //如果取出的信号为SK
{
IF(T_OrderState(SKID)==1&&LastState==0)//卖开委托全部成交
{
MessageOut("成交已完成!");
LastState=1;
}
}
IF(F_Sig()==BP) //如果取出的信号为BP
{
IF(T_OrderState(BPID)==1&&LastState==0)//买平委托全部成交
{
MessageOut("成交已完成!");
LastState=1;
}
}
IF(F_Sig()==SP) //如果取出的信号为SP
{
IF(T_OrderState(SPID)==1&&LastState==0)//卖平委托全部成交
{
MessageOut("成交已完成!");
LastState=1;
}
}
}
WriteGlobal("LASTSTATE", LastState);
} - 赢顺客服:
此主题相关图片如下:qq截图20120130092929.png
此主题相关图片如下:qq截图20120130093007.png
不知道怎么不委托,也没持仓, - 网友回复:
您时间判断的句子不能写到F_FreshSig()==1&&F_SigValid()==1下,因为信号走完300s 就不是新信号了,所以应该写到F_FreshSig()==0&&F_SigValid()==1的下面。
- 网友回复:
把IF(F_FreshSig()==1&&F_SigValid()==1)改为 IF(F_FreshSig()==0&&F_SigValid()==1)
其他都不变是吗?
相关文章
-
没有相关内容