OnInit()
{
// 大周期回测以 30m 颗粒度的横截面处理,避免引入未来数据
Data[0].SetBasePeriod("30m");
// 设置收盘提前触发的时间点
Array<Numeric> timePoint;
// 实盘运行阶段, 每30min的Bar提前10秒开始触发 OnBarClose
timePoint[0] = 0.212950; // 21:29:50
timePoint[1] = 0.215950; // 21:59:50
timePoint[2] = 0.222950; // 22:29:50
timePoint[3] = 0.225950; // 22:59:50
timePoint[4] = 0.092950; // 09:29:50
timePoint[5] = 0.095950; // 09:59:50
timePoint[6] = 0.102950; // 10:29:50
timePoint[7] = 0.105950; // 10:59:50
timePoint[8] = 0.112950; // 11:29:50
timePoint[9] = 0.135950; // 13:59:50
timePoint[10] = 0.142950; // 14:29:50
timePoint[11] = 0.145950; // 14:59:50
SetTriggerBarClose(timePoint);
//与数据源有关
Range[0:DataCount-1]
{
//=========数据源相关设置==============
AddDataFlag(Enum_Data_RolloverBackWard()); //设置后复权
AddDataFlag(Enum_Data_RolloverRealPrice()); //设置映射真实价格
AddDataFlag(Enum_Data_AutoSwapPosition()); //设置自动换仓
根据教程设置了30min的 SetTriggerBarClose,但是启动实盘交易后发现还是按tick来触发,请问怎么才能按照预期设定,每30minBar提前10s触发且只触发当前Bar,下一根30minBar也是只在当前Bar收完前10s触发
上面关于OnBarClose按Tick触发的原因找到了,可能是SetTriggerBarClose设置了太多时间,导致开盘就开始执行触发了。
目前遇到3个新问题,还麻烦老师指导一下:
1、按照OnBarClose在下一根Bar的第一个Tick执行上一根完整Bar的计算和下单的触发逻辑,仅使用图层函数Buy,Sell等能否成功委托下单?
2、对于跨周期的问题,代码做了如下设置,在OnBarClose触发方面能否保证大周期Bar也跟随小周期触发OnBarClose,除了当天最后一根小周期Bar按照14:59:59开始触发?
*****代码设置*******
// 大周期回测以 30m 颗粒度的横截面处理,避免引入未来数据
Data[0].SetBasePeriod("30m");
Array<Numeric> timePoint;
ArrayPushBack(timePoint, 0.145958); // 设置实盘运行阶段,OnBarClose 触发时间点为 14:59:58
SetTriggerBarClose(timePoint);
****************
3、OnBarClose里面下单使用的是图层函数,但是获取账户信息使用了A函数 A_GetAccount 有没有影响?
1.onbarclose可以用buysell
2. 多图层的情况下,你设置一个settrigger,几个周期可以一起操作
3.不知道你说的影响是什么,总之A函数是实时的
谢谢老师回复,第三点是翻帖子时看到有其他帖子下面老师回复到 OnBarClose 里面使用A函数会造成信号混乱,所以想求证一下开平仓的执行信号只用图层级别的buy、sell,仅在处理账户资金情况的判断上使用 A_GetAccount 获取账户信息,有没有影响?还会不会导致开平仓的信号混乱