Skip to content

BTCFXのドンチアンチャネルブレイクアウトBOTの実践用コード(Bitflyer用)

Notifications You must be signed in to change notification settings

NeoKiring/BTCFX-BOT

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Crypto Sentiment Analyzer & Backtest System (CSABS)

概要

Crypto Sentiment Analyzer & Backtest System (CSABS) は、仮想通貨のチャートデータとニュース記事のセンチメント分析を統合し、機械学習による先行指標モデルを構築してバックテストを実行する高度な分析システムです。

主な特徴

  • 📊 複数銘柄対応: BTC、ETH、XRP等の主要仮想通貨に対応
  • 🤖 AI駆動分析: 機械学習モデルによる価格変動予測
  • 📰 ニュースセンチメント分析: VADER/TextBlobによる感情分析
  • 📈 包括的なバックテスト: 過去データでの戦略検証とパフォーマンス評価
  • 🔄 リアルタイム監視: WebSocketによる価格ストリーミングとシグナル生成
  • 🖥️ 使いやすいGUI: Tkinterによる直感的なユーザーインターフェース
  • 📁 SQLiteデータベース: 軽量で高速なデータ管理

システムアーキテクチャ

レイヤード構造

┌─────────────────────────────────────────────────────────┐
│         プレゼンテーション層 (GUI - Tkinter)                │
│  ┌────────────┬─────────────┬────────────┬──────────┐  │
│  │ダッシュボード│ バックテスト │ 設定・管理  │ ログ表示  │  │
│  └────────────┴─────────────┴────────────┴──────────┘  │
└─────────────────────────────────────────────────────────┘
                            ↓↑
┌─────────────────────────────────────────────────────────┐
│           ビジネスロジック層 (Core Modules)                │
│  ┌──────────┬───────────┬─────────────┬─────────────┐  │
│  │データ収集  │ 分析エンジン │ バックテスト │ リアルタイム │  │
│  │モジュール  │             │ エンジン     │ 監視        │  │
│  └──────────┴───────────┴─────────────┴─────────────┘  │
└─────────────────────────────────────────────────────────┘
                            ↓↑
┌─────────────────────────────────────────────────────────┐
│          データアクセス層 (SQLite Database)                │
│  ┌────────┬──────────┬─────────┬──────────┬────────┐  │
│  │価格Data│ニュースData│センチメント│バックテスト│モデル  │  │
│  └────────┴──────────┴─────────┴──────────┴────────┘  │
└─────────────────────────────────────────────────────────┘
                            ↓↑
┌─────────────────────────────────────────────────────────┐
│              外部API層 (External Services)                │
│  ┌──────────┬──────────┬───────────────────────────┐  │
│  │価格API    │ニュースAPI│センチメント分析ライブラリ    │  │
│  └──────────┴──────────┴───────────────────────────┘  │
└─────────────────────────────────────────────────────────┘

設計原則

  1. レイヤードアーキテクチャ: 各層の責務を明確に分離し、保守性を向上
  2. モジュール化: 独立性の高いモジュール設計で拡張性を確保
  3. スケーラビリティ: 新規銘柄・新規分析手法の追加が容易な設計
  4. オブザーバビリティ: ログ・メトリクス・トレースによる可観測性の実現
  5. 後方互換性: 設定ファイルとデータベーススキーマのバージョン管理

ディレクトリ構成

