MetaTrader 5のヘルプアルゴリズム取引、自動売買ロボット実際ティックと生成ティック

実際のティックと生成されたティック

エキスパートアドバイザー(EA)をテストし、最適化するためには、ティックが必要になります。なぜなら、EAはティックデータをもとに動作するからです。テストは、ブローカーが提供する実際のティックデータを用いて行うことも、または分足データに基づいて生成されたティックを使って行うこともできます。

実際のティック #

実際のティックを用いたテストや最適化は、現実の取引環境により近い条件で行うことができます。分足データに基づいて 生成された ティックではなく、ブローカーが蓄積した実際のティックを利用することが可能です。これらは取引所や流動性プロバイダーから提供されるティックです。

実際のティックを用いたテストでは、1分足の中でスプレッドが変動する場合があります。一方、分足から生成したティックを利用する場合には、該当するバーに固定されたスプレッドが使用されます。

銘柄に板情報が表示されている場合、バーは最後に約定した価格(Last)に基づいて厳密に構築されます。OnTickイベントは、Last価格の有無にかかわらず、すべてのティックで発生します。

ただし、チャートがLast価格によって描画されている場合でも、売買は常にBidおよびAsk価格で実行される点に注意が必要です。たとえば、バーの始値でシグナルを受け取るEAがLast価格でシグナルを検出した場合でも、実際の取引はBidまたはAsk(方向に応じて異なります)で行われます。「全ティック」モードを使用する場合、バーはBid価格で構築され、取引はBidおよびAsk価格で実行されます。Ask価格は「Bid + 該当する分足の固定スプレッド」として計算されます。

銘柄履歴に分足が存在するがティックデータが存在しない場合、テスターは「 全ティック 」モードでティックを生成します。これにより、ブローカーのティックデータが不足している場合でも、特定の期間でEAをテストすることが可能となります。一方、分足データが存在せず、その分のティックデータのみがある場合、ティックは無視されます。分足データのほうがより信頼性が高いと見なされるためです。

ティックデータは分足データよりもサイズが大きいため、初回テスト時のダウンロードには時間がかかることがあります。ダウンロードされたティックデータは、\bases\[取引サーバー名]\ticks\[銘柄名]\内のTKCファイルに月ごとに保存されます。

ティック生成 #

ストラテジーテスターは、キャッシュされた1分足データを整数形式に変換してティックデータを生成します。つまり、テスターはプラットフォームから必要なヒストリーデータをコピーし、計算処理を高速化するために整数形式へ変換します。

ストラテジーテスターには複数の ティック生成モードがあります。最も正確な「全ティック」モードは下に説明されています。

ティック生成手順は、バーごとのティックボリュームによって異なります。

ティックボリューム = 1

ティックボリュームが1の場合、ティックは生成されません。この場合、そのバーの終値を1ティックとして記録します。

ティックボリュームが1です。

ティックボリューム = 2

ティックボリュームが2の場合も、追加のティック生成は行いません。まず始値のティック、次に終値のティックが記録されます。

ティックボリュームが2です。

ティックボリューム >= 3

ティックボリュームが3以上の場合、ティックの数に応じて異なる生成スキームが適用されます。

バーの値動きパターン

ティックボリュームが3以上のバーには、4つの異なる生成スキームがあります。

値動きパターン

画像

価格が一方向に動き、再び始値の位置に戻ります。この場合、バーには高値(最高値)と安値(最低値)しか存在しません。

陽線

陰線

価格が一方向に動き、戻る際に始値の位置を突破します。この場合もバーには高値もしくは安値のみが存在しますが、始値と終値は同一ではありません。

陽線

陰線

価格が一方向に動きますが、戻る際に始値の位置には達しません。

陽線

陰線

価格が一方向に数ポイントだけ動きます。この場合、バーには高値や安値は存在しません。

陽線

陰線

ティックボリュームが3以上のバーでのティック生成

