CZSC 是缠中说禅技术分析理论的 python 实现,该理论源自 缠中说禅 博客。

注意:文档写的比较匆忙,很多地方可能没有讲清楚。有什么疑问,可以到 常见问题(FAQ) 看看。看完还有疑问,可以直接在FAQ链接下面跟帖提问。

此文档仅适用于 czsc == 0.6.8 ,地址: https://github.com/zengbin93/czsc


CZSC 官方文档(0.6.8)

  • 1. 缠中说禅技术分析理论基础
  • 2. 安装、更新与卸载
  • 3. 基础信息
    • 3.1 符号说明
    • 3.2 基础形态定义
  • 4. 简单用法
    • 4.1 查看分析结果
    • 4.2 单级别形态选股
    • 4.3 实时监控并推送消息到企业微信
  • 5. 高级用法
    • 5.1 使用掘金量化终端进行缠论策略研究
    • 5.2 对接K线数据

1. 缠中说禅技术分析理论基础


  • 缠中说禅重新编排版《论语》(整理版)
  • 缠中说禅交易指南
  • 缠中说禅技术原理
  • 缠中说禅图解分析示范

以上四篇文章,建议按顺序读一遍,如果读完后感觉缠中说禅技术分析理论还不错,推荐阅读原文。


2. 安装、更新与卸载


czsc 是一个python第三方库,安装、更新、卸载与任何 python 第三方库都是一样的。czsc 目前已经实现了缠中说禅技术分析理论中的一些核心概念,包括分型、笔等。基于此,设计并实现了N个缠中说禅技术分析信号,用于辅助策略设计和多因子建模。

python 版本必须大于等于 3.7


直接从 github 安装与更新:

pip install git+git://github.com/zengbin93/czsc.git -U

pypi 安装与更新:

pip install czsc -U -i https://pypi.python.org/simple

快速卸载:

pip uninstall czsc

3. 基础信息


3.1 符号说明


在信号和因子设计过程中,为了方便表达,引入以下符号,不区分大小写:

符号 说明
BI 笔对象
FX 分型对象
X5 五笔形态
X7 七笔形态
X9 九笔形态
L 多头信号,Long 的首字母
S 空头信号,Short 的首字母
C6 日线级别
C5 60分钟级别
C4 30分钟级别
C3 15分钟级别
C2 5分钟级别
C1 1分钟级别
L1 向下笔转折右侧
L2 向下笔转折左侧
L3 向上笔中继右侧
L4 向上笔中继左侧
S1 向上笔转折右侧
S2 向上笔转折左侧
S3 向下笔中继右侧
S4 向下笔中继左侧
R1 倒数第1笔
R2 倒数第2笔
R3 倒数第3笔
R4 倒数第4笔
R5 倒数第5笔

符合举例:
X5LA0 表示五笔形态为aAb式底背弛基础型,具体的说,X5 = 五笔形态,L = 多头,A0 = aAb式底背弛基础型


3.2 基础形态定义


在信号层面,定义了若干种常见形态,具体请参考:

  • 缠中说禅形态挖掘之五笔形态
  • 缠中说禅形态挖掘之七笔形态
  • 缠中说禅形态挖掘之九笔形态

4. 简单用法


czsc 库目前内置了聚宽数据的获取方法,聚宽数据的用户可以很方便的使用一些基础功能。

4.1 查看分析结果


CzscTrader 是依赖聚宽数据实现的多级别分析类 ,聚宽数据用户可以直接使用。

# 首次使用需要设置聚宽账户
# from czsc.data.jq import set_token
# set_token("phone number", 'password') # 第一个参数是JQData的手机号,第二个参数是登录密码from datetime import datetime
import czsc
from czsc.trader import CzscTraderassert czsc.__version__ == '0.6.8'# 在默认浏览器中打开最新分析结果,
ct = CzscTrader(symbol="000001.XSHG", end_date=datetime.now())
ct.open_in_browser(width="1400px", height="580px")
# open_in_browser 方法可以在windows系统中使用,如果无法使用,可以直接保存结果到 html 文件
# ct.take_snapshot(file_html="czsc_results.html", width="1400px", height="580px")# 在默认浏览器中打开指定结束日期的分析结果)
ct = CzscTrader(symbol="000001.XSHG", end_date="2021-03-04")
ct.open_in_browser(width="1400px", height="580px")

