hqchartPy2指标选股 - KDJ选股

  • HQChartPy2
  • 准备工作
  • py编写选股
    • 1. 初始化hqchartPy2
    • 2. 配置运行的指标信息(runConfig)
      • Script
      • Args
      • Period
      • Right
      • StartDate, EndDate
      • OutCount
      • Symbol
    • 3. 创建tushare 数据类(TushareHQChartData)
    • 4. 创建指标数据接收类(HQSelectResult)
    • 5. 小结
  • 结果截图
  • demo源码地址
  • 完整的例子代码
  • 交流QQ群
  • hqchartPy动态库地址
  • HQChart代码地址

HQChartPy2

HQChart(C++)指标计算引擎-介绍
HQChart(C++)指标计算引擎-安装
HQChart(C++)指标计算引擎-py接口类FastHQChart介绍

前面几章教程我介绍了,如何把tushare的数据对接到hqchartPy2指标计算引擎中。
这章我们就实战KDJ选股

准备工作

  1. KDJ指标脚本, 我们使用通达信的KDJ指标脚本。 打开通达信软件把KDJ的指标和参数拷出来。
  2. K线数据, 我们使用tushareK线数据, 你可以直接取官网注册就可以用了地址:https://waditu.com/。
  3. 确定KDJ指标筛选范围, 加上我们要筛选KDJ超买信号: (K<10) and (D<20) and (J<0)
  4. 股票池 我使用的沪深300,成分可以去官网下载,地址:http://www.csindex.com.cn/

这样准备工作就完成了,可以开始写py脚本了。

py编写选股

1. 初始化hqchartPy2

2. 配置运行的指标信息(runConfig)

Script

分析家语法的指标脚本,就是上面我们从通达信软件里拷出来的指标脚本

Args

指标的参数, 这里我使用了通达信给的默认值, 你也可以修改参数值

Period

周期
0=日线 1=周 2=月 3=年
4=1分钟 5=5分钟 … 由于tushare分钟数据是要单独收费的, 我没有开通所有这里就使用日线来选股

Right

复权 0=不复权 1=前复权 2=后复权
这里我使用前复权

StartDate, EndDate

计算K线的范围, 这里我用最近1年的K线数据来计算指标

OutCount

返回数据个数,这里我就返回当天的K,D,J的值,所以设置了1,
如果要返回最后5天数据,设置为5,
如果要放回所有计算K线范围你的数据,设置为-1

Symbol

股票池。 这里用沪深300股票池

3. 创建tushare 数据类(TushareHQChartData)

TushareHQChartData 对tushare的数据进行了封装,计算指标过程中所有用到的数据都通过这个类来获取

4. 创建指标数据接收类(HQSelectResult)

hqchartPy2每计算完1只股票指标就会通知这个指标数据接收类,这样即时性比计算完了所有股票指标再返回快。 你可以再这个接收类里把所有的股票指标结构到保存起来,也可以把指标数据投递到其他的线程里面去处理后续的指标筛选(这样速度更高效)。这里我使用DataFrame, 把所有的股票的指标数据都保存到一个DataFrame里面, 计算完了直接对这个DataFrame进行筛选。

5. 小结

这样选股过程就完成了。 你也可以换其他的通达信指标, 或自己使用通达信语法写指标。hqchartPy2的优点就是省取了你把通达信的指标翻译成py的过程,极大的加快你验证指标的速度。另外可以结合HQChart网页插件进行可视化分析。
目前支持的语法函数列表 https://opensourcecdn.zealink.com/cache/webcache/hqfunctionhelp/index.html#/10
前端指标编辑界面

结果截图

demo里面的K线数据都是现取的,所有比较慢用了26s才算完, 如果把数据存数据库,启动的时候把所有股票K线数据都放内存里面,可以1s一下就完成整个选股过程

demo源码地址

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

完整的例子代码


