CTP大坑小坑曝光
记录某些CTP开发过程中遇到的坑(持续更新)
- tick数据中成交量这个数据是当日累加,隔日清零,所以使用tick数据合成bar的时候,成交量需要专门处理。期货的tick数据有ActionDay和TradingDay两个字段,用以区分是否为同一个交易日,但是不同交易所定义方式不同,各位同学要自己注意一下。
//大商所的ActionDay 提前一天,郑商所的TradingDay晚了一天,上期所的正常
//大商所和上期所 只要TradingDay(结算日)相同就是同一日bar的数据
//郑商所TradingDay相同 可能属于不同日的bar TradingDay不同 也有可能属于同一日的bar
if (tick.TradingDay == lastTick.TradingDay)
{
//同日tick
//Logger.Error("{0},{1},{2}", tick.InstrumentId, tick.Volume, lastTick.Volume);
long diffVolume = tick.Volume - lastTick.Volume;
//diffVolume<0 说明是郑商所夜盘的第一个tick
if (diffVolume >= 0)
{
tick.Volume = diffVolume;
}
}
else
{
//不同日tick
//Logger.Debug("tick.volume刷新:当前tick->" + tick.ToString() + " 前一个tick->" + lastTick.ToString() + " 发生时间:" + DateTime.Now);
if(ExchangeID == ExchangeType.CZCE.ToString() & tick.Date.Date != lastTick.Date.Date)
{
//说明是郑商所日盘的第一个tick
//有夜盘的品种直接相减 无夜盘的为真实成交量
if (FunDate.ToDateTime(lastTick.UpdateTime, "HH:mm:ss").Hour>=21)
{
tick.Volume = tick.Volume - lastTick.Volume;
}
}
}
- 平仓操作时,上期所(SHFE) 以及 上期能源(INE)有平今和平昨的区分,当账户只有今仓,但是发出平昨的单子,会报错。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!