股票打板策略分析

股票打板策略分析

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

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

计算历史数据的涨停情况

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

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}")}

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

image-20211105145332352

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

image-20211105145450703

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

image-20211105145708764

分析涨停的分布情况

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

image-20211105152823303

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

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

  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)}

计算结果

image-20211105171449714

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

总结

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

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

我的股票交易策略

投资股市已经成为我们进行资产配置的一个重要选择。在这个市场中主流的投资方式无外乎 价值投资 和 趋势投资 两种。价值投资需要了解各种财务指标来评价各支股票&#xff0c;在被市场低估时买入&#xff0c;在被市场高估时卖出。这对于非财务背景的人来说门槛偏高。趋势投资需…

【汇正财经】沪深创集体收涨

盘面回顾&#xff1a; 今日沪深创午盘均有反弹&#xff0c;收盘沪指涨0.54%&#xff0c;深成指涨0.02%&#xff0c;创业板指涨0.16%。中字头板块集中走强&#xff1b;午后银行板块领涨大金融&#xff0c;助力大盘V型反弹&#xff1b;ChatGPT、算力概念股午后跌幅收窄&#xff…

快讯|山东大学仿生两栖软体机器人; 男子用 ChatGPT 编假新闻赚流量牟利,被警方采取刑事强制措施

一分钟速览新闻点 男子用 ChatGPT 编假新闻赚流量牟利&#xff0c;被警方采取刑事强制措施山东大学仿生两栖软体机器人中国科研团队让机器人通过“看一看”“摸一摸”识别地形OpenAI 不再使用 API 客户数据训练 ChatGPT高通芯片被发现用于收集和传输用户信息&#xff0c;全球约…

巴比特 | 元宇宙每日必读:微软将于下周发布大语言模型GPT-4,多模态成为最大亮点,专家称可为大客户每天节省 500 个工时...

摘要&#xff1a;据德国新闻媒体 Heise 报道&#xff0c;微软德国公司首席技术官 Andreas Braun 在一场活动中宣布GPT-4 将在下周发布&#xff0c;拥有多模态&#xff08;multimodal&#xff09;模型将提供完全不同的可能性。多模态 AI不仅可以将文本相应地翻译成图像&#xff…

提高AI算力,异构优化也是关键

近期&#xff0c;劲爆亮相的ChatGPT着实让人们眼前一亮&#xff0c;让普罗大众也“亲密”体验了人工智能&#xff08;AI&#xff09;的神奇魔力&#xff0c;窥见了智能未来的璀璨前景之一斑。 然而&#xff0c;就在这离生活愈来愈近的AI让人们对未来充满无限憧憬、满怀激动的同…

朱啸虎:ChatGPT对创业公司很不友好,未来两三年内请大家放弃融资幻想

来源&#xff1a;i黑马 作者&#xff1a;朱啸虎 创业家&i黑⻢讯 3月19日&#xff0c;“2023黑马产业大会”在北京举行。本次大会主题为“产业新力量”&#xff0c;来自北京怀柔、四川绵阳、江苏南京、重庆、山东青岛、山东威海、广东佛山等7个产业城市和园区的政府代表&a…

ChatGPT —— Pycharm插件NexChatGPT ,好用好用

废话不多说直接教程吧 文件 -> 设置&#xff08;Settings&#xff09; -> 插件 应用后&#xff0c;右侧边栏会有使用的边框&#xff0c;部分功能如下&#xff1a; 还可以在框内提问&#xff0c;方便~&#xff1a;

解决:keeps stopping(停止运行)

今天在写Android的时候&#xff0c;本来要写一个关于线程的。正常应该是这样的&#xff1a; 可是&#xff0c;在敲完代码后&#xff0c;运行…… 对于这个问题&#xff0c;网上有很杂&#xff0c;最后不得不去问老师&#xff0c;最后&#xff0c;解决。步骤分享如下&#xff1a…

Linux 解决终端关闭后应用程序停止运行

使用screen命令&#xff0c;使用方法如下&#xff1a; 首先执行screen&#xff0c;按任意键进入界面内 在界面内执行程序&#xff0c;若是想在后台保持程序的运行&#xff0c;先按ctrla然后按d 此时便退回了主界面&#xff0c;此时便可以关闭终端 用screen –ls可以查看目前子界…

chatgpt赋能python:如何让Python停止运行

如何让Python停止运行 Python是一种高级编程语言&#xff0c;常用于开发Web应用、数据分析和机器学习等领域。然而&#xff0c;在编写Python代码时&#xff0c;我们难免会遇到程序无限循环、阻塞或出现错误等情况&#xff0c;导致程序无法正常结束。本文将介绍如何让Python停止…

chatgpt赋能python:Python中如何停止运行程序

Python中如何停止运行程序 Python 是一种功能丰富、灵活的编程语言&#xff0c;但有时候你需要停止运行你的程序&#xff0c;无论是因为出现了错误&#xff0c;或者因为完成了你想要的任务。在本文中&#xff0c;我们将介绍 Python 中停止运行程序的几种方法&#xff0c;以及对…

华为平板和手表?我全都要!2021最强ICT人答题挑战赛正式开始!

专属于新生代ICT人的夏末福利 「最强ICT人答题挑战赛」 2021排位赛来啦&#xff01; 朋友们&#xff0c;是时候展示真正的技术了&#xff01; ✨奖品丰厚&#xff0c;越早参与&#xff0c;赢的概率越高✨ 本次挑战赛共分为5个关卡&#xff0c;每个关卡都设置有不同的奖品&#…

华为手表开发:WATCH 3 Pro(13)websocket 请求数据到服务器

华为手表开发&#xff1a;WATCH 3 Pro&#xff08;13&#xff09;websocket 请求数据到服务器 初环境与设备文件夹&#xff1a;文件 重点核心代码&#xff1a;app.js新增一个文本输入框index.hmlindex.cssindex.js 初 希望能写一些简单的教程和案例分享给需要的人 鸿蒙可穿戴…

华为手表微信排行榜服务器繁忙,华为watch3微信消息-华为watch3可以回微信消息吗...

华为watch3是首款搭载了鸿蒙系统的智能手表&#xff0c;带给用户更加多的功能体验&#xff0c;智能享受!那么这款华为watch3关于微信消息的功能大家都清楚吗!今天小编就为大家介绍这款华为watch3的微信消息回复功能!帮助大家看看这款华为watch3有没有微信回复功能!好奇的用户一…

华为正式出售荣耀;圆通回应内鬼致 40 万条个人信息泄露;Spring Boot 2.3.6 发布|极客头条...

整理 | 郑丽媛 头图 | CSDN 下载自东方 IC 快来收听极客头条音频版吧&#xff0c;智能播报由出门问问「魔音工坊」提供技术支持。 「极客头条」—— 技术人员的新闻圈&#xff01; CSDN 的读者朋友们早上好哇&#xff0c;「极客头条」来啦&#xff0c;快来看今天都有哪些值得我…

戴森

著名数学家弗里曼戴森的演讲译文&#xff1a;鸟和青蛙 编辑按&#xff1a; 弗里曼•戴森 &#xff08;Freeman Dyson&#xff09;1923年12月15日出生&#xff0c;美籍英裔数学物理学家&#xff0c;普林斯顿高等研究院自然科学学院荣誉退休教授。 戴森早年在剑桥大学追随著名的数…

链表(上)

链表&#xff08;上&#xff09; (数据结构与算法) 链表的经典应用场景&#xff1a; LRU 缓存淘汰算法。 缓存是一种提高数据读取性能的计数&#xff0c;如常见的&#xff1a;CPU 缓存&#xff0c;数据库缓存&#xff0c;浏览器缓存等。 缓存的大小有限&#xff0c;当缓存被用满…

ogc是一个非营利性组织_非营利组织的21个最佳WordPress主题

ogc是一个非营利性组织 Are you looking for the best WordPress themes for nonprofits? 您是否在寻找非营利组织的最佳WordPress主题&#xff1f; Charity and nonprofit websites require an appealing presentation with the right tools to achieve their donation goal…

橡皮擦的英语_小朋友们知道“橡皮擦”用英语该怎么说吗?

点击上面“蓝字”关注我们&#xff01; 小朋友们知道橡皮擦用英语该怎么说吗&#xff1f; 和老师一起学起来吧~ eraser 英 [ɪˈreɪzə(r)] 美 [ɪˈreɪsər] n.橡皮擦;黑板擦 复数&#xff1a;erasers 小朋友们都知道橡皮擦是我们常用的文具&#xff0c; 那小朋友们还知道哪…

测试用例方法-等价类划分

一、等价类划分 例&#xff1a;测试一个两位数的加法计算器 测试需求&#xff1a;测试两个参数值的相加后的结果是否正确 隐身需求&#xff1a;输入的数值在-99到99之间&#xff0c;大于99或小于-99输入应被拒绝&#xff0c;并显示错误信息 第一步&#xff1a;根据测试需求&am…