GithubHelp home page GithubHelp logo

dragon86cn / chanlun Goto Github PK

View Code? Open in Web Editor NEW

This project forked from yijixiuxin/chanlun-pro

0.0 1.0 0.0 3.8 MB

基于缠中说禅所讲缠论理论,以便量化分析市场行情的工具

Python 96.76% JavaScript 1.36% CSS 0.69% HTML 1.16% Dockerfile 0.02% Shell 0.01%

chanlun's Introduction

缠论市场分析工具


本项目是基于 缠中说禅 所分享的缠论知识,结合个人理解,用于学习和研究市场行情的分析工具;
因为个人能力有限,理解可能会有偏差的地方,导致项目所实现的缠论,必然有错误之处;
所以决定开源出来,希望大家一起学习并加以完善。

项目更新记录

【在线Demo展示】

缠论图表 缠论图表demo

回测结果展示
回测结果展示 回测结果展示

多图表展示
多图表展示

行情数据回放练习
行情数据回放练习

特别说明

项目原本是个人学习与研究缠论所用,并且对于 Python 了解不多,代码用的比较简单,基本没有用到什么高深技术,对于初学 Python 的人来说相对友好,花点时间都能看懂;
其中 WEB 输入参数,并没有多加校验,完全凭借人之本善加以约束,在使用中还请注意;
如有问题,可在 issues 中进行提问;
也可添加我的微信和微信群进行交流(添加请备注:缠论@姓名)

微信 群

项目当前功能

  • 缠论图表展示
  • 行情数据下载(A股、港股、数字货币)
  • 行情回放练习
  • 自定义缠论策略进行回测
  • 实盘策略交易

安装使用

前提:需要事先安装 MySQL、Redis

  1. 克隆项目到本地
git clone https://github.com/yijixiuxin/chanlun.git)
  1. 安装 Anaconda ,创建运行环境,Python 版本 3.7
下载 Anaconda 并安装,打开 Anaconda Shell 并执行以下命令  
conda create -y -n chanlun python=3.7
  1. pip 安装项目依赖包
conda activate chanlun # 切换到新创建的 chanlun 环境  
conda install -y pandas requests numpy redis matplotlib pymysql  
conda install -y -c conda-forge ta-lib  ipywidgets  
pip3 config set global.index-url https://mirrors.aliyun.com/pypi/simple/
pip3 install django==3.2.9 redis futu-api ccxt prettytable pyttsx3 pyecharts==1.9.1 djangorestframework baostock dbutils  
  1. 使用 Anaconda 安装 JupyterLab,用于本地进行研究使用
conda install -y -c conda-forge jupyterlab jupyterlab_widgets  
jupyter-lab --generate-config   # 生成配置文件  
# 修改配置文件中的 c.ServerApp.notebook_dir 配置项为 项目地址
jupyter-lab  # 启动
  1. 在 cl_v2 目录,复制拷贝 config.py.demo 文件为 config.py ,用于配置整个项目的配置参数
  2. 到 web 目录,启动 web 服务
python manage.py runserver 0.0.0.0:8000
  1. 浏览器访问 http://127.0.0.1:8000/charts/stock_index/ 即可显示缠论主页

默认 exchange 交易行情,使用的 baostock 服务
可直接创建 exchange 对象进行使用,无需配置 api 等参数 缺点是在交易日无当日行情更新,好处是可获取很久之前的历史行情数据 在研究环境使用还是很好用的

Docker 使用说明

Docker 相关命令文档 https://www.runoob.com/docker/docker-command-manual.html

  1. 平台安装 Docker 下载
  2. 启动 Docker 服务
  3. 构建 Docker 镜像
# 进入项目中的 docker 目录,执行以下命令
docker build -t chanlun
  1. 根据镜像启动容器;project_code_path 需要替换为项目代码地址
    docker run -itd -p 8000:8000 -p 8888:8888 -p 3306:3306 -v /project_code_path:/root/app chanlun
  1. 访问以下地址进行访问
    http://127.0.0.1:8000/charts/stock_index  项目主页    
    http://127.0.0.1:8888   研究环境 (token:262468670f9a00b51e3f93b0955a0bdfdcba7ba3e8b821c5)

配置文件说明

  • 代理服务器配置
    如果需要使用数字货币行情,则需要进行配置;
    项目中实现了 币安交易所的 USDT 永续合约行情与交易,可直接配置 API 进行使用;
    数字货币行情与交易,基于 ccxt 包实现,可以很方便进行其他交易所的实现;
    如没有好用的 vpn,推荐我自己使用的 V2free 服务 (PS:使用链接注册,我可以获得返利)

  • 富途 API 配置
    我自己主要使用的行情服务,同时也可以进行 港股 的自动化交易,推荐使用;
    OpenAPI
    不足之处就是获取股票 K 线有限制 API文档
    开户用户每月只能获取 100 只股票K线(可多次获取),总资产达1万港币则为 300
    我的用法为:在聚宽平台研究环境筛选符合条件的股票,在使用 富途API 获取行情精选查看,这样 300 个已经够用了。

  • Redis、Mysql 配置
    K线 同步到本地,使用 Mysql 进行保存,程序会自动创建表,需要给表创建的权限;
    Redis 用于保存非结构化的一些数据,用于实现一些信息的保存;如 股票盯盘结果查看、动量排行、实盘实例保存等;

  • 钉钉消息配置
    用于发送推送消息 API 文档

