技术指标绘图 在win10 python3.7.4 下按照示例代码 给色值 报错,报错信息如下:
我编写的代码如下:
色值用numpy.int32处理下后 可以正常绘线:
不好意思本来想点“add a comment”,结果点滑了把上面一条删掉了。
win10下如果numpy序列含有float(“nan”),它的dtype应该满足if ext.dtype == np.float这一条,也确实和你上面给出的报错信息基本一致。、
你后面的报错信息是什么呢?是否方便贴出源码?
t90的代码 在_update_serial方法里没有执行到 for ext in serial[“extra_array”].values(): 里面的代码,所以没有报错;我写的代码按照给argb色值后变成了int64位了,_update_serial方法里没有int64位的处理
我这边win10参考你的代码改了一下,没有遇到报错,请问你在tqsdk讨论群(群号619870862)里吗,方便联系群里管理员west提供一下能重现这个问题的源码吗
#!/usr/bin/env python
# -*- coding: utf-8 -*-
__author__ = ‘tqsdk’
from datetime import date
from tqsdk import TqApi, TqSim, TqBacktest, TargetPosTask, BacktestFinished, tafunc
”’回测配置”’
# 合约代码
symbol = “SHFE.rb1901″
# K线数据周期, 以秒为单位。例如: 1分钟线为60,1小时线为3600,日线为86400
duration_seconds = 24 * 60 * 60
# 回测起始时间, 如果类型为 date 则指的是交易日, 如果为 datetime 则指的是具体时间点
start_dt = date(2018, 11, 21)
# 回测结束时间, 如果类型为 date 则指的是交易日, 如果为 datetime 则指的是具体时间点
end_dt = date(2019, 7, 1)
# 均线周期
ema1_interval = 5
ema2_interval = 10
ema3_interval = 60
fund = 1000000
for target_profit_percentage in [0.4]:
# 每次回测都创建一个新的模拟账户
acc = TqSim(fund)
try:
”’初始化”’
api = TqApi(acc, backtest=TqBacktest(start_dt=start_dt, end_dt=end_dt))
# 获得行情引用对象,当行情有变化时 quote 中的字段会对应更新
quote = api.get_quote(symbol)
# 获得K线的引用对象
klines = api.get_kline_serial(symbol, duration_seconds)
# 判断开仓条件的主循环
while True:
# 等待业务数据更新
api.wait_update()
# 只有在新创建出K线时才判断开仓条件
if api.is_changing(klines.iloc[-1], “datetime”):
# 最后一根k线没有绘制完成,跳过最后一根刚生成的K线
close = klines.close.iloc[:-1]
# 计算均线序列
ema1 = tafunc.ema2(close, ema1_interval)
ema2 = tafunc.ema2(close, ema2_interval)
ema3 = tafunc.ema2(close, ema3_interval)
# 在主图画均线
klines[“ema1”] = ema1
klines[“ema1.color”] = 0xFF0000FF
klines[“ema2”] = ema2
klines[“ema2.color”] = 0xFFFF0000
klines[“ema3”] = ema3
klines[“ema3.color”] = 0xFFFF00FF
except BacktestFinished:
# 关闭api,释放相应资源
api.close()
另外,你可以先参考我们t90画图示例,运行一下它 看是否能成功,再对应修改你的代码
https://github.com/shinnytech/tqsdk-python/blob/master/tqsdk/demo/tutorial/t90.py