hqchartPy2数据对接教程5-引用指定股票数据函数

效果图

在这里插入图片描述
在这里插入图片描述

引用指定股票数据

通达信 $操作符

例如:“000014$CLOSE”,表示取000014的收盘价,注意加入双引号.
可在前面加SZ(深市),SH(沪市),或市场_,“SZ000001$CLOSE"表示平安银行,”

例子

如:绘制一个平安银行的K线图

收盘价:"000001$CLOSE",NODRAW;
开盘价:"000001$OPEN",NODRAW;
最高价:"000001$HIGH",NODRAW;
最低价:"000001$LOW",NODRAW;

DRAWKLINE(最高价,开盘价,最低价,收盘价);

hqchart 引用指定股票数据函数

CLOSE(品种代码)/C(品种代码)

收盘价

VOL(品种代码)/V(品种代码)

成交量

OPEN(品种代码)/O(品种代码)

开盘价

HIGH(品种代码)/H(品种代码)

最高价

LOW(品种代码)/L(品种代码)

最低价

AMOUNT(品种代码)/AMO(品种代码)

成交金额

VOLINSTK(品种代码)

持仓量 (期货才有)

例子

绘制一个平安银行的K线图 
脚本:

收盘价:C("000001.SZ"),NODRAW;
开盘价:O("000001.SZ"),NODRAW;
最高价:H("000001.SZ"),NODRAW;
最低价:L("000001.SZ"),NODRAW;

DRAWKLINE(最高价,开盘价,最低价,收盘价);

接口函数格式

 # 获取其他K线数据
 def GetKLineData2(self, symbol, period, right, callInfo, kdataInfo, jobID) :
 	pass

参数说明

symol

股票代码

period

周期
0=日线 1=周线 2=月线 3=年线 4=1分钟 5=5分钟 6=15分钟 7=30分钟 8=60分钟 9=季线 10=分笔

right

复权
0=不复权 1=前复权 2=后复权

callInfo

调用函数信息 ‘000001$CLOSE’

jobID

任务id

kdataInfo

当前k线信息 字典类型

返回数据格式

返回一个字典类型的数据

name

股票名称 字符串

period

周期 数值型

right

复权 数值型

yclose

前收盘价 数值型数组

open

开盘价 数值型数组

high

最高价 数值型数组

low

最低价 数值型数组

close

收盘价 数值型数组

vol

成交量 数值型数组

amount

成交金额

tushare数据对接例子

使用 pro_bar 数据接口获取K线数据,接口说明见https://waditu.com/document/2?doc_id=146

class TushareHQChartData(IHQData) :
	# 获取其他K线数据
    def GetKLineData2(self, symbol, period, right, callInfo, kdataInfo, jobID) :
        if (callInfo.find('$')>0) : #没有后缀的股票要加上后缀
            if (symbol.find(".")<=0) :
                if (symbol[:3]=='600' or symbol[:3]=="688") :
                    symbol+=".SH"
                elif (symbol[:3]=="000" or symbol[:2]=="30") :
                    symbol+=".SZ"

        return self.GetKLineAPIData(symbol, period, right, kdataInfo["StartDate"], kdataInfo["EndDate"])
        
    # 获取K线API数据
    def GetKLineAPIData(self, symbol, period, right, startDate, endDate) :
        # 复权 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"

        try :
            print("[TushareHQChartData::GetKLineAPIData] ts.pro_bar(ts_code={0}, adj={1}, start_date={2}, end_date={3}, freq={4})".format(symbol, fq, startDate, endDate, freq))
            df = ts.pro_bar(ts_code=symbol, adj=fq, start_date=str(startDate), end_date=str(endDate),freq=freq)
            # df = self.TusharePro.daily(ts_code=symbol, start_date='20200101', end_date='20201231')
            
        except Exception as e:
            print('[TushareHQChartData::GetKLineAPIData] Error. throw exception {0},'.format(e))
            return {
    
     "error":str(e) }

        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']=right       # 不复权

        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} date=[{4}, {5}]".format(symbol,period,right,dataCount, startDate, endDate)
        print(log)

        return cacheData

交流QQ群

如果有什么问题或需求可以加交流QQ群: 950092318** 联系群主(QQ48274798)

hqchartPy动态库地址

https://github.com/jones2000/HQChart/tree/master/C++指标计算引擎/py版本

HQChart代码地址

地址:https://github.com/jones2000/HQChart

个人爱好(模型/摄影)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/jones2000/article/details/112335307
今日推荐