4.2 单级别形态选股


以三买为例,单级别形态选股的实现方法如下:

# 首次使用需要设置聚宽账户
# from czsc.data.jq import set_token
# set_token("phone number", 'password') # 第一个参数是JQData的手机号,第二个参数是登录密码from datetime import datetime
from typing import List
from czsc.data.jq import get_kline, get_index_stocks
import czsc
from czsc.analyze import CZSC
from czsc.enum import Signalsassert czsc.__version__ == '0.6.8'def is_third_buy(symbol):"""判断一个股票现在是否有日线三买"""bars = get_kline(symbol, freq="D", end_date=datetime.now(), count=1000)c = CZSC(bars, freq="日线")# 在这里判断是否有五笔三买形态,也可以换成自己感兴趣的形态if c.signals['倒1五笔'] in [Signals.X5LB0.value, Signals.X5LB1.value]:return Trueelse:return Falseif __name__ == '__main__':# 获取上证50最新成分股列表,这里可以换成自己的股票池symbols: List = get_index_stocks("000016.XSHG")for symbol in symbols:try:if is_third_buy(symbol):print("{} - 日线三买".format(symbol))except:print("{} - 执行失败".format(symbol))

4.3 实时监控并推送消息到企业微信


CZSC 内部实现了企业微信群聊机器人的实时消息推送方法,可以推送文本消息和文件,关于企业微信群聊机器人的使用方法,请参考腾讯文档:https://work.weixin.qq.com/api/doc/90000/90136/91770

下面是一个实时监控因子的案例,以日线笔因子为例:

# 首次使用需要设置聚宽账户
# from czsc.data.jq import set_token
# set_token("phone number", 'password') # 第一个参数是JQData的手机号,第二个参数是登录密码
import traceback
import time
import shutil
import os
import pickle
from datetime import datetime
from czsc.trader import CzscTrader, Factors
from czsc.utils.qywx import push_text, push_file# =======================================================================================================
# 基础参数配置
ct_path = os.path.join(".", "czsc_traders")
os.makedirs(ct_path, exist_ok=True)
# 关于企业微信群聊机器人的使用文档,参考:https://work.weixin.qq.com/api/doc/90000/90136/91770
# 企业微信群聊机器人的key
qywx_key = "4ad2e226-2519-4893-8670-*****"# 定义需要监控的股票列表
symbols = ["300033.XSHE", "300803.XSHE", "002739.XSHE"]
# =======================================================================================================def save_pkl(data, file):with open(file, "wb") as f:pickle.dump(data, f)def read_pkl(file):with open(file, "rb") as f:data = pickle.load(f)return datadef monitor(use_cache=True):push_text("自选股CZSC笔因子监控启动 @ {}".format(datetime.now().strftime("%Y-%m-%d %H:%M")), qywx_key)moni_path = os.path.join(ct_path, "monitor")# 首先清空历史快照if os.path.exists(moni_path):shutil.rmtree(moni_path)os.makedirs(moni_path, exist_ok=True)for s in symbols:print(s)try:file_ct = os.path.join(ct_path, "{}.ct".format(s))if os.path.exists(file_ct) and use_cache:ct: CzscTrader = read_pkl(file_ct)ct.update_factors()else:ct = CzscTrader(s, max_count=1000)save_pkl(ct, file_ct)# 每次执行,会在moni_path下面保存一份快照file_html_ = os.path.join(moni_path, f"{ct.symbol}_{ct.kf.end_dt.strftime('%Y%m%d%H%M')}.html")ct.take_snapshot(file_html_, width="1400px", height="580px")if ct.s['日线笔因子'] != Factors.Other.value:msg = "{} - {}\n".format(s, ct.s['日线笔因子'])msg += "同花顺F10:http://basic.10jqka.com.cn/{}".format(s[:6])push_text(msg, key=qywx_key)file_html_new = os.path.join(moni_path, f"{ct.symbol}_{ct.kf.end_dt.strftime('%Y%m%d%H%M')}.html")shutil.copyfile(file_html_, file_html_new)push_file(file_html_new, key=qywx_key)except Exception as e:traceback.print_exc()print("{} 执行失败 - {}".format(s, e))push_text("自选股CZSC笔因子监控结束 @ {}".format(datetime.now().strftime("%Y-%m-%d %H:%M")), qywx_key)def run_monitor():mdt = ["09:30", "10:00", "10:30", "11:00", "11:20", "13:00", "13:30", "14:00", "14:30", "14:50"]monitor()while 1:print(datetime.now().strftime("%H:%M"))if datetime.now().strftime("%H:%M") in mdt:monitor()time.sleep(3)if __name__ == '__main__':run_monitor()

