微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

通过Clickhouse时间函数对数据进行重新采样时,如何解决open_price等于close_price的错误?

如何解决通过Clickhouse时间函数对数据进行重新采样时,如何解决open_price等于close_price的错误?

        query_sql = f"""
           WITH 
               toDateTime('{start.date()} 21:00:00') AS StartTimestamp,toDateTime('{end_date} 15:00:00') AS EndTimestamp
           SELECT 
                local_symbol,max(last_price) AS high_price,min(last_price) AS low_price,argMax(last_price,toUnixTimestamp(fast)) as close_price,argMin(last_price,toUnixTimestamp(fast)) as open_price,sum(volume) AS volume,sum(amount) AS amount
           FROM tick
           WHERE (datetime >= StartTimestamp) AND (datetime <= EndTimestamp) AND local_symbol='{symbol}'
--            GROUP BY toStartOfInterval(datetime,INTERVAL {n} minute ) as fast,local_symbol
         GROUP BY toStartOfMinute(datetime) as fast,local_symbol
           ORDER BY fast ASC
               """

这是我的sql代码,我想获取open_price,high_price,low_price,close_price,但是我的sql结果不符合预期

开盘价始终等于收盘价,其他价格正确。

{'local_symbol': 'rb2010.CTP','high_price': 3828.0,'low_price': 3826.0,'close_price': 3827.0,'open_price': 3827.0,'volume': 409,'amount': 15653230.0,'_database': <infi.clickhouse_orm.database.Database object at 0x0000022EF5C95408>}
{'local_symbol': 'rb2010.CTP','volume': 357,'amount': 13663860.0,'low_price': 3825.0,'volume': 1058,'amount': 40483280.0,'close_price': 3826.0,'open_price': 3826.0,'volume': 972,'amount': 37193310.0,'close_price': 3828.0,'open_price': 3828.0,'volume': 643,'amount': 24608060.0,'volume': 739,'amount': 28276760.0,'low_price': 3827.0,'volume': 118,'amount': 4516640.0,'volume': 678,'amount': 25949650.0,'high_price': 3829.0,'volume': 1009,'amount': 38630160.0,'high_price': 3831.0,'low_price': 3829.0,'close_price': 3830.0,'open_price': 3830.0,'volume': 1798,'amount': 68865630.0,'volume': 1039,'amount': 39797350.0,'_database': <infi.clickhouse_orm.database.Database object at 0x0000022EF5C95408>}

我做错了吗?

解决方法

我已经使用argMin(last_price,toUnixTimestamp(datetime)) as open_price解决了该问题,

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。