English Русский 中文 Español Deutsch Português
ビジュアルストラテジービルダー。 プログラミングなしでトレーディングロボットを作成する

ビジュアルストラテジービルダー。 プログラミングなしでトレーディングロボットを作成する

MetaTrader 5テスター | 28 8月 2018, 07:10
2 256 0
Andrey Barinov
Andrey Barinov

コンテンツ


イントロダクション

Algotrading とストラテジーテスターのヒストリーデータのトレードのアイデアを確認する関数は、MetaTrader5 トレーディングプラットフォームの最も重要な関数です。

しかし、リアルタイムチャートまたはストラテジーテスターで自動トレーディングモードでトレーディングストラテジーを使用するためには、実行可能ファイル (EAファイル-EA) になっている必要があります。 すべてのトレーダーがプログラミングスキルやリソースを持っている訳ではありません。

この記事では、この問題に対するソリューションを紹介します (ビジュアルストラテジービルダのミッション自動化)。 その助けを借りて、誰もが自分のトレードを自動化し、コードを1行も記述することなく、ストラテジーをチェックすることができます。 プログラムの無料版のリンクは以下にあります。 人気のストラテジーに基づいた5つの既製の無料のEAがあります。 テンプレートの形で設計されており、他のストラテジーの基礎として使用することができます。

MetaTrader4: Mission Automate Demo MT4

MetaTrader5: Mission Automate Demo MT5

無料版にはデモという文字がありますが、すべての機能を備えており、制限などはありません。 わずかに "不便 "な点があります。 有料版へのリンクは、マーケットの無料版のページに説明があります。

このビジュアルストラテジービルダーは、 "非プログラマ "用 に設計されており、多くのユーザーに有用であることができます。 どんなトレーダーでも、その原則を習得するために少し時間を費やせば、完全な機能を備えたトレーディングロボットを作成することができます。

この記事では、リアルライフトレーディングアドバイザーの作成例について、提示されたストラテジービルダの概要を説明します。


特徴

ミッション自動化アプリケーションは、誰もが既製のトレーディングロボットにアイデアを有効にすることができます。 "ドラッグアンドドロップ" と直感的なグラフィカルインターフェイスは、プロセスを簡単で楽しいものにします。 エキスパートアドバイザの作成は、既存のブロック (要素) からスキームを組み立て、ロジカルリンクと接続しているように見えます。 スキームが作成されると、すぐにライブを実行したり、ストラテジーテスターやリアルタイムチャートでさらに使用するために MQL5 コードに自動的に変換することができます。

利用可能な要素の一部を以下に示します。

  • すべての標準的なインジケーターは、メタトレーダーのプラットフォームに存在します。
  • カスタムインジケーター
  • 取引 (トレードグループ) 注文 / 決済 / 修正.
  • 設定 / キャンセル / 予約注文の修正 (オーダーグループ).
  • トレード管理: ロット計算、ブレイクイーブン、トレーリングストップ。
  • トレード履歴 (クローズドポジション情報) へのアクセス
  • 価格の履歴に関するさまざまな情報を取得するための要素。
  • 様々なツールの最後のティックのデータ。
  • 様々な算術演算と価格変換。
  • 論理演算
  • 変数/スイッチ。
  • 時間の操作。
  • トレーディング機器に関する様々な情報。
  • アカウントに関する情報 (バランス、エクイティ、フリーマージンなど)。
  • 通知: チャートのアラート、ログ、プッシュ、およびコメント。
  • その設定で表示され、ストラテジーテスターで最適化することができるEAのインプットパラメータを作成するための要素。

要素の大スケールなセットは、トレードロボットやユーティリティの組み合わせを膨大にし、誰もが様々な組み合わせで作成することを可能にします。 下記は、ミッションの自動化ストラテジー構築ツールを使用して作成することができるリストの一部です。

  • テクニカルインジケーターに基づくEA
  • プライスアクションストラテジー。
  • ロウソク足パターンEA。
  • サポートとレジスタンスレベルに基づくストラテジー。
  • さまざまな種類のgridシステム。
  • マーチンゲールメソッドを使用するシステム。
  • トレード管理ユーティリティ。
  • アラートと通知システム。
  • 資金の管理ツール。

