一.【股票】通過交易數據通過代碼判斷股票是否漲停


這里所說的漲停是指通過每天前收盤價,當日收盤價來判斷,當然,如果打開股票交易軟件一個個看那是一目了然了,但現在我們是大數據時代,目前國內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在所難免,還請多多指教。。。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM