Self-hosted webhook bridge from TradingView alerts to moomoo / OANDA brokers, with Cloudflare Tunnel + WAF reference architecture.
Project description
alpha-strike
English | 日本語
TradingView のアラートを Webhook で受け取り、moomoo / OANDA に自動発注するセルフホスト型ブリッジ
alpha-strike は、TradingView Premium / Essential 以上のアラート機能から Webhook 経由でシグナルを受け取り、リクエストボディに基づいて moomoo 証券(米国株・香港株・暗号資産) または OANDA 証券(FX・CFD) へ自動発注する FastAPI ベースの Webhook サーバーです。
Oracle Cloud Always Free + Cloudflare Tunnel + Cloudflare WAF Custom Rule の構成で、自宅 IP の DHCP 変動に依存せず、月額 0 円でセルフホストできるリファレンス実装も提供しています。
TradingView Premium / Essential
│ HTTPS Webhook
▼
Cloudflare WAF Custom Rule (TradingView IP allowlist)
│
Cloudflare Tunnel (cloudflared)
│ outbound only (NSG Ingress = 0)
▼
alpha-strike (FastAPI, this repo)
│
├──► moomoo OpenD ─► moomoo SIMULATE / REAL (米国株 / 香港株 / 暗号資産)
└──► OANDA REST v20 ─► OANDA PRACTICE / LIVE (FX / CFD)
主な機能
- TradingView Webhook 受信 —
/webhookエンドポイントで JSON ペイロードを受理、Pydantic で厳格バリデーション - passphrase 認証 — リクエストボディの
passphraseをWEBHOOK_PASSPHRASEと HMAC 比較 - multi-broker ルーティング —
broker: "moomoo" | "oanda"で発注先を選択。asset_classでUS/HK/CRYPTO/FX/COMMODITY/INDEXを切替 - Rate limiting —
slowapiで10 req/min/IPの上限を強制 - リトライ + タイムアウト —
tenacityで broker API 一時障害に対する自動リトライ(OANDA: 指数バックオフ ×3、moomoo: 固定 2 秒 ×3) - JSONL イベントログ —
SignalEvent/OrderEvent/FillEvent/TradeClosedEventを逐次追記、journal との pnl 突合に利用可 - メモリ・サービス監視 —
scripts/check_memory.shを cron 登録すれば 5 分毎にメモリ・swap・サービス・OOM を ntfy 通知 - 本格運用向けデプロイ手順 —
docs/ops/vm-provisioning.mdに Oracle Cloud E2.1.Micro + Cloudflare Tunnel + systemd の完全手順を収録
クイックスタート
ローカルで試す(最短)
PyPI から(推奨)
# uv(推奨)
uv add alpha-strike
# または pipx でグローバル CLI として
pipx install alpha-strike
# または venv に直接
pip install alpha-strike
起動:
WEBHOOK_PASSPHRASE=your-secret-passphrase alpha-strike
# ホスト / ポート指定
WEBHOOK_PASSPHRASE=your-secret-passphrase alpha-strike --host 127.0.0.1 --port 9000
# 疎通確認
curl http://localhost:8080/health
# → {"status":"ok"}
ソースから(開発時)
git clone https://github.com/alforge-labs/alpha-strike.git
cd alpha-strike
uv sync
# .env を設定
echo 'WEBHOOK_PASSPHRASE=your-secret-passphrase' > .env
echo 'MOOMOO_TRD_ENV=SIMULATE' >> .env # moomoo を使う場合
echo 'OANDA_ENV=PRACTICE' >> .env # OANDA を使う場合
# CLI から起動
uv run alpha-strike
# ホットリロード(開発時)
uv run alpha-strike --reload
Oracle Cloud + Cloudflare Tunnel で本格運用
ペーパートレード本格運用までの完全手順は公式ドキュメントを参照:
- 📖 alpha-strike セットアップガイド — VM プロビジョニング・Cloudflare Tunnel・WAF・OpenD・systemd の全手順
- 📖 TradingView × alpha-strike Integration — Webhook ペイロード仕様と Pine v6 テンプレート
環境変数
| 変数 | 必須 | 説明 |
|---|---|---|
WEBHOOK_PASSPHRASE |
✅ | TradingView アラートの認証用パスフレーズ(32 文字以上のランダム文字列推奨) |
ALPHA_STRIKE_HOST |
— | バインドホスト(既定 0.0.0.0) |
ALPHA_STRIKE_PORT |
— | バインドポート(既定 8080) |
MOOMOO_HOST |
moomoo 使用時 | OpenD のホスト(既定 127.0.0.1) |
MOOMOO_PORT |
moomoo 使用時 | OpenD のポート(既定 11111) |
MOOMOO_TRD_ENV |
moomoo 使用時 | SIMULATE(デモ)または REAL(本番) |
MOOMOO_TRADE_PWD_MD5 |
moomoo 使用時 | 取引パスワード MD5 ハッシュ |
OANDA_API_KEY |
OANDA 使用時 | Personal Access Token |
OANDA_ACCOUNT_ID |
OANDA 使用時 | 口座 ID |
OANDA_ENV |
OANDA 使用時 | PRACTICE(デモ)または LIVE(本番) |
重要: 検証時は必ず
MOOMOO_TRD_ENV=SIMULATE/OANDA_ENV=PRACTICEを使用してください。本番口座での誤発注は本ソフトウェアの責任範囲外です。
Webhook ペイロード仕様
詳細は docs/tradingview.md と docs/webhook-payload-v2.md を参照。最小例:
{
"passphrase": "your-secret-passphrase",
"broker": "moomoo",
"asset_class": "US",
"action": "buy",
"ticker": "US.AAPL",
"quantity": 10,
"run_mode": "paper",
"strategy_id": "demo_buy_v1"
}
asset_class |
broker | ticker 例 |
|---|---|---|
US |
moomoo / oanda | US.AAPL / AAPL |
HK |
moomoo | HK.00700 |
CRYPTO |
moomoo | CC.BTC / CC.ETH / CC.XRP |
FX |
oanda | USDJPY |
COMMODITY |
oanda | XAUUSD |
INDEX |
oanda | NAS100 |
ドキュメント
- 📖 公式ドキュメント — Alforge Labs ドキュメント集約
- 📖 alpha-strike セットアップガイド — 本格運用までの完全手順
- 📖 Webhook ペイロード仕様 — JSON フィールドの詳細
- 📖 VM プロビジョニング手順書 — Oracle Cloud E2.1.Micro + Cloudflare Tunnel
- 📖 ペーパートレード Go-Live チェックリスト — 本番運用前の確認項目
- 📖 moomoo OpenD セットアップ — OpenD CLI インストールとデバイストークン認証
開発に参加する
- コントリビューションガイド: CONTRIBUTING.md
- セキュリティ報告: SECURITY.md
- 行動規範: CODE_OF_CONDUCT.md(Contributor Covenant v2.1)
- 変更履歴: CHANGELOG.md
開発環境
# 依存関係インストール
uv sync
# テスト + Lint
uv run pytest tests/ -q
uv run ruff check .
# PyPI 配布用 wheel / sdist をローカル生成
uv build
# → dist/alpha_strike-X.Y.Z-py3-none-any.whl + .tar.gz
関連プロジェクト
- 🌐 alforgelabs.com — Alforge Labs 公式サイト
- 📊 alpha-visualizer — AlphaForge バックテスト結果の Web 可視化ツール(Apache-2.0)
- 🧪 AlphaForge — バックテスト・最適化エンジン(商用ライセンス)
免責事項
本ソフトウェアは現状のまま(AS IS)提供され、いかなる種類の保証もありません。自動売買は元本を超える損失を生じる可能性があります。本ソフトウェアを利用して発生した直接・間接の損害(金銭的損失を含む)について、著作権者およびコントリビューターは一切の責任を負いません。本ソフトウェアの利用は完全に自己責任で行ってください。
各 broker の利用規約・取引時間・規制を必ず遵守してください。米国居住者の moomoo crypto 利用には FinCEN MSB 規制が適用される等、規制要件は利用者自身で確認・遵守する責任があります。
ライセンス
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file alpha_strike-0.3.0.tar.gz.
File metadata
- Download URL: alpha_strike-0.3.0.tar.gz
- Upload date:
- Size: 307.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
464cfad931168b6b03becc76b6c62886c7b048f7f7338fa95811301f9dc7ffba
|
|
| MD5 |
7819c47b444fe93a01b77eede08b058b
|
|
| BLAKE2b-256 |
dc3cdb9321a4dae7c9f97455202c2cf029721dd3a22406fc136f81ed81aefb30
|
Provenance
The following attestation bundles were made for alpha_strike-0.3.0.tar.gz:
Publisher:
release.yml on alforge-labs/alpha-strike
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
alpha_strike-0.3.0.tar.gz -
Subject digest:
464cfad931168b6b03becc76b6c62886c7b048f7f7338fa95811301f9dc7ffba - Sigstore transparency entry: 1566388334
- Sigstore integration time:
-
Permalink:
alforge-labs/alpha-strike@1e39876e2b07f29f2d1f99f8afcca26e91f75f63 -
Branch / Tag:
refs/tags/v0.3.0 - Owner: https://github.com/alforge-labs
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@1e39876e2b07f29f2d1f99f8afcca26e91f75f63 -
Trigger Event:
push
-
Statement type:
File details
Details for the file alpha_strike-0.3.0-py3-none-any.whl.
File metadata
- Download URL: alpha_strike-0.3.0-py3-none-any.whl
- Upload date:
- Size: 28.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fa55cfecb31a4c19753113942138b97584fb109816043ffe9b4c6fa44cbdb07c
|
|
| MD5 |
b04b4b5485f63af7576b0af840a4513d
|
|
| BLAKE2b-256 |
140b0e5ab2e79777611b5dc9c570ade92b1733f076c2782211792a1b2d328236
|
Provenance
The following attestation bundles were made for alpha_strike-0.3.0-py3-none-any.whl:
Publisher:
release.yml on alforge-labs/alpha-strike
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
alpha_strike-0.3.0-py3-none-any.whl -
Subject digest:
fa55cfecb31a4c19753113942138b97584fb109816043ffe9b4c6fa44cbdb07c - Sigstore transparency entry: 1566388362
- Sigstore integration time:
-
Permalink:
alforge-labs/alpha-strike@1e39876e2b07f29f2d1f99f8afcca26e91f75f63 -
Branch / Tag:
refs/tags/v0.3.0 - Owner: https://github.com/alforge-labs
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@1e39876e2b07f29f2d1f99f8afcca26e91f75f63 -
Trigger Event:
push
-
Statement type: