Python量化择时的技术指标函数

Python量化择时的技术指标函数

技术指标通过对原始数据(开盘价、收盘价、最低价、最高价、成交量、成交金额、成交笔数)的处理,来反映出市场的某一方面深层的内涵,这些内涵是很难通过原始数据直接看出来的。技术指标能客观地反映某些既成过去的事实,将某些市场的数据形象化、直观化,将某些分析理论数量化和精细化。

量化择时概述

量化择时是指利用数量化的方法,通过各种技术分析的量化分析,找到自选股中的股票的买点和卖点时机。在各种技术分析中,技术指标是非常重要的量化分析手段,也是最常用的量化分析工具。

目前,应用于股市的技术指标有几百种,按照不同的计算原理和反映状况,可大致分4类,分别是趋向指标、压力支撑指标和量价指标。如下图所示:

mindmap

  1. 趋向指标(Trend Indicators):

趋向指标是用来显示市场趋势方向和强度的技术指标。常见的趋向指标包括移动平均线(如简单移动平均线和指数移动平均线)和趋势线(如斜率趋势线和通道趋势线)。趋向指标可以帮助交易者识别市场的上升、下降或横盘趋势。

  1. 反趋向指标(Oscillators):

反趋向指标是用来辅助判断市场超买和超卖状态的技术指标。典型的反趋向指标包括相对强弱指数(RSI)、随机指标(Stochastic Oscillator)和平均真实区间指数(Average True Range, ATR)。这些指标可帮助投资者确定何时市场可能过热或过冷,从而作出更明智的交易决策。

  1. 压力支撑指标(Support and Resistance Indicators):

压力支撑指标是用来标识股价可能会遇到阻力或支撑的水平的技术指标。这些指标包括移动平均线、布林带(Bollinger Bands)、波动率通道等。支撑线代表价格下跌受到支持的水平,而阻力线则表示价格上涨受到阻碍的水平。

  1. 量价指标(Volume-Price Indicators):

量价指标是通过比较交易量和价格的变化来帮助投资者评估市场情绪和趋势的指标。典型的量价指标包括成交量指标、积极成交量指标(Accumulation/Distribution Line)、相对量力指数(On-Balance Volume, OBV)等。这些指标能够提供有关市场参与者活动水平的信息,有助于确认价格走势的可靠性。

这些技术指标在股市中被广泛使用,但需要注意,技术指标的单独使用可能并不总是有效的,应结合其他分析方法和市场情况进行综合考虑。

趋向指标函数

趋向指标是投资者最容易在市场中获利的方法,也是股票、期货、外汇市场中最为著名的格言“让利润充分增长、限制损失”的真实反映。

MACD指标函数

MACD指标,即平滑异同平均线。在Python量化炒股策略中,平滑异同平均线MACD的语法格式如下:

MACD(security_list, check_date, SHORT=12, LONG=26,MID=9)

各参数意义如下:

security_list:股票列表,可以是一只股票,也可是多只股票

check_date:要查询数据的日期

SHORT:统计的天数SHORT

LONG:统计的天数LONG

MID:统计的天数MID

返回DIF、DEA和MACD的值,返回类型为字典(dict),键(key)为股票代码,值(value)为数据。

平滑异同平均线MACD用法具体如下:

第一,DIFF、DEA均为正,DIFF向上突破DEA,买入信号

第二,DIFF、DEA均为负,DIFF向下跌破DEA,卖出信号

第三,DEA线与K线发生 背离,行情反转信号

第四,分析MACD柱状线,由红变绿(正变负),卖出信号;由绿变红,买入信号

单击聚宽JoinQuant量化炒股平台中的“策略研究/研究环境”命令,进入Jupyter Notebook的研究平台,然后单击“新建”按钮,创建Python3文件,输入如下代码:

# 导入technical_analysis库
from jqlib.technical_analysis import *
# 定义股票池列表
security_list1 = '002465.XSHE'
# 计算并输出security_list1的MACD值
macd_diff, macd_dea, macd_macd = MACD(security_list1, check_date='2024-04-26', SHORT=12, LONG=26,MID=9)
print('海格通信的MACD指标的DIFF值:', macd_diff[security_list1])
print('海格通信的MACD指标的DEA值:',macd_dea[security_list1])
print('海格通信的MACD指标的MACD值:', macd_macd[security_list1])

