MetaTrader 5のヘルプ

カスタム金融商品

トレードプラットフォームでは、カスタム金融シンボルの作成が可能です。そのようなシンボルの チャートを閲覧し、テクニカル分析を実行するだけでなく、ストラテジーテスターでの自動売買ンロボットやインジケーターのテストにも使用することができます。

ブローカーがストラテジーをテストしたい製品を提供していない場合や、提供されている履歴の長さと価格履歴の品質が十分でない場合は、カスタムシンボルを作成して必要なデータをアップロードすることができます。

カスタムシンボルを作成して設定するメソッド

「板情報」 ウィンドウのコンテキストメニューを使用してシンボル管理ウィンドウを開き「カスタムシンボルの作成"」をクリックします。

カスタム金融商品の作成

カスタムシンボルの場合、トレード製品の仕様からパラメータと追加パラメータからを設定することができます。

  • Basis — カスタムシンボルの原資産の名前。例えば、金は先物コントラクトの原資産です。
  • Page — webページにはシンボル情報があります。「板情報」ウィンドウでシンボルのプロパティを表示するときにリンクとして表示されます。
  • Chart mode — シンボルチャートを作成するために使用された価格、BidまたはLast。
  • Background — 板情報ウィンドウのシンボルの背景色。
  • Calculate hedged margin using larger leg — このモードは、同じシンボルの反対方向のポジションが同時に存在する ヘッジアカウントでのみ使用されます。シンボルの証拠金は、売り側(すべての売りポジションと未決オーダー)と買い側(すべての買いポジションとオーダー送信)の証拠金を使用して計算できます。計算された値のうち最大のものが証拠金の最終値として使用されます。
  • Time limits use — 「はい」を設定すると、シンボルトレード期間(流通期間)の最初と最後の日を指定できます。

上記のパラメータに加えて、シンボルのトレードセッションやクォートセッションを設定することもできます。セッションは毎日別々に設定されます。日をダブルクリックして編集します。

カスタムシンボルのトレードとクォートセッション

スライダを使用して目的のセッションを設定します。EAは、セッション以外の時間にストラテジーテスターでトレードすることはできません。

トレードセッションはデフォルトでは指定されておらず、クォートセッションと一致します。クォートセッションとトレードセッションを別々に設定する必要がある場合は、「別のトレードセッションを有効にする」オプションを有効にしてください。各トレードセッションは、クォーツセッション内になければなりません。

  • カスタムシンボルは、同様の製品のパラメータをコピーして変更することで素早く設定することができます。「コピー元」フィールドで既存のシンボルを選択します。
  • カスタムシンボルの名前は、ブローカーによって提供されたシンボルの名前と一致していてはなりません。同じ名前のシンボルが存在するサーバーに接続すると、カスタムシンボルは削除されます。
  • シンボル名には、句読点、スペース、特殊文字以外のラテン文字を含めることができます("."、 "_"、 "&" 、"#"は可)。<、>、 :、"、 /、\、|、?、*の使用は推奨されていません。

カスタムシンボルのインポートとエクスポート

カスタムシンボルはプラットフォーム間でシンプルに共有または転送することができます。特定のカスタムシンボルのパラメータは、上記の設定編集ウィンドウからエクスポートまたはインポートできます。

シンボルのグループ全体をエクスポートおよびインポートすることもできます。

カスタムシンボルのグループ設定のエクスポートとインポート

設定はJSONテキストファイルにエクスポートされます。

