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进行约束
没有做仓位判断
开仓前先查询是否开过仓
可以直接查询账户仓位
如果有多策略同时在交易同一个品种,那就需要追踪策略发出的订单,自行记录
谢谢
朋友,你这个问题解决了吗?我也遇到了,想跟你交流一下你是怎么处理的