5. 高级用法


5.1 使用掘金量化终端进行缠论策略研究


使用掘金量化终端进行缠论策略研究的代码稍微有点复杂,主要是需要实现一些掘金量化平台的一些回调函数和下单方法,具体的内容,点击访问:https://github.com/zengbin93/czsc_gm


5.2 对接K线数据


缠中说禅技术分析理论只需要K线,因此,任何第三方数据源只要转换一下K线获取方法就可以使用。下面以 Tushare 数据为例,介绍下如何进行K线数据转换,重点是 format_kline 方法。


import pandas as pd
import tushare as ts
from datetime import datetime, timedelta
from typing import List
import czsc
from czsc.analyze import CZSC, RawBar
from czsc.enum import Signalsassert czsc.__version__ == '0.6.8'# 使用第三方数据,只需要定义一个K线转换函数
def format_kline(kline: pd.DataFrame) -> List[RawBar]:""":param kline: Tushare 数据接口返回的K线数据:return: 转换好的K线数据"""bars = []records = kline.to_dict('records')for record in records:# 将每一根K线转换成 RawBar 对象bar = RawBar(symbol=record['ts_code'], dt=pd.to_datetime(record['trade_date']), open=record['open'],close=record['close'], high=record['high'], low=record['low'], vol=record['vol'])bars.append(bar)return barsdef is_third_buy(ts_code):"""判断一个股票现在是否有日线三买"""# 调用tushare的K线获取方法,Tushare数据的使用方法,请参考:https://tushare.pro/document/2end_date = datetime.now()start_date = end_date - timedelta(days=1000)df = ts.pro_bar(ts_code=ts_code, adj='qfq', asset="E",start_date=start_date.strftime("%Y%m%d"),end_date=end_date.strftime("%Y%m%d"))bars = format_kline(df)c = CZSC(bars, freq="日线")# 在这里判断是否有五笔三买形态,也可以换成自己感兴趣的形态if c.signals['倒1五笔'] in [Signals.X5LB0.value, Signals.X5LB1.value]:return Trueelse:return Falseif __name__ == '__main__':# 这里可以换成自己的股票池ts_codes = ['603259.SH', '603288.SH', '603501.SH', '603986.SH']for ts_code in ts_codes:try:if is_third_buy(ts_code):print("{} - 日线三买".format(ts_code))except:print("{} - 执行失败".format(ts_code))

