自動取引

自動取引

金融市場でより効率的に売買を行うために、独自の有効な取引システムを開発することができます。通常手動モードによる取引は、人間としての感情に影響されます。ロボット取引システムを利用すると、この不都合点を克服することができます。

クライアントターミナルはロボット取引システムの開発と使用のための広範囲にわたる手段を提供します。その開発環境では、エキスパートアドバイザの作成、デバッグ、テストが可能です。エキスパートアドバイザは推奨取引信号について警報(アラーム)を発すだけでなく、取引オペレーションを完全にオンラインで制御することができます。

ターミナルにはMQL4、MetaEditor及びテストツールが組み込まれています。これらの手段を用いて以下のソフトウェアを作成することができます。

エキスパートアドバイザ : 分析及び取引オペレーションの完全な自動化を可能にするロボット取引システムです。

カスタム分析 : 価格変更の分析のために独自に作成したテクニカル分析です。

スクリプト : 要求に応じて、1回だけ実行されるプログラムです。

エキスパートアドバイザ

エキスパートアドバイザ (エキスパート) は、MQL4 で開発され、分析及び取引プロセスの自動化に使用されるターミナルにあるプログラムです。これを使って、価格データの迅速なテクニカル分析や受け取ったシグナルに基づく取引オペレーションの管理を行うことができます。テクニカル分析及び取引のルーチン作業全体をエキスパートにまかせることができます。エキスパートは対応するチャートが開いているか否かに関係なく、どの通貨ペアまたは周期についても、分析及び取引オペレーションを行うことができます。

エキスパートに関する作業には次の項目があります。

エキスパートの作成
エキスパートを作成してコンパイルするには、組み込まれている「MetaEditor」を使用する必要があります。MetaEditorはクライアントターミナルの1つの構成要素であり、MQL4プログラムの便利な開発環境を提供します。

エキスパートの設定
エキスパートを使用するには、その前にそれを設定する必要があります。すべてのエキスパートに共通の作業パラメータはクライアントターミナル設定に説明されています。そのほか、各エキスパートにはそれぞれ固有の設定があります。

エキスパートの起動
エキスパートを起動するには、それをチャートに取り込む必要があります。新しくレートが更新されるごとに、エキスパートは実行を開始します。

エキスパートの終了
エキスパートアドバイザはチャートから削除された後に終了します。

テスト

ターミナルでは、エキスパートアドバイザを作成することができるだけではなく、使用前にそれをテストすることもできます。この有効な機能により、取引システムの運用性と効率をヒストリーデータに基づいてチェックすることができます。テストでは、自動化された売り買いをさまざまの市場条件下で専門的業務に関する十分な知識をもって開始することができます。この目的のため、ターミナルに特別の「テスター」ウィンドウが組み込まれています。このウィンドウを使って、エキスパート入力の最適化も行うことができます。

エキスパートの最適化

最適化は、同じデータ上で入力値が異なる同じエキスパートアドバイザの連続パスを表わします。この時点で、そのようなパラメータはエキスパートの効率が最大になるようにソートされることができます。ターミナルにはこのプロセスの自動化を可能にするいくつかの手段が組み込まれています。1つのエキスパートを最適化するには、「テスター」ウィンドウの「エキスパートの最適化」のオプションフラグを設定し、「スタート」ボタンをクリックします。

最適化の設定

最適化は同じデータ上で入力値が異なる同じエキスパートの連続パスを表わします。この時点で、エキスパートの効率を最大にするようにパラメータをとることができます。ターミナルにはこのプロセスの自動化を可能にする手法が組み込まれています。エキスパートパラメータの最適化を開始する前に、それらを設定する必要があります。そのためには次のことを行う必要があります。

エキスパートを選択し、その入力値を設定します。

通貨ペアとその周期を選択します。

3つのバーモデル化方法のいずれか1つを選択します。

最適化の期間を設定します(オプション)。

ターミナルでエキスパートのテストと最適化には「テスター」 と名付けられている特別のウィンドウを使います。上記のすべてパラメータはこのウィンドウの「設定」タブで設定されます。

エキスパートアドバイザとそのパラメータ
「テスター⇒エキスパート」ウィンドウで最適化をするエキスパートを選択します。ここで選択できるのは、クライアントターミナルで使用可能なエキスパートだけです。選択するためには、ファイルをコンパイルして/EXPERTSフォルダに保存しなければなりません。

