finance - 从接收tick数据到生成1分钟K线的实时处理
问题描述
分时数据的结构与 K 线的数据结构不同。什么时候进行拦截转换,能说说大致的流程吗?
我目前收到滴答数据并已将其实时写入滴答(流数据表)。如果订阅,是否需要先接收(所有数据字段),然后转换成准备表(如交易者),这里只有几个必填字段,最后聚合生成烛台表。
解决方案
请参考以下代码:
tbColNames=`TradingDay`InstrumentID`ExchangeID`ExchangeInstID`LastPrice`Volume`Amount`OpenPosition`PreSettlementPrice`PreClosePrice`PreOpenInterest`OpenPrice`HighestPrice`LowestPrice`TotalVolume`TotalTurnover`OpenInterest`ClosePrice`SettlementPrice`UpperLimitPrice`LowerLimitPrice`ActionTime`RecvTime`BidPrice1`BidVolume1`AskPrice1`AskVolume1`BidPrice2`BidVolume2`AskPrice2`AskVolume2`BidPrice3`BidVolume3`AskPrice3`AskVolume3`BidPrice4`BidVolume4`AskPrice4`AskVolume4`BidPrice5`BidVolume5`AskPrice5`AskVolume5`AveragePrice`PreDelta`CurrDelta`RecordNo`TotalRecordNo`InDbTime
tbColTypes=[DATE,SYMBOL,SYMBOL,SYMBOL,DOUBLE,INT,DOUBLE,DOUBLE,DOUBLE,DOUBLE,DOUBLE,DOUBLE,DOUBLE,DOUBLE,INT,DOUBLE,DOUBLE,DOUBLE,DOUBLE,DOUBLE,DOUBLE,TIMESTAMP, TIMESTAMP,DOUBLE,INT,DOUBLE,INT,DOUBLE,INT,DOUBLE,INT,DOUBLE,INT,DOUBLE,INT,DOUBLE,INT,DOUBLE,INT,DOUBLE,INT,DOUBLE,INT,DOUBLE,DOUBLE,DOUBLE,INT,INT,TIMESTAMP]
tbTicks = streamTable(100000:0,tbColNames,tbColTypes)
enableTableShareAndPersistence(table=tbTicks, tableName=`ticks, cacheSize=2000000, retentionMinutes=4320 )
barColNames=`UpdateTime`InstrumentID`Open`High`Low`Close`Volume`Amount`OpenPosition`TradingDay
barColTypes=[TIMESTAMP,SYMBOL,DOUBLE,DOUBLE,DOUBLE,DOUBLE,DOUBLE,INT,DOUBLE,DATE]
share streamTable(100:0, barColNames, barColTypes) as traders
metrics=<[
first(LastPrice),
max(LastPrice),
min(LastPrice),
last(LastPrice),
sum(Volume),
sum(Amount),
sum(OpenPosition),
last(TradingDay)]>
tsAggrKline = createTimeSeriesAggregator(name="aggr_kline_min01", windowSize=600000, step=600000, metrics=metrics, dummyTable=ticks, outputTable=traders, timeColumn=`InDbTime, keyColumn=`InstrumentID,updateTime=500, useWindowStartTime=true)
subscribeTable(tableName="ticks", actionName="act_tsaggr", offset=-1, handler=append!{getStreamEngine("aggr_kline_min01")}, batchSize=1000, throttle=1, hash=0, msgAsTable=true)
推荐阅读
- javascript - Discord.js:reaction.js 事件文件未触发
- go - GO“ozzo-validation”中的验证
- c - 如何制作一个数组以将数据发送到 AVR 中的从机
- django - 重用分页和过滤 Django 中的旧选项
- python - 如何平滑深度学习模型中的准确率和损失曲线
- javascript - 在反应中使用导航的动态路线无济于事
- django - django 中的 CK-Editor 无法在生产环境中工作
- azure - 如何使用来自外部资源的 azure 管道参数值
- python - 如何根据我的喜好重复 if else if else 循环?
- python - 如何在 Flask 中使用具有 sudo 权限的 python 包?