hqchartPy2数据对接教程1-K线数据
K线获取接口函数
函数定义
class IHQData(object):
# K线数据
def GetKLineData(self, symbol, period, right, jobID) :
参数说明
symol
股票代码
period
周期
0=日线 1=周线 2=月线 3=年线 4=1分钟 5=5分钟 6=15分钟 7=30分钟 8=60分钟 9=季线 10=分笔
right
复权
0=不复权 1=前复权 2=后复权
jobID
任务id
返回数据格式
返回一个字典类型的数据
name
股票名称 字符串
period
周期 数值型
right
复权 数值型
yclose
前收盘价 数值型数组
open
开盘价 数值型数组
high
最高价 数值型数组
low
最低价 数值型数组
close
收盘价 数值型数组
vol
成交量 数值型数组
amount
成交金额
tushare数据对接例子
使用 pro_bar 数据接口获取K线数据,接口说明见https://waditu.com/document/2?doc_id=146
TushareHQChartData
新建一个tushare数据类TushareHQChartData
TusharePro tushare数据类接口
StartDate 指标计算的起始时间
EndDate 指标计算的结束时间
在TushareHQChartData的构造函数中首先设置一个tushare的token, 后面就可以用tushare获取数据了。
HQResultTest
计算数据结果类
指标计算结果成功/异常都是通过回调直接发送到这个类里面,可以在这个类里面保存结果数据
class HQResultTest():
def __init__(self):
self.Result = [] # 保存所有的执行结果
# 执行成功回调
def RunSuccess(self, symbol, jsData, jobID):
self.Result.append({"Symbol":symbol, "Data":jsData}) # 保存结果
log="{0} success".format(symbol)
print (log)
print (jsData)
# 执行失败回调
def RunFailed(self, code, symbol, error,jobID) :
log="{0}\n{1} failed\n{2}".format(code, symbol,error)
print(log)
注意点
- K线数据降序排
- date 日期 数值类型 格式YYYYMMDD 如: 20201012 =>2020-10-12
- time 时间 数值类型 格式HHMM 如 945=>9:45 , 1421=>14:21
K数据对接代码
class TushareHQChartData(IHQData) :
def __init__(self, token, startDate, endDate):
ts.set_token(token)
self.TusharePro = ts.pro_api()
self.StartDate=startDate
self.EndDate=endDate
def GetKLineData(self, symbol, period, right, jobID) :
# 复权 0=不复权 1=前复权 2=后复权
fq=None # 复权
if (right==1) : # 前复权
fq="qfq"
elif (right==2) : # 后复权
fq="hfq"
# 周期 0=日线 1=周线 2=月线 3=年线 4=1分钟 5=5分钟 6=15分钟 7=30分钟 8=60分钟 9=季线 10=分笔
freq='D'
if (period==1) :
freq="W"
elif (period==2):
freq="M"
elif (period==4):
freq="1MIN"
elif (period==5):
freq="5MIN"
elif (period==6):
freq="15MIN"
elif (period==7):
freq="30MIN"
elif (period==8):
freq="60MIN"
df = ts.pro_bar(ts_code=symbol, adj=fq, start_date=str(self.StartDate), end_date=str(self.EndDate),freq=freq)
# df = self.TusharePro.daily(ts_code=symbol, start_date='20200101', end_date='20201231')
df=df.sort_index(ascending=False) # 数据要降序排
print(df)
cacheData={}
if (period in (0,1,2,3,9)) :
# 日期转int
aryDate=df["trade_date"]
aryDate[aryDate == ''] = 0
aryDate = aryDate.astype(np.int)
dataCount=len(aryDate)
cacheData['count']=dataCount # 数据个数
cacheData["date"]=aryDate.tolist()
else :
aryDateTime=df["trade_time"]
dataCount=len(aryDateTime)
cacheData['count']=dataCount # 数据个数
aryDateTime= pd.to_datetime(aryDateTime, format="%Y-%m-%d %H:%M:%S")
print(aryDateTime)
aryDate=[]
aryTime=[]
for item in aryDateTime :
aryDate.append(item.year*10000 + item.month* 100 + item.day)
aryTime.append(item.hour*100+item.minute)
cacheData["time"]=aryTime
cacheData["date"]=aryDate
cacheData['name']=symbol # 股票名称
cacheData['period']=period # 周期
cacheData['right']=period # 不复权
cacheData["yclose"]=np.array(df["pre_close"]).tolist()
cacheData["open"]=np.array(df["open"]).tolist()
cacheData["high"]=np.array(df["high"]).tolist()
cacheData["low"]=np.array(df["low"]).tolist()
cacheData["close"]=np.array(df["close"]).tolist()
cacheData["vol"]=np.array(df["vol"]).tolist()
cacheData["amount"]=np.array(df["amount"]).tolist()
log="K线:{0} - period={1} right={2} count={3}".format(symbol,period,right,dataCount)
print(log)
return cacheData
**注意:分钟数据没有测试过,因为tushare分钟数据需要付费购买,如果有朋友提供账户,我可以把分钟数据的例子也加上 **
测试脚本
def TestSingleStock() :
# 授权码
key="授权码"
FastHQChart.Initialization(key)
runConfig={
# 系统指标名字
# "Name":"MA",
"Script":'''
T:MA(C,M1);
T2:MA(C,M2);
T3:MA(C,M3);
''',
# 脚本参数
"Args": [ { "Name":"M1", "Value":15 }, { "Name":"M2", "Value":20 }, { "Name":"M3", "Value":30} ],
# 周期 复权
"Period":0, "Right":1,
"Symbol":"600000.sh",
#jobID (可选)
"JobID":"1234-555-555"
}
jsConfig = json.dumps(runConfig) # 运行配置项
hqData=TushareHQChartData("tushare的token",startDate=20200421, endDate=20201231) # 实例化数据类
result=HQResultTest() # 实例计算结果接收类
start = time.process_time()
res=FastHQChart.Run(jsConfig,hqData,proSuccess=result.RunSuccess, procFailed=result.RunFailed)
elapsed = (time.process_time() - start)
log="TestSingleStock() Time used:{0}, 股票{1}".format(elapsed, runConfig['Symbol'])
print(log)
数据结果截图
交流QQ群
如果有什么问题或需求可以加交流QQ群: 950092318** 联系群主(QQ48274798)
hqchartPy动态库地址
https://github.com/jones2000/HQChart/tree/master/C++指标计算引擎/py版本
HQChart代码地址
地址:https://github.com/jones2000/HQChart