# -*- coding: utf-8 -*-
"""
CZSC 框架快速入门示例
三个实用示例:基础分析、多周期K线、技术指标
"""
import pandas as pd
from czsc import mock, CZSC, BarGenerator, RawBar
from czsc.enum import Freq
def example_01_basic_analysis():
"""示例1:基础分析 - 识别分型和笔"""
print("\n" + "="*60)
print("示例1:基础分析")
print("="*60)
# 1. 生成模拟数据
df = mock.generate_symbol_kines(
symbol="000001",
freq="日线",
sdt="20230101",
edt="20240101",
seed=42
)
# 2. 转换为 RawBar 对象
bars = []
for i, row in df.iterrows():
bar = RawBar(
symbol=row['symbol'], id=i, freq=Freq.D, dt=row['dt'],
open=row['open'], close=row['close'], high=row['high'],
low=row['low'], vol=row['vol'], amount=row['amount']
)
bars.append(bar)
# 3. 使用 CZSC 进行分析
c = CZSC(bars)
print(f"✅ 品种: {c.symbol}")
print(f"✅ K线数量: {len(c.bars_raw)}")
print(f"✅ 分型数量: {len(c.fx_list)}")
print(f"✅ 笔数量: {len(c.bi_list)}")
if len(c.bi_list) > 0:
print(f"\n最近3笔:")
for bi in c.bi_list[-3:]:
print(f" {bi.direction}: {bi.sdt} -> {bi.edt}, 力度={bi.power:.2f}")
return c
def example_02_multi_freq_klines():
"""示例2:多周期K线生成 - BarGenerator"""
print("\n" + "="*60)
print("示例2:多周期K线生成")
print("="*60)
# 1. 生成基础周期数据(5分钟)
df = mock.generate_symbol_kines("000001", "5分钟", "20240101", "20240110", seed=42)
bars = [RawBar(
symbol=row['symbol'], id=i, freq=Freq.F5, dt=row['dt'],
open=row['open'], close=row['close'], high=row['high'],
low=row['low'], vol=row['vol'], amount=row['amount']
) for i, row in df.iterrows()]
print(f"✅ 生成基础周期数据: {len(bars)} 根5分钟K线")
# 2. 创建 BarGenerator - 从5分钟合成多周期
bg = BarGenerator(
base_freq='5分钟',
freqs=['15分钟', '30分钟', '60分钟', '日线']
)
# 3. 逐根更新K线
for bar in bars:
bg.update(bar)
# 4. 查看各周期K线数量
print(f"\n各周期K线统计:")
for freq, bars_list in bg.bars.items():
print(f" {freq}: {len(bars_list)} 根")
# 5. 查看最后一根各周期K线
print(f"\n各周期最新K线:")
for freq, bars_list in bg.bars.items():
if bars_list:
last_bar = bars_list[-1]
print(f" {freq}: 时间={last_bar.dt}, 收盘={last_bar.close:.2f}")
# 6. 演示:对每个周期进行缠论分析
print(f"\n对每个周期进行缠论分析:")
for freq, bars_list in bg.bars.items():
if len(bars_list) > 10: # 至少需要一定数量的K线
c = CZSC(bars_list)
print(f" {freq}: 分型={len(c.fx_list)}, 笔={len(c.bi_list)}")
return bg
def example_03_technical_indicators():
"""示例3:技术指标计算 - ta模块"""
print("\n" + "="*60)
print("示例3:技术指标计算")
print("="*60)
from czsc.utils import ta
import numpy as np
# 1. 生成测试数据
df = mock.generate_symbol_kines("000001", "日线", "20230101", "20240101", seed=42)
print(f"✅ 数据准备: {len(df)} 根K线")
# 2. 计算常用技术指标
close = df['close'].values
high = df['high'].values
low = df['low'].values
volume = df['vol'].values
# MA - 移动平均线
ma5 = ta.SMA(close, timeperiod=5)
ma10 = ta.SMA(close, timeperiod=10)
ma20 = ta.SMA(close, timeperiod=20)
# MACD - 指数平滑异同移动平均线
macd, signal, hist = ta.MACD(close, fastperiod=12, slowperiod=26, signalperiod=9)
# RSI - 相对强弱指标
rsi = ta.RSI(close, timeperiod=14)
# BOLL - 布林带
upper, middle, lower = ta.BBANDS(close, timeperiod=20)
# KDJ - 随机指标
k, d = ta.STOCH(high, low, close,
fastk_period=9,
slowk_period=3,
slowd_period=3)
# ATR - 真实波幅
atr = ta.ATR(high, low, close, timeperiod=14)
# 3. 显示最新指标值
print(f"\n最新技术指标值:")
print(f" MA5: {ma5[-1]:.2f}")
print(f" MA10: {ma10[-1]:.2f}")
print(f" MA20: {ma20[-1]:.2f}")
print(f" MACD: {macd[-1]:.4f}")
print(f" Signal: {signal[-1]:.4f}")
print(f" Hist: {hist[-1]:.4f}")
print(f" RSI: {rsi[-1]:.2f}")
print(f" BOLL上轨: {upper[-1]:.2f}")
print(f" BOLL中轨: {middle[-1]:.2f}")
print(f" BOLL下轨: {lower[-1]:.2f}")
print(f" KDJ_K: {k[-1]:.2f}")
print(f" KDJ_D: {d[-1]:.2f}")
print(f" ATR: {atr[-1]:.2f}")
# 4. 简单的技术分析
print(f"\n简单技术分析:")
# 趋势判断
if ma5[-1] > ma10[-1] > ma20[-1]:
print(f" 📈 均线多头排列 - 上升趋势")
elif ma5[-1] < ma10[-1] < ma20[-1]:
print(f" 📉 均线空头排列 - 下降趋势")
else:
print(f" ↔️ 均线交织 - 震荡趋势")
# RSI 超买超卖
if rsi[-1] > 70:
print(f" ⚠️ RSI > 70 - 超买区域")
elif rsi[-1] < 30:
print(f" ⚠️ RSI < 30 - 超卖区域")
else:
print(f" ✅ RSI 正常区间")
# MACD 金叉死叉
if macd[-1] > signal[-1] and macd[-2] <= signal[-2]:
print(f" 🟢 MACD 金叉")
elif macd[-1] < signal[-1] and macd[-2] >= signal[-2]:
print(f" 🔴 MACD 死叉")
# 布林带位置
if close[-1] > upper[-1]:
print(f" 📊 价格突破布林上轨")
elif close[-1] < lower[-1]:
print(f" 📊 价格跌破布林下轨")
else:
print(f" 📊 价格在布林带内")
return {
'ma5': ma5, 'ma10': ma10, 'ma20': ma20,
'macd': macd, 'signal': signal, 'hist': hist,
'rsi': rsi, 'upper': upper, 'middle': middle, 'lower': lower,
'k': k, 'd': d, 'atr': atr
}
def main():
"""运行所有示例"""
print("\n" + "#"*60)
print("# CZSC 框架快速入门")
print("# 三个实用示例带你快速上手")
print("#"*60)
# 示例1:基础分析 - 分型和笔的识别
c = example_01_basic_analysis()
# 示例2:多周期K线生成
bg = example_02_multi_freq_klines()
# 示例3:技术指标计算
indicators = example_03_technical_indicators()
print("\n" + "#"*60)
print("# 🎉 恭喜!你已经掌握了 CZSC 的核心功能")
print("# 接下来可以:")
print("# 1. 结合缠论和技术指标设计策略")
print("# 2. 查看 test/test_trader_base.py 学习策略开发")
print("# 3. 探索 examples/30分钟笔非多即空.py 实战案例")
print("# 4. 阅读 examples/API使用说明.md 了解更多")
print("#"*60)
if __name__ == '__main__':
main()
正常完成以后,可以得到以下的结果
python 快速入门示例.py
############################################################
# CZSC 框架快速入门
# 三个实用示例带你快速上手
############################################################
============================================================
示例1:基础分析
============================================================
✅ 品种: 000001
✅ K线数量: 363
✅ 分型数量: 99
✅ 笔数量: 25
最近3笔:
向下: 2023-11-16 00:00:00 -> 2023-11-26 00:00:00, 力度=7.08
向上: 2023-11-26 00:00:00 -> 2023-12-17 00:00:00, 力度=11.93
向下: 2023-12-17 00:00:00 -> 2023-12-22 00:00:00, 力度=13.51
============================================================
示例2:多周期K线生成
============================================================
✅ 生成基础周期数据: 500 根5分钟K线
各周期K线统计:
15分钟: 180 根
30分钟: 100 根
60分钟: 60 根
日线: 10 根
5分钟: 500 根
各周期最新K线:
15分钟: 时间=2024-01-10 15:00:00, 收盘=105.13
30分钟: 时间=2024-01-10 15:00:00, 收盘=105.13
60分钟: 时间=2024-01-10 15:00:00, 收盘=105.13
日线: 时间=2024-01-10 00:00:00, 收盘=105.13
5分钟: 时间=2024-01-10 15:00:00, 收盘=105.13
对每个周期进行缠论分析:
15分钟: 分型=58, 笔=10
30分钟: 分型=23, 笔=5
60分钟: 分型=11, 笔=3
5分钟: 分型=139, 笔=37
============================================================
示例3:技术指标计算
============================================================
✅ 数据准备: 366 根K线
最新技术指标值:
MA5: 82.92
MA10: 81.13
MA20: 82.57
MACD: -0.1904
Signal: -0.5292
Hist: 0.3387
RSI: 54.14
BOLL上轨: 88.70
BOLL中轨: 82.57
BOLL下轨: 76.44
KDJ_K: 80.56
KDJ_D: 72.85
ATR: 3.06
简单技术分析:
↔️ 均线交织 - 震荡趋势
✅ RSI 正常区间
📊 价格在布林带内
############################################################
987

被折叠的 条评论
为什么被折叠?