CZSC 官方文档(0.6.8)相关推荐

  1. Spring Boot 2.0官方文档之 Actuator

    https://blog.csdn.net/alinyua/article/details/80009435 前言:本文翻译自Spring Boot 2.0.1.RELEASE官方文档,该Spring ...

  2. vue.js 2.0 官方文档学习笔记 —— 01. vue 介绍

    这是我的vue.js 2.0的学习笔记,采取了将官方文档中的代码集中到一个文件的形式.目的是保存下来,方便自己查阅. !官方文档:https://cn.vuejs.org/v2/guide/ 01. ...

  3. 官方文档太辣鸡?TensorFlow 2.0开源工具书,30天「无痛」上手

    本文转载自机器之心. 项目作者:lyhue1991 「官方文档排布凌乱.搜索难用.API 丑陋不堪--」这是很多人对 TensorFlow 官方文档的吐槽.但吐槽归吐槽,到了工业界,你是无论如何也绕不 ...

  4. 解决Nacos无法连接Mysql8.0+的问题(坑爹的阿里官方文档,已无力吐槽)

    如果你的mysql是8.0以上的的就不要在参考阿里的官方文档了,因为阿里的文档只适用于mysql5版本,再次吐槽一下,阿里的文档才是真正的挖坑埋人!!!,以下才是标准的配置过程 1 初始化mysql数 ...

  5. Hyperledger Fabric 2.0 官方文档中文版 第6章 教程(上)

    Hyperledger Fabric 2.0 官方文档中文版第6章 教程上 总目录 6.教程(上) 将智能合约部署到通道 启动网络 Logspout设置 打包智能合约 安装链码包 批准链码定义 将链码 ...

  6. Django安装教程——4.0(官方文档版)

    Django安装教程--4.0(官方文档版) Django安装教程--4.0(官方文档版) 概要 对Django的认识 应用数据模型 使用PythonAPI 一个动态管理接口 规划URLs 编写视图 ...

  7. SWFObject 2.0官方文档

    SWFObject 2.0官方文档 2008年4月24日 翻译:farthinker 主要内容: 1 . 什么是SWFObject 2.0? 2 . 为什么你应该使用SWFObject 2.0? 3 ...

  8. Harbor安装教程-完全根据官方文档2.6.0版本

    说明: 版本2.6.0 一.安装要求 硬件 硬件类型 最小要求 建议 CPU 2 CPU 4 CPU 内存 4 GB 8GB 硬盘 40 GB 160 GB 软件 软件名称 版本 Docker eng ...

  9. 关于MySQL8.0的闰秒,官方文档是真狗啊

    我在读MySQL最新8.0文档的时候,想预演一下实际情况中的闰秒,结果并不顺利.甚至有MySQL文档编写人员想当然的成分存在.所以特别整理了一篇文章,以供后人节省时间.如果有理解不对的地方,还希望热心 ...

最新文章

  1. python turtle循环图案-有趣的Python turtle绘图
  2. Spring 常犯的十大错误,打死都不要犯!
  3. Lucifer的一场暴强围英雄表演
  4. acwing221 龙哥的问题
  5. 佩服!终以一作发Science的她,竟也曾经历“直博转硕士”,艰难毕业!
  6. Linux Shell变量
  7. 15. PHP 全局变量 - 超全局变量
  8. mysql数据库异地备份
  9. usbserialch340驱动安装失败_【已解决】Mac中安装USB转串口的CH340G驱动
  10. 2015-5-23PDF的下载链接
  11. MATLAB 曲线拟合
  12. 强化学习中 on-policy与off-policy 的理解;如何区分on-policy 与 off-policy;RL更新策略、policy结构总结
  13. linux下载ccle数据,对CCLE数据库可以做的分析--转载
  14. 短信平台API接口demo示例-Node/SMS/Send
  15. HTML5和CSS3新特性(完整版)
  16. uniapp 页面滚动获取元素高度
  17. 【数据库】查询所有同学的学号、姓名、选课数、总成绩(左外连表查询)
  18. MFC中的UINT与USHORT
  19. 奶妈教程之基于ADS的带通滤波器仿真
  20. 大学本科《机器人程序设计课程》配套系统镜像使用说明( Ubuntu 14.04.5 + ROS indigo )

热门文章

  1. 好奇怪的游戏(洛谷)
  2. 加米谷学院大数据培训课程安排
  3. [Poi2005]Piggy Banks小猪存钱罐
  4. Python笔记⑥11.07
  5. UML中的9种图例解析
  6. 【85期分享】4款小清新PPT模板免费下载
  7. 云之梦php免费教学视频下载_云知梦PHP基础入门视频教程 PHP全套基础教程 共52课...
  8. JAVAWEB项目:城市公交查询系统
  9. Java 快速排序详解
  10. k8s笔记14--初次体验 开源云原生软件交付平台zadig