各位朋友好!我使用TBQUANT程序化交易,遇到双均线金叉信号,必须等本根K线走完。我想实时交易,TBquant策略代码要怎么写?onbar模式下行不行?以下代码对不对呢?
If(MarketPosition ==0 && AvgValue1> AvgValue2)
{
Buy(1,high);
}
If(MarketPosition ==1 && AvgValue1 < AvgValue2)
{
Sell(1,low);
}
}
可以
onbar本来就是实时触发的
只要能锁定信号发生过就可以
也就是不要用close这种会闪烁的价格
您好,图表策略,不能有信号闪烁,否则历史回测结果相差很大。你可以用TBQ3,通过跨周期,切换到比较小的时间周期,这样延迟最多也就是一个小的时间周期,跟实时结果相差不大。何况实时的结果也未必就比收盘确认的结果好,这个不是影响策略结果的关键。
谢谢,我就是疑惑,如果我用MarketPosition ==1,限制只开1手,策略信号闪烁,但是后续不会成交的吧,对策略还是没有影响,我理解对不对呢
然后,我如果用突破策略,交易指令用HIGH和low,然后用MarketPosition ==1限制,在一根K线上信号闪烁,成交还是只有一次把
MarketPosition是图表信号函数,信号消失了,它的值也就不对了,后面K就可能成交。所以,不要想那么多,把信号闪烁扼杀在摇篮里就对了,等你对TB了解到了比较深以后,再考虑怎么把信号闪烁问题更优化处理的问题。
那就这么均线代码,可以吧
AvgValue1 = AverageFC(Close,FastLength);
AvgValue2 = AverageFC(Close,SlowLength);
PlotNumeric("MA1",AvgValue1);
PlotNumeric("MA2",AvgValue2);
If(MarketPosition ==0 && AvgValue1[1] > AvgValue2[1])
{
Buy(0,Open);
}
If(MarketPosition ==1 && AvgValue1[1] < AvgValue2[1])
{
Sell(0,Open);
}
}
//