No description
- Python 65.4%
- HTML 34.6%
GridTrailBacktestEngine実行完了後、資産推移をASCII折れ線チャートで出力。 初期予算ライン(─)と資産曲線(○)を表示し、ドローダウンの雰囲気が一目でわかる。 主な変更: - charts.py: generate_equity_curve_chart()関数を追加(15行×横幅可変の折れ線グラフ) - backtest.py: GridTrailBacktestEngine.run()でチャート出力を追加 |
||
|---|---|---|
| .planning | ||
| cli | ||
| docs/superpowers | ||
| static | ||
| tests | ||
| webui | ||
| .env.sample | ||
| .gitignore | ||
| backtest.py | ||
| charts.py | ||
| CHECKPOINT.md | ||
| config.py | ||
| db.py | ||
| db_constants.py | ||
| download_historical_data.py | ||
| exchange.py | ||
| indicators.py | ||
| main.py | ||
| pair_ranker.py | ||
| prompt1.md | ||
| README.md | ||
| requirements.txt | ||
| s3.py | ||
| s3cli.py | ||
| trading_engine.py | ||
| volatility_ranker.py | ||
仮想通貨現物トレードシステム
システム概要
ccxtライブラリを使用した仮想通貨の現物トレード自動化システムです。 技術指標(BB, StocRSI, MACD)を組み合わせたシグナル生成により、 自動売買・バックテスト・パラメータ最適化を支援します。
- 言語: Python 3.x
- DB: SQLite(デフォルト)/ MySQL / PostgreSQL
- 取引所: ccxt対応全取引所(デフォルト: bitbank)
- WebUI: Flask + レスポンシブデザイン
主な機能
| 機能 | 説明 |
|---|---|
| 自動売買 | 3つの指標(BB, StocRSI, MACD)によるシグナル生成と自動注文 |
| バックテスト | 過去データでの戦略検証(Chart.js資産曲線表示) |
| グリッドサーチ | パラメータ最適化(TP/SL/BB期間など) |
| ペア分析・ランキング | ボラティリティ分析とスコアリングによるトレード候補ランキング |
| WebUI リアルタイム監視 | 5秒間隔の自動更新で価格・シグナル・ポジションを可視化 |
| CLI ツール (s3cli) | コマンドラインからの状態確認・バックテスト実行・チャート表示 |
アーキテクチャ
main.py (起動)
├── trading_engine.py (trading_cycle: 60秒間隔)
│ ├── OHLCV取得(差分のみ)
│ ├── 指標計算(BB, StocRSI, MACD)
│ ├── シグナル生成
│ └── 注文実行
├── webui.py (Flask: ポート5000)
│ ├── サーバーサイド: 5秒間隔で状態同期
│ └── クライアント: 5秒間隔のAjaxポーリング
├── db.py (SQLite/MySQL/PostgreSQL)
├── backtest.py (バックテストエンジン)
└── pair_ranker.py (ペア分析・ランキング)
起動方法
1. 初期設定
# 依存パッケージのインストール
pip install -r requirements.txt
# 対話式初期設定ウィザード
python main.py --setup
またはWebUIから設定:
python main.py
# ブラウザで http://localhost:5000/settings にアクセス
2. システム起動
python main.py
- Ctrl+C で安全に停止(PIDファイル自動削除)
- 二重起動防止機能付き
3. WebUIへのアクセス
| 画面ID | URL | 内容 |
|---|---|---|
| DA | http://localhost:5000/ |
ダッシュボード(チャート・シグナル) |
| PO | /position |
ポジション・損益表示 |
| OR | /orders |
注文・約定履歴 |
| TH | /trade_history |
取引履歴(資産推移) |
| SE | /settings |
初期設定 |
| BT | /backtest |
バックテスト実行・結果一覧 |
| GS | /grid_search |
グリッドサーチ(パラメータ最適化) |
| RK | /ranking |
ペア分析ランキング |
| VT | /volatility |
ボラティリティ分析ダッシュボード |
CLI ツール (s3cli)
Flaskサーバーに接続して、コマンドラインから状態確認・バックテスト実行・チャート表示が可能です。
使用方法
# システム状態表示
python s3cli.py state show
# バックテスト履歴一覧
python s3cli.py bt history
# バックテスト詳細表示
python s3cli.py bt detail <id>
# グリッドサーチ結果表示
python s3cli.py grid results <id>
# ランキング表示
python s3cli.py rank list
# ボラティリティ一覧
python s3cli.py rank vol
# システム設定表示
python s3cli.py sys show-settings
# インジケータ状態表示
python s3cli.py sys show-indicator
# ロッグ表示
python s3cli.py sys show-log
# アスキーチャート表示
python s3cli.py chart candle -n 5
JSON形式出力
--json オプションでJSON形式の出力が可能です:
python s3cli.py state show --json
python s3cli.py bt history --json
エラーハンドリング
CLIは統一されたエラーハンドリングを提供します:
[ERROR]プレフィックス付きのエラーメッセージ- 対策メッセージの自動表示
- HTTPステータスコード別(400/401/403/404/405/429/500/502/503)の詳細エラー表示
主な操作とログ記録
WebUI の全画面下部に操作ログ表示エリアがあり、5 秒ごとに自動更新されます。 以下の操作は自動的に DB に記録され、画面上で確認できます。
| 操作 | エンドポイント | ログアクション名 | 説明 |
|---|---|---|---|
| 取引 ON/OFF 切替 | POST /toggle_trading |
toggle_trading |
自動売買の開始・停止 |
| インジケータ ON/OFF | POST /toggle_indicator/<key> |
indicator_toggle |
BB, StocRSI, MACD 等の表示切替 |
| バックテスト実行 | POST /api/backtest/run |
backtest_run |
過去データでの戦略検証開始 |
| グリッドサーチ実行 | POST /api/grid_search/run |
grid_search_run |
パラメータ最適化開始 |
| 設定保存 | POST /save_settings |
settings_save |
通貨ペア・予算・API キー等の保存 |
| ペア分析実行 | POST /api/pair_analysis/run |
pair_analysis_run |
ボラティリティ分析とランキング計算 |
操作ログ API
| エンドポイント | メソッド | 説明 |
|---|---|---|
/api/logs?limit=50 |
GET |
最新 N 件の操作ログを取得 |
/api/logs/clear |
POST |
操作ログを全件削除 |
ポーリング動作
システムは以下の間隔でデータを取得・更新します:
| 項目 | 間隔 | 説明 |
|---|---|---|
| trading_cycle | 60秒 | メインの売買サイクル(シグナル生成・注文) |
| WebUI状態同期 | 5秒 | サーバーサイドで取引エンジンの状態を更新 |
| WebUIポーリング | 5秒 | ブラウザが/api/stateと/api/indicatorsをAjax取得 |
| OHLCV取得 | trading_cycle毎 | 最新の1本分のみ差分取得(必要時のみ) |
環境変数 / .envファイル
.envファイルを作成して設定します(後述のサンプル参照)。
主な設定項目:
| 変数名 | 説明 | デフォルト |
|---|---|---|
EXCHANGE_ID |
取引所ID | bitbank |
SYMBOL |
通貨ペア | OP/JPY |
AMOUNT |
予算(円) | 100 |
API_KEY / SECRET |
APIキー(後方互換) | - |
BINANCE_API_KEY / BINANCE_SECRET |
Binance Global用 | - |
BINANCEJAPAN_API_KEY / BINANCEJAPAN_SECRET |
Binance Japan用 | - |
DATABASE_TYPE |
DBタイプ (sqlite/mysql/postgresql) |
sqlite |
DATABASE_PATH |
SQLite DBパス | trading.db |
CCXT_VERSION |
ccxtバージョン (v3/v4/auto) |
auto |
WEBUI_HOST / WEBUI_PORT |
WebUIホスト/ポート | 0.0.0.0:5000 |
.envファイルの更新について
WebUIの設定画面(/settings)で設定を保存すると、
対応する値が自動的に.envファイルに反映されます。
ただしAPIキー(API_KEY, BINANCE_API_KEY等)は安全のため
.envファイルには保存されません(DBのみ)。
技術指標
| 指標 | パラメータ | 説明 |
|---|---|---|
| BB (ボリンジャーバンド) | 期間: 20, 標準偏差: 2 | 価格の範囲を示す |
| StocRSI | RSI: 14, ストキャ: 14, %K: 3, %D: 3 | モメンタム指標 |
| MACD | 高速: 12, 低速: 26, シグナル: 9 | トレンド追従指標 |
テスト
# 全テスト実行
python -m pytest tests/ -v
# エラーハンドリングのユニットテスト
python -m pytest tests/test_cli_errors.py -v
# CLIコマンドの統合テスト(サーバー接続時)
python -m pytest tests/test_cli_commands.py -v
ファイル構成
s3/
├── main.py # メインエントリポイント(起動・二重起動防止)
├── config.py # 設定管理(環境変数・デフォルト値)
├── trading_engine.py # 取引エンジン(シグナル生成・注文実行)
├── webui.py # WebUI(Flask + レスポンシブデザイン)
├── db.py # DB操作関数
├── db_constants.py # 定数定義(取引所リスト等)
├── exchange.py # ccxt取引所ラッパー
├── indicators.py # 技術指標計算(自前実装)
├── backtest.py # バックテストエンジン
├── pair_ranker.py # ペア分析・ランキング
├── s3cli.py # CLIツール(typerベース)
├── cli/ # CLIモジュール群
│ ├── errors.py # 共通エラーハンドリング
│ ├── chart.py # ASCIIチャート表示
│ ├── state.py # 状態表示
│ ├── data.py # データ管理
│ ├── backtest.py # バックテストコマンド
│ ├── grid.py # グリッドサーチコマンド
│ ├── rank.py # ランキングコマンド
│ ├── system.py # システムコマンド
│ └── api_client.py # REST APIクライアント
├── tests/ # テスト
│ ├── test_cli_errors.py # エラーハンドリングユニットテスト
│ └── test_cli_commands.py # CLI統合テスト
├── requirements.txt # 依存パッケージ
├── .env # 環境変数設定(作成済み)
├── trading.db # SQLiteデータベース
└── README.md # このファイル
ライセンス
MIT License