BTCFX-BOT/
│
├── Bitflyer実践用コード/        # 既存の参考プログラム
│   ├── BTCFX_BOT.py
│   ├── 使い方の説明.txt
│   ├── 元全文.txt
│   └── パラメータ設定の実際例.txt
│
├── src/                         # ソースコードのルートディレクトリ
│   ├── __init__.py
│   ├── main.py                  # アプリケーションのエントリーポイント
│   │
│   ├── gui/                     # プレゼンテーション層
│   │   ├── __init__.py
│   │   ├── main_window.py       # メインウィンドウ
│   │   ├── dashboard.py         # リアルタイムダッシュボード
│   │   ├── backtest_panel.py    # バックテスト設定・実行パネル
│   │   ├── settings_panel.py    # 設定管理パネル
│   │   ├── log_viewer.py        # ログビューア
│   │   └── components/          # 再利用可能なGUIコンポーネント
│   │       ├── __init__.py
│   │       ├── chart_widget.py  # チャート表示ウィジェット
│   │       └── table_widget.py  # テーブル表示ウィジェット
│   │
│   ├── core/                    # ビジネスロジック層
│   │   ├── __init__.py
│   │   │
│   │   ├── data_collector/      # データ収集モジュール
│   │   │   ├── __init__.py
│   │   │   ├── base_collector.py        # 抽象基底クラス
│   │   │   ├── price_collector.py       # 価格データ収集
│   │   │   ├── news_collector.py        # ニュース記事収集
│   │   │   └── scheduler.py             # データ収集スケジューラ
│   │   │
│   │   ├── analyzer/            # 分析エンジン
│   │   │   ├── __init__.py
│   │   │   ├── technical_analyzer.py    # テクニカル分析
│   │   │   ├── sentiment_analyzer.py    # センチメント分析
│   │   │   ├── feature_engineer.py      # 特徴量エンジニアリング
│   │   │   └── indicators/              # テクニカル指標
│   │   │       ├── __init__.py
│   │   │       ├── trend.py             # トレンド系指標
│   │   │       ├── momentum.py          # モメンタム系指標
│   │   │       └── volatility.py        # ボラティリティ系指標
│   │   │
│   │   ├── model/               # 機械学習モデル
│   │   │   ├── __init__.py
│   │   │   ├── base_model.py            # モデル基底クラス
│   │   │   ├── predictor.py             # 予測モデル
│   │   │   ├── trainer.py               # モデル学習
│   │   │   └── evaluator.py             # モデル評価
│   │   │
│   │   ├── backtest/            # バックテストエンジン
│   │   │   ├── __init__.py
│   │   │   ├── engine.py                # バックテスト実行エンジン
│   │   │   ├── strategy.py              # トレード戦略
│   │   │   ├── portfolio.py             # ポートフォリオ管理
│   │   │   ├── performance.py           # パフォーマンス評価
│   │   │   └── risk_manager.py          # リスク管理
│   │   │
│   │   └── realtime/            # リアルタイム監視
│   │       ├── __init__.py
│   │       ├── monitor.py               # リアルタイム監視
│   │       ├── signal_generator.py      # シグナル生成
│   │       └── notifier.py              # アラート通知
│   │
│   ├── data/                    # データアクセス層
│   │   ├── __init__.py
│   │   ├── database.py          # データベース接続管理
│   │   ├── models.py            # ORMモデル定義
│   │   └── repositories/        # リポジトリパターン
│   │       ├── __init__.py
│   │       ├── price_repository.py
│   │       ├── news_repository.py
│   │       ├── sentiment_repository.py
│   │       └── backtest_repository.py
│   │
│   ├── api/                     # 外部API層
│   │   ├── __init__.py
│   │   ├── base_api.py          # API基底クラス
│   │   ├── crypto_api.py        # 仮想通貨価格API
│   │   ├── news_api.py          # ニュースAPI
│   │   └── adapters/            # APIアダプター
│   │       ├── __init__.py
│   │       ├── cryptowatch.py
│   │       ├── coingecko.py
│   │       └── newsapi.py
│   │
│   ├── utils/                   # ユーティリティ
│   │   ├── __init__.py
│   │   ├── logger.py            # ロギング設定
│   │   ├── config.py            # 設定管理
│   │   ├── validators.py        # データバリデーション
│   │   └── helpers.py           # ヘルパー関数
│   │
│   └── exceptions/              # カスタム例外
│       ├── __init__.py
│       ├── api_exceptions.py
│       ├── data_exceptions.py
│       └── model_exceptions.py
│
├── config/                      # 設定ファイル
│   ├── default_config.yaml      # デフォルト設定
│   ├── symbols.yaml             # 銘柄設定
│   └── api_keys.yaml.template   # APIキーテンプレート
│
├── data/                        # データディレクトリ
│   ├── database/                # SQLiteデータベース
│   │   └── crypto_analysis.db
│   ├── models/                  # 学習済みモデル
│   └── cache/                   # キャッシュデータ
│
├── logs/                        # ログファイル
│   ├── application.log
│   ├── error.log
│   └── trading.log
│
├── tests/                       # テストコード
│   ├── __init__.py
│   ├── unit/                    # ユニットテスト
│   ├── integration/             # 統合テスト
│   └── fixtures/                # テストデータ
│
├── docs/                        # ドキュメント
│   ├── architecture.md          # アーキテクチャ設計書
│   ├── api_specification.md     # API仕様書
│   └── user_guide.md            # ユーザーガイド
│
├── scripts/                     # ユーティリティスクリプト
│   ├── setup_database.py        # データベース初期化
│   ├── collect_historical_data.py  # 過去データ収集
│   └── train_model.py           # モデル学習スクリプト
│
├── requirements.txt             # Python依存パッケージ
├── setup.py                     # セットアップスクリプト
├── run.bat                      # Windows起動用バッチファイル
├── run.sh                       # Linux/Mac起動用シェルスクリプト
├── README.md                    # プロジェクトREADME
└── .gitignore                   # Git除外設定

