/*
--------------------------------------------------------------------------------------------------------------------------------------
简称: Demo_20230515
名称: 测试交易信号的影响
周期: 日线
简介: 关于函数 CoefficientR 可能对交易信号的影响
--------------------------------------------------------------------------------------------------------------------------------------
*/
// -- 以下为测试代码 -- //
Params
Numeric entryBarDate(20230516); // 入场时间(YYYYMMDD)
Events
OnInit()
{
SubscribeBar(FG309.CZCE, 1d, DateAdd(SystemDateTime, -30), 0);
SubscribeBar(FG401.CZCE, 1d, DateAdd(SystemDateTime, -30), 0);
}
OnBar(ArrayRef<Integer> indexs)
{
Numeric corData = Round(CoefficientR(Data[0].Close, Data[1].Close, 20), 2); // <---重点:有这句信号不正常,注释掉这句信号就正常了
If(Data[0].MarketPosition ==0 && Data[1].MarketPosition ==0 && Date ==entryBarDate)
{
Bool retLeft = Data[0].Buy(1, Open, Enum_Signal_NotSend);
Bool retRight = Data[1].SellShort(1, Open, Enum_Signal_NotSend);
}
}
以上代码包含CoefficientR函数时交易信号只显示1个,注释掉这句信号显示正常。
问题还没有解决
因为你上下两个不同的合约,盘中行情tick不是同时来的,如果某个图层先出现了一根新bar,那你的close指向就不对了
那Open就不会有问题吧? 使用Open问题依旧
而且这个是日线bar,应该不存在盘中出现一根新bar
open一样会有问题
出现新bar以后 open也变化了
你完全没有看懂我说的什么意思
你这个问题归根结底是bar对齐的问题
还是没明白,这个是日线级别,怎会出现新的bar?
要说不同tick接收时间不一致我理解;分钟级别的bar数据因不同合约接收时间不同,会有不一致我也理解;
但日线级别bar的Open数据是不应该变化的,另外我使用了Open[1],问题依旧出现
可能您这边理解的是多数据源多周期,可能存在bar对齐问题,
但案例中是同品种不同合约之间,周期相同且为日线级别。