请教各位老师,我的策略是用指数映射到主力进行交易的,如果主力合约准备跌停时,我想在距离跌停价前10个价位以跌停价发出平仓单,可是在策略代码里面怎么获取到主力的跌停价?,因为是加载到指数上的。
老师,我根据你给的这段代码订阅主力涨跌停数据,做成了警报,按道理说应该是触及了涨跌停价位才警报的哦,我加载到多个品种上实验,多数品种多数情况下是正常的,只有偶尔个别品种触及警报时是误报,实际主力价格并未到达涨跌停价格,请问这是什么原因? 半个多月来发现了3次,都是在夜盘开始前后几分钟内出现警报
OnInit()
{
SubscribeTick(RelativeSymbol()); // 订阅主力合约的tick
Tick myTick;
GetTick(RelativeSymbol(),myTick); // 读取主力合约的tick
LmtUp = myTick.limitUp; // 读取tick中的涨停板价
LmtDn = myTick.limitDown; // 读取tick中的跌停板价
}
OnBar(ArrayRef<Integer> indexs)
{
Commentary("主力合约涨停价="+Text(LmtUp)+", 跌停价="+Text(LmtDn));
}
有没有老师看到我的新问题 呢?
还想继续就这个问题请教老师,假如之前已经开启了交易助手的20秒不成交即撤单的设置,当行情接近涨停或者跌停触发平仓信号之后,策略发出了以涨停价或者跌停价平仓的单子,我想让这个单子发送出去之后不撤销,一直到成交或者收盘,请问能否在策略代码里面关闭之前交易助手的设置呢?
交易助手是软件里的一个功能模块,这个目前应该是不受策略控制的。
非常感谢社区里热心回复的老师,这个问题纠结了好久了,实盘虽然碰到的情况不多,但是也要解决,希望能继续得到老师的帮助
具体怎么操作呢?
写了个例子,测试OK。不需要手动叠加主力合约。
Vars
Global Numeric LmtUp; // 用来保存主力合约涨停价
Global Numeric LmtDn; // 用来保存主力合约跌停价
Events
OnInit()
{
SubscribeTick(RelativeSymbol()); // 订阅主力合约的tick
Tick myTick;
GetTick(RelativeSymbol(),myTick); // 读取主力合约的tick
LmtUp = myTick.limitUp; // 读取tick中的涨停板价
LmtDn = myTick.limitDown; // 读取tick中的跌停板价
}
OnBar(ArrayRef<Integer> indexs)
{
Commentary("主力合约涨停价="+Text(LmtUp)+", 跌停价="+Text(LmtDn));
}
非常感谢,如果是一个策略同时加载到多个商品上进行交易的,像我的策略就是这种情况,加载了10多个品种,而且加载的品种会不定期更换的,又怎么实现这个功能呢?
如果多品种,是一个品种一个策略单元的,直接用就可以。如果是多品种叠加的,就需要在上面公式基础上,加上Range来对所有品种遍历一次,把结果记录到数组或二维数组即可。
可以叠加一个主力合约,跨图层去读取