/HWB-bot

Primary LanguagePython

HWB Strategy AI Trading Bot

このBotは、特定のテクニカル分析戦略(HWB戦略)に基づき、NASDAQ/NYSEの全上場銘柄(約7,000-8,000銘柄)を毎日スキャンし、潜在的な取引機会を「AI判定システム」としてDiscordに通知します。

📌 主な特徴

  • AI判定システム: スキャン結果を「監視候補」「当日シグナル」「直近シグナル」の3つのカテゴリで分かりやすくサマリー投稿
  • 大規模スキャン: NASDAQ/NYSE全銘柄を自動分析
  • 柔軟な投稿制御: サマリーと個別アラート(戦略1)を独立してON/OFF可能(当日シグナルは常時投稿)
  • シグナル管理: 一度シグナルが出た銘柄には冷却期間を設け、再通知を抑制
  • 段階的フィルタリング: 効率的な処理で高速スキャン

🎯 戦略概要

ルール①:長期トレンドの確認

  • 週足の終値が週足200SMAを上回っている

ルール②:セットアップの検出

  • 日足200SMAと日足200EMAで形成されるゾーン(帯)の間に、始値と終値の両方が収まるローソク足が出現

ルール③:買い圧力の確認(戦略1アラート)

  • セットアップ後にBullish FVG(Fair Value Gap)が形成される
  • 以下のいずれかの条件を満たす:
    • 条件A: FVGの3本目のローソク足の始値or終値が、日足200SMA/EMAの±5%範囲内
    • 条件B: FVGゾーンの中心が、日足200SMA/EMAの±10%範囲内

ルール④:エントリートリガー(戦略2アラート)

  • Part A: セットアップ翌日から昨日までの最高値をレジスタンスとする
  • Part B: FVG下限がサポートとして機能し、現在の終値がレジスタンスを0.1%以上ブレイクアウト

🚀 処理の最適化

このBotは大量の銘柄を効率的に処理するため、以下の最適化を実装しています:

ルール順フィルタリング

  1. ルール①(週足トレンド): 全銘柄をバッチ処理でチェック
  2. ルール②③④: ルール①を通過した銘柄のみを並列処理

この方式により、処理対象を段階的に絞り込み、計算コストの高い後段のルールの処理量を削減します。

パフォーマンス機能

  • 並列処理: 複数銘柄を同時に処理
  • データキャッシュ: 取得済みデータを再利用
  • バッチ処理: ネットワークI/Oを効率化
  • 段階的フィルタリング: 早期に対象を絞り込み

処理時間の目安

  • 7,000銘柄の処理: 約5-10分(初回)
  • キャッシュ利用時: 約2-5分

🚀 セットアップ

1. 前提条件

  • Python 3.8以上
  • Discord Bot Token
  • 十分なメモリ(推奨: 4GB以上)

2. インストール

# リポジトリのクローン
git clone https://github.com/yourusername/hwb-discord-bot.git
cd hwb-discord-bot

# 仮想環境の作成
python -m venv venv
source venv/bin/activate  # Windows: venv\Scripts\activate

# 依存関係のインストール
pip install -r requirements.txt

3. 環境変数の設定

.env.example.envにコピーして編集:

cp .env.example .env

.envファイルを開き、必要な設定を行う:

# Discord設定
DISCORD_BOT_TOKEN="あなたのトークン"
BOT_CHANNEL_NAME="hwb-signal-alerts"

# 投稿設定(任意)
POST_SUMMARY="true"
POST_STRATEGY1_ALERTS="false"

# シグナル管理設定(任意)
SIGNAL_COOLING_PERIOD=14

# パフォーマンス設定(任意)
BATCH_SIZE=50
MAX_WORKERS=10
CACHE_EXPIRY_HOURS=12

4. Discordサーバーの準備

  • Botを招待するサーバーを用意
  • Bot権限:チャンネル作成、メッセージ送信、ファイル添付

📅 実行タイミング

Botは以下のスケジュールで自動実行されます:

  • 平日のみ: 月曜日〜金曜日
  • 実行時刻: 米国市場終了(16:00 ET)の15分後
    • 夏時間: 5:15 JST
    • 冬時間: 6:15 JST

🤖 Bot実行

# Botを起動
python bot_hwb.py

Botが起動すると:

  1. NASDAQ/NYSEの銘柄リストを自動取得
  2. 自動的に#hwb-signal-alertsチャンネルを作成(存在しない場合)
  3. 毎日の指定時刻に全銘柄をスキャン
  4. 条件を満たす銘柄をDiscordに通知

📱 Discordコマンド

コマンド 説明 使用例
!status Botのステータスと次回スキャン時刻を表示 !status
!check <SYMBOL> 特定の銘柄のシグナル状況をチェック !check AAPL
!history <SYMBOL> シグナル履歴を表示(指定がなければサマリー) !history NVDA
!scan 手動でスキャンを実行(管理者のみ) !scan
!clear_cache データキャッシュをクリア(管理者のみ) !clear_cache
!clear_history 全てのシグナル履歴をクリア(管理者のみ) !clear_history
!toggle [type] 投稿設定を切り替え(管理者のみ) !toggle s1

toggleコマンドの詳細

  • !toggle - 現在の投稿設定を表示
  • !toggle summary - サマリー投稿のON/OFF切り替え
  • !toggle s1 - 戦略1個別アラートのON/OFF切り替え

📊 アラート内容

Botは、サマリー投稿と個別アラートの2種類を投稿します。

サマリー表示例