エキスパートの選択後、テストパラメータとその値を設定する必要があります。これは「エキスパートプロパティ」ボタンをクリックして行うことができます。この時点で、以下の3つのタブのある新しいウィンドウが表示されます。

テスト : 一般的な最適化パラメータをこのタブで設定します。これらは相応する欄に入力する初回預り証拠金の額と通貨です。最適化中にエキスパートによって運用されるのはこの証拠金です。オープンするポジションのタイプもこのタブで選択されます。ロングのみ、ショートのみ、またはロング & ショートがあります。どのようなエキスパートアルゴリズムが使用されようと、ポジションは指定された方向でのみオープンします。最適化のジェネティックアルゴリズムを含めて、最適化するパラメータ(残高による最大化、利益率、期待ペイオフ、または最大ドローダウン値または率による最小化)を選択することができます。

入力値 : すべてのパラメータのリストがここに表示されます。パラメータの値はエキスパートのオペレーションに影響を与え、クライアントターミナルから直接変更出来る変数です。これらのこれらのパラメータを変更するために、エキスパートコードを変更する必要はありません。入力変数の数はエキスパートによって異なります。最適化では、パラメータの値は、「スタート」、「ステップ」、及び「ストップ」欄に設定されます。外部変数の初期値、間隔変更、及び最終値をそれぞれこれらの欄に設定します。変数名の左にパラメータを最適化プロセスに含めるチェックボックスがあります。変数名がこのチェックボックスでチェックされない場合、その変数は最適化に関係しません。その値は最適化プロセスの中では変更されず、「値」欄に入力されたパラメータがここに書き込まれます。エキスパートパスの数はこれらのパラメータに直接依存します。「値」欄に書かれたデータはエキスパートの最適化に影響がなく、そのテストのためにのみ必要なものです。

以前にすでに保存されている入力値のセットは(「スタート」、「ステップ」、及び「ストップ」欄に入力されたものを含めて)ダウンロードすることができます。これは「ロード」ボタンをクリックし、予め保存されているパラメータのセットを選択して行うことができます。外部変数の現在のセットは相応するボタンをクリックして保存することができます。

最適化 : このタブでは最適化時の制限を管理することができます。個別のプロセス中で何かの条件に適合すると、エキスパートのこのパスは中断されます。制限パラメータは以下の通りです。

最小預り証拠金残高 : 証拠金通貨単位の最小預り証拠金残高です。

最大利益 : 証拠金通貨単位の最大利益です。

最小必要証拠金水準 %: パーセント単位の最小必要証拠金水準です。

最大ドローダウン %: パーセント単位の最大ドローダウンです。

連続損失 : 連続損失内の最大の損失。連続損失は連続する損失取引の数です。

連続損失取引 : 最大連続損失の取引数です。

連続勝利 : 連続勝利内の最大の勝利。連続勝利は連続する勝利取引の数です。

連続勝利取引 : 最大連続勝利の取引数です。

条件の制限を有効にするには、左側のチェックボックスにそのフラグを設定する必要があります。「値」欄で左マウスボタンをダブルクリックして、既存のパラメータを変更することができます。

通貨ペアとその周期
テストを開始するためには、1つのエキスパートを選択して、それを設定するだけでは十分ではありません。テストのための通貨ペアと周期を選択します。これらはテストに使用されるデータです。テストでは、ターミナルで使用可能な通貨ペアを選択するか外部データファイルを使用することができます。/TESTERディレクトリに保存されている*.FXTフォーマットのヒストリーデータファイルがテストに使用されます。これらのファイルは、ターミナルで使用可能な通貨ペアが選択されると、テストで自動的に作成されます。外部データを使用する場合は、このテストの継続を上書きしないため、相応するファイルを/TESTERディレクトリに手動で保存して「再計算」を使用不可にする必要があります。

通貨ペアは「通貨ペア」の欄に定義されており、周期は「周期」欄に定義されています。この通貨ペア、周期及びモデル化方法のデータファイルがない場合、データファイルは自動的に作成されます。必要なファイルがすでに作成されており、「再計算」オプションが使用可能となっている場合、データファイルが再生成されます。通貨ペアまたは周期のヒストリーファイルがない場合、テスターは最新の512のヒストリーバーを自動的にダウンロードします。

