A函数公式不发单有人懂吗?麻烦帮忙解决可有偿 [开拓者 TB]
- 
						咨询内容:
Params
 Numeric J1(55);
 Vars
 NumericSeries MA;
 Numeric GG;
 Begin
 If(BarStatus==0) SetGlobalVar(0,0);
 MA=Average(C,55);
 GG=Highest(H[1],2);
 PlotNumeric("MA",MA);
 
 If(Barstatus <> 2 Or AccountDataExist()==false) return;
 
 if(BarStatus==2)
 {
 If(Q_AskPrice > ma[1] and GetGlobalVar (0) <> 1 AND A_BuyPosition==0 )
 {
 //A_SendOrder(Enum_Sell,Enum_Exit,1,Q_AskPrice);
 A_SendOrder (Enum_Buy,Enum_Entry,1,Q_AskPrice ) ;
 SetGlobalVar (0,1);
 }
 
 If(Q_BidPrice<=ma[1] AND GetGlobalVar (0)==1)
 {
 //A_SendOrder(Enum_Buy,Enum_Exit,1,Q_BidPrice);
 A_SendOrder ( Enum_Sell,Enum_Exit,1,Q_BidPrice);
 SetGlobalVar (0,0);
 }
 }
 End来源:CXH99.COM 
- 
						TB技术人员:
						 本帖最后由 追涨杀跌 于 2020-8-14 16:20 编辑 
						
 
 您好。您的问题,我之前就回复过您,而且我是做过测试后再回复您的,单从发单角度策略是没有问题的。
 但策略本身的逻辑是否有问题,我确实没有细测。说实话,每个客户写个策略碰到问题就丢给我们调试,我们再多的工作人员也忙不过来,这也绝不是解决问题的正确服务方式,这点希望您多理解。
 之后我看您还是不断地在论坛发帖、到客服群询问,虽然这种方式我并不认同。但为了解决您的问题, 就只有花点时间在极速版上做下测试,看看到底是什么原因。测试结果见下图:
 从测试的交易记录看 ,满足条件后,发单确实是没有问题的。但9点21分54秒后为什么就没有继续发单呢,仔细看消息中心,可以发现是有一个报错的。
 所以,后面不发单,原因还是出在策略本身。
 因为您发出买入开仓单后,SetGlobalVar (0,1); 这是没问题的,因为如果不设置,在A_BuyPosition改变之前,就有可能会重复地买入。
 但买入指令后并不意味着回报就立即回来了,所以卖出平仓时,是需要判断一下是否A_BuyPosition>0的
 而您现在的代码里并没有判断,所以,在9:21:54正好价格上穿完均线,马上又下穿均线,就发出了买入开仓指令,还没等成交,又立即发出了卖出平仓指令,而这时买入的回报还没回来,卖出平仓自然就报错了。但GlobalVar(0)又被您改成0了。后面买入的回报回来了,就演变成了,A_BuyPosition=1,GlobalVar(0)=0,这种出乎意外的情形了
 后面就很好理解了,因为开仓和平仓条件都不能满足了,也就不会再发单了。按照这个分析,后面一个条件中,应该改成
 If(Q_BidPrice<ma[1] AND GetGlobalVar (0)==1 And A_BuyPosition==1)
 因时间关系,我只能测试至此,如还有问题,后面只能靠您自己继续调试了。 附件: 你需要登录才可以下载或查看附件。没有帐号?注册
- 
						TB客服:
						追涨杀跌 发表于 2020-8-14 16:18 
 您好。您的问题,我之前就回复过您,而且我是做过测试后再回复您的,单从发单角度策略是没有问题的。
 但策 ...
 谢谢老师 给您添麻烦了,不发单的问题已经解决了是因为映射的问题,我用888合约映射主力 所以一直不发单
 感谢
有思路,想编写各种指标公式,交易模型,选股公式,还原公式的朋友
可联系技术人员 QQ: 262069696  或微信号:cxh99cxh99  进行 有偿收费 编写!
(注:由于人数限制,QQ或微信请选择方便的一个联系我们就行,加好友时请简单备注下您的需求,否则无法通过。谢谢您!)
相关文章
- 
                        没有相关内容
                       

 
                     会员登录/注册
会员登录/注册