下单组件 这儿有语法错误吗? [文华财经]
- 咨询内容:
我这个模组,能运行,但一会儿就会死,查看模组运行,显示116行有语法错误,我就是检查不出来,麻烦老师看看
ELSE IF(F_Sig()==SPK) //如果取出的信号为SPK
{
IF(T_IsNoOrder()==0&&LastState==0)
{
IF(CurrentTime()-LastOrderTime()>s&&F_SigPrice()-Offers(F_DealCode(),"bid1")<=MinPrice(F_DealCode())*M);
T_DeleteOrderByCode(F_DealCode(),0);
SPID=T_Deal(F_DealCode(),1,1,F_BuyPosition(),Offers(F_DealCode(),"bid1"));
SKID=T_Deal(F_DealCode(),1,0,KN,Offers(F_DealCode(),"bid1"));
}
ELSE IF(T_IsNoOrder()==1&&T_OrderState(SKID)==1&&T_OrderState(SPID)==1)//卖开委托全部成交
{
MessageOut("成交已完成!");
LastState=1;
}
}提示的是这儿 if 附近有语法错误,麻烦帮我看看,s是参数,10 秒
IF(CurrentTime()-LastOrderTime()>s&&F_SigPrice()-Offers(F_DealCode(),"bid1")<=MinPrice(F_DealCode())*M);
- 文华技术人员:
麻烦您告知您的完整组件,可以发送到research@wenhua.com.cn ,并且在邮件中附上该帖子链接,谢谢
- 文华客服:
//该组件仅仅用来示范如何编写算法交易组件
//用户需要根据自己交易经验,编写组件再实际应用!!!//主要策略:设定超价参数,开平仓时,自动根据超价参数调整委托价格,提高成交价几率。
VAR N;//定义超价参数。
VAR KN;//定义开仓手数。
//VAR PN;//定义平仓手数。
VAR BKID;//定义BK委托ID
VAR SKID;//定义SK委托ID
VAR BPID;//定义BP委托ID
VAR SPID;//定义SP委托ID
VAR LastState;
VAR valume1;
VAR valume2;
VAR s;
VAR M;
VOID MAIN()//主函数。
{
KN=1;
M=5;N=0.4;
s=10;
LastState=ReadGlobal("LASTSTATE");
valume1=(Offers(F_DealCode(),"askvol1")+Offers(F_DealCode(),"bidvol1"))>0
&&Offers(F_DealCode(),"askvol1")/(Offers(F_DealCode(),"askvol1")+Offers(F_DealCode(),"bidvol1"))<N;
valume2=(Offers(F_DealCode(),"askvol1")+Offers(F_DealCode(),"bidvol1"))>0
&&Offers(F_DealCode(),"bidvol1")/(Offers(F_DealCode(),"askvol1")+Offers(F_DealCode(),"bidvol1"))<N;
IF(F_High(0)==T_GetRiseLimit(F_DealCode())&&F_BuyPosition()>0)
{
T_Deal(F_DealCode(),1,1,F_BuyPosition(),Offers(F_DealCode(),"bid1"));
}
ELSE IF(F_Low(0)==T_GetFallLimit(F_DealCode())&&F_SellPosition()>0)
{
T_Deal(F_DealCode(),0,1,F_SellPosition(),Offers(F_DealCode(),"ask1"));
}IF(F_FreshSig()==1&&F_SigValid()==1)//如果是未处理过的新信号
{
IF(F_Sig()==BPK) //如果取出的信号为BpK
{
IF(valume1==1)
{
BPID=T_Deal(F_DealCode(),0,1,F_SellPosition(),Offers(F_DealCode(),"bid1"));
BKID=T_Deal(F_DealCode(),0,0,KN,Offers(F_DealCode(),"bid1"));//买开指定手数。
}
ELSE
{
BPID=T_Deal(F_DealCode(),0,1,F_SellPosition(),Offers(F_DealCode(),"ask1"));
BKID=T_Deal(F_DealCode(),0,0,KN,Offers(F_DealCode(),"ask1"));//买开指定手数。
}
}ELSE IF(F_Sig()==SPK) //如果取出的信号为SK
{
IF(valume2==1)
{
SPID=T_Deal(F_DealCode(),1,1,F_BuyPosition(),Offers(F_DealCode(),"ask1"));
SKID=T_Deal(F_DealCode(),1,0,KN,Offers(F_DealCode(),"ask1"));//卖开指定手数。
}
ELSE
{
SPID=T_Deal(F_DealCode(),1,1,F_BuyPosition(),Offers(F_DealCode(),"bid1"));
SKID=T_Deal(F_DealCode(),1,0,KN,Offers(F_DealCode(),"bid1"));//卖开指定手数。
}
}
ELSE IF(F_Sig()==BP&&F_SellPosition()>0) //如果取出的信号为BP
{
IF(valume1==1)
{
BPID=T_Deal(F_DealCode(),0,1,F_SellPosition(),Offers(F_DealCode(),"bid1"));//买平指定手数。
//此句中T_Deal的第3个参数为2,表示平今,只适用于上交所合约,如果绑定非上交所合约时,请将2改为1即可。下同理。
}
ELSE
{
BPID=T_Deal(F_DealCode(),0,1,F_SellPosition(),Offers(F_DealCode(),"ask1"));//买平指定手数。
//此句中T_Deal的第3个参数为2,表示平今,只适用于上交所合约,如果绑定非上交所合约时,请将2改为1即可。下同理。
}
}
ELSE IF(F_Sig()==SP&&F_BuyPosition()>0) //如果取出的信号为SP
{
IF(valume2==1)
{
SPID=T_Deal(F_DealCode(),1,1,F_BuyPosition(),Offers(F_DealCode(),"ask1"));//买平指定手数。
}
ELSE
{
SPID=T_Deal(F_DealCode(),1,1,F_BuyPosition(),Offers(F_DealCode(),"ask1"));//买平指定手数。
}
}
}
ELSE IF(F_FreshSig()==0&&F_SigValid()==1)//如果是处理过的信号
{
LastState=0;
IF(F_Sig()==BPK&&LastState==0) //如果取出的信号为BPK
{
IF(T_IsNoOrder()==0)
{
IF(CurrentTime()-LastOrderTime()>s&&Offers(F_DealCode(),"ask1")-F_SigPrice()<=MinPrice(F_DealCode())*M);
T_DeleteOrderByCode(F_DealCode(),0);
BPID=T_Deal(F_DealCode(),0,1,F_SellPosition(),Offers(F_DealCode(),"ask1"));
BKID=T_Deal(F_DealCode(),0,0,KN,Offers(F_DealCode(),"ask1"));
}
ELSE IF(T_IsNoOrder()==1&&T_OrderState(BKID)==1&&T_OrderState(BPID)==1)//买开委托全部成交
{
MessageOut("成交已完成!");
LastState=1;
}
}
ELSE IF(F_Sig()==SPK) //如果取出的信号为SPK
{
IF(T_IsNoOrder()==0&&LastState==0)
{
IF(CurrentTime()-LastOrderTime()>s&&F_SigPrice()-Offers(F_DealCode(),"bid1")<=MinPrice(F_DealCode())*M);
T_DeleteOrderByCode(F_DealCode(),0);
SPID=T_Deal(F_DealCode(),1,1,F_BuyPosition(),Offers(F_DealCode(),"bid1"));
SKID=T_Deal(F_DealCode(),1,0,KN,Offers(F_DealCode(),"bid1"));
}
ELSE IF(T_IsNoOrder()==1&&T_OrderState(SKID)==1&&T_OrderState(SPID)==1)//卖开委托全部成交
{
MessageOut("成交已完成!");
LastState=1;
}
}
ELSE IF(F_Sig()==BP) //如果取出的信号为BP
{
IF(T_IsNoOrder()==0&&LastState==0)
{
IF(CurrentTime()-LastOrderTime()>s&&Offers(F_DealCode(),"ask1")-F_SigPrice()<=MinPrice(F_DealCode())*M);
T_DeleteOrderByCode(F_DealCode(),0);
BPID=T_Deal(F_DealCode(),0,1,F_SellPosition(),Offers(F_DealCode(),"ask1"));
}
ELSE IF(T_IsNoOrder()==1&&T_OrderState(BPID)==1)//买平委托全部成交
{
MessageOut("成交已完成!");
LastState=1;
}
}ELSE IF(F_Sig()==SP) //如果取出的信号为SP
{
IF(T_IsNoOrder()==0&&LastState==0)
{
IF(CurrentTime()-LastOrderTime()>s&&F_SigPrice()-Offers(F_DealCode(),"bid1")<=MinPrice(F_DealCode())*M);
T_DeleteOrderByCode(F_DealCode(),0);
SPID=T_Deal(F_DealCode(),1,1,F_BuyPosition(),Offers(F_DealCode(),"ask1"));
}
ELSE IF(T_IsNoOrder()==1&&T_OrderState(SPID)==1)//卖平委托全部成交
{
MessageOut("成交已完成!");
LastState=1;
}
}
}
WriteGlobal("LASTSTATE", LastState);
} - 网友回复:
我用的这个程序在测试
C>REF(H,1),BPK;
C<REF(L,1),SPK;
AUTOFILTER; - 网友回复: 您的下单组件源码语法检测室通过的,您具体有是什么问题吗?请详细说明
有思路,想编写各种指标公式,程序化交易模型,选股公式,预警公式的朋友
可联系技术人员 QQ: 262069696 进行 有偿 编写!(不贵!点击查看价格!)
相关文章
-
没有相关内容