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

実際ティックと生成ティック

エキスパートアドバイザーは操作にティックデータを使用するため、ティックは、エキスパートアドバイザーのテストと最適化で必要とされます。 テストはブローカーによって提供された、または、分足データをベースにしたストラテジーテスターによって生成されたティックで行われます。

実際ティック #

実際ティックでのテストと最適化は実際の条件に最大限に近くなります。分足データをベースに生成されたものの代わりに金融商品ごとに証券会社によって収集された実際ティックが使用されます。これらのティックは、取引所や流動性プロバイダーからのものです。

実際ティックでのテストの際には、スプレッドは分足バーの領域内で変わることがあり、その場合、1分間の中でのティックティック生成時に相応するバーで決まっているスプレッドが使用されます。

もしシンボルによってマーケットデプスが中継される場合、バーはきっちりと最終取引(Last)実行価格で構築されます。そこにLast価格があったかどうかに関係なく、OnTickの発生は全てのティックで起こります。

チャートがLast値で構築されていたとしても、取引操作はいつもBidとAskの価格によって行われる点にご注意ください。例えば、バーの始値で動くエキスパートアドバイザは一つの価格(Last)に基づいてシグナルを取得しますが、取引の実行は他の価格(BidまたはAsk)で行われます。『全ティック』生成モード使用時には、バーはBid価格で構築され、取引はBidやAsk価格で実行されます。この時Askは、Bid+分足バーに相応する固定スプレッドで計算されます。

もしシンボルの履歴に分足バーがあるが、その分に対するティックデータがない場合、テスターは『全ティック』モードでティックを生成します。これによって、ブローカーに完全なティックデータがない場合の、計画した期間中におけるエキスパートアドバイザのテストをすることが可能になります。もしシンボルの履歴に分足バーがないが、その分に対するティックデータがある場合、これらのティックは無視されます。分足データはより信頼性が高いと考えられています。

ティックデータは分足データよりも遥かに大きいサイズを持っています。初めにテストを起動する際には、これらのダウンロードに時間がかかる場合があります。ダウンロードされたティックデータは、月ごとにTKCファイル\bases\[取引サーバ名]\ticks\[シンボル名]に保存されます。

ティックの生成 #

ストラテジーテスターは、整数形式でキャッシュされた1分間の記録に基づいて、ティックデータを生成します。これは、テスターがプラットフォームから必要な履歴データをコピーし、計算をスピードアップするために整数形式に変換することを意味します。

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

ティック生成手順は異なるティックボリュームを持つバーでは異なります。

ティックボリューム =1

ティックはボリュームが1のバーには生成されず、これらにはバーの終値を持つティックが書かれます。

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

ティックボリューム =2

また、ティックはティックが2つあるバーには生成されません。まず始値でのティック、次に終値でのティックが書かれます。

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

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

ティックを3以上持つバーでは、その数に応じて、異なるティック生成の方式があります。

バー進捗スキーム

ティックを3以上持つバーでは、4つの異なるティック生成の方式があります。

進捗オプション

イメージ

価格が一方向に変動して始値レベルに戻ります。よってバーには高値と安値のみがあります。

強気ローソク足

弱気ローソク足

価格は一方向に変動して始値レベルを超えます。この場合、バーはまた、高値または安値のみを持っていますが、始値と終値は等しくはありません。

強気ローソク足

弱気ローソク足

価格は一方向に変動して始値レベルを超えません。

強気ローソク足

弱気ローソク足

価格は一方向のみに何ポイントかで変動します。この場合、バーには高値や安値がありません。

強気ローソク足

弱気ローソク足

ティックを3以上持つバーでのティック生成

ティックは基準点に基づいて生成されます。ポイントの数は、ティックボリュームを超えることはできませんし、11を超すことはできません(始値は考慮しない)。

基準点は、オープンのひげを形成するもの、ローソク足の範囲(高値と安値の間)及び終値のひげの3つの部分に分かれています。

ローソク足

ティックの数に応じて、基準点の分布の次の変異体が可能です。

基準点の数

オープンのひげ

ローソク足の範囲

終値のひげ

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の時間枠で実行されることを意味するものではありません。例えばH1時間枠が「M1 OHLC」モードで選択されると、価格は始値、高値、安値、終値の一分足のそれぞれで生成されます。この場合、テストはH1で行われますがエキスパートアドバイザーの OnTick() イベントは一分足の始値、高値、安値、終値で毎分4回作動します。

実際には、OHLC価格は履歴データ内に存在します。よって、テスト中にはティックは高/低/始/終値でのみ生成され、価格値は履歴から収得されます。

始値のみ

このモードでは、テストのために選択された時間軸のOHLC価格が生成されます。エキスパートアドバイザーの OnTick() 関数はバーの初め(始値)で実行されます。この機能により、逆指値レベルや未決注文は(特に高い時間軸のテストで)指定とは異なる価格でトリガされることがあります。しかし、このてめにすぐにエキスパートアドバイザーの評価テストを実行することができます。

例外は、バーが週に一度または月に一度の代わりに一日一回生成される期間 W1 と MN1 です。

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

  • ランダム遅延実行モードは使用出来ません。
  • エキスパートアドバイザーはテストと最適化に使用されるより低い時間軸のデータにはアクセス出来ません。例えば、H1期間をテスト/最適化する場合、H2、H3、H4のデータにアクセスすることが出来ますが、M30、M20、M10 などにはアクセス出来ません。また、アクセスされた長い時間軸は、テストの時間軸の倍数でなければなりません。例えば、M20 でテストを実行する場合、M30のデータにアクセスすることは出来ませんが、H1 にアクセスすることは可能です。これらの制限は、テスト/最適化中に生成されたバーのうち、下側または非多重時間軸のデータの取得が不可能なことに関係しています。
  • 他の時間軸のデータへのアクセスの制限は、データをエキスパートアドバイザーが使用している他の銘柄にも適用されます。この場合、各銘柄の制限は、テスト/最適化中に初めにアクセスされた時間軸によって異なります。EURUSDH1Eのテスト中に、エキスパートアドバイザーが GBPUSD M20のデータにアクセスすると仮定します。この場合、エキスパートアドバイザーはEURUSDH1、H2、だけでなく、GBPUSD M20、H1、H2などのデータを使用することが出来るようになります。

「全ティック」モードは3つのモードのうちで一番正確ですが、同時に一番時間がかかります。テスト/最適化の正確さより迅速さが求められる場合は、「オープン価格のみ」モードをご使用ください。

数学的計算 #

このモードでは、ストラテジーテスターを数学的計算のために使用することができます。履歴データや銘柄情報を必要でないので読み込まれず、ティックは生成されません。テストされたエキスパートアドバイザーでは OnInit()、OnTester() 及び OnDeinit()のみが順番に呼ばれます。

このモードでは、カスタム最適化基準が使用されます。最適化モードとエキスパートアドバイザー以外のテスター設定のフィールドはすべて無効にされます。

数学的計算は、その値が OnTester() から返されるべきである数学関数の極値を計算するために有用です。最適化関数の最大値を見つけることが目的です。数学関数の入力パラメータの組み合わせの数が多い場合は「遺伝的アルゴリズム」の使用をお勧めします。これによって、大幅に検索を高速化することができます。