ストラテジービルダとこの記事では、 "トレード " と " ポジション " という語句が類義語として使用されています。 トレード/ポジションは、現在のもので、決済していないものを表します。あるいはヒストリー上のものを表します。すなわち既に過去で既に決済したものです。 テキスト内の"order "という単語は、 "予約オーダー" として読み取る必要があります。 オーダーが後でポジションになるか、取り消されて履歴に移動されることがあります。


外観

一般的に、トレーディングロボットにアイデアを変換するプロセスは、いくつかの段階で構成されています。

  1. トレーダーの頭の中でトレーディングストラテジーを形成する-創造的なタスク。
  2. ストラテジーの形式化、または EA の仕様の準備 - リフレーミングルールのセットとしてのストラテジー
  3. ルールをコードに変換し、トレーディングロボットの実行可能ファイルとして、EAのプログラミングを行う。

ほとんどのトレーダーは、自分でステップ # 1 と # 2 を正常に実行することができます。 この記事に記載されているプロダクトは、任意のトレーダーのアルゴリズムトレードを可能にするステップ # 3 を達成することです。

ミッション自動化ストラテジービルダーを使用すると、最初からまたは1つの既製のテンプレート/例は、独自のストラテジーを作成することができます。

下のビデオは、新しい EA をゼロから作成するプロセス全体を示しています。 この例では、2つの移動平均に基づく古典的なストラテジーが構築されています。

このビデオでは、次の手順を示します (詳細については後で説明します)。
  • 要素からスキームを組み立てる。
  • 論理リンクを持つ要素を接続する。
  • 要素とリンクのパラメータを調整する。
  • .mq5 EA ファイルの自動生成。
  • コードをコンパイルし、実行可能な ex5 ファイルを取得。
  • ストラテジーテスターでEAを実行してテスト。



ストラテジーは、ブロック/モジュールから組み立てられます。 ブロックは要素と呼ばれます。

使用可能なすべての要素は、要素バーにあります。

要素は論理リンクで接続できます。

頻繁に使用される要素とリンクの組み合わせは、スニペットとして保存できます。

作成されたスニペットはすべて、スニペットバーにあります。

要素は "ドラッグアンドドロップ " で移動されます。

要素とリンクのグループは、スキームを形成します。

新しいスキームは、テンプレートを使用して作成できます。

使用可能なテンプレートはすべて、テンプレートバーにあります。

外観


新しいスキームは、使用可能なテンプレートのいずれかから、または完全にゼロから作成することができます。

テンプレートからスキームを作成するには、パネルで適切なテンプレートを選択し、ワークスペースにドラッグします。 そのアイコンをクリックすると、テンプレートの簡単な説明が表示されます。

スキームが作成されると、そのアイコンがスキームバーに表示されます。 スキームアイコンは、スキームで可能なアクションにすばやくアクセスするために使用されます。 スキームのコントロールパネルは、アイコンを1回クリックした後に表示されます。 アイコンをダブルクリックすると、選択した配色が画面の中央に移動します。 各スキームには名前を割り当てることができます。 ワークスペースの周囲では、自由にスキームを移動できます。

スキームの作成


スキームに新しい要素を追加するには、要素バーからドラッグする必要があります。

要素バーの要素をクリーンな空間にドラッグすると、この要素のみを含む新しいスキームが作成されます。 各要素には、名前を割り当てることができます。

要素をクリックすると、その設定パネルが表示されます。 要素のパラメータ値を変更したり、デフォルト値として設定したりできます。 パラメータの設定とは別に、要素のクローン作成、削除、設定のリセット、要素とそのパラメータの簡単な説明へのアクセスなどのオプションもあります。

要素

要素バーの要素をクリックすると、その設定ウィンドウがポップアップ表示されます。 この場合、パネルから要素のパラメータを変更すると、後でこの要素のすべての新しいコピーに使用されます。

要素は3つのグループに分けることができます。

  1. 特定の条件が発生したときに特定のアクション(新しいポジション、通知、既存のポジションの変更など) を実行するための要素。 アクションを実行するために必要な条件は、トリガと呼ばれます。
  2. オブジェクト要素 (ティック、足、シンボル、ポジション、予約オーダー、インジケーター)。 最初に、オブジェクトを作成し、そのパラメータを設定する必要があり、情報を取得できます。
  3. オブジェクトに関する情報(現在の価格、アカウントのステータスに関する情報、トレード履歴など) を取得するための要素。
