報(bào)分析與基金篩選工具跑起來(lái))
InvesTool 部署與配置上手指南5步把財(cái)報(bào)分析與基金篩選工具跑起來(lái)【免費(fèi)下載鏈接】investoolGolang實(shí)現(xiàn)財(cái)報(bào)分析、個(gè)股基本面檢測(cè)、基本面選股、4433法則基金篩選與檢測(cè)、基金持倉(cāng)相似度、股票選基、基金經(jīng)理篩選項(xiàng)目地址: https://gitcode.com/gh_mirrors/in/investoolInvesTool 是一款用 Go 語(yǔ)言實(shí)現(xiàn)的個(gè)人投資分析工具幫你把按基本面選股和4433 法則基金篩選這兩件原本要手動(dòng)翻財(cái)報(bào)、算指標(biāo)的苦差事自動(dòng)化。讀完這篇 InvesTool 部署與配置上手指南你不需要懂 Go 編程只要照著敲命令就能在十幾分鐘內(nèi)把 Web 界面跑起來(lái)、用命令行檢測(cè)一只股票、把篩選結(jié)果導(dǎo)出成 Excel最后還能把它穩(wěn)穩(wěn)部署到一臺(tái)服務(wù)器上長(zhǎng)期運(yùn)行。全文圍繞先跑起來(lái)、再調(diào)教、再上生產(chǎn)這條主線(xiàn)展開(kāi)每一步都附成功標(biāo)志方便你對(duì)照自查。第一章 先說(shuō)清楚裝好 InvesTool你立刻能得到什么很多選股工具只負(fù)責(zé)把一堆股票扔給你剩下的大量工作還是得自己做打開(kāi)一只股票的財(cái)報(bào)看 ROE 高不高、凈利潤(rùn)是不是連續(xù)幾年增長(zhǎng)、負(fù)債率有沒(méi)有超標(biāo)……股票一多這套動(dòng)作能把人累垮。InvesTool 的價(jià)值恰恰是把這段反復(fù)打開(kāi)財(cái)報(bào)頁(yè)面、人工核對(duì)指標(biāo)的過(guò)程變成一條命令。它替你完成了三件事自動(dòng)篩按你設(shè)定的條件ROE、營(yíng)收增長(zhǎng)、負(fù)債率、市值、股價(jià)區(qū)間等從全市場(chǎng)挑出候選股票再逐只做基本面檢測(cè)不合格的直接過(guò)濾掉。自動(dòng)查輸入股票名稱(chēng)或代碼馬上給出 ROE、EPS、營(yíng)收、利潤(rùn)、估值、合理價(jià)、歷史波動(dòng)率等一串檢測(cè)結(jié)果并給出整體判定。自動(dòng)存把篩選結(jié)果導(dǎo)出為 Excel、CSV、JSON 甚至二維碼圖片方便你導(dǎo)入行情軟件或存檔。除此之外它還內(nèi)置了基金 4433 篩選、基金持倉(cāng)相似度分析、股票選基和基金經(jīng)理篩選這些功能目前主要在 Web 界面里操作。所以接下來(lái)的旅程分兩條線(xiàn)先用命令行快速?lài)L鮮再打開(kāi) Web 界面體驗(yàn)完整功能。第二章 15 分鐘快速體驗(yàn)先看到結(jié)果再談配置這一章的目標(biāo)只有一個(gè)讓你在最短時(shí)間內(nèi)親眼看到 InvesTool 在工作。別急著研究配置先跑起來(lái)。第 1 步拿到源碼找個(gè)目錄把項(xiàng)目克隆下來(lái)然后進(jìn)入項(xiàng)目目錄git clone https://gitcode.com/gh_mirrors/in/investool cd investool# 確認(rèn) Go 環(huán)境已安裝版本 1.16 及以上即可 go version如果提示找不到go命令先按 Go 官方文檔裝好環(huán)境再回來(lái)。? 當(dāng)終端里出現(xiàn)類(lèi)似go version go1.20 linux/amd64的輸出說(shuō)明環(huán)境就緒。第 2 步編譯出可執(zhí)行文件項(xiàng)目本身就是 Go 源碼編譯一條命令搞定go build -o investool main.go# 確認(rèn)編譯產(chǎn)物已經(jīng)生成 ls -l investool? 看到當(dāng)前目錄多出一個(gè)名為investool的可執(zhí)行文件就說(shuō)明編譯成功。這也是接下來(lái)所有操作的主角。第 3 步用命令行檢測(cè)一只股票先走最短路徑用checker子命令檢測(cè)一只股票輸入名稱(chēng)或代碼都行./investool checker -k 比亞迪如果想一次檢測(cè)多只用/把關(guān)鍵詞連起來(lái)./investool checker -k 招商銀行/中國(guó)平安/600519運(yùn)行后程序會(huì)去數(shù)據(jù)源拉取財(cái)報(bào)數(shù)據(jù)然后逐項(xiàng)打印檢測(cè)結(jié)論。你會(huì)看到類(lèi)似下面的界面——它把每項(xiàng)檢測(cè)的標(biāo)準(zhǔn)和你的股票實(shí)際表現(xiàn)并排展示一目了然上圖是股票檢測(cè)器的運(yùn)行結(jié)果左側(cè)列檢測(cè)維度右側(cè)列實(shí)際數(shù)值紅色標(biāo)簽標(biāo)注重點(diǎn)結(jié)論比如 EPS 是否逐年遞增、股價(jià)與合理價(jià)的差距。再往下滾動(dòng)還會(huì)看到對(duì) ROE、負(fù)債率、PEG 等指標(biāo)的最終判定上圖是檢測(cè)的收尾部分整體質(zhì)地、ROE 趨勢(shì)、負(fù)債率、PEG 逐項(xiàng)給出結(jié)論最后一行是整只股票的最終判定符合/不符合。如果你輸入的不是它認(rèn)為達(dá)標(biāo)的標(biāo)的結(jié)尾就會(huì)像圖里這樣顯示 FAILED——?jiǎng)e慌這只是說(shuō)明這只股票沒(méi)通過(guò)它的篩選標(biāo)準(zhǔn)。? 只要能看到這一串檢測(cè)輸出InvesTool 的核心能力就算驗(yàn)證通過(guò)了一半。第 4 步啟動(dòng) Web 界面體驗(yàn)完整功能命令行只是開(kāi)胃菜基金篩選、持倉(cāng)相似度這些功能都在網(wǎng)頁(yè)里。啟動(dòng) Web 服務(wù)同樣簡(jiǎn)單./investool webserver默認(rèn)會(huì)讀取當(dāng)前目錄下的config.toml配置文件。啟動(dòng)成功后日志里會(huì)出現(xiàn)一行類(lèi)似Server is running on :4869的提示。這時(shí)打開(kāi)瀏覽器訪(fǎng)問(wèn)http://localhost:4869? 看到網(wǎng)頁(yè)加載出來(lái)就說(shuō)明 Web 服務(wù)正常。頁(yè)面登錄賬號(hào)默認(rèn)是admin密碼也是admin后面會(huì)教你怎么改。逛一逛基金篩選、股票檢測(cè)這些頁(yè)面先對(duì)功能有個(gè)印象下一章我們?cè)侔阉{(diào)教成順手的樣子。第三章 配置魔法把工具調(diào)教成你想要的樣子跑起來(lái)只是第一步真正讓它合你的口味靠?jī)蓸訓(xùn)|西config.toml 配置文件管 Web 服務(wù)的行為和命令行參數(shù)管每次篩選檢測(cè)的標(biāo)準(zhǔn)。你可以把前者想象成遙控器上的總開(kāi)關(guān)后者是每次出發(fā)前設(shè)定的目的地。3.1 Web 服務(wù)總開(kāi)關(guān)config.toml文件位于項(xiàng)目根目錄啟動(dòng)時(shí)用-c參數(shù)可以指定別的配置文件./investool webserver -c ./config.prod.toml先看最常用的幾個(gè)開(kāi)關(guān)按功能分組給你講① 服務(wù)參數(shù)端口、運(yùn)行模式[server] addr :4869 mode debugaddr服務(wù)監(jiān)聽(tīng)地址和端口:4869表示監(jiān)聽(tīng)所有網(wǎng)卡的 4869 端口。端口被占用時(shí)改成:8888之類(lèi)即可。mode運(yùn)行模式開(kāi)發(fā)時(shí)用debug日志更詳細(xì)正式對(duì)外服務(wù)建議改成release。② 安全與訪(fǎng)問(wèn)控制[basic_auth] username admin password admin [ratelimiter] enable truebasic_auth是網(wǎng)頁(yè)的登錄賬號(hào)密碼部署到公網(wǎng)前務(wù)必改掉默認(rèn)的 admin/admin。ratelimiter.enable控制是否開(kāi)啟請(qǐng)求頻率限制開(kāi)啟后能防止有人高頻刷接口自己?jiǎn)螜C(jī)玩也可以關(guān)掉。③ 日志行為[logging] level info format json output_paths [stdout]level日志級(jí)別調(diào)試時(shí)用debug日常用info嫌吵就warn或error。output_paths日志輸出到哪里[stdout]是打印到終端想落盤(pán)改成[logrotate://./logs/investool.log]程序會(huì)自動(dòng)按天/按大小輪轉(zhuǎn)。改完配置后直接重啟./investool webserver就能生效因?yàn)槌绦騿?dòng)時(shí)會(huì)重新讀取整個(gè)文件。3.2 每次篩選檢測(cè)的標(biāo)準(zhǔn)命令行參數(shù)Web 界面能點(diǎn)出默認(rèn)規(guī)則的篩選結(jié)果但命令行才是自定義條件的主場(chǎng)。exportor的篩選參數(shù)分兩組filter.*管從全市場(chǎng)撈出哪些候選checker.*管對(duì)候選逐只做哪些基本面檢查。場(chǎng)景一我想要負(fù)債率更低、ROE 要求更高的股票./investool -l error exportor -f ./mystocks.xlsx --filter.min_roe10 --filter.max_debt_asset_ratio40 --checker.min_roe10 --checker.max_debt_asset_ratio40說(shuō)明filter.min_roe10要求候選股最新 ROE 不低于 10%filter.max_debt_asset_ratio40要求資產(chǎn)負(fù)債率不高于 40%checker.*兩個(gè)參數(shù)把檢測(cè)階段的標(biāo)準(zhǔn)提到同樣水平。-l error是讓日志只報(bào)錯(cuò)誤屏幕干凈一點(diǎn)。? 跑完后在./mystocks.xlsx找到導(dǎo)出文件即成功。場(chǎng)景二我只關(guān)心某幾只股票不想要全市場(chǎng)篩選./investool -l error exportor -f ./watch.xlsx --filter.special_security_name_abbr_list 福萊特 --filter.special_security_name_abbr_list 旗濱集團(tuán) --disable_check說(shuō)明--filter.special_security_name_abbr_list可以重復(fù)傳指定只處理這些名稱(chēng)的股票--disable_check跳過(guò)基本面檢測(cè)只導(dǎo)出原始篩選結(jié)果適合先快速看一眼數(shù)據(jù)。場(chǎng)景三導(dǎo)出格式由文件后綴自動(dòng)決定./investool -l error exportor -f ./stocks.json # 導(dǎo)出 JSON ./investool -l error exportor -f ./stocks.csv # 導(dǎo)出 CSV ./investool -l error exportor -f ./stocks.xlsx # 導(dǎo)出 Excel按行業(yè)、價(jià)格、歷史波動(dòng)率分工作表 ./investool -l error exportor -f ./stocks.png # 導(dǎo)出成代碼圖片方便導(dǎo)入行情 APP ./investool -l error exportor -f ./stocks.all # 一次導(dǎo)出上面所有格式說(shuō)明它不看你寫(xiě)什么參數(shù)只看文件后綴名后綴是.xlsx就出 Excel是.png就出二維碼圖片all表示全都要。是不是很像看菜下鍋想要了解全部可用參數(shù)隨時(shí)查看幫助./investool exportor -h ./investool checker -h第四章 進(jìn)階提速讓它更快、更穩(wěn)、更省心用了一段時(shí)間后你可能會(huì)遇到兩個(gè)感受一是篩選全市場(chǎng)時(shí)等得有點(diǎn)久二是想回頭排查某個(gè)報(bào)錯(cuò)卻找不到日志。這一章就是針對(duì)這些用著不夠順手的時(shí)刻。什么時(shí)候該動(dòng)哪些開(kāi)關(guān)給你一張判斷小抄覺(jué)得請(qǐng)求太慢、怕被數(shù)據(jù)源限流打開(kāi)[ratelimiter]的enable true讓請(qǐng)求頻率更溫和。想排查問(wèn)題但日志太少把[logging]的level調(diào)到debug重啟后再?gòu)?fù)現(xiàn)一次問(wèn)題日志會(huì)詳細(xì)得多。嫌日志太多刷屏level調(diào)到warn或error只看異常。想讓日志落盤(pán)、方便翻歷史把output_paths從[stdout]改成日志文件路徑并按需調(diào)整[logging.logrotate]里的max_size單個(gè)文件多大觸發(fā)輪轉(zhuǎn)和max_age備份保留幾天。篩選任務(wù)耗時(shí)變長(zhǎng)README 里特別提醒過(guò)從中報(bào)發(fā)布季開(kāi)始滿(mǎn)足條件的公司會(huì)越來(lái)越多篩選耗時(shí)隨之增加如果服務(wù)掛在 Nginx 后面記得把反向代理的超時(shí)時(shí)間調(diào)大下一章會(huì)講。并發(fā)拉數(shù)據(jù)卡頓[app]里的chan_size控制并發(fā)拉取數(shù)據(jù)時(shí)通道的大小默認(rèn) 1 比較保守網(wǎng)絡(luò)好的機(jī)器可以試著調(diào)大一點(diǎn)觀察效果。定時(shí)任務(wù)別去動(dòng)它但你要知道它在干什么[app.cronexp]里配置了定時(shí)任務(wù)的 cron 表達(dá)式比如sync_global_vars 0 6 * * 1-5表示每個(gè)工作日早上 6 點(diǎn)自動(dòng)同步全局變量?;?4433 列表也是靠定時(shí)任務(wù)每個(gè)工作日全市場(chǎng)跑一遍大約 1 分 50 秒生成的結(jié)果保存在 JSON 文件里。沒(méi)有特殊需求保持默認(rèn)即可。第五章 上生產(chǎn)當(dāng)一個(gè)人扛不住時(shí)怎么辦到這一步你可能已經(jīng)離不開(kāi)它了開(kāi)始想讓它在服務(wù)器上 7×24 小時(shí)跑著哪怕電腦關(guān)機(jī)、進(jìn)程崩了也能自動(dòng)恢復(fù)。這時(shí)候單靠./investool webserver就不夠了——你需要三件套Docker環(huán)境打包、Nginx對(duì)外接待、Supervisor進(jìn)程守護(hù)。先說(shuō)個(gè)比喻幫你理解如果 InvesTool 是你要開(kāi)的一家店Docker 是標(biāo)準(zhǔn)化的廚房設(shè)備N(xiāo)ginx 是站在門(mén)口的前臺(tái)接待員來(lái)訪(fǎng)的客人都先找它再由它把客人領(lǐng)到廚房Supervisor 則是店長(zhǎng)盯著店員進(jìn)程有沒(méi)有偷懶倒下了就喊起來(lái)繼續(xù)干。5.1 用 Docker 把環(huán)境打包項(xiàng)目根目錄自帶Dockerfile它會(huì)從發(fā)布包解壓出可執(zhí)行文件并運(yùn)行。構(gòu)建和啟動(dòng)docker build -t investool:latest .docker run -d -p 4869:4869 --name investool -v $(pwd)/config.toml:/srv/investool/config.toml investool:latest說(shuō)明-p 4869:4869把容器內(nèi)的 4869 端口映射到宿主機(jī)-v把宿主機(jī)當(dāng)前目錄的config.toml掛載進(jìn)容器這樣你改配置只需重啟容器不用重新構(gòu)建鏡像。? 執(zhí)行后docker ps能看到名為investool的容器在運(yùn)行就成功了。5.2 用 Nginx 做前臺(tái)接待Docker 只是把服務(wù)跑起來(lái)了它直接暴露端口對(duì)外既不好看也不安全。Nginx 的作用是統(tǒng)一入口用戶(hù)訪(fǎng)問(wèn) 80 端口Nginx 把請(qǐng)求轉(zhuǎn)給 4869 端口的 InvesTool。項(xiàng)目里給你留了示例見(jiàn)misc/configs/nginx.conf核心就這一段server { listen 80; server_name example.com; location / { proxy_pass http://pink_lady_api; } }配套的負(fù)載均衡池也要保留示例文件里的upstream段指向0.0.0.0:4869對(duì)應(yīng) InvesTool 的監(jiān)聽(tīng)端口。把server_name改成你自己的域名保存后重載 Nginxnginx -s reload?? 別忘了前面說(shuō)的隨著篩選耗時(shí)變長(zhǎng)建議在location塊里加長(zhǎng)proxy_read_timeout和proxy_connect_timeout避免長(zhǎng)任務(wù)被 Nginx 掐斷。5.3 用 Supervisor 當(dāng)?shù)觊L(zhǎng)進(jìn)程偶爾會(huì)崩崩了誰(shuí)來(lái)拉Supervisor 就是干這個(gè)的。項(xiàng)目給的示例在misc/configs/supervisor.conf要點(diǎn)是[program:investool] directory/srv/investool command/srv/investool/investool webserver -c ./config.prod.toml autorestarttrue stdout_logfile/srv/investool/logs/investool.stdout.log stderr_logfile/srv/investool/logs/investool.stderr.log把directory和command改成你服務(wù)器上實(shí)際的路徑與配置文件autorestarttrue表示進(jìn)程異常退出后自動(dòng)拉起。用supervisorctl管理supervisorctl reread supervisorctl update supervisorctl status investool? 狀態(tài)顯示為RUNNING說(shuō)明進(jìn)程被守護(hù)住了。5.4 認(rèn)識(shí)一下整體架構(gòu)當(dāng)你把 Docker、Nginx、Supervisor 都串起來(lái)后整個(gè)調(diào)用鏈大致長(zhǎng)這樣項(xiàng)目里的架構(gòu)圖可以幫你建立全局觀上圖是 InvesTool 基于 Gin 框架的整體架構(gòu)設(shè)計(jì)從前端頁(yè)面、路由層、核心業(yè)務(wù)邏輯到數(shù)據(jù)源適配一應(yīng)俱全??催@張圖時(shí)你只需要關(guān)注自己部署涉及的那條鏈路——請(qǐng)求怎么進(jìn)來(lái)、數(shù)據(jù)從哪個(gè)數(shù)據(jù)源拉取即可其余細(xì)節(jié)不用深究。第六章 部署完成自檢清單三步確認(rèn)它真的在干活服務(wù)部署完了別急著歡呼用下面三步快速自檢確認(rèn)它真的在為你工作① 網(wǎng)頁(yè)能打開(kāi)且能登錄瀏覽器訪(fǎng)問(wèn)你的地址用改過(guò)的賬號(hào)密碼登錄。如果還停留在默認(rèn)的 admin/admin請(qǐng)立刻回去改掉。? 頁(yè)面正常渲染基金篩選頁(yè)能看到數(shù)據(jù)。② 命令行能出結(jié)果在服務(wù)器上跑一次檢測(cè)確認(rèn)數(shù)據(jù)鏈路通暢./investool checker -k 貴州茅臺(tái)? 能打印出完整的檢測(cè)結(jié)果而不是報(bào)網(wǎng)絡(luò)錯(cuò)誤。③ 導(dǎo)出文件真實(shí)可用跑一次導(dǎo)出然后打開(kāi)文件抽查內(nèi)容./investool -l error exportor -f ./check.xlsx? 生成的 Excel 用 WPS 或 Excel 打開(kāi)能看到按行業(yè)、價(jià)格、歷史波動(dòng)率分好的工作表說(shuō)明從篩選—檢測(cè)—導(dǎo)出整條流水線(xiàn)是通的。第七章 踩坑速查最常見(jiàn)的 5 個(gè)坑與一句話(huà)解法Q1啟動(dòng) webserver 時(shí)報(bào)端口被占用改config.toml里[server] addr的端口號(hào)或先找出占用進(jìn)程并停掉。Q2登錄頁(yè)面進(jìn)不去 / 密碼不對(duì)默認(rèn)賬號(hào)密碼是admin/admin確認(rèn)是不是被改過(guò)改完配置要重啟服務(wù)才生效。Q3checker或exportor提示數(shù)據(jù)獲取失敗大概率是網(wǎng)絡(luò)問(wèn)題或數(shù)據(jù)源臨時(shí)調(diào)整。先檢查服務(wù)器能否正常訪(fǎng)問(wèn)外網(wǎng)再把日志級(jí)別調(diào)到debug復(fù)現(xiàn)一次看具體報(bào)錯(cuò)。Q4篩選很慢Nginx 老是返回超時(shí)在 Nginx 的location里調(diào)大proxy_read_timeout和proxy_connect_timeout建議 300 秒以上給長(zhǎng)任務(wù)留足時(shí)間。Q5導(dǎo)出文件后綴寫(xiě)錯(cuò)了格式不對(duì)exportor按后綴名決定格式只支持xlsx、csv、json、png、all別的后綴會(huì)報(bào)錯(cuò)或不識(shí)別。寫(xiě)在最后到這里你已經(jīng)走完了 InvesTool 從只會(huì)看到跑得起來(lái)、用得順手的全過(guò)程先命令行快速驗(yàn)證再通過(guò)配置文件和參數(shù)把它調(diào)教成自己的標(biāo)準(zhǔn)然后按需提速最后用 Docker、Nginx、Supervisor 三件套把它送上生產(chǎn)。剩下的就是讓定時(shí)任務(wù)每天幫你跑一遍 4433 基金篩選讓它在后臺(tái)安靜地當(dāng)你的投資分析助手。最后必須提醒一句InvesTool 輸出的所有數(shù)據(jù)與分析結(jié)果僅供學(xué)習(xí)研究參考不構(gòu)成任何投資建議。程序會(huì)基于財(cái)務(wù)數(shù)據(jù)自動(dòng)判斷但它不懂市場(chǎng)情緒也不對(duì)任何決策負(fù)責(zé)據(jù)此操作風(fēng)險(xiǎn)自擔(dān)。祝使用順利。【免費(fèi)下載鏈接】investoolGolang實(shí)現(xiàn)財(cái)報(bào)分析、個(gè)股基本面檢測(cè)、基本面選股、4433法則基金篩選與檢測(cè)、基金持倉(cāng)相似度、股票選基、基金經(jīng)理篩選項(xiàng)目地址: https://gitcode.com/gh_mirrors/in/investool創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考