量化 | 分享一个赚钱的策略

最近学习了一个选股策略,股价出现了向上的跳空缺口再配合业绩的话,往往都会有一波行情。随便找几个图:

aa4b3e3246f587b41a048ff0bdc9b8d8.jpeg
002338

88bdd23d2022b5e239f3f8c91a5ca753.jpeg
605555

ac588ae4121e4f1c8bad42fadfefaea2.jpeg
600491

e944017ea52ed41453aa35396ba1a210.jpeg
603260

b3d973e23cd0e665cc0965ba9e8bd15d.jpeg
001308

如果我们可以抓住这些跳空岂不是起飞。

实现该功能最简单的思路就是:

1、判断股票是否有跳空

2、该股票近期是否有业绩的公布(这点很简单,甚至不需要写代码(别问为什么,问就是懒),你只需要在业绩公布的那段时间关注就好了)

目录:

1、收集今日的所有股票数据

2、通过tushare获取前一交易日的数据

3、筛选跳空高开

1、收集今日的所有股票数据

目标网站:

aHR0cDovL3F1b3RlLmVhc3Rtb25leS5jb20vY2VudGVyL2dyaWRsaXN0Lmh0bWwjaHNfYV9ib2FyZA==

这个网站我已经讲了很多次,这里我就不再讲了,不了解的可以查看——股票数据的获取,代码就不用以前的了,我进行了更新。回复“跳空”即可获取本篇所有数据及代码。

2、通过tushare获取前一交易日的数据

如果你第一天跑这个程序就想筛选出哪些股票有跳空,这时候只能通过其他渠道获得前一天的数据,比如:tushare(打钱)

这个的用法可以查看——获取股票历史数据

3、筛选跳空高开

最后一步就是对比今日最低价与上一交易日最高价的关系。上述的数据都是存储在csv文件中,对比起来那就简单了,依据股票代码进行一个左合并,再进行对比。

左合并demo:

import pandas as pd

today_file = f'./每日数据/{date_list[-1]}-个股.csv'
previous_file = f'./每日数据/{date_list[-2]}-个股.csv'
today_df = pd.read_csv(today_file, encoding='gbk')
previous_day_df = pd.read_csv(previous_file, encoding='gbk')[['股票代码', '最高价']]
df = today_df.merge(previous_day_df, on='股票代码', how='left')

使用pandas的merge方法

参数讲解:

on:为合并依据

how:合并方式

如果有相同的字段名时会分别在字段名后添加_x/y,如下图3-1。

a88d93b1eba1bbaa138aab5baf2b926a.png
图3-1


实现思路:

1、将近两个交易日的数据进行合并

2、判断今日最低价是否高于上一交易日最高价

3、还可以与前面获取的涨停数据(布置作业)

3.1、将近两个交易日的数据进行合并

这里需要判断哪两个文件是邻近的两个交易日数据,因此在命名时需要按一个标准的日期格式进行命名(如:2022-08-05),标准日期即可以转为时间戳也可以直接使用sort进行排序。

左合并代码:

def merge_data():
    data_file = './每日数据'
    date_list = []
    for i in os.listdir(data_file):
        date_list.append(i[:10])
    date_list.sort()
    today_file = f'./每日数据/{date_list[-1]}-个股.csv'
    previous_file = f'./每日数据/{date_list[-2]}-个股.csv'
    today_df = pd.read_csv(today_file, encoding='gbk')
    previous_day_df = pd.read_csv(previous_file, encoding='gbk')[['股票代码', '最高价']]
    df = today_df.merge(previous_day_df, on='股票代码', how='left')
    df.to_csv('./跳空数据/temp.csv', encoding='gbk', index=False)

判断是否出现了跳空:

def judge_jump():
    date = get_standard_date(timestamp=time.time())
    df = pd.read_csv('./跳空数据/temp.csv', encoding='gbk')
    code_list,name, low, high, close, jump, percent, up_down = [], [], [], [], [], [], [], []
    for i in df[['股票代码', '最低价', '最高价_y', '收盘价', '股票名称', '涨跌幅']].values:
        try:
            temp_low, temp_high = eval(i[1]), eval(i[2])
        except SyntaxError:
            continue
        if temp_low > temp_high:
            print(i)
            jump.append(1)
            percent.append(round((temp_low - temp_high) * 100 / temp_high, 2))
            code_list.append(i[0])
            low.append(temp_low)
            high.append(temp_high)
            close.append(i[3])
            name.append(i[4])
            up_down.append(i[5])

    data = {'日期': [date] * len(low), '股票代码': code_list, '股票名称': name, '收盘价': close, '今日涨跌幅': up_down,
            '最低价': low, '昨日最高价': high, '跳空幅度': percent}
    save_data(data=data, file_name=f'./跳空数据/{date}-跳空个股')
    os.remove('./跳空数据/temp.csv')

回复“跳空”即可获取全部数据及代码

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值