步驟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
-
機器人
+關注
關注
211文章
28557瀏覽量
207692 -
樹莓派
+關注
關注
117文章
1710瀏覽量
105755
發布評論請先 登錄
相關推薦
評論