Skip to content

hezhen0816/AutoTrader

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AutoTrader - 全自動化交易系統開發框架

本專案提供了一套完整的本地開發流程,從資料下載、模型訓練、參數優化到策略回測,皆可透過統一的 CLI 介面或 Web Dashboard 完成。

1. 專案結構

autotrader/
├── commands/           # CLI 子命令實作 (Data, Train, Backtest, Optimize, Analyze)
├── core/               # 核心元件 (Config, Logger, Exceptions)
├── data/               # 資料處理模組 (Ingestion, Features, Datasets)
├── infrastructure/     # 外部服務連線 (Binance Client)
├── ml/                 # 機器學習與深度學習模型 (Trainer, Models)
├── trading/            # 交易邏輯與回測引擎 (Strategy, Execution, Backtesting)
└── utils/              # 通用工具 (Metrics, DateTime)
app/                    # Streamlit Web Dashboard
├── pages/              # Dashboard 頁面 (即時監控、模型訓練、策略回測等)
├── components/         # 可重用元件 (圖表、指標卡片、側邊欄)
└── utils/              # Dashboard 工具函數
config/                 # 設定檔目錄
├── settings.yaml       # 全域預設設定
└── ...
manage.py               # 程式進入點 (CLI Entry Point)

2. 快速上手 (Quick Start)

2.1 初始化環境

確保已安裝 Python 3.11+ 與相關套件:

# 使用 Poetry (推薦)
poetry install

# 或使用 pip
pip install -r requirements.txt

2.2 Web Dashboard 模式(推薦)

啟動 Streamlit Web Dashboard,提供圖形化介面:

# 方式 1:直接啟動(預設)
python manage.py

# 方式 2:使用 dashboard 命令
python manage.py dashboard

# 方式 3:自訂埠號和主機
python manage.py dashboard --port 8501 --host localhost