ティックは基準点に基づいて生成されます。基準点の数はティックボリュームを超えることはできず、最大でも11を超えることはできません(始値の基準点は含まれません)。

基準点は、始値のヒゲを形成する部分、ローソク足の範囲(高値と安値の間)、そして終値のヒゲを形成する部分に分けられます。

ローソク足

ティックの数に応じて、基準点の分配方法にはいくつかのバリエーションがあります。

基準点の数

始値のヒゲ

ローソク足の範囲

終値のヒゲ

11

3

5

3

10

2

6

2

9

2

5

2

8

2

4

2

7

2

3

2

6

1

4

1

5

1

3

1

4

1

2

1

3

1

1

1

  • ローソク足にヒゲが存在しない場合、ヒゲ用の基準点はローソク足の範囲に含まれます。
  • ローソク足の範囲は、奇数個の基準点によって生成されます。範囲の基準点が偶数個になった場合、余った基準点はヒゲの一方に追加されます。ただし、そのヒゲにすでに2つの基準点がある場合に限ります。そうでない場合、余分な基準点は無視されます。

理想的な分配(3-5-3)

基準点は、始値からポイント数として計算されます。基準点の理想的な分配(3-5-3)は、以下のように計算されます。

陽線

基準点の計算

画像

  • 始値
  • 3/4*(O - L)
  • 1/2*(O - L)
  • 安値
  • (H - L)/3
  • (H - L)*3 -1
  • 2/3*(H - L)
  • 2/3*(H - L) -1
  • 高値
  • 3/4*(H - C)
  • 1/2*(H - C)
  • 終値

陽線

陰線

基準点の計算

画像

  • 始値
  • 3/4*(O - H)
  • 1/2*(O - H)
  • 高値
  • (L - H)/3
  • (L - H)/3 +1
  • 2/3*(L - H)
  • 2/3*(L - H) +1
  • 安値
  • 3/4*(L - C)
  • 1/2*(L - C)
  • 終値

陰線

ドージー(十字線)

ローソク足がドージー(始値=終値)の場合、1つ前のローソク足を分析します。1つ前のローソク足が陽線の場合、このローソク足は陰線と見なされます。逆に、前のローソク足が陰線の場合は、このローソク足は陽線と見なされます。

ドージー(十字線)

3点でのヒゲの描画

ヒゲを3つの基準点で生成する場合に、ヒゲの大きさの3/4と1/2の整数値が同じになることがあります(これは、始値と安値、または始値と高値の差が2ポイント以内、すなわち価格の前後のステップ距離が等しい場合に起こります)。この場合、ヒゲは次のように生成されます。

陽線

基準点の計算

画像

  • 始値
  • 始値 -1
  • 始値
  • 安値

陽線

陰線

基準点の計算

画像

  • 始値
  • 始値 +1
  • 始値
  • 高値

陰線

終値のヒゲも同じように生成されます。

2点でのヒゲの描画

2つの基準点に基づいて生成する場合は、次の手順で行われます。

陽線

基準点の計算

画像

  • 始値
  • 始値 +1
  • 安値

陽線

陰線

基準点の計算

画像

  • 始値
  • 始値 -1
  • 高値

陰線

終値のヒゲも同じように生成されます。

ローソク足の範囲の描画

ローソク足の価格範囲は、一定のサイクルにおける波の動きに基づいて形成されます。Prev = Low (1つ前の価格が安値)の場合、次のサイクルが利用されます。

  • N1 = Prev + Step
  • N2 = Prev + Step -1
  • Prev = N2

Prev = High(1つ前の価格が高値)の場合、次のサイクルが利用されます。

  • N1 = Prev - Step
  • N2 = Prev - Step +1
  • Prev = N2

ここで

N1とN2は1サイクル内の基準点です。
Prevは以前の価格です。
Stepはステップサイズです。ステップは、(H - L - 1)/(サイクル数) + 1として計算されます。
サイクル数は、(範囲内の基準点の数 + 1)/2 として計算されます。

ローソク足の範囲

中間ティック

