コンテンツにスキップ

cTraderでcBotをバックテストする

この記事では、cTrader WindowsとMacで取引ボットをバックテストする方法について説明します。

バックテストは、特定の事前定義された条件下で過去の市場データを使用して取引を行わせることで、cBotを評価するためのツールです。

バックテスト時には、過去の市場の動きに基づいてcBotインスタンスを実行できます。 その後、cTraderはcBotが実行した取引操作と最終的な資産/残高の統計に関する詳細なレポートを生成します。

注意

cBotのバックテスト時に実行される取引操作は、お客様のアカウントに一切影響を与えません。 バックテストは実際の資金を扱うことを目的としていません。 この機能は分析目的のみで存在します。

cBotをバックテストするには、そのインスタンスの1つを選択し、バックテストタブに切り替えます。

Image title

バックテスト設定

バックテストの動作を設定するには、左上にある歯車アイコンをクリックします。 cTraderは以下のメニューを開きます。

Image title

このメニューのオプションは次のように定義されています。 開始資金などの金額に関するパラメーターはすべてUSDで指定されます。

オプション名 アクションと説明
取引開始時の資金 cBotが取引を行う際の開始資金を定義します。
手数料 取引単位100万あたりの手数料率を設定します。
データ cBotのテストに使用する時系列データを選択します。 利用可能なオプションは次のとおりです。
  • サーバーからのティックデータ。 データはティック単位でサーバーから直接取得されます。 これが最も正確な過去のデータソースです。
  • サーバーからのM1バー。 データはサーバーで生成された1分足バーから取得されます。
  • CSVファイルのM1バー。 データはローカルに保存されたCSVファイルで定義された1分足バーから取得されます。
  • サーバーからのH1バー データはサーバーで生成された1時間足バーから取得されます。
スプレッド バックテスト中に適用されるスプレッド値を選択します。 次のオプションが利用可能です。
  • 固定値。 バックテスト全体で1つの値のみが適用されます。 ドロップダウンメニューから選択するか、カスタム値を入力するか、現在のシンボルスプレッド(ティックごとに更新)に一致する値を選択できます。
  • ランダム。 最小および最大スプレッド率を設定します。 cBotが注文を出す際、選択した範囲内のランダムなスプレッド値がその注文に適用されます。

サンプルCSV M1データ

ローカルマシンから取引データを取得するには、以下のデータを含むカンマ区切りのCSVファイルを作成してください:

  • 日付
  • 取引時間
  • 始値
  • 高値
  • 安値
  • 終値
  • 取引高

1
2
3
4
2003.06.18,16:01,1.11423,1.11428,1.11332,1.11374,19
2003.06.18,16:02,1.11364,1.11436,1.11361,1.11405,7
2003.06.18,16:03,1.11402,1.11455,1.11400,1.11440,5
2003.06.18,16:04,1.11446,1.11461,1.11401,1.11447,14

バックテストの手順とモード

以下の要約されたコントロールを使用してテスト期間を指定します:

  • バックテストタブの上部にあるインタラクティブスライダーを使用します。
  • スライダーの左右にあるカレンダーメニューから必要な値を選択します。
  • スライダーの両側にあるフィールドにカスタム値(DD:MM:YYYY形式を使用)を入力します。

Image title

以下のモードを使用してバックテストを実行できます:

  • 非リアルタイムテスト:ボットが必要なすべての操作を順番に実行します。その後、取引統計、エクイティチャートなどの最終結果にのみアクセスできます。
  • リアルタイム(ビジュアルモード)テスト:提供された過去のデータが、カスタマイズ可能な特定の再生速度でcBotに渡されます。 その結果、取引操作が行われる様子を確認できます。 すべての取引統計も、選択した再生速度で更新されます。

非リアルタイムテスト

設定が完了したら、スライダーの右側にある再生ボタンをクリックします。 指定した期間の長さとローカルマシンのスペックによっては、cTraderが結果を生成するまでに数分待つ必要がある場合があります。

リアルタイム(ビジュアルモード)バックテスト

テスト期間を含む必要な設定を指定し、カレンダースライダーの下にあるビジュアルモードフラグを有効にします。

Image title

速度スライダーをドラッグするか、その右側のメニューを使用してデータ再生速度を調整します。 設定が完了したら、再生ボタンをクリックします。

