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

个人爱好(模型/摄影)

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HQChart

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值