112 views
0

SYMBOL = “SHFE.ag2012”

klines = api.get_kline_serial(SYMBOL, duration_seconds=60, data_length=data_length)
target_pos = TargetPosTask(api, SYMBOL)
while True:
api.wait_update()

if api.is_changing(klines.iloc[-1], “datetime”):
print(ctime())
print(klines.tail(1))

Fri Nov 20 14:59:00 2020
datetime id open high low close volume open_oi close_oi symbol duration
61 1.605856e+18 102674.0 5049.0 5049.0 5049.0 5049.0 0.0 216496.0 216496.0 SHFE.ag2012 60

代码完全按文档抄来的,连的是宏源期货实盘账户,盘中启动,在VSCode中运行(默认是tqsdk V2.0.1)。

好像有两个问题:
1. OHLC大部分分钟都是一样的,与行情软件不符。
2. volume大部分分钟都是零。

Answered question
0

你这种获取方式获取的是kline刚刚生成时最新的这根kline的高开低收,最新的kline刚生成时的高开低收是和上一根kline的close一致的,如果你想获取刚刚走完的这根kline 应该是 print(klines.iloc[-2])

同样,对于刚刚生成的kline的volume代表的是这根kline这段时间内的成交量,因为这根kline刚刚生成,所以volume也会为0

Posted new comment

谢谢!
df_k = klines.copy()
df_k = df_k[df_k[‘volume’].values > 0]
这样写, 可以吗?