waditu / czsc

缠中说禅技术分析工具;缠论;股票;期货;Quant;量化交易
Other
2.88k stars 977 forks source link

BarGenerator对连续交易市场k线合成不兼容 #101

Closed xunfeng191 closed 1 year ago

xunfeng191 commented 2 years ago

当前BarGenerator对A股市场的周期合成没有问题,但是对连续交易市场的K线合成不兼容 `def freq_end_time(dt: datetime, freq: Freq) -> datetime: """获取 dt 对应的K线周期结束时间

:param dt: datetime
:param freq: Freq
:return: datetime
"""
dt = dt.replace(second=0, microsecond=0)

if freq in [Freq.F1, Freq.F5, Freq.F15, Freq.F30, Freq.F60]:
    m = int(freq.value.strip("分钟"))
    if m < 60:
        if (dt.hour == 15 and dt.minute == 0) or (dt.hour == 11 and dt.minute == 30):
            return dt

        delta_m = dt.minute % m
        if delta_m != 0:
            dt += timedelta(minutes=m - delta_m)
        return dt

    else:
        dt_span = {
            60: ["01:00", "2:00", "3:00", '10:30', "11:30", "14:00", "15:00", "22:00", "23:00", "23:59"],
        }
        for v in dt_span[m]:
            hour, minute = v.split(":")
            edt = dt.replace(hour=int(hour), minute=int(minute))
            if dt <= edt:
                return edt`

例如:60分钟线仅能合成符合中国交易市场的时间,能否增加加密货币及其他市场的k线合成的支持

zengbin93 commented 2 years ago

@xunfeng191 只有60分钟比较特殊,存在你说的问题。其他分钟线都是可以支持的。具体可以加微信 zengbin93 交流一下

Inblac commented 1 year ago

复写一个BarGenerator合成器就行了。另外注意国内市场是bar结束时间,crypto是bar开始时间。