コア機能の要件定義

Phase 1: データ基盤構築

1.1 データ収集機能

機能要件:

  • 複数銘柄(BTC, ETH, XRP等)の価格データ(OHLCV)を取得
  • ニュース記事を複数ソースから収集
  • データ収集の自動スケジューリング
  • APIレート制限への対応(リトライ機構、キャッシング)

技術仕様:

  • 価格データAPI: CryptoWatch / CoinGecko(フォールバック対応)
  • ニュースAPI: NewsAPI / CryptoPanic
  • データ取得間隔: 設定可能(デフォルト: 1時間足)
  • エラーハンドリング: 指数バックオフリトライ

データベーススキーマ:

-- 価格データテーブル
CREATE TABLE price_data (
    id INTEGER PRIMARY KEY,
    symbol TEXT NOT NULL,
    timestamp INTEGER NOT NULL,
    open REAL NOT NULL,
    high REAL NOT NULL,
    low REAL NOT NULL,
    close REAL NOT NULL,
    volume REAL NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    UNIQUE(symbol, timestamp)
);

-- ニュースデータテーブル
CREATE TABLE news_data (
    id INTEGER PRIMARY KEY,
    title TEXT NOT NULL,
    content TEXT,
    source TEXT NOT NULL,
    url TEXT UNIQUE,
    published_at TIMESTAMP NOT NULL,
    symbols TEXT,  -- JSON形式で関連銘柄を保存
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- センチメントスコアテーブル
CREATE TABLE sentiment_scores (
    id INTEGER PRIMARY KEY,
    news_id INTEGER NOT NULL,
    symbol TEXT NOT NULL,
    score REAL NOT NULL,  -- -1.0 ~ 1.0
    magnitude REAL,
    analyzer_version TEXT,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY(news_id) REFERENCES news_data(id)
);

1.2 データベース管理機能

機能要件:

  • SQLiteデータベースの自動初期化
  • データの整合性チェック
  • 古いデータの自動アーカイブ(1年以上経過)
  • バックアップ・リストア機能

Phase 2: 分析エンジン

2.1 テクニカル分析機能

機能要件:

  • 主要テクニカル指標の計算
    • トレンド系: SMA, EMA, MACD, ADX
    • モメンタム系: RSI, Stochastic, CCI
    • ボラティリティ系: ATR, Bollinger Bands, ドンチャンチャネル
  • カスタム指標の追加が容易な設計
  • 複数時間軸での分析対応

技術仕様:

  • ライブラリ: TA-Lib または pandas-ta
  • 並列計算対応(複数銘柄・複数時間軸)

2.2 センチメント分析機能

機能要件:

  • ニュース記事の感情スコア算出(-1.0 ~ 1.0)
  • 銘柄ごとのセンチメント集計
  • 時系列でのセンチメント推移分析
  • センチメントの急変検知

技術仕様:

  • 分析ライブラリ: VADER Sentiment Analysis / TextBlob
  • 日本語対応: 必要に応じてGoogleTranslate APIで翻訳
  • スコアリング:
    • positive: 0.05 ~ 1.0
    • neutral: -0.05 ~ 0.05
    • negative: -1.0 ~ -0.05

2.3 特徴量エンジニアリング

機能要件:

  • テクニカル指標とセンチメントスコアの統合
  • ラグ特徴量の生成(過去N期間のデータ)
  • ローリング統計量の計算(移動平均、移動標準偏差)
  • 特徴量の正規化・標準化

Phase 3: 機械学習モデル

3.1 先行指標モデル

機能要件:

  • 価格変動の方向性予測(上昇/下降/横ばい)
  • 予測の信頼度スコア算出
  • モデルの定期的な再学習
  • 複数モデルのアンサンブル対応

技術仕様:

  • モデル候補:
    • ランダムフォレスト(初期実装)
    • XGBoost(高度な実装)
    • LightGBM(大規模データ対応)
  • 評価指標: Accuracy, Precision, Recall, F1-Score, AUC-ROC
  • 交差検証: Time Series Split(5-fold)

3.2 モデル学習・評価

機能要件:

  • 学習データ・検証データ・テストデータの分割
  • ハイパーパラメータ最適化(Grid Search / Bayesian Optimization)
  • モデルのバージョン管理
  • 学習履歴の保存

データベーススキーマ:

CREATE TABLE model_metadata (
    id INTEGER PRIMARY KEY,
    model_name TEXT NOT NULL,
    version TEXT NOT NULL,
    algorithm TEXT NOT NULL,
    hyperparameters TEXT,  -- JSON形式
    train_period_start TIMESTAMP,
    train_period_end TIMESTAMP,
    validation_score REAL,
    test_score REAL,
    file_path TEXT,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

Phase 4: バックテストエンジン

4.1 バックテスト実行機能

機能要件:

  • 指定期間でのシミュレーション実行
  • 複数戦略の並列バックテスト
  • スリッページ・手数料の考慮
  • ポジション管理(ロング/ショート)

技術仕様:

  • 初期資金: 設定可能(デフォルト: 1,000,000円)
  • 手数料率: 設定可能(デフォルト: 0.1%)
  • スリッページ: 設定可能(デフォルト: 0.05%)
  • ポジションサイズ: 固定 or 資金比率

4.2 パフォーマンス評価

機能要件:

  • 総リターン、年率リターンの計算
  • シャープレシオ、ソルティノレシオの算出
  • 最大ドローダウンの計算
  • 勝率、平均利益/損失の集計
  • 取引履歴のエクスポート(CSV)

データベーススキーマ:

CREATE TABLE backtest_results (
    id INTEGER PRIMARY KEY,
    name TEXT NOT NULL,
    symbol TEXT NOT NULL,
    period_start TIMESTAMP NOT NULL,
    period_end TIMESTAMP NOT NULL,
    initial_capital REAL NOT NULL,
    final_capital REAL NOT NULL,
    total_return REAL,
    sharpe_ratio REAL,
    max_drawdown REAL,
    win_rate REAL,
    total_trades INTEGER,
    model_id INTEGER,
    strategy_config TEXT,  -- JSON形式
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY(model_id) REFERENCES model_metadata(id)
);

CREATE TABLE trade_history (
    id INTEGER PRIMARY KEY,
    backtest_id INTEGER NOT NULL,
    timestamp TIMESTAMP NOT NULL,
    action TEXT NOT NULL,  -- BUY/SELL
    price REAL NOT NULL,
    quantity REAL NOT NULL,
    pnl REAL,
    FOREIGN KEY(backtest_id) REFERENCES backtest_results(id)
);

Phase 5: リアルタイム監視

5.1 リアルタイムデータ取得

機能要件:

  • WebSocketによる価格データのストリーミング
  • 定期的なニュース更新チェック
  • データの自動保存

5.2 シグナル生成

機能要件:

  • 学習済みモデルによるリアルタイム予測
  • エントリー/エグジットシグナルの生成
  • シグナルの強度スコア表示

5.3 アラート通知

機能要件:

  • GUI上でのポップアップ通知
  • ログファイルへの記録
  • オプション: LINE通知、メール通知

Phase 6: GUI実装

6.1 ダッシュボード

機能要件:

  • リアルタイム価格チャート表示(複数銘柄)
  • センチメントスコアの表示
  • 最新シグナルの表示
  • ポジション情報の表示

6.2 バックテストパネル

機能要件:

  • バックテスト期間の設定
  • 戦略パラメータの設定
  • バックテスト実行ボタン
  • 結果の可視化(チャート、統計)

6.3 設定管理パネル

機能要件:

  • APIキーの設定
  • データ収集間隔の設定
  • 通知設定
  • モデル選択

6.4 ログビューア

機能要件:

  • リアルタイムログ表示
  • ログレベルフィルタリング(DEBUG, INFO, WARNING, ERROR)
  • ログファイルのエクスポート

非機能要件

パフォーマンス

  • データ収集: 1銘柄あたり5秒以内
  • センチメント分析: 1記事あたり1秒以内
  • バックテスト: 1年分のデータで10秒以内(1銘柄)
  • GUI応答性: 操作後100ms以内に反応

セキュリティ

  • APIキーの暗号化保存
  • データベースアクセスの権限管理
  • ログへの機密情報の非記録

可用性

  • エラー時の自動リトライ
  • ログによる障害追跡
  • データベースの定期バックアップ

保守性

  • モジュール間の疎結合
  • 包括的なログ出力
  • コメント・ドキュメントの充実

技術スタック

プログラミング言語

  • Python 3.9+

GUI Framework

  • Tkinter (商用利用可能、Pythonビルトイン)

データベース

  • SQLite3

外部API

  • 価格データ: CryptoWatch API / CoinGecko API
  • ニュースデータ: NewsAPI / CryptoPanic API

機械学習・データ分析

  • scikit-learn: 機械学習モデル
  • XGBoost / LightGBM: 勾配ブースティング
  • pandas: データ操作
  • numpy: 数値計算
  • TA-Lib / pandas-ta: テクニカル分析

センチメント分析

  • VADER Sentiment: 英語センチメント分析
  • TextBlob: テキスト処理

その他

  • requests: HTTP通信
  • websocket-client: WebSocket通信
  • pyyaml: YAML設定ファイル読み込み
  • matplotlib / plotly: データ可視化
  • pytest: テストフレームワーク

インストール方法

必要環境

  • Python 3.9以上
  • pip(Pythonパッケージマネージャ)
  • Windows 10/11、macOS、Linux

依存パッケージのインストール

pip install -r requirements.txt

データベースの初期化

python scripts/setup_database.py

APIキーの設定

  1. config/api_keys.yaml.templateconfig/api_keys.yaml にコピー
  2. 各種APIキーを設定
# config/api_keys.yaml
cryptowatch:
  api_key: "YOUR_CRYPTOWATCH_API_KEY"

coingecko:
  api_key: ""  # CoinGeckoは無料プランではAPIキー不要

newsapi:
  api_key: "YOUR_NEWSAPI_KEY"

cryptopanic:
  api_key: "YOUR_CRYPTOPANIC_KEY"

使い方

Windowsでの起動

run.bat

Linux/Macでの起動

chmod +x run.sh
./run.sh

Pythonから直接起動

python src/main.py

開発ロードマップ

Phase 1: データ基盤構築 ✅

  • データ収集モジュールの実装
  • データベース設計・構築
  • APIアダプターの実装

Phase 2: 分析エンジン 🔄

  • テクニカル分析機能の実装
  • センチメント分析機能の実装
  • 特徴量エンジニアリング

Phase 3: 機械学習モデル 📋

  • モデル学習パイプラインの構築
  • 予測モデルの実装
  • モデル評価システム

Phase 4: バックテストエンジン 📋

  • バックテスト実行エンジンの実装
  • パフォーマンス評価機能
  • 結果可視化

Phase 5: リアルタイム監視 📋

  • WebSocketストリーミング実装
  • シグナル生成システム
  • アラート通知機能

Phase 6: GUI実装 📋

  • メインウィンドウの実装
  • ダッシュボード
  • バックテストパネル
  • 設定管理パネル

ライセンス

本プロジェクトは個人利用・商用利用ともに可能です。


参考資料

既存プログラム

  • Bitflyer実践用コード/BTCFX_BOT.py: ドンチャンチャネルブレイクアウトBOT

関連ドキュメント


注意事項

⚠️ 重要

  • このシステムは教育・研究目的で開発されています
  • 実際の取引に使用する場合は、十分なバックテストと検証を行ってください
  • 仮想通貨取引には高いリスクが伴います。投資は自己責任で行ってください
  • APIキーは絶対に公開しないでください

お問い合わせ

ご質問やバグ報告は、GitHubのIssueまでお願いいたします。


Last Updated: 2026-01-20 Version: 1.0.0 (要件定義完了)

About

BTCFXのドンチアンチャネルブレイクアウトBOTの実践用コード(Bitflyer用)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages