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看看

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