Dashboard 將在瀏覽器中自動打開(預設:http://localhost:8501),提供以下功能:

  • 📊 即時監控:實時價格圖表、模型預測、倉位狀態、交易記錄
  • 🧠 模型訓練:可視化訓練進度、損失曲線、超參數設定、訓練歷史查看
  • 📈 策略回測:回測結果展示、績效指標、資金曲線、交易記錄下載
  • ⚙️ 系統設定:API 配置、策略參數、配置文件管理(支援編輯和創建)
  • 💰 交易控制:手動交易(做多/做空/平倉)、倉位管理、風控設定(止損/止盈)

所有功能都可在 Dashboard 中通過圖形化介面完成,無需記憶複雜的命令。

2.3 範例工作流程

場景 A:快速回測 (使用預設模型與資料)

# 1. 下載資料
python manage.py data download --symbol ETHUSDT --days 30

# 2. 執行回測 (使用預設策略)
python manage.py backtest run --model-path models/deep_learning/lstm_attention_model_20251127_2304.pt

場景 B:完整訓練與優化流程

# 1. 下載歷史資料 (過去 2 年)
python manage.py data download --symbol ETHUSDT --start 2023-01-01

# 2. 訓練深度學習模型 (LSTM Attention)
python manage.py train deep-learning \
  --data-path data/raw/ETHUSDT_4h_*.csv \
  --model-type lstm_attention \
  --task-type classification \
  --epochs 300 \
  --batch-size 128 \
  --learning-rate 0.001 \
  --multi-task

# 3. 模型超參數優化 (使用 Optuna)
python manage.py optimize hyperparameter-tune \
  --data-path data/raw/ETHUSDT_4h_*.csv \
  --model-type lstm_attention \
  --task-type classification \
  --n-trials 20 \
  --metric val_loss

# 4. 策略參數優化 (網格搜索)
python manage.py optimize grid-search \
  --model-path models/deep_learning/lstm_attention_model_*.pt \
  --data-path data/raw/ETHUSDT_4h_*.csv

# 5. 使用最佳參數進行回測
python manage.py backtest run \
  --config config/enhanced_strategy.yaml \
  --model models/deep_learning/lstm_attention_model_*.pt \
  --data data/raw/ETHUSDT_4h_*.csv

場景 C:實盤交易

# 模擬交易 (Paper Trading)
python manage.py trade live --dry-run

# 真實交易 (Live Trading)
python manage.py trade live --config config/enhanced_strategy.yaml

3. CLI 命令說明

所有命令皆可加上 --help 查看詳細參數。

data - 資料管理

  • download: 從 Binance 下載歷史 K 線資料。
  • process: 執行特徵工程與資料清洗。
  • info: 查看目前資料庫狀態。

train - 模型訓練

  • deep-learning: 訓練 PyTorch 模型 (LSTM, LSTM Attention, Transformer)。
    • --data-path: 指定訓練數據檔案路徑
    • --model-type: 模型類型 (lstm, lstm_attention, transformer)
    • --task-type: 任務類型 (regression, classification)
    • --epochs: 訓練輪數
    • --batch-size: 批次大小
    • --learning-rate: 學習率
    • --hidden-size: 隱藏層大小
    • --multi-task: 啟用多任務學習
  • traditional: 訓練傳統 ML 模型 (Random Forest, XGBoost)。

backtest - 策略回測

  • run: 執行增強版策略回測,包含多層過濾、ATR 動態止損、信號強度評分。
    • --config: 策略配置檔案 (預設: config/enhanced_strategy.yaml)
    • --model: 模型檔案路徑
    • --data: 歷史數據檔案路徑
    • --start: 回測開始日期 (可選)
    • --end: 回測結束日期 (可選)

optimize - 參數優化

  • grid-search: 網格搜索策略參數 (threshold, cooldown, stop_loss, take_profit 等)。
    • --model-path: 模型檔案路徑
    • --data-path: 歷史數據路徑
    • --start: 開始日期
    • --top-k: 顯示前 K 名結果
  • hyperparameter-tune: 使用 Optuna 進行模型超參數優化。
    • --data-path: 訓練數據檔案路徑
    • --model-type: 模型類型 (lstm, lstm_attention, transformer)
    • --task-type: 任務類型 (regression, classification)
    • --n-trials: Optuna 試驗次數
    • --timeout: 優化超時時間(秒)
    • --metric: 優化目標 (val_loss, direction_accuracy)

analyze - 結果分析

  • evaluate: 評估模型品質 (信心度分析、方向準確率)。
    • --model-path: 模型檔案路徑
    • --data-path: 歷史數據路徑

trade - 實盤交易

  • live: 啟動即時交易系統。
    • --config: 交易設定檔路徑 (預設: config/enhanced_strategy.yaml)
    • --model-path: 模型檔案路徑 (覆蓋設定檔)
    • --dry-run: 模擬交易模式

dashboard - Web Dashboard

  • 啟動 Streamlit Web Dashboard 儀表板。
    • --port: Dashboard 服務埠號 (預設: 8501)
    • --host: Dashboard 服務主機 (預設: localhost)

4. 核心功能特性

4.1 增強版交易策略

  • 多層信號過濾:RSI、MACD、成交量、波動率過濾
  • ATR 動態止損:根據市場波動自動調整止損距離
  • 信號強度評分:動態調整倉位大小
  • 複利策略:自動將獲利再投資

4.2 模型超參數優化

使用 Optuna 進行貝葉斯優化,自動尋找最佳超參數組合:

  • 學習率 (learning_rate)
  • 批次大小 (batch_size)
  • 隱藏層大小 (hidden_size)
  • LSTM 層數 (num_layers)
  • Dropout 率 (dropout)

4.3 Web Dashboard 儀表板

  • 即時監控:實時價格圖表(K 線圖)、模型預測信號、倉位狀態、交易記錄
  • 模型訓練:可視化訓練進度、損失曲線、超參數設定、訓練歷史查看
  • 策略回測:回測結果展示、績效指標(總回報、勝率、夏普比率等)、資金曲線圖表
  • 系統設定:API 配置管理、策略參數調整、配置文件編輯
  • 交易控制:手動交易(做多/做空/平倉)、倉位管理、風控設定(止損/止盈)
  • 即時價格:從 Binance API 獲取最新價格,自動更新(5 秒快取)

4.4 實盤交易系統

  • 即時數據流:WebSocket 即時接收 Binance K 線數據
  • 實時預測:模型在每個 K 線更新時進行預測(無需等待 K 線收盤)
  • 豐富的顯示面板:顯示市場數據、模型預測、信心指數、持倉狀態
  • 模擬交易模式:安全的紙上交易測試

4.5 自動化錯誤處理與建議 (Advisor System)

本系統內建 Advisor 機制,當訓練或回測結果不理想時,會自動給出建議:

範例 1:訓練 Loss 停滯

[Advisor] 偵測到驗證集 Loss 連續 5 個 Epoch 未下降。 建議:

  1. 降低學習率 (目前: 0.001 -> 建議: 0.0005)
  2. 增加 Dropout (目前: 0.2 -> 建議: 0.3)

範例 2:回測最大回落 (MDD) 過高

[Advisor] 警告:最大回落 (MDD) 達到 -25.4%,超過安全閾值 (-20%)。 建議:

  1. 啟用移動停損 (Trailing Stop)。
  2. 縮小單筆交易部位 (Position Size: 1.0 -> 0.5)。

5. 推薦工作流程

建議按照以下順序進行(所有操作均可通過 Web Dashboard 完成):

  1. 啟動 Dashboardpython manage.py 啟動 Web Dashboard
  2. 資料管理 → 在 Dashboard 中下載歷史數據並進行特徵工程(或使用 CLI)
  3. 模型訓練 → 在 Dashboard 的「模型訓練」頁面可視化訓練過程
  4. 模型參數優化 → 使用 CLI 命令進行 Optuna 超參數優化
  5. 模型分析 → 在 Dashboard 中查看訓練歷史和損失曲線
  6. 策略參數優化 → 使用 CLI 命令進行網格搜索
  7. 策略回測 → 在 Dashboard 的「策略回測」頁面執行並查看詳細的績效分析
  8. 實盤交易 → 先在模擬模式下測試,確認無誤後再進行真實交易
    • 使用 Dashboard 的「即時監控」頁面監控市場和模型預測
    • 使用「交易控制」頁面進行手動交易或自動交易

5.1 使用 Dashboard 的優勢

  • 可視化:所有數據和結果都以圖表形式展示,更直觀
  • 即時監控:無需切換終端,在瀏覽器中即可監控市場和交易狀態
  • 便捷操作:點擊按鈕即可執行操作,無需記憶複雜的命令
  • 多頁面管理:不同功能分頁展示,結構清晰
  • 統一介面:所有功能集中在一個 Web 應用中,無需切換不同工具

6. 開發規範

檔案檔頭範本 (中文)

所有新建立的 Python 檔案請遵循以下格式:

# -*- coding: utf-8 -*-
# 模組名稱:[模組中文名稱]
# 檔案路徑:[相對路徑]
# 建立日期:2025-11-27
# 負責人:[開發者名稱]
#
# 功能說明:
#     [簡述此模組的主要功能與職責]
#     [輸入與輸出說明]
#
# 修改記錄:
#     2025-11-27: 初始化檔案 (GitHub Copilot)

7. 模組分類速覽

  • CLI 與流程manage.pyautotrader/commands/ 統一入口,依據任務呼叫 data/train/backtest/optimize/analyze/trade/dashboard 等子命令。
  • Web Dashboardapp/ 目錄包含 Streamlit 應用程式,提供圖形化介面,對應 python manage.py dashboard
  • 資料作業autotrader/data/data/ 資料夾涵蓋歷史/即時下載、特徵工程與資料集管理,對應 python manage.py data ...
  • 模型與策略autotrader/ml/autotrader/trading/ 內含深度/傳統模型、策略、回測與實盤執行,對應 train/backtest/optimize/trade 指令。
  • 基礎建設與工具autotrader/core/autotrader/infrastructure/autotrader/utils/ 提供設定、日誌、Binance API、共用工具。
  • 更完整的分類、資料夾職責與維護紀錄請參考 PROJECT_STRUCTURE.md

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages