1、原始策略是收盘价模型,ONBARCLOSE的事件机制。
2、添加onbaropen的那段代码,即可实现收盘提前N秒发单。
Params
Numeric FastLength(5);// 短期指数平均线参数
Numeric SlowLength(20);// 长期指数平均线参数
Vars
Series<Numeric> AvgValue1;
Series<Numeric> AvgValue2;
Events
//每根BAR开始的时候设置触发时间点
OnBarOpen(ArrayRef<Integer> indexes)
{
Numeric advancesec(5); //提前多少秒
Array<Numeric> timePoint;
Numeric ret = DateTimeAdd(RealEndDateTime, -1*advancesec);
ret = StringToTime(TimeToString(ret));
Print("endtime="+text(RealEndDateTime)+" SetTriggerBarClose:" + Text(ret));
ArrayPushBack(timePoint, ret);
SetTriggerBarClose(timePoint);
}
OnBarClose(ArrayRef<Integer> indexs)
{
AvgValue1 = AverageFC(Close,FastLength);
AvgValue2 = AverageFC(Close,SlowLength);
PlotNumeric("MA1",AvgValue1);
PlotNumeric("MA2",AvgValue2);
If(MarketPosition <>1 && AvgValue1 > AvgValue2)
{
Buy(0,Close);
}
If(MarketPosition <>-1 && AvgValue1 < AvgValue2)
{
SellShort(0,Close);
}
}
我有个两个问题希望向您请教,比如我引用15分钟k线。
就是如果实盘,我引用的开平仓信号,是close>X,buy/sell(1,close);这会导致信号闪烁问题,这个是否会导致实盘,比如13:13:40秒发出平仓信号?
另外,我为了避免信号闪烁问题问题。
我运用了,前K数据,close[1]>X,buy/sell(1,open);这种情况下虽然不会有信号闪烁问题,但是我比较担心收盘提前发单时,是否会因为我引用的是close[1],而导致在14:59:55秒,依旧是引用的14:45:00这跟K线的Close。
而不是我期望的虚拟一根新Bar,然后以14:59:55作为Close[1]去运行?
👍