No description
  • Python 65.4%
  • HTML 34.6%
Find a file
joe 6a26f79c79 feat: CLIベースの資産推移ASCIIチャートをバックテスト結果に追加
GridTrailBacktestEngine実行完了後、資産推移をASCII折れ線チャートで出力。
初期予算ライン(─)と資産曲線(○)を表示し、ドローダウンの雰囲気が一目でわかる。

主な変更:
- charts.py: generate_equity_curve_chart()関数を追加(15行×横幅可変の折れ線グラフ)
- backtest.py: GridTrailBacktestEngine.run()でチャート出力を追加
2026-05-04 17:57:07 +09:00
.planning
cli
docs/superpowers
static
tests ダッシュボードチャートに約定履歴・ポジションオーバーレイ切替機能を追加 2026-05-03 18:51:59 +09:00
webui ダッシュボードチャートに約定履歴・ポジションオーバーレイ切替機能を追加 2026-05-03 18:51:59 +09:00
.env.sample
.gitignore
backtest.py feat: CLIベースの資産推移ASCIIチャートをバックテスト結果に追加 2026-05-04 17:57:07 +09:00
charts.py feat: CLIベースの資産推移ASCIIチャートをバックテスト結果に追加 2026-05-04 17:57:07 +09:00
CHECKPOINT.md
config.py グリッド+トレールバックテストに仮想予算比率・期間指定・bitbank.cc対応を追加 2026-05-04 12:29:32 +09:00
db.py ダッシュボードチャートに約定履歴・ポジションオーバーレイ切替機能を追加 2026-05-03 18:51:59 +09:00
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             # WebUIFlask + レスポンシブデザイン)
├── 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