要素のパラメータとオブジェクトのデータは、異なる型にすることができます。 たとえば、通貨レートには10 進数の型があり、ポジションのコメントは文字列として指定されます。 足番号には整数の型があり、その開始の瞬間には時間の種類があります。

要素は論理リンクで接続できます。 リンクは、ある要素から別のエレメントにデータを転送します。

データ損失なしで互いに回す同じタイプまたはタイプの要素そしてパラメータだけリンクと接続することができます。

新しいリンクを作成するには、要素の端を "ドラッグ " にします。 リンクをクリックすると、その設定のウィンドウが表示されます。

接続要素


上の図は、 "新しい足アラート通知 " ユーティリティがどのように表示されるかを示しています。

リンクは、同じ型の要素とパラメータ、またはデータ損失なしで内部変換できる型のみを接続できます。

一部のアクションは、選択した要素のグループに適用できます。

要素のグループを作成するには、Ctrl キーを押しながら、スキームのセクションを選択します。 このゾーンに入るすべての要素が選択されます。 また、 Ctrlキーを押しながら要素をクリックすると強調表示されます。

選択したグループの要素をクリックすると、グループの [設定] ウィンドウが表示されます。 選択したグループは、クローン化、削除、またはファイルへの保存が可能です。 さらに、グループ内の要素で構成されるスニペットを作成することもできます。 新しいスニペットがスニペットバーに表示され、新しいスキームに追加できるようになります。 スニペットバーを使用すると、任意のスニペットの要素パラメータを変更できます。

スニペット


プログラムの他の関数は、実際のEAを構築する例について検討されます。


例 #1: "移動平均クロスオーバー " EA

2つの移動平均クロスオーバーに基づいた古典的なトレードストラテジーを検討してみてください。

このストラテジーは、次のように簡潔に説明できます。

速い移動平均 (MA) が遅いMAを上向きに横切るときに買います。 高速 MA が遅いMAを下向きにクロスするときに売ります。 逆のシグナルが発生したときにポジションを閉じます。同じように、ストップロスとテイクプロフィットを取ります。

ルール/条件のセットとして、よりフォーマルなメソッドでストラテジーを説明してみましょう。

  • 移動平均はロウソクの近い価格を使用して造られるべきです。 形成された足でのみ動作します。 すべてのトレードアクションは、シグナルの外観に続いて足の始値で実行されます。
  • 高速移動平均かつ低速の移動平均の期間は、EA のインプットパラメータで調整可能である必要があります。
  • 買いシグナル(と売り決済) は、高速 MAが前の足で低速MAよりも低かったとき、かつ、現在の足で低速MAよりも高速MAが高くなったときです。
  • 売りシグナル (と買い決済) は、前の足で高速MAが低速MAよりも高く、現在の足で高速MAが低速MAよりも低くなったときです。
  • 1つのポジションだけが任意の時点で存在することができます。
  • すべてのトレードは、ロットサイズを固定する必要があります。 ロットサイズは、EA のエントリー設定で調整可能である必要があります。
  • ストップロスとテイクプロフィットの値は、EA のインプットパラメータで調整可能でなければなりません。
  • このEA は、置かれているチャートのシンボルでのみ動作させます。 インジケーター計算の時間枠は、現在のチャートの期間に対応している必要があります。
  • EAは、一意のマジックナンバー識別子を使用して同じアカウントで動作することが可能である必要があります。 このパラメータは EA のエントリー設定で設定する必要があります。
  • EAトレードのカスタムコメントを指定することは可能です。

この一連のルールは EA 仕様として機能するのに十分です。 このトレーディングロボットをビジュアルストラテジービルダーで開発してみましょう。

移動平均の期間は、エキスパートアドバイザのインプットパラメータとして作成する必要があります。

これを行うには、いずれかのInput要素を使用します。 インプットパラメータの種類によっては、別の要素があります。

インジケーター期間は整数です。 対応する要素を使用します。 新しいスキームを作成し、2つの要素を追加し、名前を与え、その値を調整してみましょう。 高速MA の場合、デフォルト値を14に設定し、低速MA = 28 にします、 値は、ストラテジーテスターでさらに最適化することができます。

MA の期間


ストラテジーは、1つの標準インジケータ、2つの異なる期間を使用します。

移動平均という2つの要素が必要です。

スキームに追加して、インジケーター期間の要素をインジケーター周期パラメータに接続してみましょう。 その後、スキームは、このようになります:

インジケーター


デフォルトでは、インジケーターは現在のチャートのシンボルと時間枠を使用します。 これは、まさに我々が必要とするものです。 インジケーターを計算する期間は、対応する要素から取得されます。

買い/売りシグナルの条件を決定するために、各インジケータの2つの値を取得する必要があります。

インジケーター値を取得するには、インジケーター値要素を使用する必要があります。スキームに4つの要素を追加し、対応するリンクを作成してみましょう。

足には現在から過去までの番号が付けられます。 現在の不完全な足には番号0があります。 番号1は、前に形成された足に割り当てられています。

ストラテジーで使用されている唯一の形成足。 したがって、現在の足では value = 1を使用し、前の足では value = 2を使用します。 4つの要素すべてに対応する値が設定されます。

MAの値


インジケーターの値を比較し、エントリの条件が満たされているかどうかを確認する必要があります。

数値を比較するには、 Compare要素を使用します。この要素は、2つの数値が指定されたリレーションを満たしていて、値 "false " がない場合は、値 "true " を出力します。 スキームに2つのような要素を追加してみましょう。 まず、前の足で高速MAが低速MAを上回っていたかどうかを確認します。 2番目の要素では、現在の足で高速MA が低速MAよりも高くなっているかどうかを確認します。 適切なリンクを作成し、比較要素のパラメータを設定してみましょう。

値の比較


買いシグナルは、同時に2つの条件が必要です。

  • 前の足で高速MAが低速MAの上になかった
  • 現在の足で高速MAが低速MAより高くなった

条件の同時性を確認するには、"論理子AND "を使用します。 この要素は、すべての条件が満たされている場合に値 "true " を出力し、そのうちの少なくとも1つが満たされていない場合は値 "false " を返します。

このような2つの要素をスキームに追加し、両方の要素をそれぞれに接続します。

その際には、リンクの一部を "逆 " にする必要があります。 前の足で高速MAが低速MAより高かった場合、比較要素は "true " を生成しますが、それ以前に高くなかったことを確認する必要があります。 したがって、要素のパラメータ内の対応するリンクを調整することにより、出力値を反転させます。 反転リンクは、配色パターンに赤い色で描画されます。

シグナル


トレードオペレーションの実施に進みましょう。 新しいポジションを開く前に、現在の状態を確認し、目的の方向のトレードがすでに開いている場合はシグナルを無視するか、逆方向に開いている場合はポジションを閉じます。 これを行うには、現在の時点で既存の売買ポジションの数を知る必要があります。

トレード情報にアクセスするには、トレードグループ要素を使用します。 この要素は、特定の条件を満たすトレードのグループを形成します。 トレードは、シンボル、マジック、コメントなどの様々なパラメータによってフィルタリングすることができます。

買い、売り用の要素が必要です。 2つの要素をスキームに追加し、構成してみましょう。

トレードグループ

トレードグループに関する情報を取得するには トレードの数を知る必要があります。トレードグループ情報 (整数)要素を使用します。スキームに2つのような要素を追加してみましょう。 出力値は、比較要素を使用してゼロと比較されます。

トレード番号


最終的な条件を形成する必要があります。つまり、トレード操作のトリガです。 各トリガには2つの条件があります。

  1. 買いトリガー - -(1)買いトレードが存在しない (2)買いシグナルが ある
  2. 売りトリガー-(1) 売りトレードが存在しない (2) 売りシグナルがある
  3. 買い決済のトリガー-(1) 買いポジションがある、(2)売りシグナルが ある )
  4. 売り決済のトリガー-(1) 売りポジションがある、(2)買いシグナルがある

条件の履行を確認する必要があるので、論理子AND要素を再度、各トリガの1つを使用します。 スキームに4つのような要素を追加し、対応するリンクを作成します。

トリガがポジションを開くためには、比較要素からのリンクを反転させる必要があります。

トリガー


トリガの準備が整いました。 あとは、トレーディング要素を追加します。

ポジションを開くには、オープントレード要素を使用します。 買い、売り、それぞれに一つずつ必要です。