# 选股from hqchartpy2_fast import FastHQChart,PERIOD_ID
from hqchartpy2_pandas import HQChartPy2Helper
from hqchartpy2_tushare import TushareHQChartData,HQResultTest
from hqchartpy2_tushare_config import HQCHART_AUTHORIZATION_KEY,TUSHARE_AUTHORIZATION_KEYimport json
import time
import numpy as np
import pandas as pd
import datetime
import uuid
import tushare as tsclass HQSelectResult():def __init__(self):self.dfResult=pd.DataFrame()      #保存所有的执行结果self.Error=[]# 执行成功回调def RunSuccess(self, symbol, jsData, jobID):log="[HQSelectResult::RunSuccess] {0} success".format(symbol)print (log)data=HQChartPy2Helper.JsonDataToPandas(jsData, symbol)# print (data)if (self.dfResult.empty==True):self.dfResult=dataelse:if (len(data)>0) :self.dfResult=pd.concat([self.dfResult,data], ignore_index=True)# print (self.dfResult)# 执行失败回调def RunFailed(self, code, symbol, error,jobID) :log="[HQSelectResult::RunFailed] {0}\n{1} failed\n{2}".format(code, symbol,error)self.Error.append(error)print(log)class TushareSelect :def __init__(self):passdef Run(self, config):jsConfig = json.dumps(config)    # 运行配置项hqData=TushareHQChartData(TUSHARE_AUTHORIZATION_KEY,startDate=config["StartDate"], endDate=config["EndDate"])result=HQSelectResult()   # 实例计算结果接收类start = time.process_time()res=FastHQChart.Run(jsConfig,hqData,proSuccess=result.RunSuccess, procFailed=result.RunFailed)elapsed = (time.process_time() - start)log='''
---------------------------------------------------------------------------
TushareSelect::Run()
Success:{4},
ID:{3}
执行时间:{0}s,
K线返回:{6}-{7},
股票个数:{1},
脚本:
{2}
参数:{5}
---------------------------------------------------------------------------'''.format(elapsed, len(config['Symbol']), config["Script"], config['JobID'], res, config["Args"],config["StartDate"],config["EndDate"])print(log)return result# 沪深300股票
CSI_300 = [ "600000.sh","600004.sh","600009.sh","600010.sh","600011.sh","600015.sh","600016.sh","600018.sh","600019.sh","600025.sh","600027.sh","600028.sh","600029.sh","600030.sh","600031.sh","600036.sh","600048.sh","600050.sh","600061.sh","600066.sh","600068.sh","600085.sh","600104.sh","600109.sh","600111.sh","600115.sh","600118.sh","600150.sh","600161.sh","600176.sh","600177.sh","600183.sh","600196.sh","600208.sh","600233.sh","600271.sh","600276.sh","600297.sh","600299.sh","600309.sh","600332.sh","600340.sh","600346.sh","600352.sh","600362.sh","600369.sh","600383.sh","600390.sh","600406.sh","600436.sh","600438.sh","600482.sh","600487.sh","600489.sh","600498.sh","600519.sh","600522.sh","600547.sh","600570.sh","600584.sh","600585.sh","600588.sh","600600.sh","600606.sh","600637.sh","600655.sh","600660.sh","600690.sh","600703.sh","600705.sh","600741.sh","600745.sh","600760.sh","600763.sh","600795.sh","600809.sh","600837.sh","600845.sh","600848.sh","600872.sh","600886.sh","600887.sh","600893.sh","600900.sh","600918.sh","600919.sh","600926.sh","600958.sh","600989.sh","600998.sh","600999.sh","601006.sh","601009.sh","601012.sh","601021.sh","601066.sh","601077.sh","601088.sh","601100.sh","601108.sh","601111.sh","601117.sh","601138.sh","601155.sh","601162.sh","601166.sh","601169.sh","601186.sh","601198.sh","601211.sh","601216.sh","601225.sh","601229.sh","601231.sh","601236.sh","601238.sh","601288.sh","601318.sh","601319.sh","601328.sh","601336.sh","601360.sh","601377.sh","601390.sh","601398.sh","601555.sh","601577.sh","601600.sh","601601.sh","601607.sh","601618.sh","601628.sh","601633.sh","601658.sh","601668.sh","601669.sh","601688.sh","601696.sh","601698.sh","601727.sh","601766.sh","601788.sh","601800.sh","601808.sh","601816.sh","601818.sh","601838.sh","601857.sh","601872.sh","601877.sh","601878.sh","601881.sh","601888.sh","601899.sh","601901.sh","601916.sh","601919.sh","601933.sh","601939.sh","601985.sh","601988.sh","601989.sh","601990.sh","601998.sh","603019.sh","603087.sh","603156.sh","603160.sh","603195.sh","603259.sh","603288.sh","603369.sh","603392.sh","603501.sh","603658.sh","603799.sh","603833.sh","603899.sh","603986.sh","603993.sh","688008.sh","688009.sh","688012.sh","688036.sh","000001.sz","000002.sz","000063.sz","000066.sz","000069.sz","000100.sz","000157.sz","000166.sz","000333.sz","000338.sz","000425.sz","000538.sz","000568.sz","000596.sz","000625.sz","000627.sz","000651.sz","000656.sz","000661.sz","000671.sz","000703.sz","000708.sz","000723.sz","000725.sz","000728.sz","000768.sz","000776.sz","000783.sz","000786.sz","000858.sz","000860.sz","000876.sz","000895.sz","000938.sz","000961.sz","000963.sz","000977.sz","001979.sz","002001.sz","002007.sz","002008.sz","002024.sz","002027.sz","002032.sz","002044.sz","002049.sz","002050.sz","002120.sz","002129.sz","002142.sz","002146.sz","002153.sz","002157.sz","002179.sz","002202.sz","002230.sz","002236.sz","002241.sz","002252.sz","002271.sz","002304.sz","002311.sz","002352.sz","002371.sz","002384.sz","002410.sz","002414.sz","002415.sz","002422.sz","002456.sz","002460.sz","002463.sz","002475.sz","002493.sz","002508.sz","002555.sz","002558.sz","002594.sz","002600.sz","002601.sz","002602.sz","002607.sz","002624.sz","002673.sz","002714.sz","002736.sz","002739.sz","002773.sz","002812.sz","002821.sz","002841.sz","002916.sz","002938.sz","002939.sz","002945.sz","002958.sz","003816.sz","300003.sz","300014.sz","300015.sz","300033.sz","300059.sz","300122.sz","300124.sz","300136.sz","300142.sz","300144.sz","300347.sz","300408.sz","300413.sz","300433.sz","300498.sz","300529.sz","300601.sz","300628.sz","300676.sz",
]if __name__ == '__main__':# 初始化HQChartPy2FastHQChart.Initialization(HQCHART_AUTHORIZATION_KEY)# 通达信指标脚本script='''
RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100;
K:SMA(RSV,M1,1);
D:SMA(K,M2,1);
J:3*K-2*D;'''# 指标参数args=[ { "Name":"N", "Value":9 }, { "Name":"M1", "Value":3 }, { "Name":"M2", "Value":3} ]period=PERIOD_ID.DAY_IDright=1 # 0=不复权 1=前复权 2=后复权# K线范围newDate=datetime.datetime.now()endDate=newDate.year*10000+newDate.month*100+newDate.daydelta=datetime.timedelta(days=365)newDate=newDate-deltastartDate=newDate.year*10000+newDate.month*100+newDate.dayjobID=str(uuid.uuid1())symbols=CSI_300 # 沪深300成分股runConfig={"Script":script,"Args":args,# 周期 复权"Period":period, "Right":right,"Symbol":symbols,"StartDate":startDate, "EndDate":endDate,"JobID":jobID,"OutCount":1    # 输出最后一个数据}select=TushareSelect()result=select.Run(runConfig)print("指标计算结果:")print(result.dfResult)print("筛选KDJ超买信号: (K<10) & (D<20) & (J<0)")data=result.dfResult[(result.dfResult.K<10) & (result.dfResult.D<20) & (result.dfResult.J<0)]print(data)

交流QQ群

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

hqchartPy动态库地址

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

HQChart代码地址

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

hqchartPy2指标选股 - KDJ选股相关推荐

  1. 股票指标 PHP,怎样将股票指标改为选股指标

    刚刚股票入门的股民经常发现有些指标很准确,如是想将股票指标改成选股指标,但不知道如果着手,本文详细介绍怎样将股票指标改为选股指标. 步骤一.将所有的显示式":",改为不显示式&qu ...

  2. Lyndon的量化修炼之路——随机指标(KDJ)优化策略(二)

    //期市妖风大,小心被刮飞.本文不构成任何实质性建议,也不对任何依此进行的交易结果负责 重新审视超买超卖的状态 在前文中提到了KDJ指标是对超买超卖有一定指示的,一般情况下我们在应用KDJ指标进行一些 ...

  3. 【股票指标分析 KDJ】量化投资python实时计算KDJ以及MACD

    什么是KDJ指标? KDJ指标中文名叫随机指标,是一种相当新颖.实用的技术分析指标,它起先用于期货市场的分析,后被广泛用于股市的中短期趋势分析,是期货和股票市场上最常用的技术分析工具. 随机指标KDJ ...

  4. 通达信资金净流入公式_通达信资金净流入指标公式(选股公式/源码)

    最近看到很多股民说需要通达信公式里关于通达信资金净流入指标公式,下面红股网整理一份<通达信资金净流入指标公式(选股公式/源码)>,希望让您对通达信公式有所认识. 买:=IF(O=C AND ...

  5. tushare 根据每日指标打分法选股

    选股策略: 1.以中证1000为股票池: 2.删除上市时间不足两年的股票: 3.删除掉创业板股票 4.使用concurrent.futures import ThreadPoolExecutor 对每 ...

  6. 通达信版弘历软件指标_通达信获利分析仿弘历软件的六彩神龙指标公式(选股公式/源码)...

    最近看到很多股民说需要通达信公式里关于通达信获利分析仿弘历软件的六彩神龙指标公式,下面红股网整理一份<通达信获利分析仿弘历软件的六彩神龙指标公式(选股公式/源码)>,希望让您对通达信公式有 ...

  7. 利用c语言建立交易系统,【图】手把手教会你构建自己的交易系统 - 4_股票论坛,炒股公式,股票指标,股票公式,选股公式_数据、教程交流论坛_理想论坛 - 股票论坛...

    很多人对交易系统有神秘感,其实神秘感的来源主要是因为不懂什么是交易系统所以好奇导致.任何人都可以根据任何买进卖出信号构建自己的交易系统.但是,一个交易系统需要投资者投入大量的时间和精力.那如何判断一个 ...

  8. python均线选股_python选股模型均线,已知股票数据,如何用Python绘制k线日对应数据...

    Q1:已知股票数据,如何用Python绘制k线日对应数据 我没遇到过 只是自己写过 有点经验 先确定时间片 然后再把tick插入就行了 Q2:使用python实现ema(指数移动平均的计算) a =  ...

  9. MT5指标三线KDJ指标下载

    MT4.5三线KDJ指标下载: 源码: #property copyright "Copyright 2020" #property link "https://www. ...

最新文章

  1. 基于Transformers入门自然语言处理!
  2. 100教育:一场与信任赛跑的赌注
  3. 深入理解ES6笔记(九)JS的类(class)
  4. linux编译安装memcached
  5. swiper高度自适应_小程序自定义导航自适应高度
  6. QImage、 QPixmap、 QBitmap、 QPicture区别
  7. 思科从服务器恢复配置文件,思科服务器网关配置文件
  8. WinHEC 2008 China
  9. 线性代数学习之正交性,标准正交矩阵和投影
  10. 在线扑克运营商在 WSOP 赛事开幕当天遭到 DDoS 攻击
  11. c语言-计算摄氏温度
  12. android studio 扣费白屏,详解一次Vue低版本安卓白屏问题的解决过程
  13. http下载异常_荏苒项目二:配置(日志,异常,数据库,前端,跨域CORS)
  14. 阳性,阴性,假阳性,假阴性,敏感度,特异性
  15. 便宜质量又好的学生蓝牙耳机有哪些?内行推荐四款便宜好用的蓝牙耳机
  16. python爬取电脑本地数据_利用python爬取丁香医生上新型肺炎数据,并下载到本地,附带经纬度信息...
  17. win10卸载电脑管家就蓝屏_Win10电脑蓝屏原因排查及解决方案
  18. 添加 polygon 网路
  19. django学习问题及解决方法
  20. 洗碗机底板原理图绘制

热门文章

  1. 在线视频播放网站服务器配置,在线播放视频网站应该如何选择服务器
  2. python哪个方向工资高_学完Python的7大就业方向,哪个赚钱多?
  3. 拜托,不要再问我Git如何回滚代码
  4. 【Python】基金/股票 最大回撤率计算与绘图详解(附源码和数据)
  5. 网易云课堂-微专业-《前端开发工程师》-笔记目录
  6. 用Yolact模型训练自己的数据集
  7. 公众号视频图片无缝连接
  8. Elasticsearch搜索结果处理
  9. 暑期出境游十大APP推荐
  10. 怎样降低EDIUS中声音