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

news2024/12/25 12:21:12

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

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


介绍

ADTM(动态买卖气指标)是一种用于衡量市场买卖力量对比的指标。它通过计算动态买盘指标(DTM)和动态卖盘指标(DBM)之间的差值来反映买卖双方的力量对比情况。

简单点说,就是看买家和卖家谁更强的一个东西。就是算一算买盘(DTM)和卖盘(DBM)的活跃程度谁大,谁小。如果ADTM是正的,那就意味着买家比较牛,行情可能朝上走;反之,如果ADTM是负的,那就表示卖家势头强,股市可能往下走。所以,瞅瞅ADTM的数字,投资者就能稍微明白点市场的味道,更容易决定接下来是涨是跌。当然,有些人还会把ADTM搞个移动平均(MAADTM),就是为了数据更平滑些,看长期的买卖势头走向。

本篇文章将分享如何写一个ADTM工具,希望对大家有帮助。

先看看官方介绍:

ADTM(动态买卖气指标)
用法
1.该指标在+1到-1之间波动;
2.低于-0.5时为很好的买入点,高于+0.5时需注意风险。

算法解释

DTM:=IF(OPEN<=REF(OPEN,1),0,MAX((HIGH-OPEN),(OPEN-REF(OPEN,1))));
DBM:=IF(OPEN>=REF(OPEN,1),0,MAX((OPEN-LOW),(OPEN-REF(OPEN,1))));
STM:=SUM(DTM,N);
SBM:=SUM(DBM,N);
ADTM:IF(STM>SBM,(STM-SBM)/STM,IF(STM=SBM,0,(STM-SBM)/SBM));
MAADTM:MA(ADTM,M);

优势:

优势描述
简单易懂ADTM指标在+1到-1之间波动,其数值的变化直观易懂,使得投资者可以快速理解市场的买卖气势。
清晰的买卖信号当ADTM指标低于-0.5时,表示市场处于较好的买入点,有利于投资者抓住低点进场;而当ADTM指标高于+0.5时,表示市场风险增加,投资者需要注意可能的调整或风险。

劣势:

劣势描述
单一性ADTM指标只是从买卖气势的角度进行分析,缺乏对其他市场因素的考虑,可能无法全面反映市场的复杂情况。
缺乏进一步的分析ADTM指标提供了买卖气势的信号,但缺乏对市场趋势、交易量等因素的深入分析,投资者可能需要结合其他指标和分析方法进行综合判断。
市场风险虽然ADTM指标提供了关于市场风险的提示,但并不意味着买入或卖出的时机是绝对准确的,投资者仍需谨慎考虑其他因素,并注意市场风险的变化。

代码

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
ADTM.py


import pandas as pd
import numpy as np
import stock_data

data = {
    '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)

N = 23
M = 8


def calculate_ADTM(v_df, N, M):
    """
    计算ADTM指标

    参数:
    v_df: pandas.DataFrame,包含股票数据的DataFrame
    N: int,DTM和DBM的窗口大小
    M: int,MAADTM的窗口大小

    返回:
    无,结果直接存储在输入的DataFrame中
    """
    DTM = np.where(v_df['OPEN'] <= v_df['OPEN'].shift(1), 0,
                   np.maximum(v_df['HIGH'] - v_df['OPEN'], v_df['OPEN'] - v_df['OPEN'].shift(1)))
    DBM = np.where(v_df['OPEN'] >= v_df['OPEN'].shift(1), 0,
                   np.maximum(v_df['OPEN'] - v_df['LOW'], v_df['OPEN'] - v_df['OPEN'].shift(1)))
    STM = pd.Series(DTM).rolling(window=N, min_periods=1).sum()
    SBM = pd.Series(DBM).rolling(window=N, min_periods=1).sum()
    ADTM = np.where(STM > SBM, (STM - SBM) / STM, np.where(STM == SBM, 0, (STM - SBM) / SBM))
    MAADTM = pd.Series(ADTM).rolling(window=M, min_periods=1).mean()
    v_df['ADTM'] = ADTM
    v_df['MAADTM'] = MAADTM


def generate_signals(v_df, day_index=-1):
    """
    生成ADTM信号

    参数:
    v_df: pandas.DataFrame,包含ADTM指标的DataFrame
    day_index: int,要检查的日期索引,默认为最后一天

    返回:
    str,表示信号的字符串,可能为"买入信号"、"注意风险"或"无信号"
    """
    row = v_df.iloc[day_index]
    if row['ADTM'] < -0.5:
        return '买入信号'
    elif row['ADTM'] > 0.5:
        return '注意风险'
    else:
        return '无信号'


calculate_ADTM(df, N, M)
result = generate_signals(df)
print(result)


在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

IDEA2023.2版本引用提示no usages的关闭和打开

相信很多下载使用高版本的IDEA的小伙伴们都会发现自己的代码主页会出现一个no usages的提示,如下图所示,其实这是IDEA所做出的来的一个辅助功能,目的是为了让使用者可以清楚的知道你在哪里被使用了;如图: 对于一些经常使用低版本的IDEA编程的小伙伴来说,这个功能的突然出…

S3---FPGA-A7板级电源硬件实战

视频链接 FPGA-A7板级电源硬件实战01_哔哩哔哩_bilibili FPGA-A7板级电源硬件实战 1、基于A7 板级的系统框图 2、基于A7 板级的电源设计细则 2.1、A7 FPGA功耗评估 Artix-7 FPGA电源有VCCINT, VCCBRAM, VCCAUX, VCCO, VMGTAVCC和VMGTAVTT。 2.1.1、A7 FPGA电源管脚 2.1.2…

GIS之深度学习05:VisualStudio安装教程

在安装CUDA前&#xff0c;建议先安装VisualStudio&#xff0c;以防报错 VisualStudio安装步骤简单&#xff0c;但时间较长。。。。。。 正文开始&#xff1a; VisualStudio官网&#xff1a;Visual Studio: IDE and Code Editor for Software Developers and Teams 点击右上角…

【观点】区块链的未来:分布式商业;企业的未来:分布式商业生态战略

本文内容摘自思二勋所著的《分布式商业生态战略》一书。 近两年&#xff0c;商业经济环境的不确定性越来越明显&#xff0c;市场经济受到疫情、技术、政策等多方因素影响越来越难以预测&#xff0c;黑天鹅事件时有发生。在国内外经济方面&#xff0c;国际的地缘政治对商业经济…

[LeetBook]【学习日记】寻找和为指定数字的连续数字

题目 文件组合 待传输文件被切分成多个部分&#xff0c;按照原排列顺序&#xff0c;每部分文件编号均为一个 正整数&#xff08;至少含有两个文件&#xff09;。传输要求为&#xff1a;连续文件编号总和为接收方指定数字 target 的所有文件。请返回所有符合该要求的文件传输组…

VM新建虚拟机

目录 一、前言二、下载镜像三、新建虚拟机 一、前言 上一篇文章我们介绍了VMware Workstation 15 Pro的安装与破解 &#xff0c;这篇文章我们介绍一下新建虚拟机 二、下载镜像 Linux使用最多的是CentOS和Ubuntu&#xff0c;下面是下载地址 Centos7:https://www.centos.org/…

五、软考-系统架构设计师笔记-信息安全技术基础知识

信息安全技术基础知识 1、信息安全基础知识概述 信息安全的概念 信息安全包括 5 个基本要素&#xff1a; 机密性:确保信息不暴露给未授权的实体或进程。完整性:只有得到允许的人才能修改数据&#xff0c;并且能够判别出数据是否已被篡改。可用性:得到授权的实体在需要时可以…

WPF中如何设置自定义控件(二)

前一篇文章中简要讲解了圆角按钮、圆形按钮的使用,以及在windows.resource和app.resource中设置圆角或圆形按钮的样式。 这篇主要讲解Polygon(多边形)、Ellipse(椭圆)、Path(路径)这三个内容。 Polygon 我们先看一下的源码: namespace System.Windows.Shapes { pu…

第十七天-反爬与反反爬-验证码识别

目录 反爬虫介绍 基于身份识别反爬和解决思路 Headers反爬-使用User-agent Headers反爬-使用coookie字段 Headers反爬-使用Referer字段 基于参数反爬 验证码反爬 1.验证码介绍 2.验证码分类&#xff1a; 3.验证码作用 4.处理方案 5.图片识别引擎:ocr 6.使用打码平…

Window系统搭建feishu-chatgpt企业AI机器人并实现无公网ip远程连接

文章目录 前言环境列表1.飞书设置2.克隆feishu-chatgpt项目3.配置config.yaml文件4.运行feishu-chatgpt项目5.安装cpolar内网穿透6.固定公网地址7.机器人权限配置8.创建版本9.创建测试企业10. 机器人测试 前言 在飞书中创建chatGPT机器人并且对话&#xff0c;在下面操作步骤中…

ubuntu系统(11):ubuntu20.04命令行安装vscode

目录 1、更新软件包索引&#xff0c;并且安装依赖软件 2、使用 wget 命令插入 Microsoft GPG key 3、启用vscode存储库 4、更新软件包并安装vscode 5、当前目录进入vscode 6、设置样式&#xff0c;添加所需扩展 最近换了个新的服务器&#xff0c;所以要重新配置服务器的…

python网络爬虫教程笔记(1)

系列文章目录 文章目录 系列文章目录前言一、爬虫入门1.爬虫是什么&#xff1f;2.爬虫工作原理3.爬虫基本原理4.工作流程5.HTTP请求6.HTTP响应7.HTTP原理&#xff1a;证书传递、验证和数据加密、解密过程解析8.Urllib.request库的使用9.TCP3次握手&#xff0c;4次挥手过程 总结…

【Linux从青铜到王者】进程信号

——————————————————————————————————————————— 信号入门 在了解信号之前有许多要理解的相关概念 我们可以先通过一个生活例子来初步认识一下信号 1.生活角度的信号 你在网上买了很多件商品&#xff0c;再等待不同商品快递的到来…

微服务架构SpringCloud(2)

热点参数限流 注&#xff1a;热点参数限流默认是对Springmvc资源无效&#xff1b; 隔离和降级 1.开启feign.sentinel.enabletrue 2.FeignClient(fallbackFactory) 3.创建一个类并实现FallbackFactory接口 4.加入依赖 <!--添加Sentienl依赖--><dependency><gro…

深度学习系列61:在CPU上运行大模型

1. 快速版 1.1 llamafile https://github.com/Mozilla-Ocho/llamafile 直接下载就可以用&#xff0c;链接为&#xff1a;https://huggingface.co/jartine/llava-v1.5-7B-GGUF/resolve/main/llava-v1.5-7b-q4.llamafile?downloadtrue 启动&#xff1a;./llava-v1.5-7b-q4.lla…

代码随想录刷题笔记-Day28

1. 重新安排行程 332. 重新安排行程https://leetcode.cn/problems/reconstruct-itinerary/给你一份航线列表 tickets &#xff0c;其中 tickets[i] [fromi, toi] 表示飞机出发和降落的机场地点。请你对该行程进行重新规划排序。 所有这些机票都属于一个从 JFK&#xff08;肯…

Linux 运维:CentOS/RHEL防火墙和selinux设置

Linux 运维&#xff1a;CentOS/RHEL防火墙和selinux设置 一、防火墙常用管理命令1.1 CentOS/RHEL 7系统1.2 CentOS/RHEL 6系统 二、临时/永久关闭SELinux2.1 临时更改SELinux的执行模式2.2 永久更改SELinux的执行模式 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;…

【C++】在龙年拿捏智能指针

文章目录 1 :peach:为什么需要智能指针&#xff1f;:peach:2 :peach:内存泄漏:peach:2.1 :apple:什么是内存泄漏:apple:2.2 :apple:内存泄漏分类:apple:2.3 :apple:如何检测内存泄漏:apple:2.4:apple:如何避免内存泄漏:apple: 3 :peach:智能指针的使用及原理:peach:3.1 :apple:…

微服务间通信重构与服务治理笔记

父工程 依赖版本管理,但实际不引入依赖 pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation&…

vue svelte solid 虚拟滚动性能对比

前言 由于svelte solid 两大无虚拟DOM框架&#xff0c;由于其性能好&#xff0c;在前端越来越有影响力。 因此本次想要验证&#xff0c;这三个框架关于实现表格虚拟滚动的性能。 比较版本 vue3.4.21svelte4.2.12solid-js1.8.15 比较代码 这里使用了我的 stk-table-vue(np…