A_SendOrderEx总是返回False

//代理信号事件,该事件会接管当前策略单元的所有信号,用户要在该事件内处理要不要发单。

OnSignal(ArrayRef<Signal> sigs)

{

//只有实时行情的Bar才处理发单

If( BarStatus<>2 )

return;


Integer i;

Integer j;

Bool ret = False;

String Type;

Numeric ordPrice = 0;

//查询指定合约的最新Tick

Tick tickData;

Array<Integer> orderIds;

//遍历所有信号

For i = 0 To GetArraySize(sigs) - 1

{

SignalRef sig = sigs[i];

//历史信号不处理

If( BitHas(sig.flag,Enum_Signal_History) )

continue;

//不是实时行情,不处理

If( BitHas(QuoteStatus,Enum_QuoteStatus_RealTime)==False )

Continue;

ret = GetTick( ActiveSymbol, tickData );


If( sig.side==Enum_Buy )

{

type = \"买\";

ordPrice = tickData.bidask1.askP+1;

}

Else If( sig.side==Enum_Sell )

{

type = \"卖\";

ordPrice = tickData.bidask1.bidP-1;

}

Range[j=0:A_AccountCount()-1]

{

ret = A_SendOrderEx(RelativeSymbol,sig.side,sig.combOffset,sig.volume,ordPrice,orderIds,\"主力发单\",A_GetOrderCreateSource(),j);

Print(\"OnSignal \"+\"账户\"+Text(j)+\" \"+ActiveSymbol+\" \"+type+\" 价格=\"+Text(ordPrice)+\" 手数=\"+Text(sig.volume)+ IIFString(ret, \" 成功\", \" 失败\"));

Print(\"OnSignal \"+\"GetArraySize(orderIds)=\"+Text(GetArraySize(orderIds)));

}

       }

}

上面代码A_SendOrderEx执行后总是返回失败,orderIds没有内容,请问可能是什么原因?

A_SendOrderEx函数下单返回False
A_sendorderex 没有执行,返回值是false,委托列表是空
A_SendOrderEx函数一直返回false,请各位老师帮忙看下
a_sendorderex函数的返回参数orderids疑问
实时行情,A函数撤单成功,却返回false
A函数返回值为False,是因为电脑操作系统有关吗?
A_SendOrderEx
实时撤单成功,却返回false
A函数发单成交但返回值为False
MaxContracts返回当前持仓的最大持仓合约数总是0

对,我的辅助K线图是橙色脸。

橙色脸和绿脸区别在哪儿,和代码有关系吗,或怎么通过系统界面设置?

账户在界面关联了,代码也显示关联成功;

开启自动交易虽然返回False但账户交易成功,请问A_SendOrderEx发单必须依靠自动交易来完成账户交易吗?

我猜测,你是用策略交易的交易单元运行的a函数,然后打开了辅图k线,看到辅图k线上print了false,是吗?

是的。我现在没办法,就不管他返回值了,反正自动交易模式下,交易是正常的,委托后的处理就交给交易助手吧

你看到的false,是辅图k线的公式回报的结果。这个辅图的脸应该不是绿脸。

你看到的成功的报单,是策略单元的执行结果。

两边不是一回事。

辅图并不是展示策略单元,而是以策略单元的参数配置重新新建一个k线图表,等于说克隆一个。所以如果你辅图k线如果也启动自动交易,变成绿脸,就变成双份报单了。

您的意思是说,实际交易成交是交易助手接管理论信号的执行结果,代码里接管信号发出的A函数还是失败的?

你这个概念好像有点混乱嘛

你这里用a函数报单,跟交易助手无关,跟信号也无关,你的问题我都看不懂

a函数执行完,如果符合报单状态并成功执行了报单业务操作,就返回true,这个时候账户的委托列表里必定会生成一个单子

如果返回false,那委托列表里就没有,大概率是因为没启动自动交易或者账户没关联。

右上方的脸是表示当前自动交易状态的一个标志,具体建议去帮助中心查看一下对应的状态说明。

另外,建议跟着官方的0基础教学视频先掌握基础常识,否则无法有效沟通

好的,谢谢您的耐心回答,我再仔细看看教程!

确实之前概念比较混乱,现在明白了,辅助K线因没有自动交易所以返回False,量化看盘里日志是正常的。

sendorder返回false一般是没有关联账户或者没开启自动交易

补充一下测试过程:

在策略交易中,策略单元加载000指数,绑定TB模拟账户,此操作正确;

发单的合约ActiveSymbol是获取到的主力合约代码,订阅了主力Tick数据且获取正确;

策略运行模式我分别测试了自动交易和不自动交易两种情况:启动自动交易情况,账户下单及成交正常,但自己写的发单代码A_SendOrderEx返回False;不选择自动交易仅启动策略,A_SendOrderEx也返回False,且账户没有发生任何交易。