@@ -607,9 +607,11 @@ async def _gen_serial(self, ins, dur):
607607 }
608608 }
609609 }
610+ is_min_dur = dur == self ._quotes [symbol ]["min_duration" ]
610611 yield timestamp , diff , self ._get_quotes_from_kline (self ._data ["quotes" ][symbol_list [0 ]],
611612 timestamp ,
612- item ) # K线结束时生成quote数据
613+ item ,
614+ is_min_dur ) # K线结束时生成quote数据
613615 current_id += 1
614616 finally :
615617 # 释放chart资源
@@ -696,15 +698,16 @@ def _get_quotes_from_kline_open(info, timestamp, kline):
696698 ]
697699
698700 @staticmethod
699- def _get_quotes_from_kline (info , timestamp , kline ):
701+ def _get_quotes_from_kline (info , timestamp , kline , is_min_dur ):
700702 """
701703 分为三个包发给下游:
702704 1. 根据 diff 协议,对于用户收到的最终结果没有影响
703705 2. TqSim 撮合交易会按顺序处理收到的包,分别比较 high、low、close 三个价格对应的买卖价
704706 3. TqSim 撮合交易只用到了买卖价,所以最新价只产生一次 close,而不会发送三次
707+ 4. 最高最低仅用于 TqSim 撮合交易,由最小周期生成
705708 """
706- return [
707- {
709+ if is_min_dur :
710+ return [ {
708711 "datetime" : _timestamp_nano_to_str (timestamp ),
709712 "ask_price1" : kline ["high" ] + info ["price_tick" ],
710713 "ask_volume1" : 1 ,
@@ -717,13 +720,25 @@ def _get_quotes_from_kline(info, timestamp, kline):
717720 "volume" : 0 ,
718721 "amount" : float ("nan" ),
719722 "open_interest" : kline ["close_oi" ],
720- },
721- {
723+ }, {
722724 "ask_price1" : kline ["low" ] + info ["price_tick" ],
723725 "bid_price1" : kline ["low" ] - info ["price_tick" ],
724- },
725- {
726+ }, {
726727 "ask_price1" : kline ["close" ] + info ["price_tick" ],
727728 "bid_price1" : kline ["close" ] - info ["price_tick" ],
728- }
729- ]
729+ }]
730+ else :
731+ return [{
732+ "datetime" : _timestamp_nano_to_str (timestamp ),
733+ "ask_price1" : kline ["close" ] + info ["price_tick" ],
734+ "ask_volume1" : 1 ,
735+ "bid_price1" : kline ["close" ] - info ["price_tick" ],
736+ "bid_volume1" : 1 ,
737+ "last_price" : kline ["close" ],
738+ "highest" : float ("nan" ),
739+ "lowest" : float ("nan" ),
740+ "average" : float ("nan" ),
741+ "volume" : 0 ,
742+ "amount" : float ("nan" ),
743+ "open_interest" : kline ["close_oi" ],
744+ }]
0 commit comments