研究环境

克隆代码到本地,配置好相应的配置,开启本地 JupyterLab,浏览器访问 : http://127.0.0.1:8888/lab/tree

项目根目录有写好的一些实例,可直接运行查看,并按需要修改测试

聚宽平台

缠论计算类 cl.py 可以在聚宽平台直接使用,可以复制代码到聚宽的研究环境中使用;
项目目录 joinquant 有相应的实例,以及行业、概念板块的动量排行计算;
可直接上传目录(joinquant)中文件到研究环境中运行:

ps: 这里的 cl.py 与项目中 cl_v2/cl.py 是同一个文件

WEB 网页

到 web 目录,运行 python manage.py runserver 0.0.0.0:8000 启动 web 服务
访问:http://127.0.0.1:8000/charts/stock_index/

本地 Demo 可直接访问 http://127.0.0.1:8000,依赖少,无需 Redis、Mysql 和配置 行情服务器即可运行

PS:页面只根据我自己的显示屏进行了适配,不保证所有分辨率大小下都能显示正常;
如有显示异常,可自行尝试修改;
如有前端大神愿意优化,也很欢迎提交代码,感激不尽!

web 服务中,股票行情使用 富途API 实现,其中股票列表是基于在富途的自选股列表实现 股票列表
可根据自己需求进行修改,行情服务也可以自定义去实现,继承 Exchange 类并实现相应方法即可;

页面左上角输入框,支撑股票搜索,输入关键字即可

股票搜索

按钮 "导入" 功能,则可以导入自定义的股票列表到页面中,格式为 JSON 数据,示例:

[{"code": "SH.600711", "name": "盛屯矿业"}, {"code": "SZ.300363", "name": "博腾股份"}, {"code": "SZ.002192", "name": "融捷股份"}, {"code": "SH.603259", "name": "药明康德"}, {"code": "SH.688315", "name": "诺禾致源"}, {"code": "SH.600392", "name": "盛和资源"}, {"code": "SH.600111", "name": "北方稀土"}, {"code": "SZ.002010", "name": "传化智联"}]

页面中行情默认不自动刷新,有按钮 "开启自动刷新" 可手动开启,Javascript 会轮训方式请求行情并刷新。

动量排行页面,需要使用 聚宽平台 运行出的结果,复制后手动新增到项目中,才可正常进行展示;
(聚宽平台代码在项目 joinquant 目录中)

交易者页面,显示当前实盘对象的运行情况,按需使用。

其他功能自行摸索吧,有特别说明的后续在补充......

行情数据同步到本地

支持将行情保存到本地 MySQL 数据库,实例可查看根目录中的 同步行情到数据库.ipynb
同时也已经实现了 自动化脚本:

可自行查看具体代码实现

策略回测

回测行情数据基于本地 MySQL 中的数据,所以在回测前需要确认本地是否有回测时间段的行情数据

回测的类为 : cl_v2/trader.py
策略的类为 : cl_v2/strategy.py

自己写的策略,需要继承 Strategy 类,并实现其中的 look、stare 方法 Demo 实例参考 : cl_v2/my/strategy_demo.py

回测运行实例参考:
数字货币策略回测.ipynb
股票策略回测.ipynb

实盘策略交易

当前项目还处于不断完善的过程,其中核心的 cl.py 文件肯定会有变动,这样会导致之前回测的信号发生变化;
如果用于实盘,代码要与研究环境分开,避免因为代码更新,导致实盘信号与之前回测有偏差,导致亏损。

策略经过回测验证,满足自己要求,即可接入实盘进行交易;
实盘的交易对像需要继承 cl_v2/trader.py
实现其中的 open_buy/open_sell/close_buy/close_sell 交易方法即可
参看:trader_currency.py 数字货币 trader_hk_stock.py 港股交易

实盘运行脚本在 strategy_trader 目录下
参看:
reboot_trader_currency.py 数字货币自动交易者

reboot_trader_currency.py 数字货币自动交易者

赞助

开发维护不易,如果觉得项目对你有帮助,还请多多支持

微信支付

USDT (ETH ERC20) : 0xa98dbf355462a964f465d867a0c1fd6d609647e7
USDT (TRX TRC20) : TEPEJ534pKYg1JteNqXtzNNph3ZYGFR11E
BTC : 1BAbRCAkxyT3punbihB2Rpy8638kCx98Ys
ETH : 0xa98dbf355462a964f465d867a0c1fd6d609647e7

chanlun's People

Contributors

yijixiuxin avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.