首先导入technical_analysis库,这样才可以使用函数MACD()。在这里定义计算的股票为海格通信,接着就调用函数MACD(),获得DIF、DEA和MACD的值,最后利用print()函数显示。

单击工具栏中的运行按钮,快捷键(shift+enter),运行结果如下图所示:

Screenshot 2024-04-29 at 17.13.56

利用函数MACD()获得DIF、DEA和MACD的值后,就可以量化择时,进行股票的买卖操作。例如,DIFF、DEA均为正,DIFF向上突破D EA,买入信号,转为Python代码如下:

macd_diff[security_list1] > 0
macd_dea[security_list1] > 0
macd_diff[security_list1] > macd_dea[security_list1]

DIFF、DEA均为负,DIFF向下跌破DEA,卖出信号,转为Python代码如下:

macd_diff[security_list1] < 0
macd_dea[security_list1] < 0
macd_diff[security_list1] < macd_dea[security_list1]
EMV指标函数

EMV指标,即简易波动指标。在Python量化炒股策略中,简易波动指标EMV的语法格式如下:

EMV(security_list, check_date, N = 14, M = 9)

其中,security_list和check_date参数与MACD指标相同。

参数N和M表示统计的天数N和统计的天数M。

返回EMV和MAEMV的值,返回类型也与MACD指标相同。简易波动指标EMV用法具体如下:

第一,EMV由下往上穿越0轴时,视为中期买进信号。

第二,EMV由上往下穿越0轴时,视为中期卖出信号。

第三,EMV的平均线穿越0轴,产生假信号的机会较少。

需要注意的是,须长期使用EMV指标才能获得最佳利润。单击聚宽JoinQuant量化炒股平台中的“策略研究/研究环境”命令,进入Jupyter Notebook的研究平台。然后单击“新建”按钮,创建Python3文件,输入如下代码:

# 导入technical_analysis库
from jqlib.technical_analysis import *
# 定义股票池列表
security_list1 = ['000001.XSHE', '000002.XSHE', '601211.XSHG', '603177.XSHG']
# 计算并输出 security_list1的EMV值
EMV1,MAEMV1 = EMV(security_list1, check_date='2024-04-26', N=14, M=9)
for stock in security_list1:
    print(EMV1[stock])
    print(MAEMV1[stock])

注意:这里显示多只股票的EMV指标的参数值,要使用for循环语句显示

单击工具栏运行按钮,快捷键(shift+enter),运行结果如下图:

Screenshot 2024-04-29 at 17.37.09

UOS指标函数

UOS指标,即终极指标。其语法格式如下:

UOS(security_list, check_date, N1=7, N2=14,N3=28,M=6)

其中, security_list和check_date参数与MACD指标相同。

参数N1、N2、N3和M分别表示统计的天数N1、N2、N3以及统计的天数M。返回终极指标和MAUOS的值,返回类型也与MACD指标相同。终极指标UOS用法具体如下:

第一,UOS上升至50~70之间,而后向下跌破其N字曲线低点时,为短线卖点。

第二,UOS上升超过70,而后向下跌破70时,为中线卖点。

第三,UOS下跌至45以下,而后向上突破其N字曲线高点时,为短信买点。

第四,UOS下跌至35以下,产生一底比一底高的背离现象时,为底部特征。

单击聚宽JoinQuant量化炒股平台中的“策略研究/研究环境”命令,进入Jupyter Notebook的研究平台,然后单击“新建”按钮,创建Python3文件,接着输入如下代码:

# 导入technical_analysis库
from jqlib.technical_analysis import *
# 定义股票池列表
security_list1 = '002465.XSHE'
# 计算并输出security_list1的UOS值
uos_ultiInc, uos_mauos = UOS(security_list1, check_date='2024-04-26', N1=7, N2=14, N3=28,M=6)
print('海格通信的终极指标UOS的终极指标值:',uos_ultiInc[security_list1])
print('海格通信的终极目标UOS的MAUOS的值:', uos_mauos[security_list1])

