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或微信请选择方便的一个联系我们就行,加好友时请简单备注下您的需求,否则无法通过。谢谢您!)
相关文章
-
没有相关内容