注意 : 通貨ペアに関する最新の512のヒストリーバー以上にデータがある場合、ヒストリーデータは使用可能な最後のデータまで自動的にダウンロードされます。これは入力トラフィックを急激に増加させることになります。
モデリング方法
ヒストリーデータはバーとしてのみターミナルに保存され、TOHLCV(HSTフォーマット)として記録を表わします。これらのデータはエキスパートのテスト時の価格変動のモデル化に使用可能です。いくつかのケースでは、そのような情報がテストには十分ではないことがあります。たとえば、日足については、1つのバー内の価格変動はエキスパートの起動につながることがあります。同時に、テスト時にはエキスパートは起動しないことがあります。言い換えると、バーのみに基づくエキスパートのテストは不正確になることがあり、エキスパートの効率について誤った考え方を与えることがあります

ターミナルでは、ヒストリーデータの多種多様なモデル化方法により、エキスパートをテストすることができます。より短い周期のヒストリーデータを使って、バー内の価格変動を見ることができます。即ち、価格変動はより正確にエミュレートされます。たとえば、エキスパートを1時間のデータに基づいてテストする場合、1つのバーの価格変動は1分足のデータに基づいてモデル化することができます。したがって、モデル化はヒストリーデータを実際の価格変動に近づけ、エキスパートのテストをより信頼性のあるものにします。

テストには以下の3つのヒストリーデータモデル化方法の1つを選択することができます。

オープン価格のみ (作成されたばかりのバーを分析する方法で一番速い方法)
一部のロボット取引システムはバー内のモデル化の属性に依存せず、完結したバーに基づいて取引を行います。バーは次のバーが現れると完結します。

このモードでは、オープン時のバーがまずモデル化(Open = High = Low = Close, Volume=1)されます。それによってエキスパートが先行バーの完結を正確に特定できます。エキスパートのテスト開始に使われるのはこの初期バーです。次のステップでは、完全に完結した現行バーが表示されますが、テストはそれに基づいては行われません。

コントロールポイント(12のコントロールポイントのフラクタル補完で直近の短期周期に基づく)
制御点モデリング方法はバー内で取引を行うエキスパートの効率の大まかな見積りを行うのが目的です。直近のより短い周期のヒストリーデータはこの方法の適用に使用できるものでなければなりません。ほとんどの場合、より短い周期の使用可能データはテスト対象の周期の時間範囲を完全にカバーするものではありません。より短い周期のデータが見当たらない場合、バーの追加作成が先行する12のバーに近い価格で生成されます。それは、バー内の変動は直近の12の周期における価格の変動と同じであることを意味します。それがフラクタル補完です。

より短い周期のヒストリーデータが表示され次第、フラクタル補完はこれらの新しいデータに適用されます。しかし、使用される先行バーは12ではなく6だけになります。そのことは、実際に存在するOpen、High、Low、Close価格が再現され、さらに2つの価格が生成されることを意味します。生成されたこれら2つの価格の値と場所は先行する6のバーによって異なります。

レートの更新ごと(各ティックのフラクタル補完で全ての使用可能な短期周期に基づく) これはバー内の価格モデル化のもっとも正確な方法です。「コントロールポイント」の場合とは異なり、この方法は直近のより短い周期のデータの生成だけではなく、すべての使用可能なより短い周期のデータの生成にも使用します。さらに、同じ周期について同時に複数の周期のデータがある場合、モデル化にはより短い周期のデータが使われます。以前の方法の場合と同様、フラクタル補完によってコントロールポイントが生成されます。この方法はコントロールポイント間の価格変動のモデル化にも使用されます。類似する複数の入力を次々にモデル化することが可能です。この場合、二重の指値がフィルターにかけて除去され、最後の指値の量が確定されます。。

大量のレートの更新データがモデル化される可能性があることを考慮に入れる必要があります。これはオペレーティングシステムシステムの消費資源とテスト速度に影響することがあります。

注意:
テスト対象期間を完全にカバーする使用可能なより短い周期がない場合はレートの更新ごとによるテストの開始はお勧めできません。そのような場合結果は不正確なものになります。
コントロールポイントに基づくモデル化は基本的にエキスパートの最適化で使用し、すべてのレート更新モデル化はより正確なテストのために行います。
モデル化パラメータと日付範囲(以下で説明)が変更された後、データファイルを再作成しなければなりません。これを行うには、「再計算」のフラグを立てる必要があります。上記の設定が変更されない場合、再計算の必要はありません。この場合、テスト時間を減らすため、上記のオプションを使用不可にすることを勧めます。

日付範囲
日付範囲は、すべての使用可能データに基づくのではなく一定の期間の範囲内でのみエキスパートテストを実行するものです。これはヒストリーデータの特定の部分のテストが必要な場合に役に立ちます。日付範囲はエキスパートのテストだけではなく、バーのテスト継続のモデル化にも使用することができます(テストに使用するためにモデル化されたデータのファイル)。未使用のデータの量が非常に大きくなるレートの更新ごとのモデル化については、ヒストリー全体のデータのモデル化は多くの場合不要です。テスト継続性の初期モデル化時点でデータ範囲の設定が許可された場合、この範囲を超えるバーのモデル化は行われず、出力の継続に変換されるだけであるのはこのためです。データは受け取ったヒストリー全体に関する指標の正しい計算を可能にするため継続から除外されません。最初の100のバーはいずれもモデル化の対象ではないことに留意する必要があります。この制限は日付範囲の指定に関係なく存在します。

日付範囲の制限を使用可能にするには、「日付を使用」のフラグを立て、必要な値を「から」及び「まで」の欄に指定する必要があります。 設定がすべて完了すると、「スタート」ボタンを押してテストを開始することができます。テストが開始されると、このプロセスのおよその進捗度がウィンドウの下部に表示されます。

注意 :
「最適化」が無効にされると、エキスパートはテストされますが、「スタート」ボタンをクリックしても最適化は行われません;
最適化時には、テストの場合と同様、独自のヒストリーファイルを使用することができます。

最適化結果

最適化が完了した後、その結果を「最適化結果」タブと「最適化グラフ」タブで見ることができます。

最適化の結果
テストとは異なり、最適化では異なるパラメータの値によるロボット取引システムの数多くのパスを実行することが想定されます。その目的は効率が最高になる時点のエキスパートパラメータを決定することにあります。エキスパートを最適化するには、テスト設定タブに「最適化タブ」のフラグを設定し、「スタート」をクリックします。その後、「最適化結果」と「最適化グラフ」の2つの新しいタブがウィンドウに表示されます。

テスト結果とは異なり、必ずしもすべてのオペレーションが「最適化結果」タブに表示されるのではなく、各パスに関する最終レポートだけが表示されます。全体の情報は以下の欄に表示されます。

パス : パスの数です。

利益 : 純利益(粗利益から粗損失を差し引いたもの)です。

取引総数 : オープン取引ポジションの総数です。

利益率 : 粗利益と粗損失のパーセント単位の比率です。1はこれらの値が等しいことを意味します。

期待ペイオフ : 利益の算術的期待値です。統計的に計算されるこの値は1つの取引の損益係数を表わします。また、次の取引の期待損益係数を表わすと考えることもできます。

ドローダウン$ : 証拠金通貨単位の初期証拠金の最大減少です。

ドローダウン% : パーセント単位の初期証拠金の最大減少です。

パラメータの値 : 各パスでの入力値の変更可能な値です。

見出しラインの項目名にカーソルを合わせて左マウスボタンをクリックすると、表内のすべての記録を昇順または降順にソートすることができます。「入力パラメータの設定」コンテキストメニューコマンドの実行により、選択したパスのデータはエキスパート基本入力値 (エキスパートプロパティウィンドウの「パラメータの値」タブ)として記録されます。その時点で、「設定」タブに切り替わり、最適化は使用不可になります。「スタート」ボタンをクリックした後、選択したパラメータの値を使ってエキスパートのテストを開始することができます。最適化結果タブのパスラインにカーソルを合わせて左マウスボタンをダブルクリックしても同じ操作が可能です。「コピー」コンテキストメニューコマンドまたはCtrl+Cホットキーを使って、他のアプリケーションでさらに使用するために選択した結果のラインをクリップボードにコピーすることができます。どのラインも選択しない場合は、表全体がクリップボードにコピーされます。「すべてコピー」コマンドの実行でも同じ操作が可能です。最適化結果に関するレポートはハードディスクにHTMLファイルとして保存することができます。これを行うには、「レポートとしてコピー」コンテキストメニューコマンドを実行する必要があります。その他のコンテキストメニューコマンドで、結果の表示を設定することができます。