单击工具栏运行按钮,快捷键(shift+enter),运行结果如下图:

Screenshot 2024-04-29 at 19.06.51

GDX指标函数

GDX指标,即鬼道线,语法格式如下:

GDX(security_list, check_date, N=30,M=9)

其中,security_list和check_date参数与MACD指标相同。

参数N和M分别表示统计的天数N和统计的天数M

返回济安线、压力线和支撑线的值,返回类型也与MACD指标相同。

鬼道线指标GDX,是一种用技术手段和经验判断来决定买卖股票的方法。该公式对趋势线做了平滑和修正处理,更精确地反映了股价运行规律。

当股价上升到压力线时,投资者就卖出股票。

当股价下跌到支撑线时,投资者就进行相应的补进。单击聚宽JoinQuant量化炒股平台中的“策略研究/研究环境”命令,进入Jupyter Notebook的研究平台,然后单击“新建”按钮,创建Python3文件,接着输入如下代码:

# 导入technical_analysis库
from jqlib.technical_analysis import *
# 定义股票池列表
security_list1 = '002465.XSHE'
security_list2 = ['002465.XSHE', '002540.XSHE', '600108.XSHG']
# 计算并输出security_list1的GDX值
gdx_jax, gdx_ylx, gdx_zcx = GDX(security_list1, check_date='2024-04-26', N=30, M=9)
print('海格通信的济安线的值:', gdx_jax[security_list1])
print('海格通信的压力线的值:',gdx_ylx[security_list1])
print('海格通信的支撑线的值:', gdx_zcx[security_list1])

# 输出security_list2的GDX值
gdx_jax, gdx_ylx, gdx_zcx = GDX(security_list2, check_date='2024-04-26', N=30, M=9)
print('\n\n海格通信、亚太科技、亚盛集团的济安线、压力线和支撑线的值:\n')
for stock in security_list2:
    print(gdx_jax[stock])
    print(gdx_ylx[stock])
    print(gdx_zcx[stock])

单击工具栏运行按钮,快捷键(shift+enter),运行结果如下图:

Screenshot 2024-04-29 at 19.16.54

JS指标函数

JS指标,即加速线。其语法格式如下:

JS(security_list, check_date, N=5, M1=5,M2=10,M3=20)

其中,security_list和check_date参数与MACD指标相同。

参数N1、M1、M2和M3表示统计的天数。返回JS、MAJS1、MAJS2和MAJS3的值,返回类型也与MACD指标相同。

加速线指标是衡量股价涨速的工具,加速线指标上升表明股价上升动力增加,加速线指标下降表明股价下降压力增加。

加速线适用于DMI表明趋势明显时(DMI.ADX大于20)使用:

第一、如果加速线在0值附近形成平台,则表明既不是最好的买入时机也不是最好的卖出时机;

第二,在加速线发生金叉后,均线形成底部是买入时机。

第三,在加速线发生死叉后,均线形成顶部是卖出时机。

当股价下跌到支撑线时,投资者就进行相应的补进。单击聚宽JoinQuant量化炒股平台中的“策略研究/研究环境”命令,进入Jupyter Notebook的研究平台,然后单击“新建”按钮,创建Python3文件,接着输入如下代码:

#导入technical_analysis库
from jqlib.technical_analysis import *
# 定义股票池列表
security_list1 = ['002465.XSHE', '002540.XSHE', '600108.XSHG']
# 输出security_list2的JS值
js_jsx, js_majsx1, js_majsx2, js_majsx3 = JS(security_list1, check_date='2024-04-26', N=5,M1=5,M2=10,M3=20)
for stock in security_list1:
    print(js_jsx[stock])
    print(js_majsx1[stock])
    print(js_majsx2[stock])
    print(js_majsx3[stock])

单击工具栏运行按钮,快捷键(shift+enter),运行结果如下图:

Screenshot 2024-04-29 at 19.35.59

MA指标函数

MA指标,即均线,其语法格式如下:

MA(security_list, check_date, timeperiod=5)

其中,security_list和check_date参数与MACD指标相同。

