怎么实现在K线收盘前几秒触发OnBarClose
我像下面这样写的,还不行,请指点一下
OnInit()
{
}
OnReady()
{
Range[0:DataCount-1]
{
Array<String> TimeArr; //各个交易时段提前秒数
ArrayPushBack(TimeArr,\"22:59:55\"); //夜盘收盘(0.2300)K线收盘前10秒触发
ArrayPushBack(TimeArr,\"10:14:55\"); //早盘收盘(0.1015)K线收盘前10秒触发
ArrayPushBack(TimeArr,\"11:29:55\"); //午盘收盘(0.1130)K线收盘前10秒触发
ArrayPushBack(TimeArr,\"14:59:55\"); //日盘收盘(0.1500)K线收盘前10秒触发
Array<Numeric> timePoint;
Integer i;
Print(\"GetSessionCount:\" + Text(GetSessionCount));
For i = 0 To GetSessionCount() - 1
{
Numeric ret = StringToTime(TimeArr[i]);
Print(\"SetTriggerBarClose:\" + Text(ret));
ArrayPushBack(timePoint, ret);
}
SetTriggerBarClose(timePoint);
}
//Bar更新事件函数,参数indexs表示变化的数据源图层ID数组
OnBarClose(ArrayRef<Integer> indexs)
{
PlotBool(\"收盘触发\",True);
If (BarStatus==2) Print(\"收盘触发时间:\"+Text(Time()));
If (Close>Open)
{
Buy(0,Close);
}
If (Close<Open)
{
SellShort(0,Close);
}
}
我有另外一个思路,不知是否可行,比如找一个10秒线活跃的品种,当天最后一根10秒开盘时,发布消息广播,各策略接收到消息后,执行平仓动作,供参考
ArrayPushBack(TimeArr,\"22:59:55\"); //夜盘收盘(0.2300)K线收盘前10秒触发
ArrayPushBack(TimeArr,\"10:14:55\"); //早盘收盘(0.1015)K线收盘前10秒触发
ArrayPushBack(TimeArr,\"11:29:55\"); //午盘收盘(0.1130)K线收盘前10秒触发
ArrayPushBack(TimeArr,\"14:59:55\");
你这个四个时间点,对应的是哪根bar,这根bar就会在机器时间到底对应的时间点后开始运行onbarclose。
这个在onbarclose事件域的教学里应该已经说得很清楚了。
不知道你所谓的不能运行是怎么写的
感谢老师指点,通过学习已经深得其精髓!