トレードをクローズするには、クローズトレードグループ要素を使用します。 ここでもまた、買い、売りそれぞれに要素が必要です。

トリガ以外にも、また、密接なトレードグループの要素にトレードグループ自体を接続する必要があります。 要素を追加して適切なリンクを作成した後、スキームは次のようになります。

トレーディング要素


さて、EA のトレーディングロジックの準備ができました。 トレーディングロットのサイズ、マジック、トレードのコメントとストップロス/テイクプロフィットがEAのインプットパラメータから調整することができることを確認する必要があります。 これを行うには、インプットパラメータグループの要素が必要です。

トレーディングロットは、 10 進数で指定され、トレードのコメントは、文字列です。マジックナンバー、ストップロスとテイクプロフィットは整数です。 要素をスキームに追加し、トレード要素の対応するパラメータにアタッチします。

準備完了スキームビュー


スキームは準備が整いました。 さて、実行可能な EA ファイルを作成する必要があります。

EA のインプットパラメータを特定の順序で移動する場合は、[エントリーの整列] オプションを使用できます。 これより、インプットパラメータを担当するすべての要素が一覧表示され、[EA の設定] ウィンドウでの外観のオーダーを指定して、上/下に移動できます。

EA インプットパラメータの整列

ソースコードを生成し、エキスパートアドバイザファイルを作成する準備が整いました。 全体のプロセスは下の図に示されており、次の手順で構成されています。
  1. ストラテジービルダのファイルナビゲータを使用した EA ファイル生成。
  2. 作成した EA ソースコードファイル (mq5) を メタエディタ プログラムで開きます。
  3. エキスパートアドバイザをコンパイルし、実行可能な EA ファイル (ex5) を取得します。

EA ファイルの作成

コンパイルが成功すると、ex5 拡張子を持つ EA ファイルとソースコードファイルと同じ名前が、ソースファイル (mq5) のある同じフォルダに表示されます。

この EA ファイルは、トレーディングターミナルのエキスパートフォルダに配置し、その後、トレーディングターミナルで使用できるようになります。

ストラテジーテスターで作成したエキスパートアドバイザを実行すると、次の図が表示されます。

ビジュアルモードでのチェック

こkのEA は準備完了で、トレーディングストラテジーの元のルールに準拠しています!


例 #2: "リバースマーチンゲール " EA

マーチンゲールシステムに基づいて、非常に人気のあるトレーディングストラテジーを考えてみましょう。 ストラテジーは次のように記述することができます。

最初のロットサイズで任意の方向にポジションを開きます。 ストップロス、テイクプロフィットが同じになるように設定します。 ポジションがプラスで決済すれば、次は再び初期ロットサイズで開きます。 ポジションが損失で決済したら、次のトレードは前の損失を補うように、増加されたロットサイズを有するべきです。

このようなロボットの技術仕様は、このように見えるかもしれません。

  • 最初のトレードは、ユーザ定義の方向 (インプットパラメータ) と初期ロットサイズ (インプットパラメータ) で開く必要があります。
  • 任意のオープンポジションの場合、同じストップロスとテイクプロフィットレベルはポイント (インプットパラメータ) で設定されます。
  • トレードがプラスで決済する場合、次のポジションは最初のロットサイズと反対の方向に開く。
  • トレードが損失でクローズされた場合、次のポジションは、ロットサイズ (ロット乗数-インプットパラメータ) の増加に伴って反対方向に開かれます。
  • すべての EA のトレード (インプットパラメータ) のコメントを指定することが可能です。
  • 複数の EA を同時に実行できるようにする必要があります (マジック インプットパラメータ)。
  • このEA は、添付されているチャートのツールを交換する必要があります。 時間枠は関係ありません。

ビジュアルストラテジービルダを使用して、このエキスパートアドバイザの作成を始めましょう。

ストラテジーを実行するには、現在の状態 (オープンポジションの存在) とトレードのヒストリーについての情報を持っている必要があります (前のトレードの方向性、利益とロットサイズを知る必要があります)。

フォームの2つのトレードグループ: 1 つのクローズドポジション (履歴) と別の現在のポジション (現在)。 また、マジックナンバーのインプットパラメータ要素も追加します。

トレードグループ

開いているポジションが存在しない場合は、開く必要があります。 前の例のように、トレードグループ情報要素を使用してオープンポジションの数を決定し、得られた値をゼロと比較します。 ポジションがなければ、これが新しいトレードを開けるためのトリガーです。 この場合、このリンクを逆にする必要があります。

次のトレードを開く

オープンポジションがある場合、ストップロス・テイクプロフィットを設定します。

前の例では、トレードが開かれた時点ですぐに行われましたが、すべての実行モード/ブローカーがを行うことはできません。 したがって、将来の SL と TP とその配置のないポジションを開く場合を考慮してください。

SL および TP レベルの配置 (変更) は、変更トレードグループ要素によって実行されます。

さらに、インプットパラメータにトレードコメントと、SL と TP 値をポイントとするインプットパラメータの要素を追加します。

設定ストップ

次のトレードの種類を決定するために、最後のポジションの方向を知る必要があります。 ポジションに関する情報にアクセスするには、トレード情報要素を使用します。 これを行うには、最後のトレードのチケットを知る必要があります。 トレードグループ情報要素を使用してを得ることができます。

最後のトレード

最後のトレードのタイプを得て、買いか売りかを調べます。 これを行うには、等号要素を使用します。これより、異なるデータ型の数値を比較することができ、等しい場合は "true " が出力されます。

最終トレードタイプ

変数要素を使用して、次のトレードのタイプを作成します。 この要素は、異なる条件が満たされたときに異なる値を出力し、一種のスイッチとして機能します。

前のトレードが買いだったら、次は売りです。逆も同様です。 最後のトレードのタイプが不明な場合 (ポジションがまだ開かれていない場合)、エントリー設定からのタイプが使用されます。 対応する要素のヘルプを使用して作成します。

次のトレードタイプ

今度は次のトレードのボリュームを計算する必要があります。 これを行うには、最後の閉じたポジションとそのボリュームの結果を知る必要があります。 トレードの利益およびボリュームはトレード情報要素を使用して得られます。 利益はゼロと比較され、利益か損失でトレードが決済したかどうかを判断します。

最後のトレード利益と出来高

これが最初のトレードか、または最後のポジションがプラスで決済したら、初期ロットで新しいサイクルを始めます。

新しいサイクル開始の条件を決定するには、論理子OR要素を使用します。 少なくとも1つの条件が満たされている場合は "true " を返し、すべての条件が満たされない場合は "false " が返されます。 2つの条件を確認する必要があります。 (1) プラスのトレードを閉じるための条件は、利益がゼロ未満であったかどうかをチェックするCompare要素から取得されます (または要素へのこの接続は、逆にする必要があります)。 (2) 最初のトレードであるかどうかを確認するには、 AND要素を使用して、Equal要素から反転値を接続します。 最終的に、前のトレードにおいて、買いも売りもされていない場合、前のポジションがないという状況であることを意味します。

新しいサイクル

前にポジションがあった場合は、次のトレード量を計算する必要があります。 これを行うには、 Arithmetic要素を使用します。 2つの数値でさまざまな数学的操作を実行します。 この場合、インプットパラメータ要素を使用して作成されたロット乗数パラメータによって、前のトレードのロットを乗算します。 ストラテジーについては、デフォルト値を2に設定します。

ロット計算

次のトレードロットサイズの最終計算では、次のトレードタイプの決定と同様に、Variable要素を使用します。 新しいサイクルを開始する場合に、最初のロットを使用する必要がありますが、負けたトレードの後にサイクルを続ければ、前の段階で計算された次のトレードのロットサイズを使用する必要があります。

さらに、初期ロットサイズ (インプットパラメータ) の要素を追加します。 完成したスキームは次のようになります。

次のトレードロット

ストラテジーのすべての要素のパラメータの概要を説明するために、[パラメータ] レイアウトビュー関数を使用することができます。

この場合、スキームは外観を変更し、2つの領域に分割されます。 最初の1つは、スキームに存在するすべてのパラメータをリストし、2番目の部分には各パラメータを含むすべての要素が一覧表示されます。 このレイアウトでは、すべての要素の各パラメータの設定を確認することができます。

すべての要素が、エキスパートが実行しているチャートの現在のシンボルを使用していることを確認してみましょう。 これを行うには、スキームをパラメータレイアウトモードに切り替え、左側のリストで [シンボル名] パラメータを選択します。 次に、右側の領域では、このパラメータは、スキームの3つの要素に存在していることを確認することができますし、現在のシンボルには、現在のチャートのツールを使用することを意味し、すべての1つに設定されます。 必要に応じて、この値は、マーケットウァッチから他の通貨ペアの名前に変更することができます。

