CZSC 框架快速入门示例(三) --快速入门示例.py

# -*- 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 正常区间
  📊 价格在布林带内

############################################################

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值