プログラミングチュートリアル - ページ 5

 

レンジ ブレークアウト EA mql5 プログラミング |パート 4/4


レンジ ブレークアウト EA mql5 プログラミング |パート 4/4

Toby は、今日、MetaTrader 5 のブレイクアウト エキスパート アドバイザー (EA) を終了することを発表できることに興奮しています。このビデオは、ブレイクアウト EA に関する包括的なシリーズの最終部分となります。以前のビデオを視聴する機会がなかった場合は、説明にリンクを記載しますので、ご覧いただけます。

前のセグメントでは、レンジ計算、売買ブレイクアウトチェック、ポジション決済ロジックなどの重要な側面について説明しました。さて、この締めくくりのビデオでは、EA にさらにいくつかの機能を追加します。具体的には、範囲の割合に基づいてストップロスとテイクプロフィットの機能を組み込みます。さらに、曜日フィルターを導入し、ブレイクアウト モードを実装します。これにより、ユーザーは範囲ごとに 1 つまたは 2 つのブレイクアウトを切り替えることができます。

コーディングプロセスに早速入ってみましょう。これまでのところ、これが私たちが開発したコードです。最初のタスクは、ストップロスとテイクプロフィットのパーセンテージを入力することです。これらはパーセンテージで表されるため、整数として定義します。デフォルトのストップロス入力を 150 に設定し、テイクプロフィット入力を 200 に設定しましょう。これらの変更を反映するためにコメントも更新します。ユーザーが有効な入力を行ったことを確認するには、入力チェックを実行する必要があります。 on init 関数に追加の if ステートメントを追加して、ストップロスとテイクプロフィットの入力を検証します。ストップロス入力がゼロ未満または 1000 を超える場合、エラー メッセージが表示されます。同じ検証プロセスが利益確定入力にも適用されます。これらのチェックは、EA を誤った入力から保護するのに役立ちます。

次に、各ポジションのストップロスとテイクプロフィットの値を計算してみましょう。買いポジションの場合、ストップロスは現在の価格を下回る範囲のパーセンテージとして計算されます。入札価格を使用し、入力ストップロス値を 100 で割った値を乗算します。価格を正規化するために、NormalizeDouble 関数を適用します。同様に、売りポジションの場合、ストップロスは現在の価格を上回る範囲のパーセンテージとして計算されます。アスク価格を使用し、計算されたストップロス値をそれに追加します。これにより、ストップロスの適切なレベルが決定されます。

テイクプロフィットの計算についても、同じロジックに従います。買いポジションの場合、テイクプロフィットは現在価格を上回る範囲となり、売りポジションの場合、現在の価格を下回る範囲となります。ストップロスとテイクプロフィットの値が計算されたら、それらをオープンポジションのコールに組み込みます。静的な値ゼロを使用する代わりに、計算されたストップロス値とテイクプロフィット値に置き換えます。この調整により、EA が各ポジションのストップロスとテイクプロフィットのレベルを正確に設定できるようになります。

柔軟性を提供するために、ストップロスおよびテイクプロフィット機能を無効にする機能を導入します。ユーザーがいずれかの入力にゼロを入力すると、その機能をオフにしたいことを示します。 if ステートメントを追加してこれらの条件を確認し、それに応じて計算を調整します。次に、オプションの終了時間機能について説明します。クローズ時間入力として -1 を入力すると、EA はストップロスとテイクプロフィットのレベルに基づいてポジションのみをクローズします。この変更により、ユーザーはポジション決済の特定の時間を含めるか、ストップロスとテイクプロフィットのパラメーターのみに依存するかを選択できるようになります。

これを実装するために、オンティック関数の終了時間チェックを更新します。決済時間がゼロ未満の場合は、オフになっていることを示し、時間に基づくポジション決済チェックをスキップし、ストップロスとテイクプロフィットの条件のみに依存します。さらに、オブジェクト描画機能における範囲の可視化を調整します。終了時間が設定されていない場合、レンジラインは現在のローソク足まで伸び、ストップロスまたはテイクプロフィットのレベルに達するまでブレイクアウトモードがアクティブであることを示します。一方、終値時間が設定されている場合、レンジラインはその特定のローソク足までのみ延長され、指定された時間までブレイクアウトモードがアクティブであることを示します。

EA の汎用性を高めるために、曜日フィルターを導入します。このフィルターを使用すると、ユーザーは EA をアクティブにする日を指定できます。曜日フィルターの入力パラメーターを追加します。ユーザーは事前定義されたリストから複数の日を選択できます。デフォルトでは、すべての曜日が選択されます。曜日フィルターを実装するには、オンティック関数を変更します。ユーザーが選択したフィルターに現在の日が含まれているかどうかを確認する if ステートメントを導入します。その日が含まれていない場合、EA はポジションオープンロジックをスキップし、次のティックに進みます。

最後に、範囲ごとに 1 つまたは 2 つのブレークアウトを切り替えるオプションを実装します。現在、EA はレンジブレイクアウトごとに 1 つのポジションをオープンします。ただし、一部のトレーダーは、より強力なブレイクアウトのために 2 つのポジションをオープンできる柔軟性を好む場合があります。これに対応するために、ユーザーが範囲ごとに 1 つまたは 2 つのブレークアウトを選択できる入力パラメーターを導入します。

この機能を実装するには、ポジションオープンロジックを調整します。ユーザーがレンジごとに 2 つのブレイクアウトを選択した場合、EA は最初のブレイクアウトの反対方向に追加のポジションをオープンします。このようにして、強気のブレイクアウトと弱気のブレイクアウトの両方を同じ範囲内で捉えることができます。これらすべての新機能が実装されたことで、当社のブレイクアウト エキスパート アドバイザーはトレーダーに強化された機能と柔軟性を提供します。範囲の割合に基づくストップロスおよびテイクプロフィット機能は、リスク管理と利益の獲得に役立ちます。曜日フィルターを使用すると、ユーザーはアクティブな取引日を指定でき、ブレイクアウト モードは、取引戦略に応じて範囲ごとに 1 つまたは 2 つのブレイクアウトに調整できます。

ブレイクアウト エキスパート アドバイザーに関するこの包括的なシリーズが有益で有益であると感じていただければ幸いです。ご質問がある場合、またはさらにサポートが必要な場合は、お気軽にお問い合わせください。楽しい取引を!

Range Breakout EA mql5 Programming | Part 4/4
Range Breakout EA mql5 Programming | Part 4/4
  • 2022.10.14
  • www.youtube.com
I will show you how to code a Time Range Breakout EA for Metatrader 5. If you are new to mql5, just follow my steps and we will create a time range breakout...
 

ボリンジャーバンドEA MT5プログラミング



ボリンジャーバンドEA MT5プログラミング

このビデオでは、Toby が Twitter でボウリング イベント用のカスタム エキスパート アドバイザーを作成するための段階的なプロセスを紹介します。彼は戦略の説明から始めます。ローソク足がボリンジャーバンドの上部より上で開いたときに売り、ストップロスとテイクプロフィットのレベルを設定し、ボリンジャーバンドの中央線を超えたら取引を終了します。同じロジックが購入にも当てはまります。

次に、Toby は MetaEditor に切り替え、テンプレートを使用して新しいエキスパート アドバイザを作成します。彼はテンプレートをクリーンアップし、マジックナンバー、ロットサイズ、期間、偏差、ストップロス、テイクプロフィットなどの EA の入力パラメータを追加します。これらのパラメータのデフォルト値を設定し、コードをコンパイルします。

次に、Toby は、ボリンジャーバンドインジケーターのハンドルや、上部、平均、下部バンドのバッファーなど、EA のグローバル変数を定義します。また、現在のティックとトレードの変数も作成します。

OnInit 関数に進むと、Toby はユーザー入力が有効かどうかをチェックします。いずれかの入力が無効な場合は、エラー メッセージを表示して戻ります。彼は取引オブジェクトのマジックナンバーを設定し、ボリンジャーバンドインジケーターのインジケーターハンドルを作成します。ハンドルの作成に失敗した場合は、エラー メッセージを表示して戻ります。次に、バッファをシリーズとして設定し、コードをコンパイルします。

OnTick 関数では、Toby はカスタム関数を使用して現在のティックがバーオープンティックであるかどうかを確認します。バーが開いていない場合は、彼は戻ります。それがバーオープンティックの場合、SymbolInfoTick 関数を使用して現在のティックを取得し、それを currentTick 変数に保存します。次に、CopyBuffer 関数を使用して最新のインジケーター値を取得し、それぞれのバッファーに保存します。コピーされた値の数が 3 に等しくない場合はエラーを示し、エラー メッセージを表示して戻ります。

この時点で、Toby は Expert Advisor をコーディングする最初のステップを完了しました。彼はコードをコンパイルし、MetaTrader で視覚的なバックテストを使用してインジケーターの値を検証し、コードが正しく機能していることを確認します。

次に、ボリンジャー バンド戦略に基づいてトレード シグナルを生成するロジックを実装する必要があります。まず、ローソク足が上部バンドの上で開いているかどうかを確認し、売りシグナルを示しているかどうかを確認します。この条件が満たされた場合、ストップロスとテイクプロフィットレベルで売り取引を実行します。同様に、ローソク足が買いシグナルの下限バンドの下で始まるかどうかを確認し、同じ終了条件で買い取引を実行します。

コードの説明は次のとおりです。

  • まず、isNewBar() 関数を使用して、現在のティックがバーオープンティックであるかどうかを確認します。 false を返した場合、現在のティックの取引シグナル生成をスキップします。

  • 次に、最新のインジケーター値、upperBand、baseLine、および lowerBand をそれぞれのバッファーから取得します。

  • 次に、前のローソク足の始値がアッパーバンドを上回っているかどうかを確認します (open[1] > upperBand)。この条件が true の場合、取引オブジェクトの Sell() メソッドを使用して売り取引を開始することにより、売りシグナルを生成します。それぞれの方法を使用してロットサイズ、ストップロス、テイクプロフィットレベルを設定します。

  • 同様に、前のローソク足の始値が下限バンドを下回っているかどうかを確認します (open[1] < lowerBand)。 true の場合、取引オブジェクトの Buy() メソッドを使用して買い取引を開始することにより、買いシグナルを生成します。繰り返しますが、ロットサイズ、ストップロス、テイクプロフィットレベルを設定します。

  • 最後に、オープン取引がある場合は、現在のローソク足の終値が中央線 (ベースライン) を超えているかどうかを確認します。この条件が true の場合、取引オブジェクトの Close() メソッドを使用して取引を終了します。

コードをコンパイルし、MetaTrader でテストして、期待どおりに動作することを確認してください。

指定されたコードでは、いくつかのタスクが実行されます。各ステップの詳細な説明は次のとおりです。

  1. 変数を初期化します。

    • 買いポジションと売りポジションの数をゼロに設定します。
    • 現在のセルをゼロに設定します。
  2. オープンポジションの数:

    • 現在オープンしているすべてのポジションをループします。
    • 各ポジションのチケットを取得し、操作が成功したかどうかを確認します。
    • 成功すると、ポジションのマジックナンバーを取得します。
    • マジック ナンバーが入力されたマジック ナンバーと一致する場合、買いポジションまたは売りポジションのそれぞれのカウンターをインクリメントします。
  3. 新しいポジションをオープンできるかどうかを確認します。

    • オープンな買いポジションがないかどうかを確認します。
    • 現在の価格がボリンジャーバンドの下限バッファ以下であるかどうかを確認します。
    • 買いポジションのオープンタイムが現在のバーのオープンタイムと異なるかどうかを確認します。
  4. ストップロスとテイクプロフィットを計算します。

    • 現在の価格から入力ストップロス (ポイント単位) を引いてストップロスを計算します。
    • 入力されたテイクプロフィット(ポイント単位)を現在の価格に加算して、テイクプロフィットを計算します。
    • 入力テイクプロフィットがゼロの場合、テイクプロフィット変数をゼロに設定します。
  5. ストップロスとテイクプロフィットを正規化します。

    • ティックサイズに基づいてストップロスとテイクプロフィットを正規化する関数を定義します。
    • 現在のシンボルのティック サイズを取得します。
    • ストップロスとテイクプロフィットの値をティックサイズで割って正規化します。
  6. 新しい買いポジションをオープンします。

    • Trade オブジェクトを使用して、正規化されたストップロスやテイクプロフィットなど、指定されたパラメーターで買いポジションをオープンします。
  7. アッパーバンドのクロスを確認して売りポジションをオープンします。

    • オープンな売りポジションがないかどうかを確認します。
    • 現在の価格がボリンジャーバンドの上限バッファー以上かどうかを確認します。
    • 売りポジションの開始時間が現在のバーの開始時間と異なるかどうかを確認します。
    • 現在の入札価格を使用して、売りポジションのストップロスとテイクプロフィットを計算します。
    • ストップロスとテイクプロフィットの値を正規化します。
    • 正規化されたストップロスやテイクプロフィットなど、指定されたパラメーターを使用して売りポジションをオープンします。
  8. ボリンジャーバンドの中央線を超えた場合はポジションを閉じます。

    • オープンな買いポジションと売りポジションを数えます。
    • 買いポジションの数がゼロより大きく、現在の入札価格が上限バッファーを上回っている場合は、すべての買いポジションをクローズします。
    • 売りポジションの数がゼロより大きく、現在の売り価格が下限バッファ以下の場合は、すべての売りポジションをクローズします。
  9. ポジションを決済する関数を定義します。

    • オープンポジションをカウントするための既存のコードをコピーし、入力パラメーター (すべてのポジションの場合は 0、買いポジションの場合は 1、売りポジションの場合は 2) に基づいてポジションを決済するようにコードを変更します。

このコードは、さまざまなチェックと計算を実行して、特定の条件に基づいてオープン ポジション、新しいポジションのオープン、クローズ ポジションをカウントおよび管理します。

Bollinger bands EA MT5 Programming
Bollinger bands EA MT5 Programming
  • 2022.11.28
  • www.youtube.com
Today I will show you how to code a simple Bollinger bands EA for Metatrader 5. If you are new to mql5, just follow my steps and we will create a fully work...
 

MQL5 でグラフィカル パネルを作成する方法 |パート 1/2


MQL5 でグラフィカル パネルを作成する方法 |パート 1/2

Toby は、MQL5 で簡単なグラフィカル パネルを作成して情報を表示し、チャートの背景色を変更するボタンを追加する方法を示します。彼は、このパネルはどのエキスパートアドバイザーに対しても作成できると述べていますが、例としてタイムレンジブレイクアウトEAを使用します。 Toby は、このビデオのトピックはユーザーがコメントでリクエストしたものであると述べ、視聴者に今後のビデオのトピックを提案するよう勧めています。

Toby はメタ エディターを開き、タイム レンジ ブレイクアウト EA のファイルを読み込みます。彼はそれを「時間範囲 EA パネル」と呼ばれる新しいエキスパートアドバイザーとして保存し、コンパイルします。彼は、パネルをインクルード ファイル内の別のクラスとして作成し、どのエキスパート アドバイザでも簡単に使用できるようにすると説明しました。 Toby は、「グラフィカル パネル」という名前の新しいインクルード ファイルを作成し、パネル サイズ、フォント サイズ、およびフォント色の入力を定義します。

彼は、controls フォルダーから「dialog.mqh」ファイルをインクルードします。これにより、そのクラスの関数を使用できるようになります。 Toby は、「CAppDialog」クラスを継承する「CGraphicalPanel」というクラスを定義します。彼は、クラスのメソッド用のプライベート セクション、コンストラクター、デストラクター、初期化関数、およびチャート イベント ハンドラー用のパブリック セクションを追加しました。また、クラス メソッドのコメント セクションも追加しました。

次に、Toby はクラス定義の後にクラス メソッドの本体を記述します。彼は、メソッドがクラスに属することを指定し、コンストラクター、デストラクター、初期化関数、およびチャート イベント ハンドラーを作成します。彼は、各メソッドの目的を説明するコメントを追加します。 Toby はコードをコンパイルして、エラーや警告がないかチェックします。

Toby は、CFDialog クラスを使用してダイアログ パネルを作成するパネル作成関数を実装します。入力パラメータに基づいて、パネルの名前、サブウィンドウ、位置、サイズを設定します。パネルの作成が失敗した場合は、メッセージを出力して false を返します。また、グラフを更新するためのグラフ更新機能も追加しました。 Toby はコードを再度コンパイルして、エラーがないことを確認します。

Expert Advisor ファイルに、Toby はグラフィカル パネル インクルード ファイルをインクルードし、グローバル変数セクションに「panel」と呼ばれるパネル クラスのオブジェクトを作成します。 onInit 関数でパネルを初期化し、チャート イベントをパネルに渡すチャート イベント ハンドラーを追加します。 Toby は、チャート イベント ハンドラーの本体を作成し、適切なパラメーターを指定してパネルのチャート イベント関数を呼び出します。

最後に、Toby は、パネルを破棄して理由を指定する破棄パネル関数を onDeinit 関数に追加します。コードを再度コンパイルし、MetaTrader でテストします。 Toby は、エキスパート アドバイザをチャート上にドラッグ アンド ドロップして、パネルの機能を示しています。また、パネルのボタンを使用してエキスパートアドバイザーを閉じます。

こんにちは、私は Toby です。今日は MQL5 でグラフィカル パネルを作成する方法を説明します。これは実際にはチュートリアルの 2 番目の部分です。最初の部分では、左側に簡単なパネルを作成しました。見逃した場合は、説明内のリンクを見つけることができます。今日のビデオでは、パネルにいくつかのラベルとボタンを追加します。この例では、タイム レンジ ブレイクアウト EA を使用します。このエキスパート アドバイザのコーディング方法を学ぶことに興味がある場合は、私のチャンネルにコーディング シリーズがあります。最初の部分へのリンクも説明にあります。

まず、MQL5 エディターに切り替えてコーディングを始めましょう。ここにはグラフィカル パネル インクルード ファイルがあり、パネルを表示するために変更したタイム レンジ ブレイクアウト EA もあります。インクルード ファイルに移動して、ユーザーからの入力値を確認してみましょう。クラスのプライベート メソッド セクションに「check inputs」というメソッドを作成します。 OnInit 関数の後に、このメソッドを呼び出します。メソッドが false を返した場合、OnInit 関数からも false を返します。このように、入力が無効な場合は、それ以上先に進みません。コンパイルして次に進みましょう。

それでは、パネルにラベルを追加してみましょう。ラベルとボタンに必要なクラス ファイルを含める必要があります。インクルードセクションに移動し、ラベルには「controls/label.mqh」を、ボタンには「controls/button.mqh」をインクルードします。その後、ラベル変数を定義します。入力、マジックナンバー、ロット、開始時間、期間、終了時間のラベルがあります。コンパイルして次に進みましょう。

createPanel 関数で、パネルにラベルを追加します。変数「M_L_Input」を使用して入力ラベルを作成します。ラベルのテキスト、色、フォント サイズを設定します。次に、ラベルをパネルに貼り付けます。他のラベルに対してもこのプロセスを繰り返します。すべてのラベルを追加したら、左側のパネルをコンパイルして確認します。より適切に配置するには、ラベルの位置を調整する必要がある場合があります。コンパイルして確認してみましょう。

次に、パネルにボタンを追加しましょう。 「CButton」タイプの変数「M_B_ChangeColor」を定義します。ボタンの位置、テキスト、テキストの色、背景色、フォント サイズを設定します。最後に、パネルにボタンを追加します。コンパイル後、パネルにボタンが表示されます。この段階では、ボタンには機能がありませんが、後で追加します。

次に、パネルの背景色とフォント名を変更してみましょう。これを行うには、「Defiance.mqh」ファイルをインクルードし、デフォルト設定の新しい値を定義します。デフォルトのフォント名と背景色の設定の定義を解除し、それらに新しい値を定義します。フォント名「Consolas」と濃い灰色の背景色を使用します。コンパイル後、新しい背景色とフォントを使用して更新されたパネルが表示されます。

最後に、エキスパートアドバイザーからの実際の値をパネルに表示してみましょう。 Expert Advisor ファイルをインクルード ファイルに含めて、入力変数にアクセスします。エキスパートアドバイザーからの実際の値でラベルを更新します。コンパイル後、入力値がパネルに表示されます。

MQL5 でのグラフィカル パネルの作成に関する今日のチュートリアルはこれで終わりです。次のパートでは、ボタンに機能を追加してパネルを完成させます。今後の続報をお楽しみに!

How to create a graphical panel in mql5 | Part 1/2
How to create a graphical panel in mql5 | Part 1/2
  • 2022.12.04
  • www.youtube.com
Today I will show you how to code a simple graphical panel for Metatrader 5. If you are new to mql5, just follow my steps and we will create a fully working...
 

MQL5 でグラフィカル パネルを作成する方法 |パート 2/2


MQL5 でグラフィカル パネルを作成する方法 |パート 2/2

こんにちは、トビーです。今日は、MQL5 でグラフィカル パネルを作成する方法を説明します。これはチュートリアル シリーズの 2 番目のパートです。最初の部分では、左側に簡単なパネルを作成しました。見逃した方はここにリンクしておきます。今日のビデオでは、パネルにラベルとボタンを追加します。この例では、タイム レンジ ブレイクアウト EA を使用します。このエキスパート アドバイザのコーディング方法を学びたい場合は、私のチャンネルにコーディング シリーズがあります。前半部分もここにリンクしておきます。

メディア エディターに切り替えてコーディングを始めましょう。グラフィカル パネル インクルード ファイルと、パネルを表示する変更された時間範囲ブレイクアウト EA ファイルがあります。インクルード ファイル内に、ユーザーの入力値を検証する「checkInputs」というメソッドを作成します。 OnInit 関数でパネルを作成する前に、このメソッドを呼び出します。入力のいずれかが無効な場合は、エラー メッセージが表示され、false が返されます。それ以外の場合は、パネルの作成に進みます。

次に、パネルにラベルとボタンを追加します。ラベルとボタンを使用するには、それらのクラス ファイルをインクルードする必要があります。クラス内のラベルとボタンに必要な include ステートメントを追加します。次に、ラベルとボタンのプライベート変数を定義します。

CreatePanel 関数では、パネルを作成した後、パネルにラベルとボタンを追加します。位置、テキスト、色、フォントサイズを設定します。最後に、Add メソッドを使用してそれらをパネルに追加します。

コードをコンパイルしてパネルを確認します。ラベルとボタンがパネルに表示される必要があります。見栄えを良くするために、パネルの背景色とフォント名も変更します。エキスパートアドバイザーからの実際の値をパネルに表示するには、エキスパートアドバイザーファイルを include セクションに含めます。次に、CreatePanel 関数で、エキスパートアドバイザーから入力値を取得し、ラベルに表示します。コードをコンパイルし、パネルを再度確認します。ラベルにはエキスパートアドバイザーからの実際の入力値が表示されるはずです。すべての入力値に対してこのプロセスを繰り返します。

これらの手順を完了すると、ラベルとボタンを備えたグラフィカル パネルが完成します。ここで、パネル上の残りのラベルの値の追加に進むことができます。これは、マジックナンバーラベルの場合と同じ方法で行います。インクルード ファイルに戻り、ラベルを作成するセクションを探します。ここでは、ロット、開始時刻、期間、終了時刻の値を表示するコードを追加します。

ロット ラベルの場合、テキスト「マジック ナンバー」を「ロット」に置き換え、y 座標を 70 に更新します。開始時間ラベルの場合、名前を「開始時間」に変更し、y 座標を更新します。期間ラベルの場合、名前を「duration」に変更し、y 座標を 110 に更新します。最後に、終了時間ラベルの場合、名前を「close time」に変更し、 y 座標を 130 にします。

これらの変更を加えた後、コードをコンパイルできます。

ここで、エキスパート アドバイザを見てコンパイルすると、ロットの実際の値、開始時刻、期間、および終了時刻をパネル上で確認できるはずです。次に、ボタンの機能を実装しましょう。現時点では、ボタンをクリックしても何もアクションは実行されません。それを変えてみましょう。インクルード ファイル内で、ボタンを作成するセクションを見つけます。ここで、ボタンをクリックするためのイベント ハンドラーを追加できます。この目的のために、OnChartEvent 関数を使用します。イベント ハンドラー内で、ボタンがクリックされたときに実行するアクションを指定できます。

とりあえず、ボタンをクリックしたときにメッセージを表示してみます。 Print 関数を使用して、端末にメッセージを出力できます。イベント ハンドラーを追加した後、コードをコンパイルできます。

ここで、エキスパート アドバイザを実行してボタンをクリックすると、ターミナルにメッセージが表示されるはずです。

それでおしまい! MQL5 でラベルとボタンを備えたグラフィカル パネルを作成することに成功しました。ラベルにはエキスパートアドバイザーからの入力値が表示され、ボタンにはクリックイベントハンドラーがあります。

要件に応じて自由にボタンに機能を追加したり、パネルをカスタマイズしたりできます。変更が有効になることを確認するには、必ずインクルード ファイルとエキスパート アドバイザ ファイルの両方をコンパイルしてください。

How to create a graphical panel in mql5 | Part 2/2
How to create a graphical panel in mql5 | Part 2/2
  • 2022.12.12
  • www.youtube.com
Today I will show you how to code a simple graphical panel for Metatrader 5. If you are new to mql5, just follow my steps and we will create a fully working...
 

MQL5 での動的な位置サイジング | MT5プログラミング



MQL5 での動的な位置サイジング | MT5プログラミング

こんにちは、トビーです。今日は、ここで示したような結果を達成できるように、MQL5 で動的ロット サイズを計算する方法を説明します。自分で試してみることができます。

さて、始めましょう。このビデオでは、現在固定ロット サイズを使用している戦略に動的なロット サイズ計算を追加します。これにより、取引ごとに特定の金額(100 ドルまたは口座残高の割合など)のリスクを負うことができます。さらに、動的ロットサイズ計算により戦略をさらに改善できるかどうかを判断するバックテストを実行します。攻略方法や設定方法も解説します。

まず、MetaEditor に切り替えてコーディングを始めましょう。ここでは MetaEditor を使用しています。このデモンストレーションでは、「Time Range EA」を使用して動的なロットサイズ計算を組み込みます。ただし、選択した他のエキスパート アドバイザを使用することもできます。私たちは以前、この EA をチャンネルのシリーズでコーディングしました。同じエキスパートアドバイザーを使用したい場合は、最初の部分へのリンクを提供します。

まず、「Time Range EA」ファイルを開いてみましょう。それでは、新しい名前で保存してみましょう。 「名前を付けて保存」をクリックし、「Time Range EA Dynamic Lots」という名前を付けます。無事、ファイルが保存されました。

このエキスパート アドバイザでは、動的なロット サイズの計算を追加します。ファイルをコンパイルし、ストラテジー テスターで入力を調べてみましょう。 MetaTrader 5 プラットフォームでストラテジー テスターを開き、必要に応じてエキスパート アドバイザを更新します。次に、「時間範囲 EA 動的ロット」を選択します。 [入力] タブには、現在固定値を受け入れる「ロット サイズ」入力があることがわかります。これを変更して、取引ごとに 100 ドルのリスクを負う値、または口座残高の割合を入力できるようにする必要があります。