cTraderは、再生速度設定を使用して加速された、選択した期間の取引チャートをリアルタイムで表示し始めます。 バックテストの実行中に再生速度を動的に調整できることに注意してください。

cBotのコードに応じて、チャートに現れるテクニカル分析シグナルに反応して、リアルタイムで取引操作も実行します。 バックテスト統計は、cBotが行ったアクションに基づいて自動的に更新されます。

選択した期間と再生速度によっては、ビジュアルモードのテストに時間がかかる場合があります。 それでも、cBotが期待通りに動作しない場合は、ビジュアルモードのテストとCSVファイルから取得したカスタム取引データを使用して、さまざまな市場条件に対するcBotの反応をテストできます。

レンコチャートとレンジバーを使用したバックテスト

cTraderは、レンコチャートとレンジバーチャートでのcBotのバックテストをサポートしています。 このようなバックテストを実行するには、新しいcBotインスタンスを作成し、取引チャートとしてレンコ/レンジバーチャートを選択します。

Image title

または、すでにcBotインスタンスが選択されている場合は、画面上部のチャートセレクターメニューを使用し、その他アイコンをクリックします。 表示されたメニューで、レンコブリックまたはレンジバーの生成に利用可能なボリューム閾値の1つを選択します。

Image title

cTraderが選択したシンボルのレンコ/レンジバーチャートを生成したら、バックテストタブに切り替えます。 そこで、通常通りバックテストモード/設定を構成します。 再生アイコンをクリックして、選択したチャートでバックテストを実行します。

バックテスト結果

cTraderは、バックテスト結果を示すためにいくつかの取引統計を生成します。 このデータを表示するには、取引チャートのすぐ下にあるタブに進みます。

Image title

エクイティチャート

バックテストが実行されると(ビジュアルモードを使用するかどうかに関係なく)、cTraderはX軸に取引回数、Y軸に口座残高を表示するエクイティチャートを生成します。 以下の統計が含まれています:

  • 黄色の線は、各取引で変化する口座残高を示します。
  • 灰色のゾーンは、ボットが行った取引に応じて総エクイティがどのように増減するかを強調表示します。

エクイティチャートの機能をよりよく理解するために、上記の例を考えてみましょう。 この例では、ボットがバックテスト中に290回以上の取引を行ったことを示しています。 口座残高の変化に伴い、総エクイティの対応する変化も確認できます。

取引統計

取引統計タブには、バックテスト全体を通じてcBotがどのように実行されたかに関するデータが含まれています。 以下のフィールドが含まれます。

フィールド名 定義
純利益 すべての取引の純利益の合計。
プロフィットファクター 純利益合計を純損失合計で割って計算した比率。
手数料 cBotが行った取引に対して支払われた手数料の合計額。
最大口座残高ドローダウン 口座残高の最大下落額。
最大有効証拠金ドローダウン エクイティの最大下落額。
合計取引件数 cBotが実行した取引の総数。
勝利取引件数 実現利益をもたらした取引の総数。
最大連続勝利取引数 実現利益を生み出した連続取引の最大数。
最大勝利取引 1回の取引で生成された最大の実現利益。
損失取引件数 実現損失をもたらした取引の総数。
最大連続損失取引数 実現損失を生み出した連続取引の最大数。
最大損失取引 1回の取引で生成された最大の実現損失。
平均取引 すべての取引で生成された平均実現損益。

ポジション

ポジションタブは、cBotが現在オープンしているすべてのポジションを表示します。 通常のトレードウォッチ表示のポジションタブと同様の構造で、同じデータが含まれています。

Image title

右下の歯車アイコンをクリックして、中央のテーブルに表示されるデータをカスタマイズできます。

注文

注文タブには、cBotが発注した注文に関する情報が含まれています。 その構造と外観は、メインのトレードウォッチ表示の注文タブをコピーしています。

Image title

歴史

履歴タブには、バックテスト中に記録されたすべての開始取引と決済取引の統計が表示されます。 上記で説明した他のタブと同様に、トレードウォッチ表示の履歴タブをコピーしています。

Image title

イベント

イベントタブには、サーバー関連の通信がすべて表示され、これらのイベントの様々なパラメータが表示されます。

Image title

ログ

最後に、ログタブにはバックテスト中のcBotの出力が表示されます。 メッセージのリストは完全に検索可能で、イベントタイプとインスタンスでフィルタリングできます。

Image title