{
"ConfigSymbols" : [
{
"Symbol" : "EURUSD_cust",
"Path" : "Custom\\Forex\\EURUSD_cust",
"ISIN" : "",
"Description" : "Euro vs US Dollar",
....

カスタムシンボルの管理

すべてのシンボルは、個別のカスタムグループに表示されます。シンボルを変更または削除する必要がある場合は、リストのコンテキストメニューを使用します。

カスタムシンボルの作成、編集、削除

価格履歴のインポート

価格データは、任意のテキストファイル、およびMetaTrader履歴ファイル(HST)からカスタムシンボルにインポートすることができます。シンボルを選択して"Bars"か"Ticks"タブに移動してください。

カスタムシンボルへの価格履歴のインポート

インポートダイアログで、ファイルへのパスを指定し、必要なパラメータを設定します。

  • Separator — テキストファイルの要素セパレータ
  • Skip columns and rows — インポート中にスキップされる列(左から右)と行(上から下)の量
  • Shift — 時間単位の時間シフト。このオプションは、異なるタイムゾーンに保存されたデータをインポートするときに使用されます。
  • Use selected only — 行ビュー領域で強調表示された行のみをインポートします。行はCtrlキーまたはShiftキーを長押しすると強調表示できます。

分足のファイルは「日付 時刻 始値 高値 安値 終値 ティックボリューム ボリューム スプレッド」の形式を持つはずです。例は下記の通りです。

<DATE>        <TIME>      <OPEN>     <HIGH>     <LOW>      <CLOSE> <TICKVOL><VOL>    <SPREAD>
2016.06.27    00:01:00    1.10024    1.10136    1.10024    1.10070    18    54000000    44
2016.06.27    00:02:00    1.10070    1.10165    1.10070    1.10165    32    55575000    46
2016.06.27    00:03:00    1.10166    1.10166    1.10136    1.10163    13    13000000    46
2016.06.27    00:04:00    1.10163    1.10204    1.10155    1.10160    23    51000000    41

ティックを持つファイルは、次の形式を持つ必要があります: 日付時刻のBidは、最後のボリュームを求める。 例えば:

<DATE>          <TIME>          <BID>   <ASK>   <LAST>  <VOLUME>
2017.07.03      00:03:47.212    1.14175 1.14210 0.00000 0
2017.07.03      00:03:47.212    1.14168 1.14206 0.00000 0
2017.07.03      00:03:47.717    1.14175 1.14206 0.00000 0
2017.07.03      00:03:54.241    1.14175 1.14205 0.00000 0
2017.07.03      00:03:57.982    1.14165 1.14201 0.00000 0
2017.07.03      00:04:07.795    1.14175 1.14201 0.00000 0
2017.07.03      00:04:55.432    1.14164 1.14200 0.00000 0
2017.07.03      00:14:33.743    1.14173 1.14203 0.00000 0
2017.07.03      00:14:33.743    1.14173 1.14201 0.00000 0
2017.07.03      00:16:44.901    1.14174 1.14195 0.00000 0

カスタムシンボルでは任意の既存製品のデータを使用することができます。データをエクスポートし、必要に応じて変更し、インポートし直します。

  • 価格履歴は分足バーの形で保存され、他のすべての時間枠は、バーに基づいて作成されます。また、より長い時間枠のデータをインポートすることもできますが、より短い時間枠のチャートではギャップが生じます。たとえば、時間足のデータをインポートすると、1時間に1つのバーがM1チャートに表示されます。
  • インポート時には、指定したファイルのデータによって時間間隔が完全に置き換えられます。 たとえば、ファイルに 2016.01.01 00:00:00 から 2016.06.01 00:00:00 のデータが含まれており、カスタムシンボル履歴にこの間隔のデータが既にある場合、データは新しいものに完全に置き換えられます (インポートされたデータの量が履歴のデータよりも少ない場合でも)。
  • バーをインポートするときに、インポートされたファイル (同じ時間のバー) に重複するエントリが存在すると、エラーと見なされます。 プラットフォームでは、1分間に1つのバーしか対応できません。 ティックをインポートする場合、ティックは完全に同一のパラメータを持つことができます。
  • 0以下に設定した値はインポートされません。
  • インポート中に、ユーザーは、ファイル内のティックの正しいオーダーを提供する必要があります。

カスタムシンボルの価格データは、下記のような別のカスタムディレクトリに保存されます(トレードサーバのデータが保存されているディレクトリではありません)。

C:\Users\ [windows アカウント] \AppData\Roaming\MetaQuotes\Terminal\ [インスタンス id] \bases\Custom

価格履歴の編集

カスタムシンボルのバーとティックの履歴を手動で編集できます。 これを行うには、"バー" または "ティック" タブで必要なデータ間隔をリクエストします。

  • ダブルタップして値を変更します。
  • コンテキストメニューを使用してエントリを追加または削除する
  • 一度に複数のバー/ティックを削除する必要がある場合は、shift キーまたは ctrl + shift キーを押しながらマウスで選択します。

バーを編集するときは、M1 の時間枠のデータをリクエストすることを強くお勧めします。 価格履歴は、プラットフォーム内の1分間のバーの形式で保存されます。 他のすべてのタイムフレームは、バーに基づいて作成されます。 最初に別のタイムフレームのバーをリクエストした場合でも、すべての変更は対応する1分間のバーに適用されます。 たとえば、M5時間枠のデータを要求してバーを編集する場合、5つの1分バーは1分間のバー (m5 バーの先頭に対応) で置き換えられます。 これは編集された間隔が完全に置き換えられることを意味します。

1分間のバーとティックデータの裁量編集

便宜上、変更したエントリは次のように強調表示されます。

  • 赤色の背景は、エントリが間違っていることを意味します (たとえば、高値が安値未満の場合)。
  • 緑色の背景は正しい修正エントリを示します
  • 灰色の背景は削除されたエントリを意味します
  • 黄色の背景に追加エントリが表示されます
  • 新しいバーを追加すると、現在のデータ選択からの最初の空いている日付/時刻が自動的に "date" 列に挿入されます。
  • このプラットフォームでは、同じ日付/時刻のバーを作成することはできません。 1つの分に対応できるバーは1つだけです。

変更を保存するには、ウィンドウの下部にある [変更を適用] をクリックします。

カスタム金融商品の使用

カスタムシンボルの使用は、ブローカーが提供する製品の使用に似ています。カスタムシンボルは板情報ウィンドウに表示され、 シンボルのチャートを開いたり、その上にインジケーターや分析オブジェクトを適用することができます。

カスタムシンボル価格チャートとテクニカル分析

カスタム金融商品を使用したテスト

カスタムシンボルは実際にトレードすることはできませんが ストラテジーテスター内の自動売買ロボットやインジケーターインのテストに使用できます。カスタムシンボルを選択してテストを実行してください。

カスタムシンボルでの自動売買ロボットのテスト

テスト中に実行されるトレードの証拠金と利益を計算する際、ストラテジーテスターは口座で利用可能なクロスレートを自動的に使用することができます。たとえば、収益通貨がEURで口座通貨がUSDの場合、テスターはを対応するEURUSDレートに従って変換します。

ほとんどの場合、カスタムシンボル名には、EURUSD や EURUSD などのさまざまなサフィックスが含まれます。 したがって、ストラテジーテスタは特別なメカニズムを使用して、再計算に適したクロスレートを検索します。

たとえば、カスタムシンボル AUDCAD を作成しました。 外国為替 マージン計算タイプを使用、アカウントの通貨は USD です。 外国為替のインストゥルメントの名前に基づいて、テスターは、次のオーダーで必要なシンボルを検索します。

  1. まず、テスターはドルなどのシンボルを検索します (マージン計算の場合)、USDCAD カスタム (利益計算の場合)。
  2. シンボルのいずれかが見つからない場合、テスターは最初のシンボルを検索し、その名前が必要な通貨ペア、すなわちドルと USDCAD に対応します。 例えばドルと USDCAD が見つかれば、シンボルのレートはマージンと利益計算に使用されます。

他の金融商品 マージン計算タイプ (先物、証券トレード所) では、通貨ペアが通貨を変換するために必要です。 例えば、英国ポンド (GBP) は、利益とマージンの通貨の設定と、スイスフラン (CHF) は、資産通貨として使用されるカスタムシンボルを作成しています。 この場合、テスト用のシンボルは次のオーダーで検索されます。

  1. GBPCHF (GBP 対 CHF) に対応するトレード機器の在庫状況がチェックされます。
  2. このシンボルが使用できない場合、テスターは、GBPCHF や GBPCHF などの GBPCHF 通貨ペアに対応する最初のトレード機器を検索します。
  • カスタム製品を使用してアプリケーションをテストする場合は、口座に必要なすべての通貨ペアがあることを確認してください。ないと、テスト中のトレード結果と証拠金の計算が不可能です。
  • MQL5 クラウドネットワーク のカスタムシンボルを使用した最適化は許可されません。 これは同じ名前を持つカスタムシンボルが、異なる価格履歴が異なるトレーダーのコンピュータに存在することができるという事実によるものです。 ネットワークエージェント間のテスト結果の不一致に加えて、大量の再ロードと履歴データの同期を引き起こす可能性があります。これは, 過度のインターネットの使用につながる. ローカルネットワークエージェント を使用して リモートエージェント が許可されています。

実時間クオーツを含む合成銘柄

取引プラットフォームでは、合成金融商品、すなわち1つまたは複数の既存の商品に基づく銘柄を作成することができます。クオーツの計算式を設定すると、プラットフォームは実時間で合成製品のティックと分足の履歴を作成します。

仕組み

  • 合成製品を作成し、価格計算用の数式を設定します。
  • 数式で使用される少なくとも1つの製品の価格が変更された場合、プラットフォームは1秒あたり10回の頻度でティックを計算します。
  • プラットフォームはまた、分足の履歴を、数式で使用される製品の分足に基づいて計算します。合成製品の生成されたティックに基づいて、新しいバー(現在およびそれ以降のもの)はすべて実時間で描画されます。

たとえば、ドルインデックス(USDX)を示す製品の作成が可能です。それには下記の数式が使われます。

50.14348112*pow(ask(EURUSD),-0.576)*pow(USDJPY,0.136)*pow(ask(GBPUSD),-0.119)*pow(USDCAD,0.091)*pow(USDSEK,0.042)*pow(USDCHF,0.036)

プラットフォームは、ブローカーによって提供された他の6銘柄のクオーツに基づいて、新しい製品の価格を実時間で計算します。価格の変更は「気配値表示」ウィンドウとチャートで視覚化されます。

「気配値表示」での合成製品とそのチャート

新しいカスタム銘柄を作成し、仕様を開いて数式を指定します。

数式による製品仕様

製品が「気配値表示」に追加されると、>ティック分足の計算が始まります。また、合成価格計算に必要な銘柄は自動的に「気配値表示」に追加されます。計算開始のエントリがプラットフォームの操作ログに追加されます:Synthetic Symbol USDX: processing started.

  • 合成製品が「気配値表示」から取り除かれると、その計算は停止されます。
  • 合成銘柄価格の計算に現在使用されている銘柄は、「気配値表示」で非表示にすることはできません。

クオーツの実時間計算

計算に使用される銘柄の価格が100ミリ秒ごとに(すなわち毎秒10回)確認されます。それらのうちの少なくとも1つが変更されると、合成銘柄の価格が計算され、新しいティックが生成されます。計算は、3つのスレッドで並列に実行され、ビッド、アスク、及びラストの価格で実行されます。たとえば、計算式がEURUSD*GBPUSDの場合、合成銘柄の価格は次のように計算されます。

  • Bid = bid(EURUSD)*bid(GBPUSD)
  • Ask = ask(EURUSD)*ask(GBPUSD)
  • Last = last(EURUSD)*last(GBPUSD)

変更の可用性は価格ごとに個別に確認されます。たとえば、ソース製品のビッドのみが変更された場合、合成製品の適切な価格だけが計算されます。

分足の履歴の作成

プラットフォームは、ティックを実時間で収集するだけでなく、合成製品の分足の履歴も作成します。通常の製品と同様に、合成製品チャートを表示したりオブジェクトや指標を使用してテクニカル分析を行うことができます。

「気配値表示」に合成製品が追加されると、プラットフォームは計算された分足の履歴が存在するかどうかを確認します。存在しなければ、過去60日間の履歴が作成され、これには約5万のバーが含まれます。プラットフォーム設定のMax. bars in chart(チャートでのバーの最大数) パラメータに値が指定されている場合は、その値が適用されます。 この期間の一部のバーが既に作成された場合、プラットフォームは新しいバーを追加生成します。

過去60日間のバーを作成した後も、プラットフォームはバックグラウンドモードでより深い履歴を作成し続けます。合成式で使用される各銘柄の価格履歴期間は異なることができます。したがって、計算は最短有効期間に実行されます。たとえば、式で3つの金融商品が使用されるとします。

  • EURUSD(2009.01.01 以後)
  • USDJPY(2012.06.01 以後)
  • EURJPY(2014.06.01 以後)

この場合、合成銘柄の履歴は、2014.06.01から現在までで計算されます。計算の完全性を保証するために、この日から100分がさらに捨てられます(履歴で分足が利用できない場合は、前の分のバーが計算に使用されます)。

合成製品の分足の履歴は、その数式で使用される製品の分足(ティックではない)に基づいて計算されます。たとえば、合成銘柄の分足の始値を計算するには、プラットフォームはその数式で使用されている銘柄の始値を使用します。高値、安値、終値も同じように計算されます。.

必要なバーがいずれの製品でも利用できない場合、プラットフォームは前のバーの終値を使用します。たとえば、EURUSD、USDJPY、GBPUSDの3つの製品が使用されるとします。12:00に対応するバーの計算でUSDJPYの必要なバーが利用できない場合、以下の価格が計算に使用されます。

  • 始値:EURUSD Open 12:00, USDJPY Close 11:59, GBPUSD Open 12:00
  • 高値:EURUSD High 12:00, USDJPY Close 11:59, GBPUSD High 12:00
  • 安値:EURUSD Low 12:00, USDJPY Close 11:59, GBPUSD Low 12:00
  • 終値:EURUSD Close 12:00, USDJPY Close 11:59, GBPUSD Close 12:00

数式で使用されているすべての製品での分足が使用できない場合、合成製品の分足は計算されません。

分足の作成

合成製品の新しいバー(現在および次のもの)はすべて生成されたティックに基づいて作成されます。バーを構築するのに使われる価格は仕様の"Chart mode"(チャートモード)パラメーターに基づきます:

合成製品のチャートモード

銘柄式ではどのような操作が可能ですか?

ブローカーが提供する既存銘柄の価格データといくつかのプロパティは、合成価格の計算に使用できます。下記を指定します。

  • Symbol name - 計算する合成価格に応じて、指定された製品のビッド、アスク、またはラストが使用されます。たとえば、EURUSD*GBPUSDが指定されている場合、ビッドはbid(EURUSD)*bid(GBPUSD)として計算され、アスクはask(EURUSD)*ask(GBPUSD)となります。
  • bid(symbol name) - 指定された銘柄のビッド価格は強制的に、合成銘柄のビッド価格の計算に使用されます。このオプションは、前のタイプ(価格タイプが指定されていない場合)に似ています。
  • ask(symbol name) - 指定された銘柄のアスク価格が合成銘柄のアスク価格の計算に使用されます。指定された製品のビッド価格がアスクの計算に使用されます。指定された銘柄のラスト価格が、ラストの計算に使用されます。ask(EURUSD)*GBPUSDが指定されている場合は次の計算が使用されます。
  • Bid = ask(EURUSD)*bid(GBPUSD)
  • Ask = bid(EURUSD)*ask(GBPUSD)
  • Last = last(EURUSD)*last(GBPUSD)
  • last(symbol name) — 指定された銘柄のラスト価格は、合成楽器のすべての価格(ビッド、アスク、ラスト)の計算に使用されます。last(EURUSD)*GBPUSDが指定されている場合は次の計算が使用されます。
  • Bid = last(EURUSD)*bid(GBPUSD)
  • Ask = last(EURUSD)*ask(GBPUSD)
  • Last = last(EURUSD)*last(GBPUSD)
  • volume(symbol name) — 指定された銘柄のティック数量が計算式で使用されます。ブローカーがこの銘柄の数量情報を提供していることを確認してください。
  • point(symbol name) — 指定された製品の最低価格の変更が計算に使用されます。
  • digits(symbol name) — 指定された銘柄価格の小数点以下の桁数が数式で使用されます。

銘柄名が複雑(ハイフン、ドットなどを含む)な場合は、引用符で囲みます(例:"RTS-6.17")。

加算(+)、減算( - )、乗算(*)、除算(/)、除算残差(%)の演算では、以下の算術演算を使用できます。例えば、EURUSD+GBPUSDは価格がEURUSD及びGBPUSDの価格の和として計算されていることを意味します。また、単項マイナス演算子を使用して符号を変更することもできます(例:-10*EURUSD)。

算術演算の計算優先順位に気を付けてください。

  • 乗算、除算、および剰余の演算が最初に実行され、次に加減算が実行されます。
  • 演算は左から右に実行されます。数式で同じ優先順位を持つ複数の演算(たとえば、乗算と除算)が使用されている場合は、左の演算が最初に実行されます。
  • 演算の優先獣医は括弧( と )を使用して変更できます。括弧内の演算の優先順位が計算の中で最も高くなります。左から右の原則もそれらに適用されます。左の括弧内の演算が最初に計算されます。

数式で定数を使うことができます。

  • 数値(整数と浮動小数点数)(例:EURUSD*2+GBPUSD*0.7)。
  • _Digits 及び _Point.銘柄プロパティそれらは仕様からカスタム銘柄の適切な特性を数式に追加します。_Digitsは、銘柄価格の小数点以下の桁数を意味します。 _Pointは銘柄価格の最小変化を意味します。

MQL5でサポートされた数学関数はMathSrand、 MathRand及びMathIsValidNuberを除いてすべて使用することができます。

関数

説明

fabs(number)

関数に渡された数値の絶対値(モジュロ値)を返します。

acos(number)

数値の逆余弦をラジアンで返します。

asin(number)

数値の逆正弦をラジアンで返します。

atan(number)

数値の逆正接をラジアンで返します。

ceil(number)

最も近い上位整数を返します。

cos(number)

数値の余弦を返します。

exp(number)

数値の指数を返します。

floor(number)

最も近い下位整数を返します。

log(number)

自然対数を返します。

log10(number)

数の底が10の対数を返します。

fmax(number1, number2)

2つの数値のうち最高値を返します。

fmin(number1, number2)

2つの数値のうち最低値を返します。

fmod(dividend, divisor)

2つの数の除算の小数点以下の剰余を返します。

pow(base, power)

底の(指定された)乗

round(number)

数値を最も近い整数に丸めます。

sin(number)

数値の正弦を返します。

sqrt(number)

平方根を返します。

tan(number)

数値の正接を返します。

expm1(number)

exp(number)-1の式の値を返します。

log1p(number)

log(1+number)の式の値を返します。

acosh(number)

双曲線余弦関数の値を返します。

asinh(number)

双曲線逆正弦関数の値を返します。

atanh(number)

双曲線逆正接関数の値を返します。

cosh(number)

双曲線余弦関数の値を返します。

sinh(number)

双曲線正弦関数の値を返します。

tanh(number)

双曲線正接関数の値を返します。