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