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

股票打板策略分析_打板选股技巧股票打板策略分析这里我们只分析一件事情,就是如何打板才能最大概率赚到钱,就是我们可以分析过去一天涨停今天还涨停、分析过去两天涨停今天涨的概率,一直到过去10天涨停今天涨的概率,其实很多人都喜欢打板,但是可能大家都没分析过打板的胜率。前面我们已经可以筛选出截止到特定日期的过去10天中的连续涨停了,这里我们只需要将所有日期过去10日的连续涨停计算出来就可以作为我们的数据源,然后计算统计个数算分布就可以了,至于如何计算连续涨停可以参考股票数据分析计算历史数据的涨停情况我们今天的打板分析,是在昨天的基础上,

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

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

股票打板策略分析

这里我们只分析一件事情,就是如何打板才能最大概率赚到钱,就是我们可以分析过去一天涨停今天还涨停、分析过去两天涨停今天涨的概率,一直到过去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}")
  }

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

这个代码主要是我们以前讲的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连板之后买入涨停的概率最大,所以打板的小伙伴们,不要在打三连板了,网上很多大佬告诉你打三连板,哈哈!

总结

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

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 2020美赛C题解题思路(A Wealth of Data)[通俗易懂]

    2020美赛C题解题思路(A Wealth of Data)[通俗易懂](占个坑,B题已写完并发布,现正写C题)《数学建模想获奖?国赛、美赛看这一个就够了》——数学建模的进阶指南!内容全面、门类齐全,包含组队、日常训练、算法(含MATLAB代码)、建模、写作和“高校内部培训资源”等诸多方面的指导!千载难逢、不容错过!——有条件的朋友们支持一下,谢谢!需要“数学建模国赛美赛资源包”的关注公众号“猫和真人”,回复“1”即可获得资源包,有条件的支持一下哈!…

    2022年4月29日
    49
  • Json交互处理_stata交互项检验

    Json交互处理_stata交互项检验Json交互处理JSON简介JSON(JavaScriptObjectNotation,JS对象标记)是一种轻量级的数据交换格式,目前使用特别广泛。采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。在JavaScript语言中,一切都是对象。因此,任何JavaScript支持的类型都可以通过JSON来表示,例如字符串、数字、对象、数组等。看看他

    2022年10月15日
    3
  • LED亮度调节原理

    LED亮度调节原理近年来Light-emittingdiode(LED)被广泛用于照明行业,相较于其他光源,LED具有诸多优势:光效高、寿命长、色温变化小、动态响应快、体积小等。那么如何才能设计出合理的灯具呢,我来给大家罗列一下LED的主要特性。一.发光原理当电流被注入到半导体的PN结时,原子中低能级的电子吸收能量从基态被激发到较高能级,这个能级我们称之为激发态。而激发态的寿命是短暂的,他十…

    2022年6月9日
    65
  • java 关键字小结

    java 关键字小结1 this 和 super 一个类在使用 this 时调用的是此类中的数据变量和方法 使用 super 时是调用的父类中的变量和方法 父类 publicclassK publicString father publicKeyWor System out print 父类构造 1this thi

    2025年11月2日
    4
  • Jenkins(3)拉取git仓库代码,执行python自动化脚本「建议收藏」

    Jenkins(3)拉取git仓库代码,执行python自动化脚本「建议收藏」前言python自动化的脚本开发完成后需提交到git代码仓库,接下来就是用Jenkins拉取代码去构建自动化代码了新建项目打开Jenkins新建一个自由风格的项目源码管理Repository

    2022年7月31日
    7
  • Java实现完美洗牌算法

    1问题描述有一个长度为2n的数组{a1,a2,a3,…,an,b1,b2,b3,…,bn},希望排序后变成{a1,b1,a2,b2,a3,b3,…,an,bn},请考虑有没有时间复杂度为O(n)而空间复杂度为O(1)的解法。2解决方案2.1位置置换算法下面算法的时间复杂度为O(n),空间复杂度为O(n)。packagecom.liuzhen.practice;publiccl…

    2022年4月7日
    57

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号