無用な結果をスキップする : 利用価値のないパスの結果を表示/非表示します。

入力パラメータを表示する : 「パラメータの値」カラムを表示/非表示します。

自動調整 : ウィンドウサイズが変更された場合にカラムサイズを自動的に調整します。Aキーによって同じことを行うことができます。

グリッド :カラムを分けるグリッドを表示/非表示します。Gキーによって同じことを行うことができます。

最適化グラフ
すべてのパスの利益グラフは「最適化グラフ」タブに自動的に作成されます。グラフでは、入力値の異なる組み合わせの使用の収益性を目に見える形で推定することができます。パスごとの有利な取引(緑色)と不利益な取引(赤色)の数を表すグラフはウィンドウの一番下に表示されます。

グラフのいずれかの箇所にカーソルを合わせて左マウスボタンをダブルクリックすると、「最適化結果」タブに切り替わり、相応するパスが選択されます。「コピー」コンテキストメニューコマンドの実行またはCtrl+Cホットキーを使って、他のアプリケーションで使用するためにグラグをクリップボードにコピーすることができます。クラフはGIFファイルとしてハードディスクに保存されます。これを行うには、「画像として保存」コンテキストメニューコマンドの実行またはCtrl+Sホットキーを押す必要があります。

カスタム分析

カスタム分析は、ユーザがMQL4で開発する独立したプログラムで、テクニカル分析として機能するものです。テクニカル分析は将来の価格変動を予測するための証券価格、証券数量の算術変換です。カスタム分析を使って、現在の傾向が変わらず継続するか、またどこでそれが変わるかについての質問に答えることができます。カスタム分析は取引の意思決定の複雑なプロセスを比較的簡単なものにするのが目的です。カスタム分析のアルゴリズムは取引戦術やエキスパートアドバイザの開発にも使用されます。

注意 : カスタム分析の目的は通貨ペア価格変動の解析に限られており、取引そのものは目的ではありません。
カスタム分析での作業には次の作業があります。

カスタム分析の作成
カスタム分析を作成し、コンパイルするには、組み込みの「MetaEditor」を使用する必要があります。「MetaEditor」はクライアントターミナルの1つの構成要素であり、MQL4プログラムの便利な開発環境を提供します。

カスタム分析の設定
カスタム分析を使用するには、その前にそれを設定する必要があります。すべてのカスタム分析に共通の作業パラメータはクライアントターミナル設定で設定されています。そのほか、各カスタム分析にはそれぞれ固有の設定があります。

カスタム分析の起動
カスタム分析のパラメータが計算され、カスタム分析がチャートに取り込まれるときに表示されます。

カスタム分析の削除
カスタム分析が必要でなくなると、カスタム分析はチャートから削除することができます。

スクリプト

スクリプトはMQL4で書かれるプログラムで、その目的はあらゆるアクションを1度だけ実行することです。スクリプトは分析機能と取引機能の両方を実行することができます。エキスパートとは異なり、スクリプトはレートの更新時ではなく、要求に応じて実行されます。言い換えると、エキスパートがほぼ継続的に稼動する一方、スクリプトは、その機能を一度完了すると、自動的にその機能を停止します。

スクリプトには次の操作があります。

スクリプトの作成
スクリプトの作成とコンパイルには、組み込み「MetaEditor」を使用します。それはクライアントターミナルの1つの構成要素で、MQL4プログラムの使い易い開発環境を提供します。

スクリプトの設定
スクリプトは使用の前にまずその設定が必要です。すべてのスクリプトに共通の作業用パラメータはターミナル設定ウィンドウで定義されます。どのスクリプトにもさらに独自の設定があります。

スクリプトの起動
スクリプトを起動するには、それをチャートに添付する必要があります。スクリプトのアルゴリズムがその後すぐに起動されます。

スクリプトの削除
スクリプトはチャートから削除された後、その作業を完了します。