コマンドリファレンス、戦略開発ワークフロー、TradingView 連携ガイド。
ヒストリカル市場データの取得・更新・管理を行います。データは alpha-strategies/data/historical/ に Parquet 形式で保存されます。
| コマンド | 説明 |
|---|---|
forge data fetch <SYMBOL> | 指定シンボルのヒストリカルデータを取得・保存 |
forge data update | 保存済み全データを最新日まで差分更新 |
forge data update --symbol <SYMBOL> | 特定シンボルのみ更新 |
forge data list | 保存済みデータ一覧を表示 |
# 初回取得
forge data fetch USDJPY
forge data fetch CL=F
forge data fetch SPY QQQ NAS100
# 一括差分更新
forge data update
# 特定シンボルのみ更新
forge data update --symbol USDJPY
# 保存済みデータを確認
forge data list
戦略 JSON の作成・登録・確認を行います。戦略は JSON ファイルで定義し、バックテストや最適化の対象として登録します。
| コマンド | 説明 |
|---|---|
forge strategy list | 登録済み戦略を一覧表示 |
forge strategy create | テンプレートから戦略 JSON を作成 |
forge strategy save <FILE> | JSON ファイルから戦略を登録 |
forge strategy show <ID> | 戦略定義 (JSON) を表示 |
# テンプレートから新規作成
forge strategy create --template ema_crossover --id usdjpy_ema_v1 \
--out data/strategies/usdjpy_ema_v1.json
# JSON ファイルを登録
forge strategy save data/strategies/usdjpy_ema_v1.json
# 登録済み戦略を確認
forge strategy list
# 戦略定義を表示
forge strategy show usdjpy_ema_v1
戦略のバックテスト実行・履歴確認・分析を行います。結果は SQLite DB に自動保存されます。
| コマンド | 説明 |
|---|---|
forge backtest run <SYMBOL> | バックテストを実行 |
forge backtest wft <SYMBOL> | ウォークフォワードテストを実行 |
forge backtest list | 保存済みバックテスト結果を一覧表示 |
forge backtest report <ID> | バックテスト結果の詳細を表示 |
forge backtest compare | 複数の戦略結果を並べて比較 |
forge backtest chart <SYMBOL> | インタラクティブ HTML チャートを生成 |
forge backtest diagnose <SYMBOL> | パフォーマンス問題を自動診断 |
forge backtest monte-carlo <SYMBOL> | モンテカルロシミュレーションを実行 |
forge backtest portfolio | ポートフォリオバックテストを実行 |
forge backtest batch | 複数戦略を並列バックテスト |
# 基本的なバックテスト
forge backtest run USDJPY --strategy usdjpy_ema_v1
# 期間指定
forge backtest run USDJPY --strategy usdjpy_ema_v1 \
--start 2021-01-01 --end 2024-12-31
# JSON 形式で出力
forge backtest run USDJPY --strategy usdjpy_ema_v1 --json
# ウォークフォワードテスト(5 フォールド)
forge backtest wft USDJPY --strategy usdjpy_ema_v1 --folds 5
# 結果一覧(Sharpe 降順)
forge backtest list --sort sharpe --limit 20
# 特定戦略の結果のみ
forge backtest list --strategy usdjpy_ema_v1
# インタラクティブチャートを生成してブラウザで開く
forge backtest chart USDJPY --strategy usdjpy_ema_v1
Optuna を使ったベイズ最適化でパラメータを効率的に探索します。過学習リスクの評価や、最適化結果の戦略への適用もできます。
| コマンド | 説明 |
|---|---|
forge optimize run <SYMBOL> | ベイズ最適化を実行 |
forge optimize apply <RESULT> | 最適化結果を戦略に適用して新規保存 |
forge optimize walk-forward <SYMBOL> | ウォークフォワード最適化を実行 |
forge optimize sensitivity <SYMBOL> | パラメータ感度分析(過学習リスク評価) |
forge optimize history | 過去の最適化結果をスコアボード表示 |
forge optimize portfolio | ポートフォリオ最適配分を最適化 |
forge optimize cross-symbol | 複数銘柄への汎化性を最適化 |
# Sharpe Ratio を指標に 200 トライアル、4 並列で最適化
forge optimize run USDJPY --strategy usdjpy_ema_v1 \
--metric sharpe_ratio --trials 200 -j 4 --save
# 最適化履歴を確認
forge optimize history --strategy usdjpy_ema_v1 --sort score
# 最適化結果を新しい戦略として保存
forge optimize apply data/results/usdjpy_ema_v1_opt.json \
--to-strategy usdjpy_ema_v1_optimized
# 感度分析で過学習リスクを評価
forge optimize sensitivity USDJPY --strategy usdjpy_ema_v1_optimized
戦略定義から TradingView 用の Pine Script v6 を自動生成します。HMM などの機械学習インジケータにも対応しています。
| コマンド | 説明 |
|---|---|
forge pine generate --strategy <ID> | Pine Script を生成してファイルに出力 |
forge pine preview --strategy <ID> | 生成される Pine Script を標準出力でプレビュー |
forge pine import <FILE> | .pine ファイルを戦略定義として取り込み |
# Pine Script を生成(output/pinescript/ に保存)
forge pine generate --strategy usdjpy_ema_v1_optimized
# HMM モデルの学習済みパラメータを埋め込んで生成
forge pine generate --strategy cl_hmm_bb_rsi_v1 --with-training-data
# 内容をプレビュー(ファイル出力なし)
forge pine preview --strategy usdjpy_ema_v1_optimized
# 既存 .pine ファイルをインポート
forge pine import output/pinescript/usdjpy_ema_v1.pine --id usdjpy_ema_imported
forge.yaml の pinescript.output_path で設定します。デフォルトは output/pinescript/ です。
Streamlit ベースの Web UI を起動します。バックテスト結果の可視化、戦略ランキング、アイデア管理を一画面で確認できます。
forge dashboard
forge dashboard --port 8501 --no-open
LemonSqueezy のライセンスキーを認証します。認証情報は ~/.forge/license.json にキャッシュされます。
| コマンド | 説明 |
|---|---|
forge license activate <KEY> | ライセンスキーを認証 |
forge license status | 現在のライセンス状態を表示 |
forge license deactivate | このデバイスのライセンスを無効化 |
ヒストリカルデータの取得から自動発注まで、典型的な開発フローを示します。Claude Code などのコーディングエージェントと組み合わせると、各ステップの自動化やパラメータ探索を高速化できます。
alpha-strategies/ ディレクトリから FORGE_CONFIG=forge.yaml uv run 付きで実行することを想定しています。
forge data fetch USDJPY
forge strategy create --template ema_crossover \
--id usdjpy_ema_v1 \
--out data/strategies/usdjpy_ema_v1.json
# 生成されたファイルをエディタで編集し、パラメータを調整
forge strategy save data/strategies/usdjpy_ema_v1.json
forge backtest run USDJPY --strategy usdjpy_ema_v1
# インタラクティブチャートで視覚的に確認
forge backtest chart USDJPY --strategy usdjpy_ema_v1
forge optimize run USDJPY --strategy usdjpy_ema_v1 \
--metric sharpe_ratio --trials 300 -j 4 --save
# 結果を新しい戦略として保存
forge optimize apply data/results/usdjpy_ema_v1_opt.json \
--to-strategy usdjpy_ema_v1_optimized
forge backtest wft USDJPY --strategy usdjpy_ema_v1_optimized \
--folds 5
# 感度分析でパラメータの堅牢性を確認
forge optimize sensitivity USDJPY \
--strategy usdjpy_ema_v1_optimized
forge pine generate --strategy usdjpy_ema_v1_optimized
出力先: output/pinescript/usdjpy_ema_v1_optimized.pine
forge pine generate で生成した .pine ファイルを TradingView に貼り付けてアラートを設定します。
.pine ファイルの内容をエディタに貼り付け、「スクリプトを追加」(▶ ボタン)をクリックします。
longSignal)を定義しておくと、アラートの条件設定が簡単になります。
// Pine Script 内でのアラート定義例
longSignal = ta.crossover(ema_fast, ema_slow)
shortSignal = ta.crossunder(ema_fast, ema_slow)
alertcondition(longSignal, title="Long Entry", message="long")
alpha-strike は TradingView のアラートを Webhook で受け取り、OANDA・moomoo 証券に自動発注します。
alpha-strike/.env を作成して以下を設定します。
# 必須
WEBHOOK_PASSPHRASE=your-secret-passphrase # 任意の秘密文字列
# OANDA 使用時
OANDA_API_KEY=your-personal-access-token
OANDA_ACCOUNT_ID=your-account-id
OANDA_ENV=PRACTICE # 本番は LIVE
# moomoo 使用時
MOOMOO_HOST=127.0.0.1
MOOMOO_PORT=11111
MOOMOO_TRD_ENV=SIMULATE # 本番は REAL
http://<your-server>:8080/webhook
TradingView のアラートメッセージに JSON を記述します。
{
"passphrase": "your-secret-passphrase",
"broker": "oanda",
"asset_class": "FX",
"action": "buy",
"ticker": "USDJPY",
"quantity": 1000
}
| フィールド | 説明 | 値の例 |
|---|---|---|
passphrase必須 | .env の WEBHOOK_PASSPHRASE と一致させること | "my-secret" |
broker必須 | 発注先の証券会社 | "oanda" / "moomoo" |
asset_class必須 | アセットクラス | "FX" / "COMMODITY" / "US" / "INDEX" |
action必須 | 注文方向 | "buy" / "sell" |
ticker必須 | 銘柄コード(TradingView のシンボル名) | "USDJPY" / "XAUUSD" |
quantity必須 | 注文数量(0 より大きい正の数) | 1000 / 0.1 |
| asset_class | ticker 例 | OANDA instrument |
|---|---|---|
| FX | USDJPY | USD_JPY |
| COMMODITY | XAUUSD | XAU_USD |
| INDEX | NAS100 | NAS100_USD |
| US | AAPL | AAPL_USD |
# ヘルスチェック
curl http://localhost:8080/health
# → {"status":"ok"}
# テスト発注(PRACTICE / SIMULATE 環境で確認)
curl -X POST http://localhost:8080/webhook \
-H "Content-Type: application/json" \
-d '{"passphrase":"your-secret","broker":"oanda","asset_class":"FX","action":"buy","ticker":"USDJPY","quantity":1000}'
Command reference, strategy development workflow, and TradingView integration guide.
Fetch, update, and manage historical market data. Data is stored as Parquet files under alpha-strategies/data/historical/.
| Command | Description |
|---|---|
forge data fetch <SYMBOL> | Fetch and save historical data for a symbol |
forge data update | Incrementally update all saved data to today |
forge data update --symbol <SYMBOL> | Update a specific symbol only |
forge data list | List all saved datasets |
# Initial fetch
forge data fetch USDJPY
forge data fetch CL=F
forge data fetch SPY QQQ NAS100
# Incremental update (all symbols)
forge data update
# Update a single symbol
forge data update --symbol USDJPY
# Check what's saved
forge data list
Create, register, and inspect strategy JSON definitions. Strategies must be registered before use in backtests or optimization.
| Command | Description |
|---|---|
forge strategy list | List all registered strategies |
forge strategy create | Generate a strategy JSON from a template |
forge strategy save <FILE> | Register a strategy from a JSON file |
forge strategy show <ID> | Print the strategy definition (JSON) |
# Create from template
forge strategy create --template ema_crossover --id usdjpy_ema_v1 \
--out data/strategies/usdjpy_ema_v1.json
# Register after editing the JSON
forge strategy save data/strategies/usdjpy_ema_v1.json
# List registered strategies
forge strategy list
# Inspect a strategy definition
forge strategy show usdjpy_ema_v1
Run backtests, view history, and analyse results. All results are automatically saved to SQLite.
| Command | Description |
|---|---|
forge backtest run <SYMBOL> | Run a backtest |
forge backtest wft <SYMBOL> | Run a walk-forward test |
forge backtest list | List saved backtest results |
forge backtest report <ID> | Show detailed result for a run |
forge backtest compare | Compare multiple strategy results side by side |
forge backtest chart <SYMBOL> | Generate an interactive HTML chart |
forge backtest diagnose <SYMBOL> | Auto-diagnose performance issues |
forge backtest monte-carlo <SYMBOL> | Run Monte Carlo simulation |
forge backtest portfolio | Run a portfolio backtest |
forge backtest batch | Parallel backtest across multiple strategies |
# Basic backtest
forge backtest run USDJPY --strategy usdjpy_ema_v1
# With date range
forge backtest run USDJPY --strategy usdjpy_ema_v1 \
--start 2021-01-01 --end 2024-12-31
# JSON output
forge backtest run USDJPY --strategy usdjpy_ema_v1 --json
# Walk-forward test (5 folds)
forge backtest wft USDJPY --strategy usdjpy_ema_v1 --folds 5
# List results sorted by Sharpe
forge backtest list --sort sharpe --limit 20
# Open interactive chart in browser
forge backtest chart USDJPY --strategy usdjpy_ema_v1
Bayesian parameter search with Optuna. Includes overfitting risk evaluation, walk-forward optimization, and one-click apply.
| Command | Description |
|---|---|
forge optimize run <SYMBOL> | Run Bayesian optimization |
forge optimize apply <RESULT> | Apply results to a new strategy |
forge optimize walk-forward <SYMBOL> | Walk-forward optimization |
forge optimize sensitivity <SYMBOL> | Parameter sensitivity analysis (overfitting check) |
forge optimize history | Scoreboard of past optimization runs |
forge optimize portfolio | Optimize portfolio allocation weights |
forge optimize cross-symbol | Optimize across multiple symbols for generalization |
# 300 trials, 4 workers, maximize Sharpe
forge optimize run USDJPY --strategy usdjpy_ema_v1 \
--metric sharpe_ratio --trials 300 -j 4 --save
# View optimization history
forge optimize history --strategy usdjpy_ema_v1 --sort score
# Apply best result as a new strategy
forge optimize apply data/results/usdjpy_ema_v1_opt.json \
--to-strategy usdjpy_ema_v1_optimized
# Check parameter robustness
forge optimize sensitivity USDJPY --strategy usdjpy_ema_v1_optimized
Auto-generate TradingView Pine Script v6 from a strategy definition. Supports machine-learning indicators such as HMM by embedding trained parameters.
| Command | Description |
|---|---|
forge pine generate --strategy <ID> | Generate Pine Script and write to file |
forge pine preview --strategy <ID> | Preview Pine Script in stdout (no file written) |
forge pine import <FILE> | Parse a .pine file and import as a strategy |
# Generate Pine Script (saved to output/pinescript/)
forge pine generate --strategy usdjpy_ema_v1_optimized
# Embed trained HMM parameters
forge pine generate --strategy cl_hmm_bb_rsi_v1 --with-training-data
# Preview without writing to disk
forge pine preview --strategy usdjpy_ema_v1_optimized
# Import existing .pine file as a strategy
forge pine import output/pinescript/usdjpy_ema_v1.pine --id usdjpy_ema_imported
pinescript.output_path in forge.yaml. Default: output/pinescript/.
Launch the Streamlit-based Web UI for backtest visualisation, strategy rankings, and idea tracking.
forge dashboard
forge dashboard --port 8501 --no-open
Activate and manage your LemonSqueezy license. Activation data is cached in ~/.forge/license.json.
| Command | Description |
|---|---|
forge license activate <KEY> | Activate a license key on this device |
forge license status | Show current license status |
forge license deactivate | Deactivate this device |
A typical flow from raw data to live execution. This pairs naturally with a coding agent (e.g. Claude Code) for automated parameter exploration and strategy generation.
alpha-strategies/ with FORGE_CONFIG=forge.yaml uv run prepended.
forge data fetch USDJPY
forge strategy create --template ema_crossover \
--id usdjpy_ema_v1 \
--out data/strategies/usdjpy_ema_v1.json
# Edit the JSON, then register
forge strategy save data/strategies/usdjpy_ema_v1.json
forge backtest run USDJPY --strategy usdjpy_ema_v1
# Visual equity curve
forge backtest chart USDJPY --strategy usdjpy_ema_v1
forge optimize run USDJPY --strategy usdjpy_ema_v1 \
--metric sharpe_ratio --trials 300 -j 4 --save
forge optimize apply data/results/usdjpy_ema_v1_opt.json \
--to-strategy usdjpy_ema_v1_optimized
forge backtest wft USDJPY --strategy usdjpy_ema_v1_optimized \
--folds 5
forge optimize sensitivity USDJPY \
--strategy usdjpy_ema_v1_optimized
forge pine generate --strategy usdjpy_ema_v1_optimized
Output: output/pinescript/usdjpy_ema_v1_optimized.pine
Paste the generated .pine file into TradingView and set up an alert to trigger alpha-strike.
.pine file and paste it into the editor. Click "Add to chart" (▶).
alertcondition in Pine Script for cleaner alert setup.
longSignal = ta.crossover(ema_fast, ema_slow)
alertcondition(longSignal, title="Long Entry", message="long")
alpha-strike receives TradingView webhook alerts and forwards orders to OANDA or moomoo.
Create alpha-strike/.env from the provided example:
# Required
WEBHOOK_PASSPHRASE=your-secret-passphrase
# OANDA
OANDA_API_KEY=your-personal-access-token
OANDA_ACCOUNT_ID=your-account-id
OANDA_ENV=PRACTICE # or LIVE
# moomoo
MOOMOO_HOST=127.0.0.1
MOOMOO_PORT=11111
MOOMOO_TRD_ENV=SIMULATE # or REAL
http://<your-server>:8080/webhook
{
"passphrase": "your-secret-passphrase",
"broker": "oanda",
"asset_class": "FX",
"action": "buy",
"ticker": "USDJPY",
"quantity": 1000
}
| Field | Description | Example |
|---|---|---|
passphraserequired | Must match WEBHOOK_PASSPHRASE in .env | "my-secret" |
brokerrequired | Target broker | "oanda" / "moomoo" |
asset_classrequired | Asset class | "FX" / "COMMODITY" / "US" / "INDEX" |
actionrequired | Order direction | "buy" / "sell" |
tickerrequired | Symbol (TradingView notation) | "USDJPY" / "XAUUSD" |
quantityrequired | Order size (positive number) | 1000 / 0.1 |
| asset_class | ticker | OANDA instrument |
|---|---|---|
| FX | USDJPY | USD_JPY |
| COMMODITY | XAUUSD | XAU_USD |
| INDEX | NAS100 | NAS100_USD |
| US | AAPL | AAPL_USD |
# Health check
curl http://localhost:8080/health
# → {"status":"ok"}
# Test order (use PRACTICE / SIMULATE environment)
curl -X POST http://localhost:8080/webhook \
-H "Content-Type: application/json" \
-d '{"passphrase":"your-secret","broker":"oanda","asset_class":"FX","action":"buy","ticker":"USDJPY","quantity":1000}'