on_bar不能回调的原因 #109
-
根据Wesley回答网友问题整理. |
Beta Was this translation helpful? Give feedback.
Replies: 6 comments 4 replies
-
datakit实际上只是一个python封装 datakit是利用WtDtPorter对WtDtCore的封装 而QuoteFacotry就是对WtDtCore的C++封装 |
Beta Was this translation helpful? Give feedback.
-
QuoteFacotry本质上和datakit没有区别 无非就是调用的入口不同 |
Beta Was this translation helpful? Give feedback.
-
问:WtCtaRtTicker::on_tick()方法里没找到创建和更新bar的代码,请问它们在什么地方? 答:WtDataReader,onMinuteEnd 问:就是在这个方法里没找着 答:这是Reader啊,你看WtDataWriter,updateMinuteData 问:这个方法我看见了,这哪调用呢? 答:数据落地和交易是两个进程,这样即使盘中干预交易进程,也不会影响数据落地,实际上,你需要从WtDtCore里去看 问:我找一下,就是说,运行WtDtRunner进行数据落地? 答:对,QuoteFactory 问:数据落地的main()在哪儿? 答:QuoteFactory 问:这个大概什么时候有更新啊,这个方法在哪调用?WTSBarStruct* WTSDataFactory::updateKlineData(WTSKlineData* klineData, WTSTickData* tick, WTSSessionInfo* sInfo) 答:on_tick吧,WtDtCore/DataManager/WtDataWriter 问:我的版本不对吗?我的WtDataWriter是个单独目录 答:是单独项目啊,我是说调用路径 问:WtDataWriter没调用updateKlineData方法,没搜索到调用 答:哦,这个方法是不调用的,这个方法我没用到,这是我以前写的,拼K线的方法,算是白放进去的。 问:那怎么用tick更新bar呢? 答:你看WtDataWriter,数据落地都在这里 |
Beta Was this translation helpful? Give feedback.
-
问: 答: 问: 答: 问: 答: 问: 答: 问: 答: parser只传回tick行情,datakit负责聚合成K线? 对 datakit会开一个udp广播 |
Beta Was this translation helpful? Give feedback.
-
一、看一下on_init函数是否订阅K线(stra_get_bars)。 二、没有启动datakit。直连ctp,没有数据落地,不会生成K线,需要启动QuoteFactory。要启动datakit,然后再启动quotefactory,配置WtRunner的parser为parserudp。on_bar一定是K线闭合了才回调。 UDP不广播分钟线,但是会触发WtDataReader去读分钟线,不推送信息,主要是时间戳,靠时间戳触发读取的逻辑, 那这时间戳谁来触发? 然后WtDataReader会在每分钟结束的时候,更新最新的K线,如果K线闭合,就会触发onbar。 读的还是datakit存储的共享内存K线是吧? ParserUDP,一般交易用 datakit不用 ParserUDP是接收从datakit广播出来的行情 UDPCaster 呢? 广播用的啊 高频交易用udp么? 高频最好还是不用吧 udp的好处,是一个datakit可以给多个交易进程用 |
Beta Was this translation helpful? Give feedback.
-
当1分钟和5分钟K线在on_bar中正常生成,多分钟K线不能正常生成时,看看sessions.json是否修改过,用正常的sessions.json文件替换。 |
Beta Was this translation helpful? Give feedback.
一、看一下on_init函数是否订阅K线(stra_get_bars)。
二、没有启动datakit。直连ctp,没有数据落地,不会生成K线,需要启动QuoteFactory。要启动datakit,然后再启动quotefactory,配置WtRunner的parser为parserudp。on_bar一定是K线闭合了才回调。
UDP不广播分钟线,但是会触发WtDataReader去读分钟线,不推送信息,主要是时间戳,靠时间戳触发读取的逻辑,
定时吗?
不是。
那这时间戳谁来触发?
ParserUDP接收datakit广播的tick数据,tick带有交易所的时间戳。
然后WtDataReader会在每分钟结束的时候,更新最新的K线,如果K线闭合,就会触发onbar。
读的还是datakit存储的共享内存K线是吧?
对的mmap,历史K线直接缓存到内存中,实时K线就是mmap。
ParserUDP,一般交易用
datakit不用
ParserUDP是接收从datakit广播出来的行情
UDPCaster 呢?
广播用的啊
高频交易用udp么?
高频最好还是不用吧
udp的好处,是一个datakit可以给多个交易进程用