環境變數與營運¶
這一頁整理的是:
- 目前程式實際依賴哪些 env
- 哪些設定會影響執行結果
- 營運與排錯時該注意什麼
一、核心環境變數¶
1. SHIOAJI_API_KEY¶
用途:
ShioajiQuote登入用
2. SHIOAJI_SECRET_KEY¶
用途:
ShioajiQuote登入用
3. DB_TYPE¶
用途:
- 決定資料庫型態
可選值:
sqlitepostgresql
4. SQLITE_PATH¶
用途:
- SQLite 檔案路徑
5. DATABASE_URL¶
用途:
- PostgreSQL 連線字串
6. STRATEGY_NAME¶
用途:
- 啟動時
current_strategy_name的初始值
注意:
- 只是初始值
- 後續可被
POST /set_strategy改掉 - 若不在可見策略清單中,會被 fallback
7. OPTIMIZATION_WORKERS¶
用途:
- 控制最佳化任務多進程數量
若未設:
- 會 fallback 成
os.cpu_count() - 1
二、建議的 .env.example¶
雖然目前 repo 內不一定完整提供,但若你要正式化,建議整理成:
# quote providers
SHIOAJI_API_KEY=
SHIOAJI_SECRET_KEY=
# database
DB_TYPE=sqlite
SQLITE_PATH=./training_params.db
# DATABASE_URL=postgresql+psycopg2://USER:PASSWORD@HOST:PORT/DBNAME
# runtime
STRATEGY_NAME=BollingerATRStrategy
OPTIMIZATION_WORKERS=4
三、啟動時的真實行為¶
這個專案的啟動,不只是開一個 API server。
app.py 載入時會:
load_dotenv()- 初始化
ShioajiQuote() - 初始化
DataBentoQuote() - 建立 DB
- 印 startup config
- 直接跑一次
run_backtest(...)
這代表:
- 啟動可能需要外部 API 可用
- 啟動可能需要金鑰正確
- 啟動速度不只是 web server 起來而已
四、營運風險¶
1. 啟動有副作用¶
風險:
- 健康檢查延遲
- restart 成本高
- 外部資料源一掛,服務可能啟不來
2. 本地檔持久化¶
目前除了 DB,還有:
backtest_history.json- 某些舊腳本會寫
state.json
風險:
- 多實例不一致
- 重啟後狀態不一致
- 容器化時容易出問題
3. 外部金鑰與資料依賴¶
系統不是純離線回測器,它依賴:
shioajidatabento- 部分舊腳本的
polygon
所以營運時必須釐清:
- 哪些功能需要外部行情
- 哪些功能可只用既有快取或 DB
五、最佳化任務的營運注意事項¶
最佳化會吃:
- CPU
- RAM
- 資料載入時間
相關變數:
OPTIMIZATION_WORKERS
建議:
- 小主機不要開太高
- 若與 API 共機,避免把機器打滿
六、策略與營運的關係¶
雖然可透過 API 切策略,但營運層面要理解:
.env的STRATEGY_NAME只是初始值- 真正運行中依賴的是
current_strategy_name - 而且受可見策略清單影響
因此排錯時,要先看:
.env想設定什麼strategy_registry.py是否允許這個策略- 當前 API 狀態下
GET /get_strategy是什麼
七、建議的營運檢查清單¶
每次部署或重啟前,至少確認:
.env是否完整- 資料庫是否可連
SHIOAJI_*是否正確- 啟動後
GET /strategy_list是否正常 GET /get_strategy是否符合預期GET /get_params是否可正常回應GET /state是否可取回 stateGET /optimization/tasks是否正常
八、排錯順序建議¶
啟動失敗¶
先查:
- env
- quote adapter 初始化
- DB migration
- 啟動時初始回測
一般回測結果怪怪的¶
先查:
GET /get_strategyGET /get_paramsGET /get_timeframeGET /get_time_rangeGET /state?strategy_name=...是否與預期一致
最佳化跑很慢¶
先查:
OPTIMIZATION_WORKERS- 組合數量是否過大
- 前端是否誤用完整結果端點輪詢
九、若要正式化營運¶
建議未來補:
.env.exampleDockerfiledocker-compose.yml- health check endpoint
- 結構化 logging
- background worker 架構