Python实现CCI工具判断信号:股票技术分析的工具系列(5)

Python实现CCI工具判断信号:股票技术分析的工具系列(5)

    • 介绍
      • 算法解释
    • 代码
      • rolling函数介绍
      • 完整代码
        • data代码
        • CCI.py


介绍

在股票技术分析中,CCI (商品路径指标)是一种常用的技术指标,用于衡量股价是否处于超买或超卖状态,并指导投资者进行交易决策。篇文章将分享如何写一个CCI工具,希望对大家有帮助。

先看看官方介绍:

CCI(商品路径指标)
用法
1.CCI 为正值时,视为多头市场;为负值时,视为空头市场;
2.常态行情时,CCI 波动于±100 的间;强势行情,CCI 会超出±100 ;
3.CCI>100 时,买进,直到CCI<100 时,卖出;
4.CCI<-100 时,放空,直到CCI>-100 时,回补。

算法解释

TYP:=(HIGH+LOW+CLOSE)/3;
CCI:(TYP-MA(TYP,N))/(0.015*AVEDEV(TYP,N));

优势:

优势描述
方向性明确当CCI为正值时,被视为多头市场,为负值时,则被视为空头市场,因此能够提供明确的市场方向信号,有助于投资者决定买入或卖出。
测量波动性CCI的常态波动范围在±100之间,能够帮助投资者判断市场的波动程度,加深对市场走势的理解。
捕捉趋势在强势行情中,CCI会超出±100,这表明市场具有较强的趋势性,投资者可以利用这一特性捕捉趋势,并获得更高的收益。
简单易懂的交易规则CCI指标提供了简单易懂的交易规则,如当CCI>100时买入,CCI<-100时卖出,这使得投资者可以快速进行交易决策。

劣势:

劣势描述
滞后性CCI指标是一种滞后性指标,它是基于价格波动率的计算,因此在市场价格快速变动时,可能会出现滞后现象,导致信号不够及时。
过度交易CCI的交易信号相对简单,但过于频繁的交易可能会增加交易成本,并增加不必要的风险,尤其是在市场波动较大时。
单一性CCI指标主要是从价格角度进行分析,缺乏对其他市场因素的综合考虑,可能无法全面反映市场的复杂情况。
虚假信号在市场行情不明朗或横盘震荡时,CCI指标可能会产生虚假信号,导致交易损失。

代码

rolling函数介绍

rolling 函数通常与其他函数(如 meansumstd 等)一起使用,以计算滚动统计量,例如滚动均值、滚动总和等。

以下是 rolling 函数的基本语法:

DataFrame.rolling(window, min_periods=None, center=False, win_type=None, on=None, axis=0, closed=None)
  • window: 用于计算统计量的窗口大小。
  • min_periods: 每个窗口最少需要的非空观测值数量。
  • center: 确定窗口是否居中,默认为 False
  • win_type: 窗口类型,例如 Noneboxcartriang 等,默认为 None
  • on: 在数据帧中执行滚动操作的列,默认为 None,表示对整个数据帧执行操作。
  • axis: 执行滚动操作的轴,默认为 0,表示按列执行操作。
  • closed: 确定窗口的哪一端是闭合的,默认为 None

完整代码

data代码

这里完整代码中的data部分,阔以通过下面资源文件下载,或者留下邮箱等发送。:

https://download.csdn.net/download/qq_36051316/88896567
CCI.py
import pandas as pd
import stock_datadata = {'DATE': stock_data.DATE,'CLOSE': stock_data.CLOSE,'HIGH': stock_data.HIGH,'LOW': stock_data.LOW,'OPEN': stock_data.OPEN,'CHANGE': stock_data.CHANGE,'VOL': stock_data.VOL,'CAPITAL': stock_data.CAPITAL
}df = pd.DataFrame(data)def calculate_CCI(v_df, n):"""计算CCI指标参数:data: pandas.DataFrame,包含股票数据的DataFramen: int,窗口大小返回:无,结果直接存储在输入的DataFrame中"""typ = (v_df['HIGH'] + v_df['LOW'] + v_df['CLOSE']) / 3typ_ma = typ.rolling(window=n).mean()mean_deviation = typ.rolling(window=n).apply(lambda x: (x - x.mean()).abs().mean())cci = (typ - typ_ma) / (0.015 * mean_deviation)v_df['CCI'] = ccidef generate_signals(v_df, day_index=-1):"""生成CCI信号参数:v_df: pandas.DataFrame,包含CCI指标的DataFrameday_index: int,要检查的日期索引,默认为最后一天返回:str,表示信号的字符串,可能为"买入信号"、"卖出信号"或"无信号""""row = v_df.iloc[day_index]if row['CCI'] > 100:return '买入信号'elif row['CCI'] < -100:return '卖出信号'else:return '无信号'n = 14calculate_CCI(df, n)
result = generate_signals(df)
print(result)

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/511317.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

算法沉淀——动态规划之完全背包问题(leetcode真题剖析)

算法沉淀——动态规划之完全背包问题 01.【模板】完全背包02.零钱兑换03.零钱兑换 II04.完全平方数 完全背包问题是背包问题的一种变体&#xff0c;与01背包问题不同&#xff0c;它允许你对每种物品进行多次选择。具体来说&#xff0c;给定一个固定容量的背包&#xff0c;一组物…

2.3 shl,shr,inc,dec,xchg,neg指令,中断int指令

汇编语言 1. shl左移指令 shl是逻辑左移指令&#xff0c;它的功能是将一个reg或内存单元中的数据向左移位&#xff1b;将最后移出的一位写入cf中&#xff1b;最低位用0补充shl&#xff1a;shift left例如&#xff1a;0100 1000b 往左移一位&#xff0c;变成10010000b&#xf…

Full-RNS CKKS

参考文献&#xff1a; [HS13] Halevi S, Shoup V. Design and implementation of a homomorphic-encryption library[J]. IBM Research (Manuscript), 2013, 6(12-15): 8-36.[BEHZ16] Bajard J C, Eynard J, Hasan M A, et al. A full RNS variant of FV like somewhat homomo…

【比较mybatis、lazy、sqltoy、mybatis-flex、easy-query操作数据】操作批量新增、分页查询(三)

orm框架使用性能比较 比较mybatis、lazy、sqltoy、mybatis-flex、easy-query操作数据 环境&#xff1a; idea jdk17 spring boot 3.0.7 mysql 8.0测试条件常规对象 orm 框架是否支持xml是否支持 Lambda对比版本mybatis☑️☑️3.5.4sqltoy☑️☑️5.2.98lazy✖️☑️1.2.4…

opencv VideoCapture

videocapture顾名思义视频捕捉&#xff0c;主要是从视频文件、摄像头或网络摄像头获取视频流数据&#xff0c;并将其作为一系列帧进行处理。 我们这里主要实现了获取项目文件夹下的1.mp4视频文件&#xff0c;然后经过灰度变化、均值滤波、边缘检测然后将视频显示出来 #include…

在Linux以命令行方式(静默方式/非图形化方式)安装MATLAB(正版)

1.根据教程&#xff0c;下载windows版本matlab&#xff0c;打开图形化界面&#xff0c;选择linux版本的只下载不安装 2.获取安装文件夹 3.获取许可证 4.安装 &#xff08;1&#xff09;跳过引用文章的2.2章节 &#xff08;2&#xff09;本文的安装文件夹代替引用文章的解压IS…

(1)预处理

我们需要的文件结构如上 main.cpp add.h add.cpp add.h 这里使用riscv的工具链编译为.i文件&#xff0c;需要使用-E&#xff0c;就是只进行预处理&#xff0c;我们可以得到两个.i文件即main.i和add.i main.i 这里看到main.i里头文件全部替换&#xff0c;然后多了三万多行 所以…

如何远程连接MySQL数据库?

在现代互联网时代&#xff0c;远程连接MySQL数据库成为了许多开发者和管理员必备的技能。这不仅方便了数据的共享和管理&#xff0c;还可以使多个团队在全球范围内协同工作。本文将介绍如何通过天联组网实现远程连接MySQL数据库&#xff0c;并实现高效的信息远程通信。 天联组网…

C#,最小代价多边形三角剖分MCPT(Minimum Cost Polygon Triangulation)算法与源代码

1 最小代价多边形三角剖分算法 凸多边形的三角剖分是通过在非相邻顶点&#xff08;角点&#xff09;之间绘制对角线来形成的&#xff0c;这样对角线就不会相交。问题是如何以最小的代价找到三角剖分的代价。三角剖分的代价是其组成三角形的权重之和。每个三角形的重量是其周长…

wy的leetcode刷题记录_Day81

wy的leetcode刷题记录_Day81 声明 本文章的所有题目信息都来源于leetcode 如有侵权请联系我删掉! 时间&#xff1a;2024-3-4 前言 目录 wy的leetcode刷题记录_Day81声明前言232. 用栈实现队列题目介绍思路代码收获 138. 随机链表的复制题目介绍思路代码收获 141. 环形链表题…

09 Qt扩展LineEdit组件:Input输入框

系列文章目录 01 Qt自定义风格控件的基本原则-CSDN博客 02 从QLabel聊起&#xff1a;自定义控件扩展-图片控件-CSDN博客 03 从QLabel聊起&#xff1a;自定义控件扩展-文本控件-CSDN博客 04 自定义Button组件&#xff1a;令人抓狂的QToolButton文本图标居中问题-CSDN博客 0…

C++ 之LeetCode刷题记录(三十七)

&#x1f604;&#x1f60a;&#x1f606;&#x1f603;&#x1f604;&#x1f60a;&#x1f606;&#x1f603; 开始cpp刷题之旅。 目标&#xff1a;执行用时击败90%以上使用 C 的用户。 17. 电话号码的字母组合 给定一个仅包含数字 2-9 的字符串&#xff0c;返回所有它能表…