If(BarStatus == 0)
// 全局变量初始化
{
SetGlobalVar(1,0); // 记录高空低多状态 1 0
SetGlobalVar(2,0); // 记录高多低空状态 -1 0
}
Con1= Dtsj11>0 && Dtsj12<0 && Dtsj13<0 && Dtsj14<0;//平多条件 平多开空条件
Con3= Dtsj11<0 && Dtsj12>0 && Dtsj13>0 && Dtsj14>0;//平空条件 平空开多条件
If(Con1 && GetGlobalVar(1)==0)
{
A_SendOrder(Enum_Sell,Enum_Exit,DTCC,Q_AskPrice); //平多
A_SendOrder(Enum_Sell,Enum_Entry,1,Q_AskPrice); //开空
SetGlobalVar(1,1);
}
If(Con3 && GetGlobalVar(1)==1)
{
A_SendOrder(Enum_Buy,Enum_Exit,KTCC,Q_BidPrice); //平空
A_SendOrder(Enum_Buy,Enum_Entry,1,Q_BidPrice); //开多
SetGlobalVar(1,0);
}
Con5= Dtsj11<0 && Dtsj12<0 && Dtsj13<0 && Dtsj14<0;//平多条件 平多开空条件
Con7= Dtsj11>0 && Dtsj12>0 && Dtsj13>0 && Dtsj14>0;//平空条件 平空开多条件
If(Con5 && GetGlobalVar(2)==0)
{
A_SendOrder(Enum_Sell,Enum_Exit,DTCC,Q_AskPrice); //平多
A_SendOrder(Enum_Sell,Enum_Entry,1,Q_AskPrice); //开空
SetGlobalVar(2,-1);
}
If(Con7 && GetGlobalVar(2)==-1)
{
A_SendOrder(Enum_Buy,Enum_Exit,KTCC,Q_BidPrice); //平空
A_SendOrder(Enum_Buy,Enum_Entry,1,Q_BidPrice); //开多
SetGlobalVar(2,0);
}
你好,全局变量这样用是可以。只是策略逻辑的细节可能有点问题,因为A_SendOrder指令并不能保证一定执行成功,它的运行需要一些条件,比如:账户已经登录,开启了自动交易等等。所以,最好是根据它的返回值,为True再修改这些全局变量标志,否则,可能导致指令未执行,而标志又修改了,导致整个逻辑判断紊乱。
账肯定是登录的,自动交易也是开启的,现在的问题是加了全局变量没有交易动作,去掉全局变量交易次数很多,能不能远程帮我看看?
建议你参考下A函数下单的文档,根据返回值为真才修改全局变量的值
问题是什么?
返回值为“True”再变值,单还是瞬间下单多次。
麻烦您把完整的工作区加代码导出,发出来吧。否则,问题我们都很难搞清楚,更别谈解决问题
所有的代码问题,都需要调试,而且有的调试还挺费精力的,要我们工作人员摸索着重现问题,再解决问题,最后结果就是问题无人问津。这就是问题症结所在,希望我们大家加强配合,共同提高效率。谢谢!