麻烦老师大神帮忙看下代码 哪里有问题 逻辑 : 是在买一价格减delta挂买入,在卖一价格加delta挂卖出单,如果买单成交则撤销卖单,
// 如果卖单成交则撤销买单;仓位控制采用最小持仓原则,也就是如果有多仓头寸,则卖
// 单为卖平仓,反之为卖开仓,如果是有空头头寸则买单为买平仓,反之为买开仓;
为啥执行到 平仓 以后 就不在继续 下新的委托单了 开平标志 Enum_Exit 和 Enum_ExitToday 这两个都试过
//初始化事件函数,策略运行期间,首先运行且只有一次
OnInit()
{
timeID3 = CreateTimer(millsec*10,0,1);
}
//Bar更新事件函数,参数indexs表示变化的数据源图层ID数组
OnBar(ArrayRef<Integer> indexs)
{
x = 1;
}
OnTimer(Integer id,Integer millsecs)
{
if(id == timeID3)
{
A_SendOrderEx(Symbol,Enum_Buy,enum_entry,1, Q_BidPrice - x *MinPointA ,dids); //以买价发送买单
fubuy_ord = dids[0]; //买单委托单号赋值给首单买单号
A_SendOrderEx(Symbol,Enum_Sell,enum_entry,1,Q_AskPrice + x *MinPointA ,sids); //以卖价发送卖单
fusell_ord = sids[0]; //卖单委托单号赋值给首单卖单号
}
}
OnOrder(OrderRef ord)
{
if( ord.side == Enum_Buy and ord.combOffset == enum_entry and ord.status == Enum_Filled) //买入开仓成交 撤空单 然后再挂单
{
tem_delete = A_DeleteOrderEx(sids[0]); //空单撤单
if(tem_delete) // 撤单空单成功后 继续挂 卖出平仓 和买入开仓
{
A_SendOrderEx(Symbol,Enum_Buy,enum_entry,1,Q_BidPrice - x *MinPointA ,dids); //以买1价 - x发送买开单
fubuy_ord = dids[0]; //买单委托单号赋值买单号
A_SendOrderEx(Symbol,Enum_Sell,Enum_ExitToday ,1, Q_AskPrice + x *MinPointA ,sids); //以卖1价 + x发送卖平单
fusell_ord = sids[0]; //卖单委托单号赋值卖单号
}
}
if( ord.side == Enum_Sell and ord.combOffset == enum_entry and ord.status == Enum_Filled) //卖出开仓成交 撤多单 然后再挂单
{
tem_delete = A_DeleteOrderEx(dids[0]); //多单撤单
if(tem_delete)// 撤单多单成功后 继续挂 买入平仓 和卖出开仓
{
A_SendOrderEx(Symbol,Enum_Buy,Enum_ExitToday ,1, Q_BidPrice - x *MinPointA ,dids); //以买1价 - x 发送买平单
fubuy_ord = dids[0]; //买单委托单号赋值给首单买单号
A_SendOrderEx(Symbol,Enum_Sell,enum_entry,1,Q_AskPrice + x *MinPointA ,sids); //以卖1价 + x发送卖开单
fusell_ord = sids[0]; //卖单委托单号赋值卖单号
}
}
if( ord.side == Enum_Buy and ord.combOffset == Enum_ExitToday and ord.status == Enum_Filled) //买入平仓成交 撤空单 然后再挂双向单
{
tex_delete = A_DeleteOrderEx(sids[0]); //空单撤单
if(tex_delete) // 撤单空单成功后 继续挂 卖出平仓 和买入开仓
{
A_SendOrderEx(Symbol,Enum_Buy,enum_entry,1,Q_BidPrice - x *MinPointA ,dids); //以买1价 - x发送买开单
fubuy_ord = dids[0]; //买单委托单号赋值买单号
A_SendOrderEx(Symbol,Enum_Sell,enum_entry,1, Q_AskPrice + x *MinPointA ,sids); //以卖1价 + x发送卖开单
fusell_ord = sids[0]; //卖单委托单号赋值卖单号
}
}
if(ord.side == Enum_Sell and ord.combOffset == Enum_ExitToday and ord.status == Enum_Filled) //卖出平仓成交 撤多单 然后再挂双向单
{
tex_delete = A_DeleteOrderEx(dids[0]); //撤单上一轮多单
if(tex_delete)// 撤单多单成功后 继续挂 买入平仓 和卖出开仓
{
A_SendOrderEx(Symbol,Enum_Buy,enum_entry,1, Q_BidPrice - x *MinPointA ,dids); //以买1价 - x 发送买开单
fubuy_ord = dids[0]; //买单委托单号赋值给首单买单号
A_SendOrderEx(Symbol,Enum_Sell,enum_entry,1,Q_AskPrice + x *MinPointA ,sids); //以卖1价 + x发送卖开单
fusell_ord = sids[0]; //卖单委托单号赋值卖单号
}
}
}
a函数看不了,写日志诊断开仓条件哪个不满足