zoukankan      html  css  js  c++  java
  • 一.【股票】通过交易数据通过代码判断股票是否涨停

    这里所说的涨停是指通过每天前收盘价,当日收盘价来判断,当然,如果打开股票交易软件一个个看那是一目了然了,但现在我们是大数据时代,目前国内A股4000多只股票,批量数据操作,人工去看做登记还是挺费时间的。

    如果是前几年,创业板还是10%涨停,也没有科创板,所有股票都是10%涨停那就很好判断了。说是10%,但股票实际上精确到分,所以10%的涨停,往往无法取整。

    说到这里有可能有人会问这个判断意义何在?如果有此疑问,就需要慢慢读一读我下面的文章了。

    目前,有个开放的系统可以直接导出这些数据,但使用几天后发现这个是要收费了,仅是提供几天的免费使用时间,如果想继续使用,需要交年费(还是基础版)。本着“以经济建设为中心,坚持四项基本原则”。

    咱们还是尽量使用节能环保。再想想,一天就能赚几K。也是挺开心的。自已动手吧。。。

    第一步:定义股票市场类型 

    public enum MarketType
        {
            /// <summary>
            /// 未知
            /// </summary>
            [ListItem(0, "未知")]
            Unknow = 0,
            /// <summary>
            /// 上证
            /// </summary>
            [ListItem(1,"上证")]
            SH = 1,
            /// <summary>
            /// 深证
            /// </summary>
            [ListItem(2, "深证")]
            SZ = 2,
            /// <summary>
            /// 创业
            /// </summary>
            [ListItem(3, "创业")]
            CY = 3,
            /// <summary>
            /// 科创
            /// </summary>
            [ListItem(4, "科创")]
            KC = 4,
            /// <summary>
            /// 北京
            /// </summary>
            [ListItem(5, "北京")]
            BJ = 5,
            /// <summary>
            /// 香港
            /// </summary>
            [ListItem(6, "香港")]
            HK = 6
        }
    public class ListItemAttribute : Attribute
        {
            public string Text { get; set; }
            public string Text2 { get; set; }
            public int Value { get; set; }
            public ListItemAttribute(int value, string text)
            {
                Value = value;
                Text = text;
            }
    
            public ListItemAttribute(int value, string text, string text2) : this(value, text)
            {
                Text2 = text2;
            }
        }    
        /// <summary>
        /// 涨跌停类型
        /// </summary>
        public enum ZDT
        {
            /// <summary>
            /// 未知
            /// </summary>
            None = 0,
            /// <summary>
            /// 涨停
            /// </summary>
            HighLimit=1,
            /// <summary>
            /// 跌停
            /// </summary>
            LowLimit = 2
        }

    第二步 主要判断代码

        public class StockHelper
        {
            /// <summary>
            /// 判断股票是否涨停
            /// </summary>
            /// <param name="code">股票代码 如300065</param>
            /// <param name="preClosePrice">前收盘价</param>
            /// <param name="closePrice">添天收盘价</param>
            /// <returns></returns>
            public ZDT IsHighLimit(string code, float preClosePrice,float closePrice)
            {
                var type = GetMarketType(code);
                var result = ZDT.None;
                var hprice = 0d;
                var lprice = 0d;
                switch (type)
                {
                    case MarketType.CY:
                    case MarketType.KC:
                        hprice = Math.Round(preClosePrice * (1 + 0.20),2);
                        lprice = Math.Round(preClosePrice * (1 - 0.20),2);
                        if (hprice == closePrice)
                        {
                            result =  ZDT.HighLimit;
                        }
                        else if(lprice==closePrice)
                        {
                            result = ZDT.LowLimit;
                        }                        
                        else
                        {
                            result = ZDT.None;
                        }
                        break;
                    case MarketType.SH:
                    case MarketType.SZ:
                        hprice = Math.Round(preClosePrice * (1 + 0.10), 2);
                        lprice = Math.Round(preClosePrice * (1 - 0.10), 2);
                        if (hprice == closePrice)
                        {
                            result = ZDT.HighLimit;
                        }
                        else if (lprice == closePrice)
                        {
                            result = ZDT.LowLimit;
                        }
                        else
                        {
                            result = ZDT.None;
                        }
                        break;
                }
                return result;
            }
    
            /// <summary>
            /// 获取市场类型
            /// </summary>
            /// <param name="code">股票代码 如300065</param>
            /// <returns></returns>
            public static MarketType GetMarketType(string code)
            {
                var type = MarketType.Unknow;
                if (code.StartsWith("30"))
                {
                    type = MarketType.CY;
                }
                else if (code.StartsWith("60"))
                {
                    type = MarketType.SH;
                }
                else if (code.StartsWith("68"))
                {
                    type = MarketType.KC;
                }
                else if (code.StartsWith("00"))
                {
                    type = MarketType.SZ;
                }
                else
                {
                    type = MarketType.Unknow;
                }
                return type;
            }
        }

    本节代码比较简单,咱们就从简单的开始吧。。。

    本软件开始编码,还没正常运行调试,bug在所难免,还请多多指教。。。

  • 相关阅读:
    hive函数之~字符串函数
    hive函数之~条件函数
    JSONP使用及注意事项小结
    css命名管理混乱?不妨试试BEM
    【移动端debug-6】如何做一个App里的web调试小工具
    ES6学习笔记(五):Class和Module
    ES6学习笔记(三):与迭代相关的新东东
    ES6学习笔记(四):异步操作
    ES6学习笔记(二):引用数据类型
    CORS跨域资源共享简述
  • 原文地址:https://www.cnblogs.com/Sofeng/p/15463088.html
Copyright © 2011-2022 走看看