请教!!!

Params //此处添加参数 Vars //此处添加变量 String my_tb("tbf_wd118552"); Integer accountIndex; Integer LastIndex; Integer nCount; //Integer InvalidInteger(); Numeric a; Numeric b; Numeric c; Global Numeric k; bool m; Defs //此处添加公式函数 Events //此处实现事件函数 //初始化事件函数,策略运行期间,首先运行且只有一次 OnInit() { A_BindTradeAccount(my_tb); } //Bar更新事件函数,参数indexs表示变化的数据源图层ID数组 OnBar(ArrayRef<Integer> indexs) { if (k==0) { if (BarExistStatus() == 1 /*BarStatus() == 2*/) { if (close>open ) { a=IntPart((A_FreeMargin(accountIndex = 0)*0.32)/((close+MinMove()*5)*MarginRatio()*ContractUnit())); b=Q_AskPrice()-MinMove()*5; print("委托价格:"+text(b)); m=A_SendOrder(Enum_Buy,Enum_Entry,a,b); print("开仓"); print("开仓价格:"+text(b)); if (m == true) { print("是否发单:"+"成功"); } Else { print("是否发单:"+"失败"); } } } LastIndex = A_GetLastOpenOrderIndex(Enum_Buy,Enum_Entry); print("索引:"+text(LastIndex)); print("手数:"+text(a)); print("开仓资金:"+text(A_FreeMargin(accountIndex = 0)*0.32)); print("可用资金:"+text(A_FreeMargin(accountIndex = 0))); print("未成交数:"+text(A_GetOpenOrderCount())); print("对手价:"+text(Q_AskPrice())); if (A_AccountDataExist(A_AccountIndex(A_AccountID())) == True) { print("账户有效"); } k=1; } } 以上代码,用BarStatus() == 2时结果如下: 用BarExistStatus() == 1时: 另外,模拟盘Q_AskPrice()函数取不到值。

解析都在上面了,自己好好研究一下代码吧

回复:非常感谢!

第二个问题就有点搞笑了,你的barstatus对k的赋值根本没有起到控制效果,等于说在第一个bar上,你输出了索引手数等数据,然后k值就变成了1,之后就再也进不了你写的代码逻辑了。

第一个问题 ,当BarExistStatus() == 1 的时候,输出的委托价格 开仓价格 ,是否发单等无效,是因为在历史bar上触发了。历史bar上是获取不了盘口数据的。你可以同时输出一下barstatus看看 例图给你了

所以你的问题是绑定账户没成功是吗? 下次麻烦把问题也直接说清楚,不然还要浪费时间琢磨你代码到底想表达什么 等下午开盘会研究