AI判定システム
NASDAQ/NYSE スキャン結果
スキャン時刻: 2024-07-25 05:15 JST

📍 監視候補
NVDA, AAPL, AMD, MSFT, GOOGL, META, TSLA

🚀 当日シグナル
MOS, MMM

📈 直近シグナル(3営業日以内)
PANW, UBER

投稿タイプ

  1. サマリー投稿(AI判定システム)(デフォルト: ON)

    • 監視候補: 戦略1(FVG検出)に該当する銘柄。ブレイクアウト待ちの状態。
    • 当日シグナル: 戦略2(ブレイクアウト)に該当した銘柄。
    • 直近シグナル: 過去3営業日以内に戦略2に該当した銘柄。
  2. 個別アラート(戦略1: FVG検出)(デフォルト: OFF)

    • 「監視候補」に挙がった銘柄の詳細情報とチャートを投稿します。
  3. 個別アラート(戦略2: ブレイクアウト)常時ON

    • 「当日シグナル」に挙がった銘柄の詳細情報とチャートを投稿します。
    • このアラートは、.envの設定(POST_STRATEGY2_ALERTS)に関わらず、常に投稿されます。

投稿設定の変更

.envファイルでサマリーと戦略1アラートのON/OFFを設定できます。

# 投稿設定
POST_SUMMARY="true"           # サマリー投稿のON/OFF
POST_STRATEGY1_ALERTS="false" # 戦略1個別アラートのON/OFF

注意: 戦略2の個別アラート(当日シグナル)は、ユーザーが重要な通知を見逃さないように、常に投稿される仕様となっています。

📈 チャート表示

各アラートには以下を含むチャートが添付されます:

  • 日足ローソク足(6ヶ月分)
  • 日足200SMA(明るい紫)
  • 日足200EMA(紫)
  • セットアップゾーン(黄色)
  • FVGゾーン(緑色)
  • ボリューム

⚙️ シグナル管理

Botは、一度ブレイクアウト(戦略2)のシグナルを通知した銘柄に対して「冷却期間」を設けることで、短期間に同じ銘柄のアラートが繰り返し通知されるのを防ぎます。

  • 冷却期間: デフォルトでは14日間です。
  • 機能:
    • ある銘柄が「当日シグナル」として通知されると、その日から冷却期間に入ります。
    • 冷却期間中の銘柄は、新しいセットアップが検出されても、再度シグナルとして通知されることはありません。
    • これにより、ユーザーはノイズの少ない、より意味のある新しいシグナルに集中できます。
  • 確認: !statusコマンドで現在冷却期間中の銘柄数を確認できます。!history <SYMBOL>で個別銘柄の状態も確認可能です。
  • カスタマイズ: 冷却期間の日数は、.envファイルのSIGNAL_COOLING_PERIODで変更できます。

🔧 カスタマイズ

戦略パラメータ

.envファイルで調整可能:

# MA近接条件(ルール③)
PROXIMITY_PERCENTAGE=0.05      # 条件A: ±5%
FVG_ZONE_PROXIMITY=0.10       # 条件B: ±10%

# ブレイクアウト閾値(ルール④)
BREAKOUT_THRESHOLD=0.001      # 0.1%以上の上昇

# その他のパラメータ
MA_PERIOD=200                 # 移動平均期間
SETUP_LOOKBACK_DAYS=60        # セットアップ検索期間
FVG_SEARCH_DAYS=30           # FVG検索期間

# シグナル管理設定
SIGNAL_COOLING_PERIOD=14      # シグナル後の冷却期間(日数)

パフォーマンス設定

# 並列処理設定
BATCH_SIZE=50          # バッチ処理のサイズ(推奨: 20-100)
MAX_WORKERS=10         # 並列ワーカー数(推奨: CPUコア数)
CACHE_EXPIRY_HOURS=12  # キャッシュ有効期限(時間)

⚠️ 注意事項

  • このBotは教育・情報提供目的です
  • 投資判断は自己責任で行ってください
  • 大量の銘柄を処理するため、初回実行時は時間がかかります
  • yfinanceのレート制限に注意(エラーが出る場合は時間をおいて再実行)
  • 市場の休場日(祝日等)は考慮されていません

🐛 トラブルシューティング

メモリ不足エラー

# スワップメモリを増やす(Linux)
sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

yfinanceエラー

# 最新版にアップグレード
pip install --upgrade yfinance curl_cffi

処理が遅い場合

  • BATCH_SIZEを小さくする(例: 20)
  • MAX_WORKERSを減らす(例: 5)
  • キャッシュが効いているか確認(!statusコマンド)

Discordに接続できない

  • Bot Tokenが正しいか確認
  • Botに必要な権限があるか確認
  • ファイアウォール設定を確認

アラートが来ない

  • !statusでBotの状態を確認
  • コンソールログでエラーを確認
  • 市場が開いている日か確認
  • 銘柄リストが正しく取得できているか確認

📝 ログ

Botのログはコンソールに出力されます。詳細なログが必要な場合:

# ログファイルへのリダイレクト
python bot_hwb.py > hwb_bot.log 2>&1

# リアルタイムでログを確認
tail -f hwb_bot.log

🤝 貢献

バグ報告や機能提案は、GitHubのIssueまたはPull Requestでお願いします。

📄 ライセンス

MIT License


免責事項: このAI判定システムは教育および情報提供のみを目的として作成されています。AIによる判定結果は投資助言ではありません。実際の投資判断は、ご自身の責任において、十分なリサーチとリスク評価の上で行ってください。過去のパフォーマンスは将来の結果を保証するものではありません。