如何使用 A_DeleteOrder 针对当前交易账户发送撤单指令?

08-01 11:49发布

付费偷看设置
发送
1条回答
文期王华
1楼 · 08-01 12:48.采纳回答
A_DeleteOrder 针对当前交易账户发送撤单指令

//此函数为系统封装函数。 用法: data0.A_DeleteOrder(Str) //针对当前交易账户,对data0合约且合同号为Str的未成交委托单发送撤单指令。 //该函数可撤交易账户中该合约的未成交委托单,包括手动发出的和其他程序化发出的未成交委托单。 1、撤单指令发送成功返回1,发送失败返回0。 2、使用该函数需要在Data区定义合约,如果不写入默认取图表上加载的合约(具体定义规则见文末)。 3、参数Str为所要撤委托单的合同号,字符串型。可缺省,如果不写,则是撤掉当前交易账户内data0合约的所有未成交委托单。支持下面两种写法: data0.A_DeleteOrder(Str);//撤当前账户data0合约且合同号为Str的未成交委托单。 data0.A_DeleteOrder("");//撤当前账户data0合约的所有未成交委托单。 注: 1、该函数直接发单,不经过任何确认,并会在每次公式计算时发送,一般需要配合着仓位头寸进行条件处理,在不清楚运行机制的情况下,请慎用。 2、该函数支持回测,可在算法交易模型逻辑检测中使用。 例1: Data data0:"m1909"; Vars Global_Numeric BKDEL;//撤单标志 Begin If(BKDEL==0&&A_IsNoOrder==0)//如果账号有挂单 { data0.A_DeleteOrder("");//撤掉交易账号中data0合约的所有挂单 BKDEL=1; } End 例2: If(data0.F_GetOpenOrderCount()>0) { A_DeleteOrder(F_OrderContractNo(F_GetLastOrderIndex(Enum_Buy,Enum_Entry))); } //如果未成交委托单数量不等于0,即撤账户中最后一个未成交委托单 Data区定义规则: 1、不同公式类型的缺省规则: //公式类型为基于K线数据可以不定义Data区,默认取图表中的合约; //公式类型为独立的算法交易模型,必须定义Data数据区。 2、Data区可定义多个合约,支持写入合约代码或文华码,需要使用双引号标注。 3、定义不同合约数量的规则: //若模型中Data区只定义了一个合约,则该函数可以不使用data0.的形式来调用,默认定义的唯一合约; //若模型中Data区定义了多个合约,则该函数必须使用data0.的形式来调用。