1.80K 浏览
0

while True:
        api.wait_update()
        if api.is_changing(klines1.iloc[-1],”datetime”) :
            print(klines1.close.iloc[-10:])#一分钟K线图10位
            print(klines2.close.iloc[-10:])#二分钟K线后10位
    正常逻辑,一分钟时间结束后(例如10:30),当前一分钟K线收盘价(10:30:01-10:30:59)应该是上一分钟K(10:30分)的收盘价,问题api.get_kline_serial得到的对象返回最后两位数据是相同的,明显前一个是上一分钟收盘价(10:30),最后一数据是更新时间后的最新收盘价(因为时间差别不大所以跟前一收盘价相同),如果要用这些数据,应该去除最后一位数据才是真正的一分钟收盘价,不然指标计算就会跟真实有差别,例如5日均线,按现在数据,只拿到前4日数据,也就是(10:27分收盘价+10:28分收盘价+10:29分收盘价+10:30分收盘价+当前收盘价(10:30-10:31时刻)/5,分子最后两个价格是相同的,问题真正5日均线应该是(10:26分收盘价+10:27分收盘价+10:28分收盘价+10:29分收盘价+10:30分收盘价)/5,引用少了一位数据,api.get_kline_serial的对象不应该把10:30-10:31时刻的收盘价加到最后,如果不改正,那5日均线计算只能用ma(klines.close.iloc[:-1],5),用ma(klines.close,5)是不正确的,包括其它指标都一样
    另外两分钟K线,例如10:30分合成两分钟K线的最后价,结果10:31分(过去一分钟),就以1分钟的收盘价作为2分钟的收盘价,不应该等到10:32分后再合成2分钟的K线吗?我知道这是动态更新,但按正常逻辑,这不是两分钟K线图,10:31分的2分钟K线理应就跟10:30分的一样

owenlovehellen 发表新评论 2021年8月2日

算了,以时间周期结束再获取数据要直接删除最新价就解决了,不过不知道这个差别估计每次计算指标都可能不一样