トレードプラットフォームでは、カスタム金融シンボルの作成が可能です。そのようなシンボルの チャートを閲覧し、テクニカル分析を実行するだけでなく、ストラテジーテスターでの自動売買ンロボットやインジケーターのテストにも使用することができます。
ブローカーがストラテジーをテストしたい製品を提供していない場合や、提供されている履歴の長さと価格履歴の品質が十分でない場合は、カスタムシンボルを作成して必要なデータをアップロードすることができます。
「板情報」 ウィンドウのコンテキストメニューを使用してシンボル管理ウィンドウを開き「カスタムシンボルの作成"」をクリックします。
カスタムシンボルの場合、トレード製品の仕様からパラメータと追加パラメータからを設定することができます。
上記のパラメータに加えて、シンボルのトレードセッションやクォートセッションを設定することもできます。セッションは毎日別々に設定されます。日をダブルクリックして編集します。
スライダを使用して目的のセッションを設定します。EAは、セッション以外の時間にストラテジーテスターでトレードすることはできません。
トレードセッションはデフォルトでは指定されておらず、クォートセッションと一致します。クォートセッションとトレードセッションを別々に設定する必要がある場合は、「別のトレードセッションを有効にする」オプションを有効にしてください。各トレードセッションは、クォーツセッション内になければなりません。
|
カスタムシンボルはプラットフォーム間でシンプルに共有または転送することができます。特定のカスタムシンボルのパラメータは、上記の設定編集ウィンドウからエクスポートまたはインポートできます。
シンボルのグループ全体をエクスポートおよびインポートすることもできます。
設定はJSONテキストファイルにエクスポートされます。
{
|
すべてのシンボルは、個別のカスタムグループに表示されます。シンボルを変更または削除する必要がある場合は、リストのコンテキストメニューを使用します。
価格データは、任意のテキストファイル、およびMetaTrader履歴ファイル(HST)からカスタムシンボルにインポートすることができます。シンボルを選択して"Bars"か"Ticks"タブに移動してください。
インポートダイアログで、ファイルへのパスを指定し、必要なパラメータを設定します。
分足のファイルは「日付 時刻 始値 高値 安値 終値 ティックボリューム ボリューム スプレッド」の形式を持つはずです。例は下記の通りです。
<DATE> <TIME> <OPEN> <HIGH> <LOW> <CLOSE> <TICKVOL><VOL> <SPREAD>
|
ティックを持つファイルは、次の形式を持つ必要があります: 日付時刻のBidは、最後のボリュームを求める。 例えば:
<DATE> <TIME> <BID> <ASK> <LAST> <VOLUME>
|
ターミナルはインポート中にフラグを計算するため、ティックフラグを渡さないでください。
カスタムシンボルでは任意の既存製品のデータを使用することができます。データをエクスポートし、必要に応じて変更し、インポートし直します。
|
カスタムシンボルの価格データは、下記のような別のカスタムディレクトリに保存されます(トレードサーバのデータが保存されているディレクトリではありません)。
C:\Users\ [windows アカウント] \AppData\Roaming\MetaQuotes\Terminal\ [インスタンス id] \bases\Custom |
カスタムシンボルのバーとティックの履歴を手動で編集できます。 これを行うには、"バー" または "ティック" タブで必要なデータ間隔をリクエストします。
バーを編集するときは、M1 の時間枠のデータをリクエストすることを強くお勧めします。 価格履歴は、プラットフォーム内の1分間のバーの形式で保存されます。 他のすべてのタイムフレームは、バーに基づいて作成されます。 最初に別のタイムフレームのバーをリクエストした場合でも、すべての変更は対応する1分間のバーに適用されます。 たとえば、M5時間枠のデータを要求してバーを編集する場合、5つの1分バーは1分間のバー (m5 バーの先頭に対応) で置き換えられます。 これは編集された間隔が完全に置き換えられることを意味します。 |
便宜上、変更したエントリは次のように強調表示されます。
|
変更を保存するには、ウィンドウの下部にある [変更を適用] をクリックします。
カスタムシンボルの使用は、ブローカーが提供する製品の使用に似ています。カスタムシンボルは板情報ウィンドウに表示され、 シンボルのチャートを開いたり、その上にインジケーターや分析オブジェクトを適用することができます。
カスタムシンボルは実際にトレードすることはできませんが ストラテジーテスター内の自動売買ロボットやインジケーターインのテストに使用できます。カスタムシンボルを選択してテストを実行してください。
テスト中に実行されるトレードの証拠金と利益を計算する際、ストラテジーテスターは口座で利用可能なクロスレートを自動的に使用することができます。たとえば、収益通貨がEURで口座通貨がUSDの場合、テスターはを対応するEURUSDレートに従って変換します。
ほとんどの場合、カスタムシンボル名には、EURUSD や EURUSD などのさまざまなサフィックスが含まれます。 したがって、ストラテジーテスタは特別なメカニズムを使用して、再計算に適したクロスレートを検索します。
たとえば、カスタムシンボル AUDCAD を作成しました。 外国為替 マージン計算タイプを使用、アカウントの通貨は USD です。 外国為替のインストゥルメントの名前に基づいて、テスターは、次のオーダーで必要なシンボルを検索します。
他の金融商品 マージン計算タイプ (先物、証券トレード所) では、通貨ペアが通貨を変換するために必要です。 例えば、英国ポンド (GBP) は、利益とマージンの通貨の設定と、スイスフラン (CHF) は、資産通貨として使用されるカスタムシンボルを作成しています。 この場合、テスト用のシンボルは次のオーダーで検索されます。
|
実時間クオーツを含む合成銘柄
取引プラットフォームでは、合成金融商品、すなわち1つまたは複数の既存の商品に基づく銘柄を作成することができます。クオーツの計算式を設定すると、プラットフォームは実時間で合成製品のティックと分足の履歴を作成します。
たとえば、ドルインデックス(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の場合、合成銘柄の価格は次のように計算されます。
変更の可用性は価格ごとに個別に確認されます。たとえば、ソース製品のビッドのみが変更された場合、合成製品の適切な価格だけが計算されます。
プラットフォームは、ティックを実時間で収集するだけでなく、合成製品の分足の履歴も作成します。通常の製品と同様に、合成製品チャートを表示したりオブジェクトや指標を使用してテクニカル分析を行うことができます。
「気配値表示」に合成製品が追加されると、プラットフォームは計算された分足の履歴が存在するかどうかを確認します。存在しなければ、過去60日間の履歴が作成され、これには約5万のバーが含まれます。プラットフォーム設定のMax. bars in chart(チャートでのバーの最大数) パラメータに値が指定されている場合は、その値が適用されます。 この期間の一部のバーが既に作成された場合、プラットフォームは新しいバーを追加生成します。
過去60日間のバーを作成した後も、プラットフォームはバックグラウンドモードでより深い履歴を作成し続けます。合成式で使用される各銘柄の価格履歴期間は異なることができます。したがって、計算は最短有効期間に実行されます。たとえば、式で3つの金融商品が使用されるとします。
この場合、合成銘柄の履歴は、2014.06.01から現在までで計算されます。計算の完全性を保証するために、この日から100分がさらに捨てられます(履歴で分足が利用できない場合は、前の分のバーが計算に使用されます)。
合成製品の分足の履歴は、その数式で使用される製品の分足(ティックではない)に基づいて計算されます。たとえば、合成銘柄の分足の始値を計算するには、プラットフォームはその数式で使用されている銘柄の始値を使用します。高値、安値、終値も同じように計算されます。.
必要なバーがいずれの製品でも利用できない場合、プラットフォームは前のバーの終値を使用します。たとえば、EURUSD、USDJPY、GBPUSDの3つの製品が使用されるとします。12:00に対応するバーの計算でUSDJPYの必要なバーが利用できない場合、以下の価格が計算に使用されます。
数式で使用されているすべての製品での分足が使用できない場合、合成製品の分足は計算されません。
合成製品の新しいバー(現在および次のもの)はすべて生成されたティックに基づいて作成されます。バーを構築するのに使われる価格は仕様の"Chart mode"(チャートモード)パラメーターに基づきます:
ブローカーが提供する既存銘柄の価格データといくつかのプロパティは、合成価格の計算に使用できます。下記を指定します。
銘柄名が複雑(ハイフン、ドットなどを含む)な場合は、引用符で囲みます(例:"RTS-6.17")。 |
加算(+)、減算( - )、乗算(*)、除算(/)、除算残差(%)の演算では、以下の算術演算を使用できます。例えば、EURUSD+GBPUSDは価格がEURUSD及びGBPUSDの価格の和として計算されていることを意味します。また、単項マイナス演算子を使用して符号を変更することもできます(例:-10*EURUSD)。
算術演算の計算優先順位に気を付けてください。
数式で定数を使うことができます。
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) |
双曲線正接関数の値を返します。 |