一.【股票】通过交易数据通过代码判断股票是否涨停

这里所说的涨停是指通过每天前收盘价,当日收盘价来判断,当然,如果打开股票交易软件一个个看那是一目了然了,但现在我们是大数据时代,目前国内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在所难免,还请多多指教。。。

posted @ 2021-10-25 20:49  Sofeng  阅读(499)  评论(0编辑  收藏  举报
青丰科技网址:www.QinSoft.cn