基準点間の中間ティックは、以下のルールに従って生成されます。

  • 基準点間のピップ数よりもティック数が多い場合は、「ノコギリ型」の動きでティックが生成されます(初期値 ± 1の変化)。
  • 基準点間のピップ数が十分に大きい場合は、ティックが線形配列として生成されます。

ティック生成モード #

ティック生成モードは、 ストラテジーテスターの設定 ウィンドウで選択できます。下記のオプションが利用できます。

全ティック

このモードではすべてのティック、つまりOHLCおよび中間ティックが生成されます。このようなティック生成の手順は、前述の通りです。

1分足OHLC

このモードでは、1分足のOHLCティックのみが生成されます。ローソク足のティックボリュームが4を超える場合は、始値、高値、安値、終値の4つのみが生成されます。ティックボリュームが4未満の場合、上記のローソク足生成ルールが適応されます。

このモードを選択したからといって、必ずしもテストや最適化がM1(1分足)で行われるわけではありません。たとえば、 H1(1時間足)をM1のOHLC」モードで選択した場合でも、1分足ごとに始値、高値、安値、終値の価格が生成されます。この場合、EAのOnTick()イベントは1分間に4回、1分足の始値、終値、高値、安値で実行されますが、テスト自体はH1で行われます。

実際には、OHLC価格は履歴データ内に存在します。そのため、テスト中に生成されるのは 始値、高値、安値、終値ティックの到着時刻のみであり、価格自体は履歴データから取得されます。

始値のみ

このモードでは、テスト対象の時間足のバーに対して、OHLCの価格が生成されます。EAのOnTick()関数、バーの始値のタイミングでのみ実行されます。この特徴により、ストップレベルや指値注文は指定した価格とは異なる価格で発動する場合があります(特に高い時間足でのテスト時)。しかし、このモードを使用することで、EAの評価テストを迅速に実行することが可能です。

例外として、W1(週足)やMN1(月足)の期間では、バーはそれぞれ1週間や1か月ごとではなく、1日ごとに生成されます。

「始値のみ」モードには制限があります。

  • ランダム遅延取引モード は使用できません。
  • テスト中のEAは、テスト/最適化に使用している 時間足 よりも低い時間足のデータにアクセスできません。たとえば、H1でテストしている場合、H2、H3、H4などにはアクセス可能ですが、M30、M20、M10などにはアクセスできません。また、アクセスできる上位時間足は、テスト時間足の倍数である必要があります。たとえば、M20でテストしている場合、M30にはアクセスできませんが、H1にはアクセス可能です。これは、テスト/最適化中に生成されるバーから、低時間足や倍数でない時間足のデータを取得できないことに起因します。
  • 他の銘柄のデータにアクセスする場合も同様の制限が適用されます。各銘柄についての制限は、テスト開始時に最初にアクセスした時間足によって決まります。EURUSD H1でテスト中に、EAがGBPUSD M20にアクセスした場合、EAはEURUSD H1、H2など、およびGBPUSD M20、H1、H2などにアクセス可能になります。

「全ティック」モードは3つのモードのうちで一番正確ですが、同時に一番時間がかかります。テスト/最適化の正確さより速度が求められる場合は、「始値のみ」モードが推奨されます。

数値計算モード #

このモードでは、ストラテジーテスターを数値計算に利用することができます。履歴データや銘柄情報は不要のため、読み込まれず、ティックは生成されません。テスト中のEAではOnInit()、OnTester()、OnDeinit()のみが順番に呼ばれます。

このモードでは、カスタム 最適化基準 が使用されます。そのため、 テスター設定 のすべての項目は無効になり、操作可能なのは 最適化モードとEAの選択のみです。

数値計算モードは、OnTester()から返される値に基づいて数学関数の極値を求めるときに便利です。最適化は、関数の最大値を見つけることを目的としています。入力パラメータの組み合わせが多い場合は、[遺伝的アルゴリズム]を使用すると、探索を大幅に高速化することができます。