一、项目背景
股市谚语:早上大跌可加仓,早上大涨要减仓,下午大涨只减仓,下午大跌次日买,早上下跌不卖票,逢低加仓T+0,下午拉高不追涨,逢高减仓T+1,上午拉高看十点,下午拉高看二点,股票卖在最高点,股若强势十点封,股若不强二点封,控制仓位不侥幸,滚动操作是上策。
参考朋友做短期的建议 ,尝试制作股市监视器,希望能在上班时间 ,股市摸鱼;下班回家,幸福喝汤 。
郑重提示:股市有风险,入市需谨慎,项目仅供参考。
实现功能
二、摸鱼利器
1.硬件pinpong 板*1
支持python编码,完善的pinpong库(也可用UNO板子替代),自带oled屏幕,led蜂鸣器等众多组件;设计外形和常见开发板类似,不容易被发现,适合隐藏摸鱼
2.软件平台
mind+1.7 python库安装方便,手动撸代码
三、准备工作
1.库安装
pinpong 库
推荐库-》硬件控制-》pinpong
功能:pinpong 库是用于连接硬件设备进行在线编程的 Python 库。可创作丰富有趣的软硬件互动项目。
requests库
推荐库-》爬虫-》requests
功能 :Requests 库可以用来发送请求、处理响应结果;学会 Requests 库,我们能够轻易调用网络 api 接口,实现爬虫、翻译、智能机器人等各种有趣的效果。
2.新浪股市API
API接口:http://hq.sinajs.cn/list=两位字母+数字(sh代表上海证券交易所,sz代表深证证券交易所,6位数字是股票代码)
例如:在浏览器直接输入 网址 http://hq.sinajs.cn/list=sh600779 即可获取返回值
如图可见返回值依次为:股票代码var hq_str_sh600779="水井坊,今日开盘价格,昨日收盘价格,当期价格,最高价格,最低价格,。。。。。。返回值之间用逗号分开,格式规整,适合pyhton爬虫,切片操作
浏览器API返回值
炒股软件图
四、程序流程
1.导入库
- import time
- from pinpong.board import Board,NeoPixel,Pin
- from pinpong.libs.dfrobot_ssd1306 import SSD1306_I2C
- import requests
复制代码
2.初始化数据和设备
- Board("uno").begin()
- NEOPIXEL_PIN = Pin.D9 #初始化LED灯珠
- PIXELS_NUM = 4 #灯数
- np = NeoPixel(Pin(NEOPIXEL_PIN), PIXELS_NUM)
- np[0] = (0, 0 ,0) #设置RGB灯关闭
- oled = SSD1306_I2C(width=128,height=64)
- oled.fill(0)
- oled.text('hello world !!!',0,0)
- oled.show()
- ticker_code=input('请输入股票代码')
复制代码
3.Ticker函数,分析股价,预测结果
- r = requests.get('http://hq.sinajs.cn/list=sh'+ticker_code)#,headers=headers) #sh603589'
- res = r.text
- print(res)
- result = res.split('=')[1] # 截取等号之后的数据部分
- name = result.split(',')[0].replace('"', '') #股票名称
- start_price = float(result.split(',')[2]) #昨日收盘
- now_price = float(result.split(',')[3]) #当前价格
- rate = (now_price-start_price)/start_price * 100 #涨跌幅度
- content2=str(round(rate,2))+'%'
- oled.fill(0)
- np[0] = (0,0,0)
- oled.text("TickerNO:"+ticker_code,0,0)
- oled.text(content2,20,20)
- oled.show()
- if abs(rate) > 3.0:
- oled.fill(0)
- content = "股票拉升:当前股票{0}, 涨幅{1:.2f}%, 请注意!".format(name, rate)
- content2=str(round(rate,2))+'%'
- oled.text("TickerNO:"+ticker_code,0,0)
- oled.text(content2,20,20)
- np[0] = (0,200,0) #设置RGB灯为红色
- oled.show()
- time.sleep(0.3)
- oled.fill(0)
- oled.text("Attention")
- oled.show()
复制代码
4.主程序
每1分钟调用检测一次股价
- while True:
- Ticker()
- time.sleep(60)
复制代码
注意网站貌似增加了安全机制,如果调用时间过短例如3秒或5秒 ,则会报如下错误;
尝试了度娘的类似解决方案,仍未奏效,欢迎高手们来一起解决
五、测试视频
|