MetaEditor に戻り、「入力」セクションに動的なロットサイズの入力を追加します。 「Magic Number」の後にスペースを作成し、「Lot Mode Enum」という列挙(enum)を定義します。この列挙型には、「Fixed」、「Money」、「Percent of Account」の 3 つのオプションがあります。これにより、希望のロット モードを簡単に選択できるようになります。読みやすさを向上させるために、各オプションにコメントを追加します。

次に、この列挙型を入力として使用します。たとえば、タイプを「Lot Mode Enum」として「input」を定義し、「Input Lot Mode」という名前を付けます。デフォルト値を「ロットモード固定」に設定し、この入力の目的を説明するコメントを追加します。

コードをコンパイルし、ストラテジー テスターでどのように表示されるかを確認します。 [ロット モード] ドロップダウン メニューが表示され、[固定]、[金額に基づくロット]、および [アカウントのパーセントに基づくロット] から選択できます。

次に、選択したロット モードに応じて異なる値に対応できるように「ロット サイズ」入力を変更しましょう。入力タイプを「double」に変更し、オプション「Lot/Money/Percent」を反映するようにコメントを変更します。コードを再度コンパイルし、ストラテジー テスターをチェックして、変更が反映されていることを確認します。

ユーザーの入力を検証するために、「CheckInput」関数を変更します。各ロット モード オプションにチェックを追加して、入力が許容範囲内にあることを確認します。 「固定」ロット モードの場合、ロット サイズはゼロより大きく、特定の制限 (たとえば、10 ロット) を超えてはなりません。これらの条件が満たされない場合は、適切なエラー メッセージを表示します。 「Money」および「Percent of Account」ロットモードに対してこのプロセスを繰り返し、それに応じて制限を調整します。さらに、これら 2 つのロット モードのいずれかが選択されている場合は、ストップロスがアクティブかどうかを確認する必要があります。

MQL5 での動的なロット サイズ計算の実装に必要な手順の簡潔な要約:

  1. 取引戦略に許容される最小および最大のロットサイズを決定します。
  2. 希望するロット ステップ サイズを定義します。これは、ロットを変更できる増分を表します。
  3. 取引のストップロス距離を計算します。
  4. ストップロス距離を使用して、初期ロットサイズを計算します。
  5. 計算されたロットサイズが最小許容値を下回っているかどうかを確認し、必要に応じて調整します。
  6. 計算されたロットサイズが最大許容値を超えているかどうかを確認し、必要に応じて調整します。
  7. 計算されたロット サイズが有効なステップ サイズであるかどうかを確認し、必要に応じて最も近い有効なステップ サイズに調整します。
  8. 最終的に計算されたロットサイズを返します。
  9. 計算されたロットサイズを使用して取引を開始します。

これらの手順に従うことで、取引ごとに希望するリスクと取引戦略の制約に基づいてロットサイズが動的に計算されるようになります。

Dynamic position sizing in mql5 | MT5 programming
Dynamic position sizing in mql5 | MT5 programming
  • 2022.12.18
  • www.youtube.com
Today I will show you how to code dynamic position sizing for Metatrader 5 in mql5. We create two functions to calculate a dynamic position size for any Expe...
 

MQL5のトレーリングストップロス | MT5プログラミング



MQL5のトレーリングストップロス | MT5プログラミング

今日は、MQL5 のエキスパートアドバイザーにトレーニングストップロスを追加する方法を段階的に説明します。このビデオの最後までに、取引ストップロスで戦略を強化できるかどうかを評価するバックテストも実行します。それでは始めましょう。

コーディングを始める前に、取引ストップロスの基本概念を理解しましょう。特定の価格でポジションをエントリーすると想像してください。最初に、ストップロスは特定のレベルに設定されます。価格が有利に動くと、常に同じ距離を維持しながら、価格の後ろにストップロスを追跡します。価格が反転しても、ストップロスはそのまま残ります。価格が私たちの方向に動き続けるにつれて、私たちはストップロスを引き離し続けます。最終的には価格が逆転し、ポジションがストップアウトされる可能性があります。主なアイデアは、重要な市場トレンドから利益を得て、トレンドが終了したときにポジションを手放すことです。

次に、MetaEditor に切り替えてコーディングを開始しましょう。この目的には任意のエキスパート アドバイザを使用できますが、このビデオでは、前のビデオでコーディングした動的なロット サイズの「タイムライン GA」を使用します。ファイルを開き、「ストップロス」という名前の新しいエキスパートアドバイザーとして保存します。コードをコンパイルして、すべてにエラーがないことを確認します。

エキスパートアドバイザーに取引ストップロスを追加するには、いくつかの手順に従う必要があります。まず、トレーリングストップロスの追加入力を追加しましょう。入力セクション内に、「EnableTrailingStopLoss」というブール入力変数を追加し、そのデフォルト値を「false」に設定します。この入力により、取引ストップロスを有効または無効にすることができます。コードをコンパイルして変更を組み込みます。

ここで、MetaTrader プラットフォームに戻り、Strategy Tester を開きます。当社のエキスパートアドバイザー「トレーリングストップロスのある動的ロット」を選択します。入力タブには、新しく追加された入力「EnableTrailingStopLoss」があります。取引ストップロスを有効にするには、これを「false」から「true」に切り替えます。

次に、ストップロスを更新する関数を作成しましょう。この関数を「ClosePosition」関数の前に配置します。関数内では、まず、取引ストップロスが有効になっているかどうか、またポジションに既存のストップロスがあるかどうかを確認します。そうでない場合は、続行する必要がないため、関数から戻ります。

次に、すべてのオープンポジションをループしてみましょう。各ポジションについて、それが専門アドバイザーに属しているかどうかを確認します。ポジションのタイプ (買いまたは売り)、現在のストップロス、テイクプロフィットの値を取得します。現在の価格とシンボルの範囲に基づいて新しいストップロスを計算し、ユーザー定義のストップロスのパーセンテージを掛けます。ポジションタイプに基づいてストップロスを調整します。

新しいストップロスでポジションを変更する前に、いくつかのチェックを実行する必要があります。まず、エラーを避けるために、新しいストップロスが現在のストップロスと異なることを確認してください。さらに、一部のブローカーはストップロスを現在の価格に近づけすぎないようにストップレベルを課しています。新しいストップロスがストップレベルに準拠しているかどうかを確認し、準拠していない場合は次のポジションに進みます。

最後に、新しいストップロスと現在のテイクプロフィット値でポジションを変更します。変更が失敗した場合は、問題が発生したことを示すエラー メッセージを出力します。それ以上の位置の処理を避けるために関数から戻ります。

コードをコンパイルして、エラーや警告がないことを確認します。これで、ストップロス関数の更新が完了しました。

この関数をエキスパートアドバイザーに統合するには、「OnTick」関数内でこの関数を呼び出す必要があります。ブレークアウトを確認した後、関数呼び出しを実行します。これにより、受信したティックごとにストップロスが更新されることが保証されます。

最後にもう一度コードをコンパイルして、変更を確認します。現在、エキスパートアドバイザーは、ユーザー定義のパラメーターに基づいてストップロスを追跡する機能を備えています。トレーリングストップロス機能を有効または無効にする入力変数を追加し、オープンポジションのストップロスを更新する関数を実装しました。

次に、エキスパートアドバイザーのバックテストに進み、取引ストップロスの有効性を評価しましょう。 MetaTrader プラットフォームで、ストラテジー テスターを開き、テスト用のエキスパート アドバイザー「ストップロス」を選択します。テストに必要なシンボルと時間枠を選択します。

「入力」タブには、トレーリングストップロスのパーセンテージやロットサイズなど、設定するためのさまざまなパラメーターが表示されます。好みや取引戦略に応じてこれらのパラメーターを調整します。

「開始」ボタンをクリックしてバックテストを開始します。エキスパートアドバイザーは指定されたパラメーターに基づいて取引を実行し、価格が有利に動くにつれてストップロスが動的に調整されます。

バックテストが完了したら、[結果] タブと [グラフ] タブで結果を確認できます。トレーリングストップロスが戦略に及ぼす影響を評価するには、損益、ドローダウン、その他のパフォーマンス指標に注意してください。

バックテストの結果が満足のいくものであれば、ライブ取引口座で取引ストップロスを備えたエキスパートアドバイザーの使用を検討できます。ただし、取引の決定を下す前に、戦略のパフォーマンスを徹底的に評価し、さらなるテストや最適化を実施することが重要です。

結論として、MQL5 を使用してエキスパートアドバイザーに取引ストップロスを追加することに成功しました。ストップロスを価格の後ろに置くことで、市場の有利な傾向中に利益を最大化し、傾向が反転した場合の損失を最小限に抑えることを目指します。変更や戦略を実際の取引口座に適用する前に、必ず徹底的にテストしてください。

これは一般的なガイドであり、そのような変更を実装する前にプログラミングと取引の原則をよく理解することが不可欠であることに注意してください。常に注意を払い、必要に応じて専門の財務アドバイザーに相談することを検討してください。

Trailing stop loss in mql5 | MT5 programming
Trailing stop loss in mql5 | MT5 programming
  • 2022.12.31
  • www.youtube.com
Today I will show you how to code a trailing stop loss in mql5. You can use the same function to add a trailing stop loss to any other Expert Advisor for Met...
 

mql5 で単純な RSI EA をコーディングする | MT5プログラミング



mql5 で単純な RSI EA をコーディングする | MT5プログラミング

このチュートリアルでは、Toby が自己紹介をし、MetaEditor を使用して単純な Expert Advisor (EA) をコーディングする方法をデモンストレーションするというチュートリアルの目標について説明します。 EA は RSI インジケーターを使用して、売られすぎと買われすぎの状況に基づいて売買シグナルを生成します。トビーはまた、ストップロス、テイクプロフィット、およびリバースシグナルで取引を終了するオプションがEAに含まれる予定であるとも述べています。

Toby は、MetaEditor で新しい EA ファイルを作成し、既存のコードをクリーンアップすることから始めます。次に、マジックナンバー、ロットサイズ、RSI期間、RSIレベル、ストップロス、テイクプロフィット、リバースシグナルで取引を終了するオプションなど、EAの入力パラメータを定義します。これらの入力パラメータにデフォルト値を割り当て、それぞれを説明するコメントを追加しました。

入力パラメータを定義した後、Toby はグローバル変数セクションの作成に進みます。彼は、RSI インジケーター ハンドルの変数、RSI 値を保存するバッファー、現在のティックを保存するティック タイプ変数、ポジションを開閉する取引オブジェクト、およびバーごとに 1 つの取引のみが開かれるようにするための 2 つの日時変数を宣言します。また、CTrade クラスにアクセスするために必要な #include ディレクティブも含めています。

次に、Toby は OnInit() 関数で入力パラメーターの検証を実装します。各入力パラメータが指定された基準を満たしているかどうかを確認し、入力が無効な場合はエラー メッセージを表示します。彼は Alert() 関数を使用してエラー メッセージを出力し、エラーが発生した場合は OnInit() 関数から戻ります。

入力の検証に加えて、Toby は取引オブジェクトのマジック ナンバーを設定し、RSI インジケーター ハンドルを作成します。ハンドルの作成が成功したかどうかを確認し、失敗した場合はエラー メッセージを表示します。また、RSI バッファーの系列を設定して、値の操作を簡素化しました。

OnDeinit() 関数で、Toby は IndicatorRelease() 関数を使用して RSI インジケーターを解放し、リソースを解放します。

OnTick() 関数に移り、Toby は SymbolInfoTick() 関数を使用して現在のティックを取得することから始めます。ティックの取得が成功したかどうかを確認し、失敗した場合はエラー メッセージを表示します。彼は、将来の使用のために、現在のティックの売値と買値をグローバル変数 currentTick に割り当てます。

次に、Toby は CopyBuffer() 関数を使用して RSI インジケーター値を取得します。彼は値を rsiValues という変数に代入し、取得が成功したかどうかを確認します。さらに分析できるよう、2 つの RSI 値をバッファに保存します。

必要なデータを取得したら、Toby は OnTick() 関数で取引ロジックの実装に進むことができます。ただし、本文に記載されているコードは切り取られており、残りの詳細は失われています。

このチュートリアルでは、入力パラメーターの定義、入力検証、グローバル変数宣言、RSI インジケーターの処理、現在のティックの取得など、EA の初期設定について説明します。このチュートリアルでは、後続のステップで取引ロジックを実装するための基礎を設定します。

Code a simple RSI EA in mql5 | MT5 Programming
Code a simple RSI EA in mql5 | MT5 Programming
  • 2023.01.08
  • www.youtube.com
Today I will show you how to code a simple RSI EA for Metatrader 5. If you are new to mql5, just follow my steps and we will create a fully working RSI Expe...
 

mql5 の素晴らしい RSI 取引ボット! | MT5プログラミング



mql5 の素晴らしい RSI 取引ボット! | MT5プログラミング

こんにちは、Toby です。今日は、勝率 100% の戦略をコーディングする方法を説明します。このチュートリアルでは、既存のエキスパートアドバイザー (EA) を変更し、RSI インジケーターにフィルターを追加します。コーディングプロセスをステップごとに説明します。始めましょう!

ステップ 1: 戦略の設定 MetaEditor で作業します。前のビデオで作成した EA を開きます。まだ見ていない方はリンクを貼っておきますのでご覧ください。 「RSI_MA_Filter_EA」などの新しい名前でファイルを保存します。

ステップ 2: 入力の変更 フィルターを実装するには、移動平均期間の入力を追加する必要があります。移動平均が実行される時間枠の入力も含めます。ストップロス、テイクプロフィット、反対のシグナル入力はそのままにしておきます。

ステップ 3: グローバル変数の調整 グローバル変数セクションでは、RSI インジケーターのハンドルとバッファーの名前を変更して、移動平均と区別する必要があります。移動平均のハンドルとバッファを追加します。さらに、オープンタイムの買いとオープンタイムの売りに関連する不要な変数を削除できます。

ステップ 4: onInit 関数に変更を加える onInit 関数に、移動平均期間入力のチェックを追加します。また、終値ではなく始値を使用するように RSI ハンドルを変更します。次に、移動平均インジケーターのハンドルとバッファーを作成します。

ステップ 5: Untick 関数の更新 untick 関数内では、まず現在のティックが新しいバーオープンティックであるかどうかを確認します。そうでない場合は、戻って次のバーが開くティックを待ちます。このチェックを実行するカスタム関数を追加します。次に、移動平均の値を取得してバッファーに保存します。また、移動平均フィルターを含めるように買いポジションと売りポジションを開くための条件も調整します。

ステップ 6: コンパイルとテスト 必要な変更をすべて加えた後、コードをコンパイルしてエラーがないか確認します。すべてが正常にコンパイルされたら、ストラテジー テスターで EA のテストに進むことができます。 2012 年から現在までの履歴データを使用してビジュアル テストを実行し、RSI と移動平均期間、ストップロス、テイクプロフィット、および反対のシグナルで取引を終了するオプションの適切な入力を選択します。

このチュートリアルに従うことで、100% の勝率を実現する戦略をコーディングする方法を学びました。既存の EA を変更し、RSI インジケーターに移動平均フィルターを追加しました。忘れずにファイルを保存し、エラーが発生しないようにコンパイルしてください。ストラテジー テスターを使用して、MetaTrader 5 プラットフォームでストラテジーをテストできるようになりました。今後のコーディングの取り組みも頑張ってください。

Amazing RSI trading bot in mql5! | MT5 programming
Amazing RSI trading bot in mql5! | MT5 programming
  • 2023.01.15
  • www.youtube.com
Today I will show you how to code a RSI trading bot for Metatrader 5. If you are new to mql5, just follow my steps and we will create a fully working RSI Ex...
 

ドンチャンチャネルカスタムインジケーターEA | MT5プログラミング



ドンチャンチャネルカスタムインジケーターEA | MT5プログラミング

やあ、トビーです。今日は、MQL5 でカスタム インジケーターをコーディングする方法を説明します。ドンチャン チャネル インジケーターを作成し、後でそれを使用して収益性の高いエキスパート アドバイザー (EA) を開発します。 EA の準備ができたら、いくつかのバックテストを実行してそのパフォーマンスを評価します。結果からわかるように、この戦略は非常にうまく機能しています。始めましょう!

次に、Strategy Tester で結果を分析してみましょう。 Donchian Channel Expert Advisor は有望な結果を示しています。したがって、最初のステップは戦略を定義することです。カスタムのドンチャン チャネル インジケーターをコーディングし、それを使用してエキスパート アドバイザーを作成します。基本的な戦略の考え方をチャート上で概説してみましょう。

青い線は、このビデオでコーディングするドンチャン チャネル インジケーターを表します。ドンチャン チャネルには、前の n バーの最高高値と最低安値が表示されます。多くのトレーダーはドンチャン チャネルを使用してブレイクアウト戦略を開発し、価格がアッパーバンドを上回ったときに買い取引に入ります。ただし、この EA では、逆のアプローチを検討します。価格がドンチャンチャネルの上部バンドを上回った場合は常に売り取引を行います。同様に、価格がドンチャンチャネルの下限バンドを下回ったときに買いポジションをとります。また、ポイントまたはチャネルの割合に基づいてストップロスを設定します。さらに、チャネルのサイズを考慮するために、ドンチャン チャネル EA にフィルタを追加する場合があります。

次に、メタ エディターにジャンプして、カスタム ドンチャン チャネル インジケーターのコーディングを開始しましょう。

メタ エディターで、新しいカスタム インジケーター ファイルを作成することから始めましょう。不要なコメントを削除し、括弧を揃えて、コードを少し整理します。次に、インジケーターのプロパティを定義します。別のウィンドウではなく、メインのチャート ウィンドウに表示されるように指定します。また、インジケーターが持つバッファーとプロットの数も宣言します。この場合は 2 つです。

次に、カスタム インジケーターの入力を定義します。これらの入力により、ユーザーはインジケーターをチャートに適用するときにインジケーターをカスタマイズできます。ドンチャン チャネルの周期、チャネルのオフセット (パーセンテージとして)、およびチャネルの色の入力を作成します。

コードをコンパイルした後、「グローバル変数」セクションに進み、インジケーターに必要な変数を定義します。ドンチャン チャネルの上限値と下限値のバッファーと、上限値と下限値、および最初のバー インデックスを保存する追加の変数を作成します。

OnInit 関数では、バッファーを初期化し、チャート上のインジケーターを識別するために使用されるインジケーターの短縮名を設定します。

最後に、OnCalculate 関数で、ドンチャン チャネル インジケーターの計算を実行します。続行するには、チャートに十分なバーがあるかどうかを確認します。そうでない場合は、ゼロを返します。それ以外の場合は、始値を使用して各バーの上限値と下限値を計算します。これらの値を対応するバッファに保存します。

コードがエラーや警告なしでコンパイルされたら、カスタム インジケーターをテストできます。チャートを開いてナビゲーターに移動し、My Donchian Channel インジケーターを見つけます。それをチャート上にドラッグ アンド ドロップします。インジケーターの設定で、希望の期間、オフセット、色を指定します。

Donchian channel custom Indicator EA | MT5 programming
Donchian channel custom Indicator EA | MT5 programming
  • 2023.01.29
  • www.youtube.com
Today I will show you how to code a Donchian channel custom indicator EA for Metatrader 5. If you are new to mql5, just follow my steps and we will create a...
 

mql5 の素晴らしい Donchian チャンネル取引ボット! | MT5プログラミング



mql5 の素晴らしい Donchian チャンネル取引ボット! | MT5プログラミング

カスタム インジケーターをチャートに追加すると、ドンチャン チャネルが青い線で表示されることがわかります。ドンチャン チャネル インジケーターは、前の「n」バーの最高高値と最低安値を示します。これは一般にブレイクアウト戦略を作成するために使用され、トレーダーは価格がドンチャンチャネルの上部バンドを超えたときに買い取引を開始し、価格が下部バンドを下回ったときに売り取引を開始します。

ただし、この EA (Expert Advisor) では、逆のアプローチをテストしたいと考えています。価格が上限バンドを超えたときに買うのではなく、売りますし、その逆も同様です。したがって、価格がドンチャンチャネルの上部バンドを上回った場合は常に売りポジションをとり、下側バンドを下回った場合は買いポジションをとります。

さらに、各取引のストップロスをポイントまたはチャネルのパーセンテージで設定します。チャネルのサイズに基づいて、ドンチャン チャネル EA にフィルターを追加することも検討する場合があります。ここで、メタエディターにジャンプして、カスタムのドンチャン チャネル インジケーターのコーディングを開始しましょう。

MetaEditor で、左上隅の [新規] をクリックし、[カスタム インジケーター] を選択して、[次へ] をクリックして、新しいカスタム インジケーター ファイルを作成します。ファイルに「MyDonchianChannel」という名前を付け、「次へ」および「完了」をクリックしてプロセスを完了します。ファイルが作成されたら、不要なコメントを削除し、括弧を揃えてコードをクリーンアップします。次に、コードをコンパイルしてエラーや警告がないか確認します。

次に、カスタム インジケーターのプロパティを定義しましょう。メインチャートウィンドウに表示したいので、「indicator_chart_window」プロパティを true に設定します。また、インジケーターのバッファーとプロットの数を定義する必要があります。 2 つの行 (上下) があるため、「indicator_buffers」を 2 に、「indicator_plots」を 2 に設定します。

次に、カスタムインジケーターの入力パラメーターを定義します。ドンチャン チャネルの期間、オフセットのパーセンテージ、インジケーター ラインの色の入力が必要です。適切なタイプ (期間とオフセットには整数、色には色) を使用してこれらの入力を定義し、各入力のデフォルト値とコメントを設定します。

コードを再度コンパイルして、エラーや警告がないことを確認します。

次に、カスタム インジケーターの「onCalculate」関数のコーディングに進みましょう。まず、チャート内のバーの数が入力期間に 1 を加えた値より少ないかどうかを確認します。その場合、インジケーターを計算するのに十分なバーがないため、ゼロを返します。次に、ドンチャン チャネルの計算を開始する最初のバーを表す「first」変数を設定します。前回の計算が行われていない場合 (previous_calculated が 0)、入力期間に「first」を設定します。それ以外の場合は、previous_calculated から 1 を引いた値に設定します。次に、for ループを使用してバーをループする必要があります。 「最初の」バーからループを開始し、現在のバーがチャート内のバーの合計数より少なくなるまでループを続けます。各ループ反復の終了時にバーカウンターを増やします。

ループ内で、各バーの始値を使用してドンチャン チャネルの上限値と下限値を計算します。これらの値をそれぞれ「上位」変数と「下位」変数に格納します。

オフセットを計算するには、上限値から下限値を減算し、入力オフセットを 100 で割った値を掛けます。これにより、オフセット値がポイントまたはチャネルのパーセンテージで得られます。最後に、バッファ インデックスとバー カウンターを使用して、計算された値を対応するバッファに保存します。値を計算してバッファーに保存した後、各プロットのインジケーター ラベルを設定する必要があります。これらのラベルはインジケーターのプロパティ ウィンドウに表示されます。

SetIndexLabel() 関数を使用して、バッファー インデックスとラベルをパラメーターとして渡し、上部と下部のプロットにラベルを割り当てます。次に、SetIndexStyle() 関数と SetIndexColor() 関数を使用してインジケーター ラインの色を設定します。各線のバッファーインデックス、線のスタイル (STYLE_SOLID など)、および希望の色を指定します。

最後に、インジケーターをより視覚的に魅力的なものにするためにコードを追加します。インジケーターの名前を非表示にするには、indicator_shortname プロパティを空の文字列に設定します。さらに、ObjectCreate() 関数と ObjectSetText() 関数を使用して、上部バンドの現在の値を含むチャート ラベルを追加できます。

コードをもう一度コンパイルして、エラーや警告がないことを確認します。

おめでとう!カスタム Donchian Channel インジケーターが正常にコーディングされました。これで、エキスパートアドバイザーでこのインジケーターを使用して、取引戦略を実装できるようになります。

次のステップでは、ブレイクアウト戦略に基づいて取引を実行するためにドンチャン チャネル インジケーターを利用するエキスパート アドバイザー (EA) のコーディングに進みます。 MetaEditor で新しいファイルを開き、「DonchianChannelEA」という名前を付け、「Expert Advisor」オプションを選択します。 「次へ」「完了」をクリックしてファイルを作成します。不要なコメントを削除し、括弧を揃えて、最初のコードをクリーンアップします。

まず、EA の入力パラメーターを定義します。これらには、ロットサイズ、ストップロス、テイクプロフィット、ドンチャンチャネルの期間とオフセットが含まれます。適切なタイプを使用してこれらの入力を定義し、各入力のデフォルト値とコメントを設定します。次に、OnInit() 関数をコーディングします。この関数内で、必要なパラメーターを指定して iCustom() 関数を呼び出すことで、ドンチャン チャネル インジケーターを初期化します。

インジケーター ハンドル、上部バンドの値、および下部バンドの値を保存する変数を作成します。 ArraySetAsSeries() 関数を使用して配列をシリーズとして設定し、正しいインデックスを確保します。ここで、取引ロジックを処理するメインの OnTick() 関数のコーディングに進みましょう。

まず、ドンチャン チャネルを計算するのに十分なバーがあるかどうかを確認します。そうでない場合は、ゼロを返します。 CopyBuffer() 関数を使用して、インジケーターから現在の上部バンド値と下部バンド値を取得します。次に、買いシグナルを確認します。価格が上限バンドを超えた場合は、OrderSend() 関数を使用して売りポジションをオープンします。適切な注文タイプ (OP_SELL)、ロットサイズ、ストップロス、テイクプロフィットレベルを設定します。 OrderSend() 関数によって返される潜在的なエラーを処理することを忘れないでください。

同様に、売りシグナルを確認します。価格が下限バンドを下回った場合は、OrderSend() 関数を使用して買いポジションをオープンします。適切な注文タイプ (OP_BUY)、ロットサイズ、ストップロス、テイクプロフィットレベルを設定します。

コードをコンパイルして、エラーや警告がないことを確認します。

それでおしまい! Donchian Channel Expert Advisor のコーディングが完了しました。デモ口座で EA をテストしたり、履歴データを使用してバックテストを行ってパフォーマンスを評価したりできるようになりました。 EA を実際の取引口座で使用する前に、EA を徹底的にテストし、リスク管理手法の導入を検討してください。提供されているコードは基本的な実装であり、特定の取引要件に合わせてさらに変更や機能強化が必要になる場合があることに注意してください。

Awesome Donchian Channel trading bot in mql5! | MT5 programming
Awesome Donchian Channel trading bot in mql5! | MT5 programming
  • 2023.02.02
  • www.youtube.com
Today I will show you how to code a Donchian channel trading bot for Metatrader 5. If you are new to mql5, just follow my steps and we will create a fully w...
理由: