使用python实现短线选股

2023-10-27

经常做短线的朋友都知道,选股是个较为复杂的工作,尤其是像我们这种非职业选手,下面就分享一些通过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只股票符合要求

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用python实现短线选股 的相关文章

随机推荐

  • Java解一元二次方程和四则运算

    目录 一 Java解一元二次方程 运行结果 思路解析 二 Java四则运算 运行结果 思路解析 一 Java解一元二次方程 package hello import java util Scanner public class hey pu
  • (转载)LOOP WITH CONTROL 用法

    转载自 凡尘clsoho源链接 http www cnblogs com clsoho archive 2010 01 22 1654379 html LOOP WITH CONTROL Syntax 语法 LOOP AT itab INT
  • Unknown Bounded Array

    有两个文件 一个文件是数组的声明 另一个是数组的定义 如果数组的定义发生变化 比如说变成了含有5个元素的数组 那么相关联的声明也必须改变 一旦文件变多则会有部分文件忘记修改 就会发生意想不到的问题 int array 4 1 2 3 4 i
  • Markdown-分数表示(Typora,Latex)

    Markdown 分数表示 Typora Latex 在写算法题解的时候 遇到在markdown中表示分数的情况 遂查询相关资料 以备后续查询使用 表达式 显示效果 4ac over b 4 a c
  • 性能测试指标解析

    系统性能测试指标 1 并发数 同一时间与服务器进行交互的用户数 绝对并发 同一时刻 即同一时间点 并发对服务器同时发出请求 相对并发 指一段时间内 即同一时间区间 并发用户对服务器发送请求 2 响应时间 事务请求到结束全程消耗的时间总和 包
  • Vue基础知识(Web开发技术)(三)—Vue过渡和动画

    OMG有代码的部分我先不搞了一般自己老师都发了代码 我只写可能考和帮助理解的知识 文章回头再修 目录 导读 1 过渡和动画基础 01什么是过渡和动画 过渡 动画 02过渡和动画的作用 03transition组件 2 内置过渡名和自定义过渡
  • 滑动窗口算法实现单位时间API限流

    文章目录 1 限流 2 滑动窗口算法 3 代码实现 3 1 通用工具类 RateLimiterSlidingWindow 3 2 测试用例 3 3 测试结果 3 4 业务实现 3 5 测试成果 1 限流 限流顾名思义 就是对请求或并发数进行
  • 盗梦空间:在X86平台上构建ARM模拟器

    需求来源于如何构建arm平台的Ubuntu文件系统 我们希望在ARM开发板上使用Ubuntu系统 那么就需要构建一个Ubuntu的根文件系统 然后可基于该基础文件系统 进一步扩展开发 比如 可以使用不同的桌面版本 安装需要的arm源安装包等
  • 基于openwrt的wifi 渗透

    背景 使用路由器刷了 openwrt的固件 然后尝试破解wpa等wifi的密码 配置好网络之后 使用ssh连接路由器 测试连通性 0 ping downloads openwrt org root OpenWrt ping download
  • java中的锁面试题

    1 多线程中 synchronized 锁升级的原理是什么 synchronized 是 JVM 层面的锁 是 Java 关键字 通过 monitor 对象来完成 synchronized 的实现涉及到锁的升级 具体为无锁 偏向锁 自旋锁
  • 正式使用rem

    需求 移动端推广页面 需要嵌入到微信公众号 现况 之前全部都用绝对单位 没有认真使用过相对单位rem 看了一些购物网站都在用rem 于是这次完全使用了rem写页面 目的 实际检测rem布局效果 安卓和ios分辨率不一样 导致字体大小也不一样
  • Kafka生产者与消费者api示例

    生产者api示例 一个正常的生产逻辑需要具备以下几个步骤 配置生产者参数及创建相应的生产者实例 构建待发送的消息 发送消息 关闭生产者实例 采用默认分区方式将消息散列的发送到各个分区当中 package com doitedu import
  • Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springfr

    今天写springboot的项目时报错 Error starting ApplicationContext To display the auto configuration report re run your application w
  • 怎样在计算机上注册dll文件,注册dll文件【搞定步骤】

    喜欢使用电脑的小伙伴们一般都会遇到win7系统注册dll文件的问题 突然遇到win7系统注册dll文件的问题就不知道该怎么办了 其实win7系统注册dll文件的解决方法非常简单 按照 1 在电脑桌面上 依次选中菜单项开始 运行 打开运行窗口
  • PCL学习笔记:PCL的初次安装和使用。

    注 资料来源 D 项目资料 YC 激光扫描建模 长沙项目 2016 2019 2017 2018 文档资料 技术总结YC 201703 YC 激光建模技术总结 201703及以后 docx 目录 A PCL的初步安装及测试 0 安装平台 1
  • Ubuntu换源+VMware Tools安装

    Contents 1 Ubuntu20 04换国内源 1 1 备份文件 1 2 修改配置文件 1 3 更新 2 VMware Tools安装 2 1 解决安装VMwareTools显示灰色 2 2 正式安装 复制压缩文件至 opt 切换为r
  • python的cls,self,classmethod,staticmethod

    python的cls self classmethod staticmethod python类里会出现这三个单词 self和cls都可以用别的单词代替 类的方法有三种 一是通过def定义的 普通的一般的 需要至少传递一个参数 一般用sel
  • 【满分】【华为OD机试真题2023 JAVA&JS】最差产品奖

    华为OD机试真题 2023年度机试题库全覆盖 刷题指南点这里 最差产品奖 知识点滑窗 时间限制 1s 空间限制 256MB 限定语言 不限 题目描述 A公司准备对他下面的N个产品评选最差奖 评选的方式是首先对每个产品进行评分 然后根据评分区
  • Chapter 1 Introduction

    Chapter 1 Introduction focus on communication and queueing systems formulated problem optimize the time averages of cert
  • 使用python实现短线选股

    经常做短线的朋友都知道 选股是个较为复杂的工作 尤其是像我们这种非职业选手 下面就分享一些通过python实现选股的思路 股票信息获取 炒短线离不开龙虎榜 我们先来通过龙虎榜来进行股票选择 url https applhb longhuvi