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

news2024/11/15 15:43:03

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

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


介绍

在股票技术分析中,BIAS(乖离率)是一种常用的技术指标,用于判断股票价格与其移动平均线之间的偏离程度,进而指导投资者进行交易决策。本文将介绍如何使用Python编程语言实现BIAS工具,以及如何利用该工具来分析股票价格走势。

先看看官方介绍:

BIAS(乖离率)
用法
1.本指标的乖离极限值随个股不同而不同,使用者可利用参考线设定,固定其乖离范围;
2.当股价的正乖离扩大到一定极限时,股价会产生向下拉回的作用力;
3.当股价的负乖离扩大到一定极限时,股价会产生向上拉升的作用力;
4.本指标可设参考线。

算法解释

BIAS1 :(CLOSE-MA(CLOSE,N1))/MA(CLOSE,N1)*100;
BIAS2 :(CLOSE-MA(CLOSE,N2))/MA(CLOSE,N2)*100;
BIAS3 :(CLOSE-MA(CLOSE,N3))/MA(CLOSE,N3)*100;

优势:

优势描述
个性化设置乖离范围BIAS指标的乖离极限值随个股不同而不同,使用者可以根据具体情况进行参考线的设定,固定其乖离范围,使得指标更适合不同个股的特性。
预测股价走势当股价的正乖离扩大到一定极限时,股价会产生向下拉回的作用力,而当股价的负乖离扩大到一定极限时,股价会产生向上拉升的作用力,有助于预测股价的走势。
可设参考线BIAS指标可设参考线,投资者可以根据自己的需求和策略,设定适当的参考线,以便更好地辅助决策。

劣势:

劣势描述
单一性BIAS指标相对较为单一,仅从价格的角度进行分析,可能无法全面反映市场的复杂情况,投资者需要结合其他指标和分析方法进行综合判断。
适用性限制BIAS指标的应用受限于个股的特性和行情状况,不同个股的乖离率极限值不同,可能需要投资者具备一定的经验和技术分析能力,才能准确把握指标的含义和使用方法。
缺乏明确的买卖信号BIAS指标并没有提供明确的买卖信号,而是提供了一种价差的概念,因此在实际操作中,投资者需要结合其他指标或技术分析方法来确认具体的买卖时机。

代码

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

import pandas as pd
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)


def bias(close, n):
    """
    计算乖离率

    参数:
    close: pandas.Series,收盘价数据
    n: int,窗口大小

    返回:
    pandas.Series,乖离率数据
    """
    ma = close.rolling(window=n).mean()
    return (close - ma) / ma * 100


def calculate_bias(data, n1, n2, n3, positive_limit, negative_limit):
    """
    计算乖离率指标

    参数:
    data: pandas.DataFrame,包含股票数据的DataFrame
    n1: int,第一个窗口大小
    n2: int,第二个窗口大小
    n3: int,第三个窗口大小
    positive_limit: float,正乖离的极限值
    negative_limit: float,负乖离的极限值

    返回:
    pandas.DataFrame,添加了乖离率指标的DataFrame
    """
    data['BIAS1'] = bias(data['CLOSE'], n1)
    data['BIAS2'] = bias(data['CLOSE'], n2)
    data['BIAS3'] = bias(data['CLOSE'], n3)

    # 添加参考线
    data['POSITIVE_LIMIT'] = positive_limit
    data['NEGATIVE_LIMIT'] = negative_limit

    return data


def generate_signals(data, positive_limit, negative_limit, day_index=-1):
    """
    生成信号

    参数:
    data: pandas.DataFrame,包含乖离率指标的DataFrame
    positive_limit: float,正乖离的极限值
    negative_limit: float,负乖离的极限值
    day_index: int,要检查的日期索引,默认为最后一天

    返回:
    str,表示信号的字符串,可能为"股价可能会向下拉回"、"股价可能会向上拉升"或"无信号"
    """
    signals = ""
    row = data.iloc[day_index]
    if row['BIAS1'] > positive_limit and row['BIAS2'] > positive_limit and row['BIAS3'] > positive_limit:
        signals = '股价可能会向下拉回'
    elif row['BIAS1'] < negative_limit and row['BIAS2'] < negative_limit and row['BIAS3'] < negative_limit:
        signals = '股价可能会向上拉升'
    else:
        signals = '无信号'
    return signals


n1, n2, n3 = 6, 12, 24
positive_limit = 5  # 正乖离的极限值
negative_limit = -5  # 负乖离的极限值

calculate_bias(df, n1, n2, n3, positive_limit, negative_limit)
result = generate_signals(df, positive_limit, negative_limit)
print(result)


positive_limit = 5 # 正乖离的极限值
negative_limit = -5 # 负乖离的极限值

这个需要自己设置:-5 只是一个示例。在实际使用中,可以根据股票的历史数据和市场行情来设定适合的负乖离极限值。负乖离表示股价低于移动平均线的情况,当负乖离扩大到一定程度时,可能会有向上拉升的作用力

在这里插入图片描述

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

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

相关文章

unity学习(45)——选择角色菜单——客户端处理服务器的数据

1.已知客户端ReceiveCallBack中已经收到来自服务器返回的数据包。 2.问题是客户端MessageManager中的Update并没有拆解该数据包 &#xff0c;因该是因为脚本没有挂载。 挂在SelectMenu场景中的Camera上即可。 挂载后成功达到目地 其中Update中的List是一个起到全局效果的static…

C# 打包nuget包

类库等项目开发好之后打开csproj&#xff0c;添加如下代码 <PropertyGroup><!--<TargetFramework>netstandard2.0</TargetFramework>--><PackageId>Test01</PackageId><Version>1.0.0</Version><Authors>wjl</Autho…

Redis、Elasticsearch(ES)、RocketMQ和MYSql 持久化对比

在现代大数据和分布式系统中&#xff0c;数据持久化是一个至关重要的话题。本文将针对 Redis、Elasticsearch&#xff08;ES&#xff09;、 RocketMQ和MYSql 这四种常见的数据存储和消息队列系统进行持久化方面的对比分析&#xff0c;帮助读者更好地了解它们各自的特点和适用场…

ABAP - SALV 教程15 用户点击按钮交互功能

SALV增加了按钮&#xff0c;那么该怎么实现点击了按钮实现交互功能呢&#xff1f;可以通过注册事件并且在对应的method中写入相关逻辑&#xff0c;来实现点击按钮后的逻辑。通过自定义状态栏的方式添加按钮&#xff1a;http://t.csdnimg.cn/lMF16通过使用派生类的方式添加按钮&…

lv20 QT主窗口4

熟悉创建主窗口项目 1 QAction 2 主窗口 菜单栏&#xff1a;fileMenu menuBar()->addMenu(tr("&File")); 工具栏&#xff1a;fileToolBar addToolBar(tr("File")); 浮动窗&#xff1a;QDockWidget *dockWidget new QDockWidget(tr("Dock W…

SVN教程-SVN的基本使用

SVN&#xff08;Apache Subversion&#xff09;是一款强大的集中式版本控制系统&#xff0c;它在软件开发项目中扮演着至关重要的角色&#xff0c;用于有效地跟踪、记录和管理代码的演变过程。与分布式系统相比&#xff0c;SVN 的集中式架构使得团队能够更加协同地进行开发&…

在ubuntu上安装hadoop完分布式

准备工作 Xshell安装包 Xftp7安装包 虚拟机安装包 Ubuntu镜像源文件 Hadoop包 Java包 一、安装虚拟机 创建ubuntu系统 完成之后会弹出一个新的窗口 跑完之后会重启一下 按住首先用ctrlaltf3进入命令界面&#xff0c;输入root&#xff0c;密码登录管理员账号 按Esc 然后输入 …

详解算法的时间复杂度和空间复杂度!

目录 ​编辑 1. 算法效率 2. 时间复杂度 2.1 时间复杂度的概念 2.2 大O的表示渐进法 2.3 一个栗子 3. 空间复杂度 4. 常见复杂度对比 5. 完结散花 ​​​​​​​ 悟已往之不谏&#xff0c;知来者犹可追 创作不易&#xff0c;宝子们&#xff01;如果这篇文章对你们有…

算法44:动态规划专练(最长公共子串题)

之前写过一篇博客是关于最长公共子序列的博客算法27&#xff1a;最长公共子序列&#xff08;力扣1143题&#xff09;——样本模型&#xff08;4&#xff09;_样本模型无效的条件-CSDN博客 子序列是可以删除某些字符达到的。 比如&#xff1a;字符串1为 a1b2c3. 字符串2为 aqv…

【C语言】【洛谷】P1125笨小猴

一、个人解答 #include<stdio.h> #include<string.h>int prime(int num);int main() {char max a, min z;int maxn0, minn1000;char str[100];int num[26] { 0 };fgets(str, sizeof(str), stdin);str[strcspn(str, "\n")] \0;for (int i 0; str[i]…

错误: 找不到或无法加载主类 com.zql.springbootTest.SpringbootTestApplication

首先查看application.properties是否出现问题 然后可以尝试 maven install

巧用二进制实现俄罗斯方块小游戏

效果预览 思想 首先建立两个数组board、tetris用来存储当前已经堆积在棋盘的方块与正在下落的方块。 这两个是一维数组当需要在页面画棋盘时就对其每一项转成二进制&#xff08;看计算属性tetrisBoard&#xff09;&#xff0c;其中1&#xff08;红色&#xff09;0&#xff08;…

Flink:Temporal Table Function(时态表函数)和 Temporal Join

博主历时三年精心创作的《大数据平台架构与原型实现&#xff1a;数据中台建设实战》一书现已由知名IT图书品牌电子工业出版社博文视点出版发行&#xff0c;点击《重磅推荐&#xff1a;建大数据平台太难了&#xff01;给我发个工程原型吧&#xff01;》了解图书详情&#xff0c;…

Qt 简约美观的加载动画 第九季

这次和大家分享6个非常清爽的加载动画. &#x1f60a; 效果如下 &#x1f60a; 一共三个文件 , 可以直接编译运行的呢 //main.cpp #include "LoadingAnimWidget.h" #include <QApplication> #include <QGridLayout> int main(int argc, char *argv[]) …

Endnote x9 最快方法批量导入.enw格式文件

按照网上看到的一个方法直接选中所有enw批量拖拽到 All references 附件不行啊&#xff0c; 以为只能写bat脚本方式了 经过一番尝试&#xff0c;惊人的发现拖到下面这个符号的地方就行了&#xff01;&#xff01;&#xff01; 如果不成功的话&#xff0c;可能&#xff1a; 我…

WordPress免费的远程图片本地化下载插件nicen-localize-image

nicen-localize-image&#xff08;可在wordpress插件市场搜索下载&#xff09;&#xff0c;是一款用于本地化文章外部图片的插件&#xff0c;支持如下功能&#xff1a; 文章发布前通过编辑器插件本地化 文章手动发布时自动本地化 文章定时发布时自动本地化 针对已发布的文章…

BioTech - 药物晶型预测与剂型设计 概述

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://blog.csdn.net/caroline_wendy/article/details/136441046 药物晶型预测与剂型设计是指利用计算机模拟和优化药物分子在固态形式下的结构、性质和稳定性&#xff0c;以及与制剂工艺和质…

一维数组、内存理解图--学习JavaEE的day9

day09 一、一维数组 理解&#xff1a; 一组数据的容器 应用场景&#xff1a; 存储多个数据的时候可以考虑使用数组 概念&#xff1a; ​ 1.数组是引用数据类型 ​ 2.数组中的数据&#xff0c;称之为元素 ​ 3.元素的都有编号&#xff0c;称之为下标/索引 ​ 4.下标从0开始 ​…

【MetaGPT】配置教程

MetaGPT配置教程&#xff08;使用智谱AI的GLM-4&#xff09; 文章目录 MetaGPT配置教程&#xff08;使用智谱AI的GLM-4&#xff09;零、为什么要学MetaGPT一、配置环境二、克隆代码仓库三、设置智谱AI配置四、 示例demo&#xff08;狼羊对决&#xff09;五、参考链接 零、为什么…

HTML和CSS (前端共三篇)【详解】

目录 一、前端开发介绍 二、HTML入门 三、HTML基础标签 四、CSS样式修饰 五、HTML表格标签 六、HTML表单标签 一、前端开发介绍 web应用有BS和CS架构两种&#xff0c;其中我们主要涉及的是BS架构。而BS架构里&#xff0c;B&#xff08;Browser浏览器&#xff09;是客户端的…