电子说
步骤1:准备Raspberry Pi
我的特殊设置是Raspberry pi 3,带有外部WD Pi Drive 314Gb磁盘。不需要外部磁盘。 SD卡应该足够了,除非您有数千只库存要监视。..
我将不介绍如何设置raspberry pi使其正常运行。
我假设您已经运行了树莓派,并且可以访问互联网。
该项目的文件可以在github的github上找到。将文件克隆到您的树莓派中,发出在下面的命令中,请在raspberry pi命令行上进行操作:
git clone https://github.com/kal001/stocks.git
您应该在树莓派pi中安装git才能起作用。如果不是这种情况,请先安装它:
sudo apt-get install git-core
您现在应该拥有一个包含所有文件的 “ stocks” 文件夹在上面。用 ls -la 列出它们,以查看是否一切正常。
步骤2:创建数据库
安装sqlite3:
sudo apt-get install sqlite3
运行sqlite3创建数据库文件( stockdata.sqlite ):
sqlite3 stockdata.sqlite
在sqlite提示符下,通过阅读 sql文件stocks_db_structure.sql 中的命令来创建表结构:
sqlite》 .read stocks_db_structure.sql
检查表是否正确创建并退出:
sqlite》 .tables
currencies exchanges movements portfolio stocks
dividends hollidays options quotes strategies
sqlite》 .exit
您现在应该在数据库中拥有一个stockdata.sqlite文件。
所有表都应该为空。您可以根据需要填充它们。为此,请检查文件 database.html ,该文件列出了数据库中的所有表以及每个字段的含义。
如果需要用我使用的一些 样本数据 填充表,再次运行sqlite,这次从 stocks_db_data.sql :
sqlite3 stockdata.sqlite
sqlite》 .read stocks_db_data.sql
要测试一切是否正常,请列出 库存 表中的行,例如:
sqlite》 select * from stocks;
1|Millenium BCP|ELI:BCP|BCP.LS|1|False|15|||1|stock
2|The Navigator Company|ELI:NVG|NVG.LS|1|True|15|2.88|2016-06-10T17:35:00+02:00|1|stock
3|EURO Dollar exchange ratio|EURUSD|EURUSD=X|3|True|60|1.1253|2016-06-12T14:41:38.815735+00:00||currency
4|Jeronimo Martins|ELI:JMT|JMT.LS|1|True|15|13.77|2016-06-10T17:36:00+02:00|1|stock
5|Galp Energia|ELI:GALP|GALP.LS|1|False|15|||1|stock
6|EDP Energias de Portugal|ELI:EDP|EDP.LS|1|False|15|||1|stock
7|REN Redes Energeticas Nacionais|ELI:RENE|RENE.LS|1|False|15|||1|stock
8|CTT Correios de Portugal SA|ELI:CTT|CTT.LS|1|False|15|||1|stock
9|Qlik Technologies, Inc.|NASDAQ:QLIK|QLIK|4|True|15|30.0|2016-06-10T16:00:00-04:00|2|stock
并退出:
sqlite》 .exit
您可以在文件 database.html 中找到每个数据库表的描述。
最重要的表格是: 库存 ,用于描述您感兴趣的库存; 交易所 ,您可以在其中定义将要交易的证券交易所(例如,定义交易所的开放和关闭时间)
第3步:安装要求
从安装pip开始。
pip是python的软件包安装程序。安装pip后,安装python包非常容易。
要安装pip,请在命令行中输入:
sudo apt-get install python-pip
现在安装所有必需的软件包:
sudo pip install -r requirements.txt
现在您是准备开始使用其中包含的几个python脚本。
这些是:
monitor.py -用于监视持续不断的股市
stock_telegrambot.py -这是一种Telegram机器人,它将发送和接收电报消息以与您的脚本/股票
ggetquote.py -该脚本可打印 stocks 中所有股票的最新报价表,其字段为Tracked = True
backtest.py -用于测试表中保存的某些投资策略的脚本策略,根据历史数据,并根据该策略返回股票的价值。
每个脚本均在后续步骤中进行了详细说明。
步骤4:配置电报/创建Bot
如果您尚未在所有设备(电话,计算机,平板电脑等)中安装Telegram,并创建了一个帐户。
Telegram是一种非常快速,安全的方法,灵活的Messenger应用程序。它可以在iOS,Android,Windows,Mac,Linux等系统中运行。
它允许您创建一个“机器人”,该机器人是处理消息的程序。在这种情况下,我们将使用python编写一个与用户交互的脚本,并且该脚本在树莓派中运行。
A)创建一个机器人
您必须与两个父亲“交谈”才能创建机器人。在此处查看说明。
打开电报并与Botfather聊天时,写/newbot 创建一个新的Bot。
Telegram会要求您输入名称到机器人。随意命名,例如 stockserver 。
Telegram会要求输入一个以bot结尾的用户名。例如 stockserver_bot 。
Botfather然后创建了该bot,并应为您提供将来访问它的密钥。像这样的
完成!祝贺您的新机器人。您可以在telegram.me/stockserver_bot中找到它。现在,您可以添加有关机器人的部分和个人资料图片的描述,请参阅/help以获取命令列表。顺便说一句,当您完成酷机器人的创建后,如果您想要一个更好的用户名,请ping我们的Bot支持。只需确保该机器人已完全正常运行,即可。
使用此令牌访问HTTP API:
234126601:T7SO2lNWJbChPB2hfKwQxDe3PGI
有关Bot API的描述,请参见以下页面:https://core.telegram.org/bots/api
关键是带粗体的 2341 。.. 上方。您需要将该密钥插入文件 stocks.ini 中:
[Telegram]
token = 2341.。.
我建议您复制粘贴此消息并将其插入到名为的文件中》 stockserver_bot.txt ,并将其保存以备将来使用。
现在,您可以告诉您的机器人它将接受哪些命令。此步骤是可选。但是,如果这样做,将会简化在Telegram客户端中发出命令的过程。
在两个父亲之间编写/setcommands ,然后选择您的漫游器。现在,编写您的漫游器应理解的命令:
buy - Buy shares
sell - Sell shares
dividend - Set new dividend
status - Check bot status
portfolio - Get current portfolio
returns - Get current portfolio returns
movements - Get movements for a stock
B)查找您的电报用户ID
您的漫游器需要知道您的用户ID
转到电报,然后将带有 /start 的消息发送到您的机器人。
p》
由于树莓派尚未运行该机器人,您将无法回答。
现在运行脚本 gettelegramuid.py 。它会在Telegram中打印您的用户ID编号,该编号是从您发送给他的消息/start中获得的。
将此数字(类似123456789)复制到文件stocks.ini中:
[Telegram]
token = 。..
uid = 123456789
您还可以仅检查 gettelegramuid.py 了解其工作原理。仅有几行。
步骤5:Monitorstock.py
monitor.py 是一个python脚本,可以:
根据不同的策略查看是时候购买还是出售了。
在表 策略 中具有 Active = True 的所有策略都将被检查为看看是否:
A)是时候买入-当股票连续连续下跌几天后又跌开
B)是时候卖出-如果指定了最低限度达到回报
将发送电报消息,以提醒用户该是购买/出售股票的时候了。
获取跟踪的股票报价,并将其存储在数据库中。
表 stocks 中具有 Tracked = True 的所有股票都是通过定义的 间隔 采样时间。报价存储在 quotes 表中。
scipt检查交易所是否开放(考虑每个证券交易所的开放时间,周末和节假日) ),然后再执行任何先例操作。
步骤6:使Monitorstock.py定期运行并启动Stock_telegrambot.py
A )将monitorstock.py设置为定期运行
您应安装monitostock.py使其定期运行。为此,请在树莓派中编写 crontab -e 。您应该看到预定义的编辑器(在我的情况下为“ nano”)显示树莓派pi定期运行的任务列表。
在此文件末尾添加:
MAILTO=“”
*/1 * * * * cd ~/bolsa && python monitorstock.py
0 12 * * * /home/fernando/bolsa/restartbot.sh
按Ctrl + X退出。回答Y保存更改,然后按Enter。您将在提示符后回来。
第一行告诉crontab不要发送包含执行结果的电子邮件。否则,您将每分钟收到一封电子邮件!!
第二行更改为安装脚本的文件夹,然后告诉crontab运行 python monitorstock.py 每分钟(*/1)。例如,如果要将周期更改为5分钟,请将*/1更改为*/5。
第三行每天在12:00运行bash脚本。脚本为 restartbot.sh 。如果运行,该脚本将停止stock_telegrambot.py,然后立即再次启动它。
我发现运行几天后,由于某种无法解释的原因,脚本stock_telegrambot.py停止了响应,甚至
每天停止并重新启动一次,以避免这种现象。
B)启动 stock_telegrambot.py
编写 。/startbot.sh 。您的机器人应该启动,并且您会收到这样的消息,并在电报中进行确认:
Start stock_telegrambot.py
v0.0.2-5-gf75a193
2016-06-12 21:33:57.458815
该机器人将是一个正在运行的任务,在后台运行。它将永远运行。
如果要查找任务,请写 ps aux 。这将打印在树莓派中运行的所有任务的列表。找到说“ python stock_telegrambot.py” 的行。
如果要停止bot,请写 。/killbot.sh 。确认任务没有执行,再次编写 ps aux 。
C)将树莓派启动时放置stock_telegrambot.py
如果您希望机器人在树莓派启动时每次启动,请发出 sudo nano/etc/rc.local
该文件中的命令行 /home/fernando/bolsa/startbot.sh ,位于最后一个退出0的行之前。按ctrl + x退出,并回答Y保存
第7步:播放
现在已经安装了所有内容,您可以使用电报来
/购买-告诉电报向您的投资组合中添加一些股票
以每只股票15欧元的价格购买50股ELI:JMT的示例:
/buy 50 eli:jmt 15
Success. Bought 50.00 ELI:JMT @ 15.000. New quantity on hand 400.00. New average price 11.875
/出售-卖出您投资组合中的一些股票
以16欧元出售50股ELI:JMT的示例每只股票:
/sell 50 eli:jmt 16
Success. Sold 50.00. New quantity on hand 350.00.
/投资组合-返回您当前的投资组合
示例:
/portfolio
QTY STOCK PRICE
350.00 Jeronimo Martins (ELI:JMT) 11.875
30.00 Qlik Technologies, Inc. (NASDAQ:QLIK) 30.000
/回报-打印投资组合中每个资产的当前回报
示例:
/returns
QTY STOCK RETURN %
350.00 Jeronimo Martins 12.8
30.00 Qlik Technologies, Inc. -0.1
/状态-检查正在运行的机器人的状态
示例:
/status
Ok. Running
v0.0.2-5-gf75a193
/股利-告诉机器人该股票的新股利
将ELI:JMT的每股股利设置为0.7欧元的除息示例日期2020年1月1日:
/dividend eli:jmt 0.7 2020-01-01
Ok. Dividend set for ELI:JMT
就是这样!
责任编辑:wv
全部0条评论
快来发表一下你的评论吧 !