使用python实现短线选股

news2024/11/20 13:34:30

经常做短线的朋友都知道,选股是个较为复杂的工作,尤其是像我们这种非职业选手,下面就分享一些通过python实现选股的思路。
在这里插入图片描述

股票信息获取

炒短线离不开龙虎榜,我们先来通过龙虎榜来进行股票选择

url = 'https://applhb.longhuvip.com/w1/api/index.php'
    headers = {
        'user-agent':'Mozilla/5.0(Linux; Android 7.1.2; SM-G955N Build/NRD90M.G955NKSU1AQDC; wv)'
    }
    # POST请求参数
    params = {
        'st': '500',
        'Index': '0',
        'c': 'LongHuBang',
        'PhoneOSNew': 1,
        'a': 'GetStockList',
        'DeviceID': '0f6ac4ae-370d-3091-a618-1d9dbb2ecce0',
        'apiv': 'w31',
        'Type': 2,
        'UserID': 0,
        'Token': 0,
        'Time': 0,
    }
    # 发送POST请求
    response = requests.post(url, params=params, headers=headers)
    # 将编码设置为当前编码
    response.encoding = response.apparent_encoding
    # 解析JSON数据
    data = json.loads(response.text)
    # 获取买入营业部、卖出营业部和风口概念等数据
    BIcon = data.get('BIcon')
    SIcon = data.get('SIcon')
    fkgn = data.get('fkgn')
    lb = data.get('lb')
    all_data_list = []
    # 遍历股票列表,提取数据
    for item in data.get('list'):
        ID = item.get('ID')
        item_data = [
            ID,
            item.get('Name'),
            item.get('IncreaseAmount'),
            item.get('BuyIn'),
            item.get('JoinNum'),
            ','.join(BIcon.get(ID, [])),
            ','.join(SIcon.get(ID, [])),
            ','.join(fkgn.get(ID, {}).values()),
            lb.get(ID),
        ]

        # 将数据转换成DataFrame类型
        sample_data = pd.DataFrame(item_data).T
        column_dict = {
            0: '股票代码',
            1: '股票名称',
            2: '涨幅',
            3: '净买入',
            4: '关联数',
            5: '买入营业部',
            6: '卖出营业部',
            7: '风口概念',
            8: '连板数'
        }
        sample_data.rename(columns=column_dict, inplace=True)
        all_data_list.append(sample_data)
    # 返回DataFrame类型数据
    all_data = pd.concat(all_data_list)

这个时候我们就拿到了我们想要的数据

     股票代码   股票名称  ...                                               风口概念   连板数
0  600895   张江高科  ...  光刻机,蚂蚁金服概念,芯片,上海,REITs,地产链,创投,中报增长,业绩增长,汽车类,新能源汽车  None
0  002194   武汉凡谷  ...  5G,滤波器,芯片,华为概念,人工智能,ST摘帽,武汉,教育,智能驾驶,毫米波雷达,通信,C...  None
0  000766   通化金马  ...  阿尔茨海默,医药,创新药,肝炎概念,中药,大麻,医美,民营医院,超跌,并购重组,中报增长,业绩增长     4
0  002229   鸿博股份  ...  英伟达概念,ChatGPT,虚拟人,服务器,元宇宙,华为概念,人工智能,海南,包装印刷,世界...  None

这个时候我们就拿到了龙虎榜的基础信息

进一步信息获取

龙虎榜上的信息有限,我们可以进一步获取到信息。

def get_dea_info(certificate_id):
    exchange_list = [
        'sh',
        'sz',
    ]
    now_time = get_now_time()
    year, month, date = now_time.split("-")
    start_month = month[-1] if "0" in month else month
    start_month = int(start_month) - 1
    start_month = str(start_month) if start_month > 9 else f"0{start_month}"
    end_date = f'{year}-{month}-{date}'
    start_date = f'{year}-{start_month}-{date}'
    print(start_date)
    print(end_date)
    have_search_info = False
    for exchange in exchange_list:
        rs = bs.query_history_k_data(f"{exchange}.{certificate_id}",
                                     "date,code,open,high,low,close,preclose,volume,amount,adjustflag,turn,tradestatus,pctChg,peTTM,pbMRQ,psTTM,pcfNcfTTM,isST",
                                     start_date=start_date,
                                     end_date=end_date,
                                     frequency="d", adjustflag="3")
        detail_data_list = []
        while (rs.error_code == '0') & rs.next():  # 获取一条记录,将记录合并在一起
            detail_data_list.append(rs.get_row_data())
        if detail_data_list:
            have_search_info = True
            break

    if have_search_info:
        result = pd.DataFrame(detail_data_list, columns=rs.fields)
        for count_rs in ['open', 'high', 'low', 'close']:
            result[count_rs] = result.apply(
                lambda x: get_percentage(x, count_rs), axis=1
            )
        result['turn'] = result['turn'].apply(lambda x: x[:5])
    result = result.sort_values(by='date', ascending=False)
    return result

这样我们就拿到了个股最新一个月的量价信息

          date       code  open   high  ...     pbMRQ     psTTM  pcfNcfTTM isST
21  2023-09-15  sz.002889  5.74  10.02  ...  2.256259  1.842298  21.709520    0
20  2023-09-14  sz.002889 -1.19  10.02  ...  2.050822  1.674554  19.732829    0
19  2023-09-13  sz.002889 -3.15   0.53  ...  1.863981  1.521993  17.935063    0
18  2023-09-12  sz.002889  0.55   6.99  ...  1.855126  1.514763  17.849860    0
17  2023-09-11  sz.002889  0.92   1.26  ...  1.786057  1.458366  17.185283    0
16  2023-09-08  sz.002889  0.96   9.99  ...  1.832989  1.496687  17.636855    0
15  2023-09-07  sz.002889 -0.05  -0.05  ...  1.666514  1.360756  16.035054    0

策略书写

后面就是策略选股了
比如我们要进行选股了,我们想做连板票,我们搜素一下未放量,且最近一个月没有前高的票

def search_strategy_result(sample_data):
    # 我们筛选涨停票, 且没有放巨量, 之前也未放过巨量的
    recently = sample_data.iloc[0]
    # 判断当天是否涨停
    close = float(recently['close'])
    if float(recently['pctChg']) < 9.6:
        return False
    # 判断一个月内是否有前高
    max_high = float(sample_data['high'].max())
    if close < max_high:
        return False
    # 判断换手率是否超过15
    if float(recently['turn']) > 15.0:
        return False
    # 相比前一天是否放量
    turn_ration = float(recently['turn']) / float(sample_data.iloc[1]['turn'])
    if turn_ration > 1.5:
        return False
    return True

结果

通化金马  000766 符合策略已入库
东方嘉盛  002889 符合策略已入库
泉阳泉  600189 符合策略已入库
龙江交通  601188 符合策略已入库
路桥信息 未查询到信息
2023-09-17龙虎榜共有43只股票4只股票符合要求

本文章只是技术分享,不能作为投资建议

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

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

相关文章

深入网络底层,了解Linux系统收发网络数据包的过程、原理、流程,附图文说明

深入网络底层&#xff0c;了解Linux系统收发网络数据包的过程、原理、流程&#xff0c;附图文说明。 Linux 服务器收到网络数据包&#xff0c;需要经过哪些处理&#xff0c;一步步将数据传给应用进程的呢&#xff1f;应用进程发送数据包时&#xff0c;Linux 又是如何操作将数据…

【Rust日报】2023-09-15 RustRover:JetBrains单行版Rust IDE

RustRover&#xff1a;JetBrains单行版Rust IDE 深入了解 RustRover 的公共预览版&#xff0c;这是我们专为 Rust 开发人员设计的新 IDE&#xff01;体验其先进功能&#xff0c;并根据您的反馈帮助塑造其未来。现在就成为第一批探索它的人吧&#xff01; X post: https://x.com…

智能家居产品公司网站源码,自适应布局设计,带完整演示数据

适合各类智能家居电子产品使用的网站源码&#xff0c;深色大气设计&#xff0c;自适应布局设计&#xff0c;pc手机均可完美适配&#xff0c;带完整演示数据。 独家原创资源。源码是asp开发的&#xff0c;数据库是access&#xff0c;主流的虚拟主机空间都支持asp&#xff0c;直…

2.数据分析报告制作

文章目录 2. 数据分析报告制作2.1 &#xfeff;产品基础信息2.2 产品生命周期2.4 产品发展情况2.4 核心业务逻辑【重点】2.5潜在运营可能2.6 用戶决策流程2.7 典型用户场景 2. 数据分析报告制作 2.1 &#xfeff;产品基础信息 产品介绍 今日头条是一款基于用户和信息数据挖掘的…

多输入多输出 | MATLAB实现CNN-BiGRU卷积双向门控循环单元多输入多输出

多输入多输出 | MATLAB实现CNN-BiGRU卷积双向门控循环单元多输入多输出 目录 多输入多输出 | MATLAB实现CNN-BiGRU卷积双向门控循环单元多输入多输出预测效果基本介绍程序设计往期精彩参考资料 预测效果 基本介绍 MATLAB实现CNN-BiGRU卷积双向门控循环单元多输入多输出&#xf…

Truenas scale 配置 TrueChart zerotier

起源 Official zerotier 总是在系统重启或者服务重启后&#xff0c;会丢失之前配置的IP等信息&#xff0c;使用&#xff0c;转投 TrueChart zerotier 步骤 TrueChart 官方步骤&#xff0c;按这个配置完还是不能使用&#xff0c;需要后续设置。 添加TrueChart步骤到应用库的步…

pickle反序列化RCE分析

pickle反序列化 一. pickle模块1.1 什么是pickle模块1.2 常用函数1.3 魔术方法 二. 例题[[BUUOJ]HFCTF 2021 Final]2.1 题目分析2.2 payload 三. opcode编写3.1 为什么要用到opcode3.2 什么是opcode3.3 常见的指令符3.4 opcode执行原理3.5 R指令被禁绕过3.6 构造示例3.7 一些ti…

can‘t sync to target.

飞翔仿真器 无法 与S12单片机 建立联系&#xff0c;仿真时显示 cant sync to target. 但是使用仿真器与其他板子连接仿真是没问题的。 首先怀疑硬件问题&#xff1a;没发现问题&#xff1b; 然后&#xff0c;勇敢的点击菜单中 设置速度&#xff0c;根据自己晶振和建议设置如…

看完这篇 教你玩转渗透测试靶机Vulnhub——Grotesque:2

Vulnhub靶机Grotesque&#xff1a;1.0.1渗透测试详解 Vulnhub靶机介绍&#xff1a;Vulnhub靶机下载&#xff1a;Vulnhub靶机安装&#xff1a;①&#xff1a;信息收集&#xff1a;②&#xff1a;暴力破解&#xff1a;③&#xff1a;SSH登入&#xff1a;④&#xff1a;提权&#…

Java中double类型保留小数点后两位的方法

1.String类的format方法 package com.yushifu.problem; //java中double保留两位小数的方法 import java.util.Scanner; public class Demo01 {public static void main(String[] args) {//Practice:键盘输入数据&#xff0c;以保留小数点后两位的格式输出键盘输入的数据。doub…

Linux CentOS7 history命令

linux查看历史命令可以使用history命令&#xff0c;该命令可以列出所有已键入的命令。 这个命令的作用可以让用户或其他有权限人员&#xff0c;进行审计&#xff0c;查看已录入的命令。 用户所键入的命令作为应保存的信息将记录在文件中&#xff0c;这个文件保存就是家目录中…

ApplicationContext版本的快速入门

ApplicationContext快速入门 ApplicationContext称为Spring容器&#xff0c;内部封装了BeanFactory&#xff0c;比BeanFactory功能更加丰富和强大&#xff0c;使用ApplicationContext进行开发时&#xff0c;xml配置文件的名称习惯写成applicationContext.xml。 BeanFactory和…

上海交通大学生存手册

强烈建议去看看《上海交通大学生存手册》&#xff0c;内容可能有点长&#xff0c;但讲得很好&#xff0c;说出了大学教育的本质。如果几年前我能看到它&#xff0c;也许我的大学生活可能会不一样。 只是&#xff0c;没有如果。 那么我把这本手册推荐给正在上大学或者是将要上…

网络协议学习地图分享

最近在回顾网络知识点的时候&#xff0c;发现华为数通有关报文格式及网络协议地图神仙网站&#xff0c;这里涵盖了各个协议层及每个协议层对应的协议内容&#xff0c;最人性的化的一点是点击每个单独的协议可以跳转到该协议详细报文格式页面&#xff0c;有对应的说明和解释&…

芯片工程师求职题目之CPU篇(4)

1. 在组相联cache中&#xff0c;用于替换cache line的算法有哪些&#xff1f; LRU(Least Recently Used)算法&#xff1a;该算法会跟踪每个cache line的age(年龄)情况&#xff0c;并在需要时替换掉近期最少使用的cache line。MRU(Most Recently Used)算法&#xff1a;这与LRU相…

TCP/IP、DTN网络通信协议族

TCP/IP 从 19 世纪 60 年代计算机网络发展开始&#xff0c;网络协议技术已经经历了半个多世纪的发展&#xff0c;地面互联网已经形成了以传输控制协议&#xff08;TCP&#xff09;/IP 协议体系为主的网络架构。TCP/IP体系发源于计算机网络&#xff0c;是一种以主 机为中心的网…

CountDownLatch 使用例子和代码流程

目录 CountDownLatch意思理解普通多线程运行Thread.join()实现CountDownLatch实现CountDownLatch流程new CountDownLatch(3)countDown 方法await方法 CountDownLatch意思理解 单词1: countdown 常见释义: 英[ˈkaʊntdaʊn] 美[ˈkaʊntdaʊn] n. 倒数读秒&#xff0c;倒计时(…

王江涛十天搞定考研词汇

学习目标&#xff1a; 考研词汇 学习内容&#xff1a; 2023-9-17 第一天考研词汇 学习时间&#xff1a; 2023-9-17 学习产出&#xff1a;A intellect智力&#xff1b;知识分子intellectual智力的&#xff1b;聪明的intellectualize使...理智化&#xff0c;对...做理性探索c…

ros2学习笔记:shell环境变量脚本setup.bash[-z][-n][-f]参数作用

-n作用 [ -n 字符串 ] or [ 字符串 ] 字符串的长度为非零&#xff08;有内容&#xff09;则为真。加-n与不加-n结果相同。 -z作用 [ -z 字符串 ] 字符串的长度为零则为真。 字符串为空即NULL时为真&#xff0c;与上面的-n相反。 -f作用 [ -f FILE ] 如果 FILE 存在且是一…

Unity shader内置standard代码解析

最近有相关需求制作&#xff0c;所以这里编写一个文档&#xff0c;方便后续的流程查看。 下载源码 由于unity内置的shader是无法查看源码的&#xff0c;你需要去官网下载对应版本内置源码查看 在引擎下载那里&#xff0c;会有一个Built in Shaders&#xff0c;下载 打开以后…