ストラテジーテスタ
このマニュアルでは、JForex4のストラテジーテスター(Strategy Tester)を使用して戦略のバックテストを行う方法について説明します。設定方法、テスト方式、注文実行ロジック、そして結果の読み方を取り上げます。
1. ストラテジーテスターを開く
- 上部メニューバーの View に移動し、Strategy Tester を選択します。
- テスターは Orders、Positions、Messages と並んで新しいタブとして開きます。
- ドロップダウンメニューから戦略を選択します。ワークスペースにまだ追加されていない場合は、まず Open をクリックして追加してください。
- (オプション) Edit をクリックすると、コードエディタで戦略のソースコードを開くことができます —
.javaソースファイルが存在する場合のみ利用可能です。
2. テストの設定
アカウント設定
Account をクリックして、シミュレートされた取引アカウントを定義します:
- 初期預金額とアカウントの通貨
- レバレッジ
- マージンカットレベル(使用中のレバレッジに対する%)
- エクイティストップロス(MC Equity)— エクイティがこのレベルを下回った場合、テストを自動的に停止します
通貨・商品(Instruments)
Instruments をクリックして、履歴データをダウンロードする対象の商品を選択します。戦略が取引または計算に使用するすべての商品を選択してください。
注意:ここは戦略が実際に取引する商品を選択する場所ではありません。それは別途、戦略にハードコードされているか、後で Define Parameters ウィンドウで選択されます。
サンプル期間と時間枠
過去のデータ範囲(Sample Period)と時間枠(Time Frame)を選択します:
- Ticks(ティック) — 実際の過去のティックデータを使用します(最も正確ですが、最も遅い)。
- Candles(ローソク足)(1分 / 1時間 / 1日)— より高速で、OHLCローソク足データから補間によりティックを生成します。ベースとして Bid または Ask を選択することもできます。
ビジュアルモード
Visual Mode を有効にすると、シミュレーションの実行中にライブチャート上でその様子を確認できます。有効にすると、Start ボタンでも再生コントロールが解除され、テストを一時停止したり、速度を落としたりできます。
最適化(Optimization)
戦略に設定可能なパラメータがある場合、Optimization を有効にすると、1回の実行で複数のパラメータ組み合わせをテストできます。各パラメータ(商品と期間を除く)について、最小値、ステップサイズ、最大値を定義でき、戦略は各ステップの組み合わせごとに1回テストされます。
各組み合わせの結果はテスターウィンドウの下部に表示されます。任意の行を右クリックすると、そのテストのキャンセル、設定のコピー、レポートの表示、入力パラメータの再利用が行えます。
プロフィットファクター(Profit Factor) = 総利益 ÷ 総損失(両方とも正の数として扱います)。例:総利益1000、総損失250 → プロフィットファクター = 4.0。この値は常に正であり、値が高いほど、一般的に勝ちトレードと負けトレードの比率がより有利であることを示します。
3. ティックフィルター(Tick Filters)(Ticks時間枠のみ)
時間枠として Ticks が選択されている場合、ティックのフィルタリング方法を選択します:
| フィルター | 動作 |
|---|---|
| Process all ticks(すべてのティックを処理) | 最も精密ですが最も遅い — 記録されたすべてのティックを再生します。 |
| Process all ticks with a different non-recurrent price(異なる非重複価格のティックのみ処理) | 同じ価格が繰り返されるティックをスキップします。 |
| Process ticks on a market direction(市場方向に基づいてティックを処理) | 価格方向の実際の反転/転換点を表すティックでない場合はスキップします。 |
| Process ticks on a predefined price range change(事前定義された価格変動幅に基づいてティックを処理) | 価格が定義された幅だけ変動するまでティックをスキップします。 |
| Process ticks with the specified time interval(指定された時間間隔でティックを処理) | 定義された時間間隔に基づいてティックをスキップします。 |
4. 補間方式(Interpolation Methods)(ローソク足時間枠のみ)
時間枠がローソク足の期間(1分、1時間、1日)に設定されている場合に利用可能です。実際のティックデータをダウンロードする代わりに、テスターはOHLCローソク足データから合成ティックを生成します — これによりテスト速度が大幅に向上します。
| 方式 | 説明 |
|---|---|
| Cubic Spline(三次スプライン補間) | ローソク足ベースの方式の中で最も精密です。OHLC価格を基準点として、三次スプライン補間によりティックを生成します。非常に短い期間(例:10秒)では、実際のフィードよりも多くのティックが生成される場合があります。 |
| 4 ticks at OHLC(OHLCの4ティック) | 利用可能な補間方式の中で最も信頼性が高い方式です。 各ローソク足を正確に4つの価格ティック — Open、High、Low、Close — に補間します。HighとLowの順序は、どちらがOpen価格に近いかによって決まります:Openに近い方が、もう一方より先に2番目のティックとして処理されます。 |
| Tick on Open(Openティック) | ローソク足のOpen価格を使用して単一のティックを生成します。 |
| Tick on Close(Closeティック) | ローソク足のClose価格を使用して単一のティックを生成します。 |
例:戦略が1分ローソク足で取引を行い、より細かい粒度を必要としない場合、時間枠として 1 Min を選択し、補間方式として 4 ticks at OHLC を選択してください — この場合、戦略は1分間に正確に4つのティック(Open、続いて近接順のHigh/Low、そしてClose)を受け取ります。
5. カスタム設定
- Save interpolated price data(補間された価格データを保存) — 補間によって生成されたティックデータを保持するか破棄するかを選択します。
- Visual Mode(ビジュアルモード): Equity(エクイティ)、Balance(残高)、P/L(損益)の表示/非表示を切り替え、保存済みのチャートテンプレート(Template)を選択し、ビジュアルモード中に表示されるデフォルトの期間(Period)を設定します。
- Messages(メッセージ): Save Messages to を有効にしてメッセージをファイルに保存、Save Reports to を有効にしてレポートをファイルに保存、Show Reports を有効にしてテスト終了後にレポートを自動的に開きます。
6. 注文処理ロジック
テスターが注文をどのように成立させるかを正確に理解することは、バックテスト結果を信頼するために不可欠です。
一般原則: 注文は基本的に注文自体の価格で執行されます — ただし、市場にギャップが生じた場合(例:休止後に市場がギャップを伴って再開する場合)は例外です。ギャップが発生した状況では:
- LIMIT(リミット)注文 は、注文価格よりも有利な価格で執行されます。
- MAX.SLIPPAGE(最大スリッページ)設定のない STOP(ストップ)注文 は、ギャップ後に最初に利用可能な価格で執行されます。
- MAX.SLIPPAGE設定のある STOP注文 で、執行価格がそのスリッページ制限を超える場合は、自動的に LIMIT 注文として再送信されます。
詳細な執行ロジック:
- BID(ビッド)側でトリガーされた注文は、補間されたBIDローソク足価格と比較されます。ASK(アスク)側でトリガーされた注文は、補間されたASKローソク足価格と比較されます。
- 注文(種類を問わず)が CLOSE、HIGH、または LOW の価格ティックによってトリガーされた場合、必要に応じて最後に判明しているスプレッドで調整された注文自体の価格で執行されます(この調整は、トリガーが反対側から来た場合に適用されます)。
- 注文が OPEN の価格ティックによってトリガーされた場合、該当する側のそのOPEN価格ティックで執行されます — ただし、MAX.SLIPPAGEが設定されたSTOP注文の場合は例外です:OPENティックがSTOP注文のスリッページ制限を超える場合、その注文は代わりにLIMIT注文に変換されます。
ヒント:「4 ticks at OHLC」は各ローソク足に必ずOpenティックを含むため、このOPENトリガーロジック(およびそのSTOP/MAX.SLIPPAGEの例外)は、この補間方式でテストする際に直接適用されます。
7. テストの実行
- Start ボタンをクリックします。
- Define Parameters ウィンドウが開きます — ここで戦略の設定可能な値(商品、取引量、スリッページ、ストップロス/テイクプロフィットなど)を設定します。表示される具体的な項目は、戦略のコードによって異なります。
- Run をクリックしてシミュレーションを開始します。
- ビジュアルモードが有効な場合、再生コントロールを使用してテストの実行中に一時停止したり速度を落としたりできます。
- 完了すると(大規模なティックベースのテストは時間がかかる場合があります)、Show Reports が有効になっていれば、テストレポートがブラウザで自動的に開きます。
8. 結果の確認
レポートには、トレードごとの結果、エクイティ/残高カーブ、そして前述のプロフィットファクターのような要約統計が含まれます。Optimization スイープを実行した場合は、最終的な設定を選ぶ前に、テスターウィンドウ下部の結果リストから各パラメータ組み合わせのレポートを比較してください。
ベストプラクティス
- 最終検証の段階では Ticks / "Process all ticks" から始めてください — 最も遅いものの、実際の市場状況に最も近いシミュレーションです。
- 開発中の迅速な反復にはローソク足補間を使用してください。 戦略の開発や調整中は、「4 ticks at OHLC」が完全なティック履歴をダウンロードせずに、迅速で信頼性の高いフィードバックを提供します。
- 補間/ティックフィルターの選択は、戦略のロジックに合わせてください。 OPEN価格に反応する戦略は、「4 ticks at OHLC」と「Tick on Close」では動作が異なります — テスト方法が戦略の実際のロジックをトリガーする条件と一致していることを確認してください。
- MAX.SLIPPAGEの相互作用に注意してください。 戦略がSTOP注文に依存している場合は、MAX.SLIPPAGEの設定あり・なしの両方でテストし、ギャップやOPENティックのシナリオが注文をLIMIT執行に変換する可能性を理解してください。
- ご注意ください: テスターで示される過去のパフォーマンスは、将来のパフォーマンスを保証するものではありません — 実運用に移行する前に、必ずデモ環境でさらに検証を行ってください。