[パラメータ] レイアウトビュー

ストラテジーテスターで、完成したEAをチェックしてみましょう。 これを行うには、前の例のように、ソースコードファイルを生成し、メタエディタ プログラムでコンパイルする必要があります。

テスターでのチェック

このストラテジーは危険ですが、与えられたアルゴリズムに従って動作します! ストラテジーをさらに改善し、そのパラメータを最適化し、リスクを軽減する余地は十分にあります。 別のエントリフィルタを追加することができます。スプレッドフィルタを追加し、週末の前の金曜日に新しいサイクルの開始を無効にしたり、最大ロットサイズまたはサイクル内のトレードの最大数を制限したりできます。


例 #3: "総利益のトレードグループを閉じる " ユーティリティ

このビジュアルストラテジービルダーを使用して、1つだけでなく、トレーディングストラテジーを作成することができます。

次に、指定された利益レベルに達したときにトレードのグループを閉じるユーティリティを作成します。

このユーティリティは、次の要件を満たしている必要があります。

  • 任意のポジションを開くことはできません。
  • 指定されたマジックナンバー (インプットパラメータ) を持つアカウントの現在のポジションをトレースする必要があります。
  • トレードが特定のレベルの総利益 (インプットパラメータ) に達すると、すべてのポジションを閉じる必要があります。
  • このツールは、トレードグループを閉じるときにアラートを生成する必要があり、総利益とトレードの全体を閉じるための試行回数を示します。

要件の最後のポイントは、必ずしも最初の意図通りにポジションを閉じることができないという事実によるものです。 この理由は異なる場合があります。 最もよくあるのは、要求価格の期限切れです。(リクオート) 閉じたグループ内のポジションの数が多いほど、そのうちの1つが最初の試行で閉じられない可能性が高くなります。

トレードのグループを閉じるためのトリガは、ポジションが与えられた利益レベルを達成することが条件となります。 したがって、このポジションとパラメータのグループにアクセスする必要があります。

指定されたマジックナンバー (インプットパラメータ要素) を使用してトレードグループ (トレードグループ要素) を作成し、その中のトレード数を調べ、取得した値をゼロと比較して、監視するポジションが少なくとも1つあるかどうかを判断します。

トレードグループ

このトレードグループ (トレードグループ情報要素) の現在の総利益を取得し、この値を特定の利益レベルと比較します (インプットパラメータ要素)。

トレードグループの利益

さて、グループ全体をすぐに閉じるためのトリガーとして Compare 要素を使用できますが、少し異なる方法で実行します。 実際には、EAごとにティックで実行されます。つまり、全ティックです。 そして実質のトレードで次の状態は可能です。 すべてのトレードを決済するための条件が満たされ、ユーティリティが決済しますが、ある理由から、トレードの一部は、このティックの間に決済することができ、いくつかは残っていました。 次のティックでは、ツールは再び条件の履行をチェックしますが、ポジションの一部は、以前のティックで決済され、もはや考慮されたグループの一部ではないため、もう満たされない場合があります。

この解決策は、変数要素でグループ全体を閉じるための条件を満たすという事実を "覚えておく" ことです。 このEA は、すべてが正常に閉じられるまで、この変数が値 "true " を保持している場合、次のティックですべてのトレードを決済します。 すべてのトレードが決済したら、決済する条件をリセットし (値を "false " に設定)、新しいトリガが決済するまで待ちます。

ポジションクローズは、クローズトレードグループ要素を使用して実装されます。

トレードグループの決済


ユーティリティのトレーディングロジックは準備ができており、すでに完全に機能します。 トレードグループを閉じるための試みを数えるための関数を追加します。

これを行うには、Variable要素を再度使用しますが、今回はカウンタとして機能します。 グループ内に未処理のトレードがない場合は、値を0にリセットし、ポジションのグループを閉じるときに毎回 1 (算術要素を使用) で値を増やします。

この2つの要素に加えて、カウンターに整数型の変数を使用し、算術要素が decimal 型の値を返すため、decimal 数値を整数 (変換) に変換する要素も必要です。 decimal 型の変数を使用した場合、この変換は回避されている可能性があります。

