
获取股票相关数据
基础数据包括:股票名称,当前涨跌幅,最高价,最低价,成交量
这边在网上搜索了一个免费的接口:
http://api.money.126.net/data/feed/{},money.api
用postman测试了一下,数据结构大约是这样的,截个图出来给大家瞅瞅

2.开干
main入口函数代码
import jsonimport requestsimport refrom models.nettick import NetTickclass NetEaseData:@staticmethoddef get_realtime_data(symbol):"""网易的实时数据接口:param symbol: 股票代码:return: Tick"""code = NetEaseData.convert_market(symbol)try:response = requests.get("http://api.money.126.net/data/feed/{},money.api".format(code)).textre_find = NetEaseData.__re_find(response)if re_find is not None:find_stock = re_find.get(code)if find_stock is not None:return NetTick(find_stock)except Exception as e:print('请求网易接口出错,错误信息:{}'.format(e))return None@staticmethoddef convert_market(other_market_code=str):"""转换通用股票代码 sz sh bj开头+股票代码"""if other_market_code[0:2].lower() == 'sh':return '0' + other_market_code[2:]elif other_market_code[0:2].lower() == 'sz':return '1' + other_market_code[2:]else:return '2' + other_market_code[2:]@staticmethoddef get_realtime_datas(symbols=[]):"""网易的实时数据接口:param symbols: 股票代码列表:return: Ticks列表"""codes = [NetEaseData.convert_market(code) for code in symbols]result = []try:response = requests.get("http://api.money.126.net/data/feed/{},money.api".format(','.join(codes))).textre_find = NetEaseData.__re_find(response)if re_find is not None:for code in re_find:item = re_find[code]result.append(NetTick(item))except Exception as e:print('请求网易接口出错,错误信息:{}'.format(e))return result@staticmethoddef __re_find(response):find = re.findall(r"_ntes_quote_callback\((.*)\);", response)if len(find) >= 1:return json.loads(find[-1])return Noneif __name__ == '__main__':ticks = NetEaseData.get_realtime_datas(['sz002665', 'sz002761', 'sh512710', 'sz000625', 'sh513130', 'sh512170', 'sz159995','sz002425', 'sz002051', 'sz000665', 'sz000560', 'sh600166', 'sh600715', 'sh603363'])# up_shares = []# down_shares = []for tick in ticks:if tick.percent > 0:print(f"{tick.name}【{tick.symbol}】", tick.price,"<font color='red'>%.2f" % (tick.percent * 100) + "%</font>",f"最低价:{tick.low},最高价:{tick.high}", f"成交量:{tick.volume 1000000}万")else:print(f"{tick.name}【{tick.symbol}】", tick.price,"<font color='info'>%.2f" % (tick.percent * 100) + "%</font>",f"最低价:{tick.low},最高价:{tick.high}", f"成交量:{tick.volume 1000000}万")
class NetTick:def __init__(self, dict={}):self.name = dict.get('name') # 股票名称self.yestclose = dict.get('yestclose') # 昨日收盘价self.bidvol5 = dict.get('bidvol5') # 买5数量self.bidvol4 = dict.get('bidvol4') # 买4数量self.bidvol3 = dict.get('bidvol3') # 买3数量self.bidvol2 = dict.get('bidvol2') # 买2数量self.bidvol1 = dict.get('bidvol1') # 买1数量self.bid5 = dict.get('bid5') # 买5价格self.bid4 = dict.get('bid4') # 买4价格self.bid3 = dict.get('bid3') # 买3价格self.bid2 = dict.get('bid2') # 买2价格self.bid1 = dict.get('bid1') # 买1价格self.askvol5 = dict.get('askvol5') # 卖5数量self.askvol4 = dict.get('askvol4') # 卖4数量self.askvol3 = dict.get('askvol3') # 卖3数量self.askvol2 = dict.get('askvol2') # 卖2数量self.askvol1 = dict.get('askvol1') # 卖1数量self.ask5 = dict.get('ask5') # 卖5价格self.ask4 = dict.get('ask4') # 卖4价格self.ask3 = dict.get('ask3') # 卖3价格self.ask2 = dict.get('ask2') # 卖2价格self.ask1 = dict.get('ask1') # 卖1价格self.symbol = dict.get('symbol') # 股票代码 第一位1:深交所 0:上交所 2北交所self.volume = dict.get('volume') # 成交量self.price = dict.get('price') # 当前价格self.open = dict.get('open') # 开盘价self.low = dict.get('low') # 最低价self.high = dict.get('high') # 最高价self.code = dict.get('code') # 去除标记为的股票代码self.turnover = dict.get('turnover') # 成交额self.percent = dict.get('percent') # 涨跌幅self.updown = dict.get('updown') # 涨跌金额
接下来直接用python run主文件就可以
3 .定时任务配置
任务配置如下:

wehook配置:

这里的url是通过企业微信拉三个人进群,添加群机器人,然后踢掉另外两人即可,支持markdown模式,这里贴出详细的配置
{"msgtype": "markdown","markdown": {"content": "任务【{{.TaskName}}】执行{{.Status}},\n结果:{{.Result}}"}}
todo
现在的股票代码是手动写的,后期可计入数据库;
未同步持仓信息,后期可以考虑加入持仓信息,计算实时收益;
后期可加入加仓逻辑和减仓逻辑,方便提醒操作;
大家有什么好的想法或者建议,欢迎私信,也是想研究一下量化投资的开始,大家一起make-money
如果大家想要源码也可以私我
欢迎关注程序猿韩三皮公众号,我们一起用技术挣钱

文章转载自程序猿韩三皮,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