参数timeperiod表示统计的天数。返回MA的值,返回类型也与MACD指标相同。

均线MA指标用法具体如下:

第一,股价高于平均线,视为强势;股价低于平均线,视为弱势;

第二,平均线向上涨升,具有助涨力道;平均线向下跌降,具有助跌力道;

第三,2条以上平均线向上交叉时,买进;

第四,2条以上平均线向下交叉时,卖出;

第五,移动平均线的信号经常落后股价,若以EXPMA、VMA辅助,可以改善。

当股价下跌到支撑线时,投资者就进行相应的补进。单击聚宽JoinQuant量化炒股平台中的“策略研究/研究环境”命令,进入Jupyter Notebook的研究平台,然后单击“新建”按钮,创建Python3文件,接着输入如下代码:

# 导入technical_analysis库
from jqlib.technical_analysis import *
# 定义股票池列表
security_list1 = '002465.XSHE'
# 计算并输出security_list1的MA值
MA1 = MA(security_list1, check_date='2024-04-26', timeperiod=5)
MA2 = MA(security_list1, check_date='2024-04-26', timeperiod=10)
MA3 = MA(security_list1, check_date='2024-04-26', timeperiod=30)
print('海格通信的5日均线:', MA1[security_list1])
print('海格通信的10日均线:', MA2[security_list1])
print('海格通信的30日均线:', MA3[security_list1])

单击工具栏运行按钮,快捷键(shift+enter),运行结果如下图:

Screenshot 2024-04-29 at 19.48.16

EXPMA的指标函数

EXPMA指标,即指数平均线。其语法格式如下:

EXPMA(security_list, check_date,timeperiod=12)

其中,security_list和check_date参数与MACD指标相同。

参数timeperiod表示统计的天数。返回EXPMA的值,返回类型也与MACD指标相同。

指数平均线EXPMA指标用法具体如下:

第一,EXPMA一般以观察12日和50日2条均线为主。

第二,12日指数平均线向上交叉50日指数平均线时,买进;

第三,12日指数平均线向下交叉50日指数平均线时,卖出。

当股价下跌到支撑线时,投资者就进行相应的补进。单击聚宽JoinQuant量化炒股平台中的“策略研究/研究环境”命令,进入Jupyter Notebook的研究平台,然后单击“新建”按钮,创建Python3文件,接着输入如下代码:

# 导入technical_analysis库
from jqlib.technical_analysis import *
security_list1 = ['002465.XSHE', '002540.XSHE', '601108.XSHG']
# 输出security_list2的EXPMA值
EXPMA1 = EXPMA(security_list1, check_date='2024-04-26', timeperiod=12)
for stock in security_list1:
    print(EXPMA1[stock])

单击工具栏运行按钮,快捷键(shift+enter),运行结果如下图:

Screenshot 2024-04-29 at 19.58.02

VMA指标函数

VMA指标,即变异平均线,语法格式如下:

VMA(security_list, check_date, timeperiod=12)

其中,security_list和check_date参数与MACD指标相同。

参数time period,表示统计的天数。返回VMA的值,返回类型也与MACD指标相同。

变异平均线VMA指标用法具体如下:

第一,股价高于平均线,视为强势;股价低于平均线,视为弱势。

第二,平均线向上涨升,具有助涨力道;平均线向下跌降,具有助跌力道

第三,2条以上平均线向上交叉时,买进。

第四,2条以上平均线向下交叉时,卖出。

当股价下跌到支撑线时,投资者就进行相应的补进。单击聚宽JoinQuant量化炒股平台中的“策略研究/研究环境”命令,进入Jupyter Notebook的研究平台,然后单击“新建”按钮,创建Python3文件,接着输入如下代码:

# 导入technical_analysis库
from jqlib.technical_analysis import *
# 定义股票池列表,调用get_concept_stocks函数,获取风力发电概念板块的成分股
security_list1 = get_concept_stocks('SC0034')
# 输出security_list1的12日变异平均线值
VMA1 = VMA(security_list1, check_date='2024-04-26', timeperiod=12)
for stock in security_list1:
    print(VMA1[stock])

单击工具栏运行按钮,快捷键(shift+enter),运行结果如下图:

Screenshot 2024-04-29 at 20.29.38

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

EXCEL怎样把筛选后含有公式的数据,复制粘贴到同一行的其它列?

自excel2003版之后&#xff0c;常规情况下&#xff0c;复制筛选后的数据&#xff0c;会忽略隐藏行&#xff0c;仅复制其筛选后的数据&#xff0c;粘贴则是粘贴到连续单元格区域&#xff0c;不管行是在显示状态还是隐藏状态。 一、初始数据&#xff1a; 二、题主的复制粘贴问题…

Codigger数据篇(下):数据安全的全方位保障

在数字化浪潮中&#xff0c;数据已成为现代企业的核心财富。Codigger作为领先的数据服务平台&#xff0c;深知数据安全对于用户的重要性&#xff0c;因此在深挖数据价值的同时&#xff0c;我们始终坚守数据安全防线。 一、双重加密技术保障 Codigger平台运用先进的加密通信和…

C语言学习【最基本】

C语言学习 简单的 C 程序示例 #include "stdio.h" /* 提供键盘输入与屏幕输出支持 */ /* 相当于把stdio.h文件中的所有内容都输入到该行所在位置 拷贝-粘贴 *//* void 表示不带任何参数 */ int main(void) /* 函数名 */ { …

UE—动画

1.动画蓝图 创建动画蓝图 在蓝图中添加状态机 状态机中状态的转换 转换条件设定 播放的动画 使用动画资源 使用混合空间 2.混合空间 混合空间1D 阿赵UE学习笔记——26、动画混合空间_ue 一维动画混合空间-CSDN博客 蓝图创建 混合空间内 按Ctrl到动画节点上即可预览 修改…

1. 傅里叶变换原理

1. 频率域的引入 1.1 时域角度 1.2. 频域角度 不同的角度表达的是同一件事情&#xff0c;从时间域和空间域来进行表达同一间事情 。时间域是都动态的&#xff0c;频率域是静止的 1.3. 时域角度和频域角度 1.4 相位 2 函数的时域角度 2.1 时间域 2.2 频率域 2.3 例子 2.3…

Spring扩展点(一)Bean生命周期扩展点

Bean生命周期扩展点 影响多个Bean的实例化InstantiationAwareBeanPostProcessorBeanPostProcessor 影响单个Bean的实例化纯粹的生命周期回调函数InitializingBean&#xff08;BeanPostProcessor 的before和after之间调用&#xff09;DisposableBean Aware接口在生命周期实例化过…

eSIM Network搭建指南

有任何关于GSMA\IOT\eSIM\RSP\业务应用场景相关的问题&#xff0c;欢迎W: xiangcunge59 一起讨论, 共同进步 (加的时候请注明: 来自CSDN-iot).

redis 缓存一致性,缓存穿透,缓存雪崩,缓存击穿

1.缓存一致性&#xff1a; 缓存一致性就是通过各种方法保证缓存与数据库信息一种&#xff0c;其中最多的办法就是想尽一切办法对过期key进行清除&#xff0c;以保证redis和数据库信息一只&#xff0c;其中就包括了这篇文章中提到的内存淘汰策略&#xff0c;过期key的清除等等&…

MongoDB的分片集群

MongoDB分片技术 介绍 ​ 分片&#xff08;sharding&#xff09;是MongoDB用来将大型集合分割到不同服务器上采用的方法。分片这种说法起源于关系型数据库。但是实际上非关系型数据库在分片方面相比于传统的关系型数据库更有优势。 ​ 与MySQL分库方案对比&#xff0c;MongoDB…

微信小程序之搜索框样式(带源码)

一、效果图&#xff1a; 点击搜索框&#xff0c;“请输入搜索内容消失”&#xff0c;可输入关键字 二、代码&#xff1a; 2.1、WXML代码&#xff1a; <!--搜索框部分--><view class"search"><view class"search-btn">&#x1f50d;&l…

腾讯云IM即时通信引入(React Web端组件式)