図に要素を追加し、次に示すように構成します。

試行カウンタ

あと残っているのは、メッセージテキストを形成し、ポジションが決済した時点でアラートを作成することです。 メッセージテキストは、メッセージ部分を1つの文字列に結合するCombine String(結合文字列)要素を使用して形成できます。

MetaTrader5 標準アラート関数はAlert(アラート)要素を使用して実装されます。

アラート

この例では、もう1つの関数を確認してみましょう。 各スキームには、スキームの実行の結果として実行する必要があり、他のアクションをトリガしない複数の終了 -アクションが含まれている場合があります。 このスキームでは、アラートされ、トレードグループを閉じます。

アクションを特定のオーダーで実行する場合 (トレード決済前にアラートを作成する場合など) は、[ Arrange Ends(両端整列)] オプションを使用する必要があります。 次に、インプットパラメータを配置する場合と同様に、実行シーケンスを指定して要素を上下に移動できるダイアログボックスが表示されます。

配置の決済


実用性の準備ができました。 このEAはオーダーを一切開かず、ただのトレーディングアシスタントであるため、ストラテジーテスターでテストする必要はありません。

このスキームは、ソースコードを生成せずにEAファイルを作成しても、すぐにライブで実行することができます (ただし、実行可能であり、ターミナル内の別のチャートで準備ができています)。 スキームのライブ操作を開始するには、[Start/Stop] ボタンを押します。 クリックすると、EA ファイルが別のチャートで起動された場合と同じメソッドで、スキームの実行が開始されます。 このオプションは、複数のシンプルなユーティリティを同時に実行するために使用でき、ソースコードを生成したり、別々のチャートで実行したりする必要はありません。

ライブスキームの実行


結論

この記事では、ビジュアルストラテジービルダーミッションの概要を詳解しています。 例を使用して、誰もがプログラミングせずにトレーディングロボットを作成する方法を示しています。

マーケットでは、アプリケーションのダウンロードから利用まで無料で簡単です。 人気のストラテジーに基づいた5つの既製のEAがあります。

MetaTrader4Mission Automate Demo MT4

MetaTrader5Mission Automate Demo MT5

このプロジェクトはさらなる発展と大きな計画があるので、プログラムを改善するためのコメントや提案をお願いします。

誰もがアルゴトレードできるようにしましょう!

MetaQuotes Ltdによってロシア語から翻訳されました。
元の記事: https://www.mql5.com/ru/articles/4951

トレードロボットをオーダーするための要件定義を作成する方法 トレードロボットをオーダーするための要件定義を作成する方法
自分自身のトレーディングストラテジーを使用してトレードしていますか。 システムトレードのルールをアルゴリズムとして正式に記述できる場合は、自動化されたEAにトレードを委託することをお勧めします。 ロボットは、人間の弱点であるところの睡眠や食品を必要としません。 この記事では、フリーランスのサービスでトレードロボットを発注する際の要件定義の作成方法を示します。
グラフィカルインターフェイスを備えたエキスパートアドバイザ : 機能の設定(第2部) グラフィカルインターフェイスを備えたエキスパートアドバイザ : 機能の設定(第2部)
これは手動取引のためのマルチシンボルシグナルエキスパートアドバイザーの作成に関する記事の第2部です。私たちはすでにグラフィカルインターフェースを作成しました。この記事では、インターフェースとプログラムの機能を融合させる方法について説明します。
強化学習におけるランダム決定フォレスト 強化学習におけるランダム決定フォレスト
バギングを使用するランダムフォレスト(RF)は最も強力な機械学習方法の1つですが、グラジエントブースティングには若干劣ります。本稿では、市場との相互作用から得られた経験に基づいて意思決定を行う自己学習型取引システムの開発を試みます。
モンテカルロ法を適用したトレーディング戦略の最適化 モンテカルロ法を適用したトレーディング戦略の最適化
トレード口座でロボットを起動する前に、通常はテストを行い、ヒストリー上で最適化します。 しかし、ここで合理的な質問が発生します: 過去の結果は、未来で役に立つだろうか。 この記事では、モンテカルロ法を適用してトレード戦略の最適化のカスタム基準を構築するメソッドについて説明します。 さらに、EA の安定性基準を考慮します。