在白银连续K线图,1小时级别,计算出空单开仓价格8875(策略为出现信号时,k线闭合前5秒以收盘价交易)
看白银2508对应的K线收盘价也为8875
但是最终委托价却是8798,与计算出来的开单价格不一致,委托时间也不是按策略来的,时间问题分析后原因应该如下:
设定出发时间点代码,无问题
OnBarOpen(ArrayRef<Integer> indexes)
{
Numeric advancesec(20); // 提前触发秒数(默认5秒)
Array<Numeric> timePoint; // 存储触发时间点数组
// 计算触发时间(当前K线结束时间前5秒)
Numeric ret = DateTimeAdd(RealEndDateTime, -1*advancesec);
ret = StringToTime(TimeToString(ret)); // 格式化为标准时间
// 调试输出时间信息
Print("endtime="+text(RealEndDateTime)+" SetTriggerBarClose:" + Text(ret));
// 设置触发时间点
ArrayPushBack(timePoint, ret);
SetTriggerBarClose(timePoint); // 注册触发事件
Commentary("CurrentTimeBarOpen="+Text(CurrentTime));
}
开仓计算,持仓处理均放在OnBar(ArrayRef<Integer> indexs)部分,
// 每根K线结束时触发
OnBar(ArrayRef<Integer> indexs)
{
这样是不是错的,正常是不是要改成
// 每根K线结束时触发
OnBarClose(ArrayRef<Integer> indexs)
{
麻烦老师帮忙看下这两个问题:
1.实际委托价与计算委托价不一样的原因是什么
2.委托时间与策略不一样的原因是不是因为应该用OnBarClose,实际用了OnBar
SetTriggerBarClose后
就是onBar机制