开发环境要求 React ≥ v18.0 &#xff08;17.x 版本不支持&#xff09; TypeScript node&#xff08;12.13.0 ≤ node 版本 ≤ 17.0.0, 推荐使用 Node.js 官方 LTS 版本 16.17.0&#xff09; npm&#xff08;版本请与 node 版本匹配&#xff09; chat-uikit-react 集成 …

图像处理ASIC设计方法 笔记21 标记ASIC的顶层状态机

目录 (一)标记ASIC的工作流程1 ASIC首先从控制寄存器内读出待标记图像的基本参数2若写入了有效的启动命令,则进入下面一帧图像的标记过程。3 ASIC通过接口模块从FIFO1中读取待标记的图像4一帧图像初步标记完成后进行等价表的整理压缩5从临时标记存储器中读取临时标记送入标记…

【Github】将github仓库作为图床使用

创建github仓库 首先创建一个github仓库专门用于存储图片&#xff0c;具体步骤如下&#xff1a; 1.点击新的仓库按钮 2.初始配置&#xff1a;随便填写一个仓库名&#xff1b;这里的仓库状态一定要是public公开的&#xff0c;不然后面访问不了图片 下载PicGo PicGo官网 在A…

【深度学习基础(3)】初识神经网络之深度学习hello world

文章目录 一. 训练Keras中的MNIST数据集二. 工作流程1. 构建神经网络2. 准备图像数据3. 训练模型4. 利用模型进行预测5. (新数据上)评估模型精度 本节将首先给出一个神经网络示例&#xff0c;引出如下概念。了解完本节后&#xff0c;可以对神经网络在代码上的实现有一个整体的了…

【深度学习】Yolov8使用心得

兜兜转转&#xff0c;原本以为和yolov没啥关系了&#xff0c;但是新公司又回到了yolov侧。 yolov8 可以用pip的方式安装&#xff0c;以package的三方软件包形式&#xff0c;隐藏了很多细节。当然你也可以从git上把全套代码down下来。 1.分类模型 1.1 改错误 位置&#xff1a…

区块链扩容:水平扩展 vs.垂直扩展

1. 引言 随着Rollups 的兴起&#xff0c;区块链扩容一直集中在模块化&#xff08;modular&#xff09;vs. 整体式&#xff08;monolithic&#xff09;之争。 如今&#xff0c;模块化与整体式这种一分为二的心理模型&#xff0c;已不适合于当前的扩容场景。本文&#xff0c;将展…

Python机器学习手册:从预处理到深度学习的实际解决方案

书籍&#xff1a;Machine Learning with Python Cookbook: Practical Solutions from Preprocessing to Deep Learning 作者&#xff1a;Kyle Gallatin&#xff0c;Chris Albon 出版&#xff1a;OReilly Media 书籍下载-《Python机器学习手册&#xff1a;从预处理到深度学习…

ASP.NET网上车辆档案管理系统

摘 要 本文采用基于Web的Asp.net技术&#xff0c;并与sql server 2000数据库相结合&#xff0c;研发了一套车辆档案管理系统。该系统扩展性好&#xff0c;易于维护。简化了车辆档案设计流程&#xff0c;去除了冗余信息。汽车销售企业可以通过本系统完成整个销售及售后所有档案…

IoTDB 入门教程 基础篇⑦——数据库管理工具 | DBeaver 连接 IoTDB

文章目录 一、前文二、下载iotdb-jdbc三、安装DBeaver3.1 DBeaver 下载3.2 DBeaver 安装 四、安装驱动五、连接数据库六、参考 一、前文 IoTDB入门教程——导读 二、下载iotdb-jdbc 下载地址org/apache/iotdb/iotdb-jdbc&#xff1a;https://maven.proxy.ustclug.org/maven2/o…

微信小程序 uniapp家庭食谱菜谱食材网上商城系统小程序ko137

随着生活节奏的不断加快&#xff0c;越来越多的人因为工作忙而没有时间自己出去订购喜欢的菜品。随着Internet的飞速发展&#xff0c;网络已经成为我们日常生活中必不可少的部分&#xff0c;越来越多的人也接受了电子商务这种快捷、方便的交易方式。网上订餐其独有的便捷性和直…
最新文章