重复开单

Params //此处添加参数 Numeric length1(5); Numeric length2(20);Vars //此处添加变量 series<Numeric> ma1; series<Numeric> ma2; series<bool> bool_crossover; series<BOOL> bool_crossunder; Global Bool trade_mark;Defs Events OnBar(ArrayRef<Integer> indexs) //初始化事件函数,策略运行期间,首先运行且只有一次,应用在订阅数据等操作 { //双均线 用收盘价计算两根均线 //金叉和死叉状态 ma1 = Average(Close,length1); ma2 = Average(Close,length2); PlotNumeric(\"ma1\",ma1); PlotNumeric(\"ma2\",ma2); //金叉 bool_crossover = ma1[1] <= ma2[1] and ma1 > ma2; //死叉 bool_crossunder = ma1[1] >= ma2[1] and ma1 < ma2; If(bool_crossover[1] and trade_mark) { Array<Integer> orderids; A_SendOrderEx(Enum_Buy,Enum_exit,1,Open,orderids); A_SendOrderEx(Enum_Buy,Enum_Entry,1,Open,orderids);//买 trade_mark = False; } If(bool_crossunder[1] and trade_mark); { Array<Integer> orderids; A_SendOrderEx(Enum_sell,Enum_Exit,1,Open,orderids);//卖 A_SendOrderEx(Enum_sell,Enum_entry,1,Open,orderids); trade_mark = False; } } OnBarOpen(ArrayRef<Integer> indexs) { trade_mark = True; }

a_sendorderex历史bar也会执行报单命令,用barstatus==2进行约束

没有做仓位判断开仓前先查询是否开过仓可以直接查询账户仓位如果有多策略同时在交易同一个品种,那就需要追踪策略发出的订单,自行记录

回复:谢谢

回复:朋友,你这个问题解决了吗?我也遇到了,想跟你交流一下你是怎么处理的