Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >股票打板策略分析_打板选股技巧

股票打板策略分析_打板选股技巧

作者头像
全栈程序员站长
发布于 2022-11-01 03:07:03
发布于 2022-11-01 03:07:03
75500
代码可运行
举报
运行总次数:0
代码可运行

股票打板策略分析

这里我们只分析一件事情,就是如何打板才能最大概率赚到钱,就是我们可以分析过去一天涨停今天还涨停、分析过去两天涨停今天涨的概率,一直到过去10天涨停今天涨的概率,其实很多人都喜欢打板,但是可能大家都没分析过打板的胜率。

前面我们已经可以筛选出截止到特定日期的过去10天中的连续涨停了,这里我们只需要将所有日期过去10日的连续涨停计算出来就可以作为我们的数据源,然后计算统计个数算分布就可以了,至于如何计算连续涨停可以参考股票数据分析

计算历史数据的涨停情况

我们今天的打板分析,是在昨天的基础上,这里我们真的是需要一个for 循环了,循环所有日期

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def main(args: Array[String]): Unit = { 

val data=spark
.read
.option("header", true)
.csv(path)
.select("ts_code","trade_date","open","high","low","close","pre_close","change","pct_chg","vol","amount")
// close 收盘价 pre_close 昨收价 change 涨跌额 pct_chg 涨跌幅 vol 成交量 (手) amount 成交额 (千元)
data.createOrReplaceTempView("trade")
val stocks=spark
.read
.option("header", true)
.csv(stocksPath)
stocks.createOrReplaceTempView("stocks")
val dates=spark
.read
.option("header", true)
.csv(datesPath)
dates.createOrReplaceTempView("dates")
val start=LocalDate.of(2018,1,1)
val loop = new Breaks;
val pattern=DateTimeFormatter.ofPattern("yyyyMMdd")
// 循环的日期
loop.breakable{ 

for(i<- 1 to 2000){ 

val lastDate = start.plusDays(i).format(pattern)
val startDate=LocalDate.parse(lastDate,pattern).plusDays(-30).format(pattern)
lastContinueDays(lastDate,startDate)
if(lastDate.equals("20211104")){ 

loop.break
}
}
}
}
// 算出截止lastDate过去10天内,连续涨停的情况
def lastContinueDays(lastDate:String,startDate:String): Unit ={ 

println(s"业务时间: '${startDate}' '${lastDate}'")
// 首先选出涨停的票
sql(
s""" |select | ts_code,trade_date,$lastDate as end_date |from( | select | ts_code,trade_date,open,high,low,close,pre_close,change,pct_chg,vol,amount,row_number() over(partition by ts_code order by trade_date desc) as rn | from | trade | where | -- 时间要换掉 大致的过滤条件 | trade_date>='${startDate}' | and trade_date<='${lastDate}' |)tmp |where | -- 过去10条记录(这里注意一下不一定是过去10天的) | rn<=10 | -- 涨停的数据 | and pct_chg>=9.8 |""".stripMargin
).createOrReplaceTempView("zhangting")
sql(
""" |select | ts_code,trade_date,end_date,zt_cnt |from( | select | ts_code, | trade_date, | end_date, | zt_cnt, | row_number()over(partition by ts_code order by zt_cnt desc) as rn | -- 筛选出 zt_cnt最大的记录 | from( | select | a.ts_code, | a.trade_date, | a.end_date, | count(distinct b.trade_date) as zt_cnt | from | zhangting a | left join | zhangting b | on | a.ts_code=b.ts_code | and a.trade_date<=b.trade_date | and a.end_date>=b.trade_date | left join | dates dates | on | dates.cal_date>=a.trade_date | and dates.cal_date<=a.end_date | -- 是否是交易日 | and dates.is_open=1 | group by | a.ts_code,a.trade_date,a.end_date | having | count(distinct b.trade_date)=count(distinct dates.cal_date) | )t |)t |where | rn=1 |order by | zt_cnt |""".stripMargin
)
.write
.format("parquet")
.mode(SaveMode.Overwrite)
.save(s"/Users/gemii/Desktop/data/day=${lastDate}")
}

Jetbrains全家桶1年46,售后保障稳定

这个代码主要是我们以前讲的SQL,今天的话主要是配合了for循环,唯一要注意的是我们s"/Users/gemii/Desktop/data/day=${lastDate}" 这个路径,文件的命名方式是分区的处理,后面在读取的时候spark 就可以分区感知,自动读取,否则的话比较麻烦,效果如下

这里有一个地方要注意一下,那就是你可以打开某一天的文件夹,你会发现下面有很多小文件

其实这里我们知道我们每一天的数据量其实很小,所以我们可以针对这些小文件做一下处理,就是在DataFrame 写出的时候调用一下,repartition 或者coalesce 方法,最后的效果如下

分析涨停的分布情况

上面我们统计出了截止每一天的过去10天的连续涨停数据,接下来我们就统计一下涨停的分布,首先我们先看一下我们的数据

这里我们的end_date就是我们的业务日期,day是分区信息,所以end_date和day是相等的,zt_cnt是连续涨停的天数,1 就代表只有end_date那天是涨停的

我们想算的是在n连涨的情况下n+1 连涨的概率,我们只需要统计出n连涨的个数和n+1连涨的个数即可。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  def daBan(): Unit ={ 

val data=spark
.read
.parquet("/Users/gemii/Desktop/data")
data.createOrReplaceTempView("daban")
sql(
""" |select | zt_cnt, | cnt, | concat(cast(round(cnt/lag(cnt)over(order by zt_cnt)*100,2) as string),"%") rate |from( | select | zt_cnt, | count(ts_code) as cnt | from | daban | group by | zt_cnt |) |order by | zt_cnt |""".stripMargin
).show(2000,false)
}

计算结果

我们可以看到在8连板之后买入涨停的概率最大,所以打板的小伙伴们,不要在打三连板了,网上很多大佬告诉你打三连板,哈哈!

总结

股市有风险,入市需谨慎,学习无限好,从此自由活

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/198377.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年10月21日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
如何从tushare获取股票历史数据写入自己的MySQL数据库[通俗易懂]
大家好,又见面了,我是你们的朋友全栈君。 如何从tushare获取股票历史数据写入自己的MySQL数据库 点击 https://tushare.pro/register?reg=414428 ,
全栈程序员站长
2022/09/12
8.5K0
如何从tushare获取股票历史数据写入自己的MySQL数据库[通俗易懂]
个人量化投资体系搭建(一)
作为一名技术人员利用量化交易来进行投资,才能让自己更理智的面对动荡不安的A股。如何建立起一个成熟的投资策略,是非常重要的,关键时刻也许可以让我们避免被割。
zucchiniy
2020/09/23
1.8K0
【手把手教你】搭建自己的量化分析数据库
数据是金融量化分析的重要基础,包括股票历史交易数据、上市公司基本面数据、宏观和行业数据等。随着信息流量的日益膨胀,学会获取、查询和加工数据信息变得越来越重要。对于鼓捣量化交易的人来说,怎么能说不会玩数据库呢?目前常用的开源(免费)数据库有MySQL、Postgresql 、Mongodb 和 SQLite (Python自带),在2018-2019年DB-Engines 排行榜上位居前十(见下图),可见其使用量和受欢迎程度较高。这几个数据库各有自己的特点和适用环境,关于该学习哪一个或如何学习网上有很多相关资料。本文主要为大家简单介绍如何使用 Python 操作 Postgresql 数据库(其他数据库类似),利用 psycopg2 和 sqlalchemy 实现 postgresql 与 pandas 的 dataframe 进行交互,一步步搭建自己的量化分析数据库。
Python进阶者
2019/05/27
3.7K0
量化交易数据获取:tushare基本介绍和基本操作
TOC 基本介绍 官网:https://waditu.com/ [SwVUbXt5eRv2FMJ] [skaVu1BHyt8XKjp]平台介绍 沪深股票数据是Tushare最传统最有历史的数据服务项目,从一开始就为广大的投资者,尤其是量化投资者提供了稳定、便捷的接口。Tushare Pro版在继承了旧版API的便捷易用性的同时又加强了数据的广度和深度。最为关键的是,数据来源和采集方式也发生了根本的变化,除了公开渠道的数据源,最关键性的变化是Tushare构建起来了自有的数据存储和数据治理体系,同时依托平台化
AI拉呱
2021/02/18
1.6K0
python 获取股票数据 tushare使用
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
多凡
2019/11/01
2.1K0
字节百度大数据面试SQL-股票波峰波谷
有如下数据,记录每天每只股票的收盘价格,请查出每只股票的波峰和波谷的日期和价格; 波峰:股票价格高于前一天和后一天价格时为波峰 波谷:股票价格低于前一天和后一天价格是为波谷
数据仓库晨曦
2024/05/27
1820
字节百度大数据面试SQL-股票波峰波谷
python 计算走势角度
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
多凡
2019/11/01
1.3K0
SQL总结大厂真题-波峰波谷
需要比较当天价格与前一天、后一天的价格进行比较,常规想法为进行关联,股票ID相等、日期为当天日期减1,为前一天价格,日期为当天价格加1,为后一天价格,然后进行计算;简化方法为使用lag和lead函数,可以避免进行表关联;
数据仓库晨曦
2024/01/08
3600
SQL总结大厂真题-波峰波谷
如何获取沪深股市历史数据并入库
作为一个技术男,一开始总想着怎么去爬数据。然而一旦发现有免费的数据接口时,瞬间感觉爬来的不香了。。。
全栈程序员站长
2022/09/12
9960
如何获取沪深股市历史数据并入库
Excel 后,我们需要怎样的数据分析软件
在现代商业环境中,数据分析已成为企业决策的重要工具。通过数据分析,企业可以更好地了解市场趋势、客户行为以及内部运营情况,从而制定出更科学的策略,提高竞争力。然而,数据分析并不是一项简单的任务,需要选择合适的工具和方法。
朱迪
2025/03/18
920
专题研究|量化交易怎么少得了数据库管理!来看一款Python内置的数据库
Python 进行数据分析和价值挖掘是当前炙手可热的技术领域,如何高效地管理大量数据是其中非常关键的环节。数据库是最佳的解决方案之一,目前流行的数据库有Oracle、MySQL、MongoDB、Redis、SQLite……关于数据库的选型通常取决于性能、数据完整性以及应用方面的需求。
数据科学实战
2020/05/07
2.3K0
专题研究|量化交易怎么少得了数据库管理!来看一款Python内置的数据库
最简洁的Python时间序列可视化:数据科学分析价格趋势,预测价格,探索价格
时间序列数据在数据科学领域无处不在,在量化金融领域也十分常见,可以用于分析价格趋势,预测价格,探索价格行为等。
一墨编程学习
2019/07/18
6.3K1
最简洁的Python时间序列可视化:数据科学分析价格趋势,预测价格,探索价格
获取A股行情数据方法[通俗易懂]
做股票量化分析,获取股票行情数据是第一步,结合网上的信息,和我用过的一些东西,做个总结。以后有新信息,逐步完善。
全栈程序员站长
2022/07/25
9.5K0
用GPT和机器学习炒股?附代码
在机器学习领域,监督学习是一种很重要的学习模式。它指的是我们在数据有正确标签的情况下建立模型,并通过这一正确标签让模型进行自我修正,使其预测结果不断地朝着正确的方向迈进。
Ai学习的老章
2023/11/28
6520
用GPT和机器学习炒股?附代码
时间序列基于监督学习的LSTM模型为什么可以预测股票走势(附完整代码)
疫情期间,在家学习Python,调通了基于监督学习的LSTM神经网络预测模型代码,在一般代码的基础上,做了单步和多步通用版的改进。调通的代码附后,供各位大咖指正。
用户7017302
2020/03/01
4K0
Python——量化分析介绍(九)
从第三方获取到的数据,其实有挺多内容要自己填充完善的,比如股票停牌日的信息,要知道停牌日的个股信息是空的,如刚好持仓股遇到停牌,是无法交易的,计算持仓市值时,停牌日没有信息会报错算不出该股当日数据(因为股价信息都是空白的),于是就需要参考停牌前交易日的数据,填充到停牌日中。另外,还有复权因子的计算,比如持仓股刚好遇到除权除息,如未进行相应的换算,持仓值会出现错误。
Ed_Frey
2019/08/09
6590
SQL总结大厂真题-满足连续5天以上每天上涨超过5%的股票
现有一张股票价格表stock_data有3个字段分别是股票代码(stock_code),日期(trade_date),收盘价格(closing_price) ,请找出满足连续5天以上(含)每天上涨超过5%的股票,并给出连续满足天数及开始和结束日期。
数据仓库晨曦
2024/01/08
4090
SQL总结大厂真题-满足连续5天以上每天上涨超过5%的股票
腾讯大数据面试SQL-连续5天涨幅超过5%的股票
现有一张股票价格表stock_data有3个字段分别是股票代码(stock_code),日期(trade_date),收盘价格(closing_price) ,请找出满足连续5天以上(含)每天上涨超过5%的股票,并给出连续满足天数及开始和结束日期。备注:不考虑停牌或其他情况,仅仅关注每天连续5天上涨超过5%的股票。
数据仓库晨曦
2024/06/27
1780
腾讯大数据面试SQL-连续5天涨幅超过5%的股票
Plotly中绘制三种经典的股票交易图表(含视频讲解)
今天 Lemon 来详细的分享下,这类图如何绘制,一共会讲解 3 类图形,分别是 面积曲线图、蜡烛图、OHLC图。这三种类型的图在投资中会经常遇到。
周萝卜
2021/04/02
3.2K0
Plotly中绘制三种经典的股票交易图表(含视频讲解)
用python可以做哪些有趣的事--我:选股票
最近炒股是买什么就跌,一直是亏损哎,哭,作为学过python的人来讲怎么能容忍,之前也炒过股票觉得用阳包阴这样的k线来选出来的股票还不错。于是说做就做,我可以用python来写一个选股的程序。
公众号---人生代码
2019/09/24
3.4K0
用python可以做哪些有趣的事--我:选股票
推荐阅读
相关推荐
如何从tushare获取股票历史数据写入自己的MySQL数据库[通俗易懂]
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验