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

 

MQL5 の見事なハイ/ロー ブレイクアウト トレーディング ボット! |パート1



MQL5 の見事なハイ/ロー ブレイクアウト トレーディング ボット! |パート1

トビー、このビデオでは、高値と安値を利用して収益性の高いブレイクアウト戦略を作成する新しいプロジェクトを紹介したいと思います。主なアイデアは、現在のシンボルの最高価格と最低価格を特定し、これらのレベルを使用して潜在的なブレークアウト ポイントを決定することです。これがどのように機能するかを理解するためにチャートを見てみましょう。

まず、最後の n 個のバーを観察し、最高価格と最低価格を特定します。価格が高値レベルを上抜けた場合、買いポジションを取ります。逆に、価格が安値レベルを下回った場合は、売りポジションを取ります。これは単純な概念ですが、ポイント単位でストップロスとテイクプロフィットのレベルを追加することで強化します。さらに、フィルターを実装して戦略を洗練し、あらゆる高値と安値で取引することを回避します。

コンセプトを実証する取引の機会を待ちましょう。ここでは、価格が安値水準を下回ったため売りポジションを保有し、利益を出して取引を終了しました。これは戦略の基本基盤として機能し、追加のコンポーネントを組み込むことでさらに改善できます。

次に、メタ エディターに切り替えてコーディングを始めましょう。 YouTube フォルダーに新しいファイルを作成し、「Toby's Breakout EA」という名前を付けます。このファイルでは、EA に必要な入力を定義します。これらには、マジックナンバー、ロットサイズ、考慮すべきバーの数、ストップロス、テイクプロフィットが含まれます。適切なデフォルト値を設定し、各入力を説明するコメントを提供します。

次に、onInit 関数に進み、ユーザー入力が有効であることを確認します。この検証を処理するために、checkInputs という別の関数を作成します。入力のいずれかが正しくない場合は、エラー メッセージが表示され、EA の開始が妨げられます。

onInit 関数内で、提供された入力を使用して取引オブジェクトのマジック ナンバーも設定します。これにより、EA がオープンしたポジションを後でフィルタリングして管理できるようになります。

次に、onTick 関数を調べてみましょう。まず、現在のティックと前のティック値を保存します。これは、価格の動きを追跡し、重要なレベルを超えているかどうかを判断するのに役立ちます。 SymbolInfoTick 関数を使用して現在のティックを取得し、エラーが発生した場合はエラー メッセージを表示して EA を停止します。

その後、countOpenPositions、normalizePrice、closePositions の 3 つのカスタム関数を含めます。これらの機能は、ポジションの管理、オープンポジションの数のカウント、価格の正規化、必要に応じたポジションのクローズに役立ちます。

onTick 関数に戻って、買いと売りの両方のオープン ポジションをカウントすることから始めます。このプロセス中にエラーが発生した場合、カスタム関数ですでに処理されているため、エラー メッセージを表示せずに EA を停止します。次に、オープンな買いポジションがあるかどうか、および高レベルがゼロではないかどうかを確認します。これにより、高いレベルを設定し、既存の買いポジションがないことが保証されます。

ここから、ブレイクアウト戦略のロジックのコーディングを続けることができます。売りポジションと低水準についても同様のチェックを実装します。これらの if ステートメントは、それぞれのレベルのブレイクアウトに基づいて買いポジションを取るか売りポジションを取るかを決定するのに役立ちます。

基本的な構造を確立したら、コンポーネントとフィルターを追加して戦略をさらに強化できます。これには、取引シグナルを調整し、全体的なパフォーマンスを向上させるための追加の入力パラメーターと条件を含めることができます。

ここでは、最初のコーディング プロセスについて説明します。これらの手順に従うことで、高値と安値に基づいてブレイクアウト EA を作成できます。これは、さらなる開発と最適化の開始点として機能します。

アルゴリズム:

  1. まず、ポジションをオープンおよびクローズするレベル、つまり高レベルと低レベルを定義します。
  2. オープンな買いポジションと売りポジション (count_buy と count_sell) の数を追跡するために変数を初期化します。
  3. 市場の各ティックで、買い値と売り値を含む前のティックのデータを取得します。
  4. 潜在的な買いポジションを確認するために、前のティックの売値と高値レベルを比較します。アスク価格が高値レベルより高く、オープンな買いポジションがない場合は、指定されたロットサイズ、ストップロス、テイクプロフィットを使用して買いポジションをオープンします。 count_buy 変数をインクリメントし、買いポジションがオープンされたことを示すメッセージを表示します。
  5. 潜在的な売りポジションを確認するために、前のティックの入札価格と安値レベルを比較します。入札価格が安値レベルより低く、オープンな売りポジションがない場合は、指定されたロットサイズ、ストップロス、テイクプロフィットを使用して売りポジションをオープンします。 count_sell 変数をインクリメントし、売りポジションがオープンされたことを示すメッセージを表示します。
  6. 必要に応じてポジションを閉じることも検討する必要があります。オープンな買いポジションがあり、前のティックのアスク価格が高値レベルを下回った場合、すべての買いポジションをクローズします。 count_buy 変数をデクリメントし、買いポジションがクローズされたことを示すメッセージを表示します。
  7. 同様に、オープンな売りポジションがあり、前のティックの入札価格が安値レベルを上回った場合、すべての売りポジションをクローズします。 count_sell 変数をデクリメントし、売りポジションがクローズされたことを示すメッセージを表示します。

このアルゴリズムは、事前に定義された高値および安値レベルに対する買値と売値に基づいて、潜在的なエントリーポイントとエグジットポイントを継続的にチェックします。条件が満たされた場合にポジションをオープンし、価格が反対方向に変動した場合にポジションをクローズします。

Stunning high / low breakout trading bot in mql5! | Part 1
Stunning high / low breakout trading bot in mql5! | Part 1
  • 2023.02.09
  • www.youtube.com
Today I will show you how to code a simple high / low breakout trading bot for Metatrader 5. In this first part we will calculate the high and low level. Th...
 

ハイ/ローブレイクアウトトレーディングボットmql5 |パート2



ハイ/ローブレイクアウトトレーディングボットmql5 |パート2

このビデオでは、ハイロー コーティングを施したブラックのアウディの作業を続けます。前回のセッションのフォローアップとして、取引ロジックを組み込み、いくつかの追加コンポーネントを導入します。まず、ポジションのストップロスを計算します。ストップロス入力がゼロの場合、変数「SL」をゼロに設定し、ストップロスがないことを示します。それ以外の場合は、現在の入札価格から入力ストップロスを差し引いた値にポイント値を乗じた値に設定します。

次にテイクプロフィットを計算します。テイクプロフィット入力がゼロの場合、変数「TP」をゼロに設定します。それ以外の場合は、現在のアスク価格と入力テイクプロフィットにポイント値を乗算した値に設定します。一貫した価格値を確保するために、「正規化価格」関数を使用してストップロスとテイクプロフィットを正規化します。

取引ロジックを準備したら、cTrade クラスを使用して以前に宣言した取引オブジェクトを使用してポジションをオープンします。買いポジションの場合、現在のシンボル、ロットサイズの入力ロット、価格の現在の入札価格、ストップロスのストップロス変数、テイクプロフィットのテイクプロフィット変数を使用します。同様に、売りポジションの場合、価格には現在の売り値を使用します。このポジションを他のポジションと区別するために、それが当社の「ハイローレコード EA」エキスパートアドバイザーに属することを示すコメントを追加します。

コードをコンパイルした後、テストのために MetaTrader に切り替えます。期間と期間を指定してビジュアルテストを設定します。デフォルトの入力を使用してテストを実行し、最高値と最低値を観察します。 「始値のみ」モードを使用すると、高値または安値レベルを超えたときにオープンされているポジションを確認できます。次のステップでは、EA のティック モードを変更して、オープンティックに対してのみアクションを実行します。これにより、安定したシステムを作成するための、より信頼性が高く、より高速なテスト環境が提供されます。

今後は、ルックバック期間の開始時または終了時に極端なポイントでの取引を防止するインデックス フィルターを実装します。 「インデックス フィルター」と呼ばれる入力を導入します。これは、フィルタリングする必要があるルックバック期間内のバーの割合を表します。たとえば、ルックバック期間が 50 バーで、インデックス フィルターが 10 に設定されている場合、最初の 5 バーまたは最後の 5 バー内の極値ポイントがフィルターで除外されます。この範囲を視覚化するために、チャート上に長方形を描きます。必要なグローバル変数を追加し、その初期値を設定し、「I Highest」関数と「I Lowest」関数を使用して最高インデックスと最低インデックスを計算するために「OnTick」関数に変更を加えます。

さらに、「CheckInputs」関数を更新して「Index Filter」入力を組み込み、その値を検証します。また、インデックスとフィルター設定に基づいて極値をフィルターする必要があるかどうかをチェックする「CheckIndexFilter」という新しい関数も作成します。実装を完了するには、コードをコンパイルし、ビジュアル テストに進みます。インデックスフィルターに従って、極値ポイントが定義された範囲内にある場合にのみポジションがオープンされるかどうかを確認します。次のセグメントでは、要件に合わせて EA のティック モードを変更する予定です。オープンティックモードに切り替えることで、EA がオープンティックのみで動作できるようになり、システムの信頼性と効率が向上します。

ティック モードをオープン ティック モードに変更した後、EA のさらなる機能強化を進めます。今後の改善点の 1 つは、時間フィルターの追加です。時間フィルターを実装するために、「開始時間」と「終了時間」という 2 つの新しい入力を導入します。これらの入力により、取引を許可する時間範囲を指定できます。たとえば、開始時間を 8 時に、終了時間を 18 時に設定すると、EA は午前 8 時から午後 6 時までの間のみポジションをオープンします。時間フィルターを組み込むために、「CheckInputs」関数を更新して新しい入力を検証し、開始時間が終了時間より小さいことを確認します。また、ポジションをオープンする前に、指定された範囲に対して現在時刻をチェックするように「OnTick」関数を変更します。

時間フィルターを設定した状態で、コードをコンパイルし、ビジュアル テストを実行して、指定された時間範囲内でのみポジションがオープンされることを確認します。次に、別の拡張機能であるスプレッド フィルターの追加に進みます。スプレッドフィルターを使用すると、最大許容スプレッドを定義でき、それを超えるとEAはポジションをオープンできなくなります。拡散フィルタを実装するために、「Max Spread」と呼ばれる新しい入力を導入します。 「OnTick」機能には、ポジションをオープンする前に現在のスプレッドが許容範囲内であることを確認するチェックが含まれています。

また、「Max Spread」入力を検証し、それが正の値であることを確認するために「CheckInputs」関数も更新しました。スプレッド フィルターが実装されたら、コードをコンパイルし、ビジュアル テストを実行して、スプレッドが指定された最大値を下回っている場合にのみポジションがオープンされることを確認します。最後に、オープンポジションの数を追跡してチャート上に表示する機能を紹介します。 「Position Count」という新しいグローバル変数を作成し、それをゼロに初期化します。 「OnTick」関数では、ポジションがオープンされるたびにポジション数が増加します。

チャート上に位置カウントを表示するには、「ObjectSetText」関数を利用して、現在のカウントを示すテキスト オブジェクトを作成します。各ティックの最新のカウント値でテキスト オブジェクトを更新します。コードがコンパイルされたら、視覚テストを実行してチャートに表示されるポジション数を観察し、オープンポジション数が正確に反映されていることを確認します。

これらの機能強化の実装により、EA の機能とパフォーマンスが大幅に向上しました。時間フィルター、スプレッドフィルター、ポジションカウント表示により、取引プロセスの制御と可視性が向上します。

次のビデオでは、EA のパフォーマンスをさらに向上させるための追加の最適化と微調整テクニックを検討します。

High / low breakout trading bot mql5 | Part 2
High / low breakout trading bot mql5 | Part 2
  • 2023.02.12
  • www.youtube.com
Today I will show you how to code a simple high / low breakout trading bot for Metatrader 5. In this second part we will code the trade logic to open positi...
 

驚くべきハイ/ローブレイクアウトトレーディングボットmql5 |パート 3



驚くべきハイ/ローブレイクアウトトレーディングボットmql5 |パート 3

今日のビデオでは、Toby が MK5 のハイロー ブレイクアウト EA の開発を続けています。彼は戦略に 2 つの新しいコンポーネントを導入し、最後に複数のバックテストも実行します。

Toby は、EA が動作状態にあることを確認するために EA をコンパイルすることから始めます。次に、トレーリングストップロスの入力を追加して、ブレイクアウトおよびトレンドフォローシステムとしての戦略の有効性を高めます。入力は、アクティブ化または非アクティブ化できるブール変数です。 Toby は、各ポジションのストップロス値を計算して更新する「updateStopLoss」という関数も作成します。

トレーリングストップロスを実装するために、Toby は別の EA から「updatePosition」関数をコピーし、それに応じて変更します。彼はストップロス距離のパラメータを追加し、この入力に基づいて新しいストップロス値の計算を調整します。また、ストップロス値が正規化されていることを確認するために、「normalizedPrice」と呼ばれる関数も組み込んでいます。これらの変更を加えた後、Toby はコードを再度コンパイルして、エラーがないことを確認します。

次に、Toby は「OnTick」関数に移動し、「updateStopLoss」関数を統合します。彼は、トレーリング ストップロスがアクティブかどうかを確認する if ステートメントを追加し、アクティブである場合は、「updateStopLoss」関数を呼び出してストップロス値を追跡します。また、関数が買いポジションと売りポジションの両方に適用されることも保証します。

コードをコンパイルした後、Toby は次のコンポーネントであるサイズ フィルターをストラテジーに追加します。サイズ フィルターを使用すると、高値と低値が離れすぎて、より広い範囲を示すチャネルをフィルターで除外できます。 Toby は、サイズ フィルターの入力をポイント単位で追加し、それに応じてコードを調整して、チャネル サイズが指定された制限を超えているかどうかを確認します。彼はまた、高線と低線の視覚化にサイズ フィルターを組み込みました。

次に、Toby は、Strategy Tester を使用して視覚テストを実行し、トレーリング ストップロスとサイズ フィルターの両方が正しく機能していることを確認します。彼は、ストップロスの動作と、サイズフィルター条件に基づいたラインの色の変化を観察しました。

ビデオの最後の部分では、Toby がバックテストを実行して、過去 10 年間の EA のパフォーマンスを評価します。彼は最適化基準を回復係数として設定し、特定のシンボルと時間枠を使用します。トビーは残りの数年間をサンプル外のテストとして使用する予定です。

Toby は、トレーリング ストップロスやサイズ フィルターの追加など、ハイロー ブレイクアウト EA にいくつかの改良を加えています。また、EA のパフォーマンスを評価するためのバックテストの実施方法も説明します。

Amazing high / low breakout trading bot mql5 | Part 3
Amazing high / low breakout trading bot mql5 | Part 3
  • 2023.02.16
  • www.youtube.com
Today I will show you how to code a simple high / low breakout trading bot for Metatrader 5. In this third part we will code a trailing stop loss and add a ...
 

究極のローソク足パターンEAをmql5でコーディングしてみよう! |パート1



究極のローソク足パターンEAをmql5でコーディングしてみよう! |パート1

こんにちは、Toby です。このビデオでは、私のチャンネルで新しい EA コーディング プロジェクトを開始しています。ローソク足のパターンに焦点を当て、ドージ、モーニングスター、ライジングスターなどのさまざまなパターンを取引できるEAを作成します。 EA には、さまざまな条件を表示するパネルもあります。私はすでに EA を使用していくつかの予備テストを実施しましたが、その結果は、特にさまざまなシンボルにわたって非常に興味深いものでした。このアプローチは非常に効果的な戦略につながると信じています。飛び込んでみましょう!

EA のコーディングを開始する前に、一般的な戦略のアイデアについて説明します。進歩するにつれて何を作成しようとしているのかを理解することが重要です。概念を説明するために、簡単な図を作成しました。私たちの EA は、各バーの始値のみで動作します。たとえば、現在のバー (インデックス 0) と前のバー (インデックス 1) を考えてみましょう。 Doji、Morning Star、Evening Star、Rising Star など、さまざまなチャート パターンやローソク足パターンを取引できる EA を作成したいと考えています。

これを達成するために、さまざまな条件を定義します。たとえば、バー 2 の高値がバー 1 の最高価格よりも高くなければならないという条件を設定できます。別の条件として、バー 3 の始値がバー 3 の終値よりも低くなければならないということもできます。強気のキャンドル。これらの条件を組み合わせることで、次の足の開始時に買い取引をトリガーできます。同様の条件を逆に売りシグナルに適用することができます。

さらに、各ローソク足の始値、高値、安値、終値だけでなく、レンジサイズやボディサイズなどの他の要素も考慮する必要があります。たとえば、実体のサイズをローソク足の合計範囲で割ることで計算できます。この計算は、Doji バーを特定するのに役立ちます。 50 ポイントを超えるボディ サイズを要求するなど、特定の値を設定することもできます。これらのオプションを使用すると、単一の EA を使用してさまざまなパターンを作成およびテストできます。きっとエキサイティングな旅になることでしょう!

次に、MetaEditor に移り、コーディングを開始しましょう。始める前に、フィードバックをお願いします。これらのビデオが役に立ち、今夜はぐっすり眠りたいと思われる場合は、「いいね!」を残してください。また、ダークモードとデフォルトの白背景を切り替えることも検討しています。あなたの好みに投票していただくためのアンケートを作成します。ダークモードですべてを正しく読むことができたかどうか、コメントで教えてください。

よし、コーディングを始めよう! MetaEditor で、YouTube フォルダーの下に新しい EA を作成します。 「キャンドルパターンEA」と名付けます。クリーンなテンプレートから始めて、不要なコメントを削除し、コード構造を整理します。コンパイルしてエラーがないことを確認したら、次の手順に進みます。

入力セクションでいくつかの重要なパラメーター (マジック ナンバーなど) を定義します。これは、同じ MetaTrader インスタンスで実行されている他の EA との競合を避けるために、この EA の一意の識別子である必要があります。乱数を割り当ててみましょう。

ここでは、初期設定と入力パラメータについて説明します。次の部分に進む準備ができました。乞うご期待!

Let's code the ultimate candlestick pattern EA in mql5! | Part 1
Let's code the ultimate candlestick pattern EA in mql5! | Part 1
  • 2023.03.01
  • www.youtube.com
Today I will show you how to code a candlestick pattern trading bot for Metatrader 5. In this first part we will create the conditions for the candlestick pa...
 

MQL5のローソク足パターンEA! |パート2



MQL5のローソク足パターンEA! |パート2

今日のビデオでは、私は Toby です。MetaTrader 5 で単純なローソク足パターンの Expert Advisor (EA) のコーディングを続けていきます。現在、このコーディング シリーズの 2 番目のパートに入っています。戦略のアイデアを詳しく説明しています。そのビデオへのリンクはここにあります。コーディングを開始する前に、ビデオ録画に好ましい色のテーマについて YouTube で最近実施したアンケートの結果を共有したいと思います。 140 票のうち、大多数 (90 人) が暗い背景を好み、50 人が白い背景を好みました。私は個人的に暗い背景の方が目に優しいと感じており、自分の EA の記録にも使用しています。

もう 1 つ言及しておきたいのは、最近 Visual Studio Code for MQL5 をセットアップしたことです。コーディング プロジェクトに Visual Studio Code を使用することに興味がある場合は、コメントで知らせてください。それに関するビデオを作成します。

さて、EA のコーディングに戻りましょう。前のビデオでは、条件 1 の入力で中断しました。次に、別の条件を作成し、条件 2 の入力を追加します。条件 1 のセクションをコピーし、名前を条件 2 に変更して、入力変数に必要な変更を加えます。現時点では 2 つの条件のみで単純にしておきますが、将来的にはさらに条件を追加することができます。これらの変更を行った後、コードをコンパイルして、エラーや警告がないことを確認します。

一部の視聴者からは、読みやすくするためにフォント サイズを大きくしてほしいという要望がありました。私は画面上により多くのコードが表示されることを好みますが、フォント サイズを大きくする必要があることも理解しています。ただし、今のところは現在のフォント サイズをそのまま使用します。必要に応じて、将来的に調整を行うことができます。

次に、グローバル変数セクションで作成した条件配列に入力をリンクします。これを実現するために、「setInputs」というカスタム関数を作成します。この関数は、入力をチェックする前に呼び出されます。 setInputs 関数のコードを作成した後、そのコードが正しいことを確認するために再度コンパイルします。

次に、入力をチェックして、必要な基準を満たしていることを確認します。各入力に対して if ステートメントを使用して、必要なチェックを実行します。入力が無効であることが判明した場合は、ユーザーに警告が表示され、checkInputs 関数から false が返されます。まずマジックナンバーをチェックして、それがゼロ以下でないことを確認します。次に、ロットサイズ、ストップロス、テイクプロフィットの入力を確認します。さらに、条件配列のチェックを追加する必要がありますが、これについては後で説明します。

コードをよりモジュール化するために、setInputs 関数を使用して取引オブジェクトのマジック ナンバーを設定します。これは、ポジションを検索したり、取引関連の操作を処理したりするときに役立ちます。この変更を加えた後、コードを再度コンパイルして、その正確性を確認します。

次に、EA の主な操作が行われる onTick 関数に移りましょう。まず、isNewBar 関数を使用して、現在のティックがバーオープンティックであるかどうかを確認します。 false を返し、バーオープンティックではないことを示す場合は、単純に戻って次のティックを待ちます。

次に、現在のシンボルのティックを取得します。これにより、買値、売値、その他のティック関連情報にアクセスできるようになります。 SymbolInfoTick 関数を使用し、結果を変数に保存します。この操作が失敗した場合は、失敗を示すメッセージが表示され、onTick 関数から戻ります。

その後、countOpenPositions 関数を使用してオープンポジションをカウントします。これにより、現時点でオープンな買いポジションと売りポジションの数がわかります。この操作が失敗した場合は、失敗を示すエラー メッセージが表示され、onTick 関数から戻ります。

オープンポジション数を取得したら、オープンポジションがあるかどうかを確認します。存在する場合は、オープンなポジションの数を示すメッセージが表示されます。それ以外の場合は、次のステップに進みます。

ここで、for ループを使用して各オープン ポジションをループします。ループ内で、PositionGetTicket 関数を使用して位置情報を取得します。チケット番号を変数に保存し、デバッグのためにチケット番号を含むメッセージを表示します。

次に、PositionGetInteger 関数と POSITION_TYPE プロパティを使用して、ポジションのタイプ (買いまたは売り) を確認します。ポジションが買いポジションの場合は、買いポジションに必要なコードを実行します。同様に、ポジションが売りポジションの場合は、売りポジションのコードを実行します。

買いポジションの場合、現在の入札価格がポジションのストップロスレベルよりも低いかどうかを確認します。該当する場合は、ストップロスレベルに達したことを示すメッセージが表示され、PositionClose 関数を使用してポジションを閉じます。

同様に、売りポジションの場合、現在の売り値がポジションのストップロスレベルより高いかどうかを確認します。該当する場合は、ストップロスレベルに達したことを示すメッセージが表示され、ポジションをクローズします。

必要なポジションを決済したら、条件を確認して新しいポジションをオープンする必要があるかどうかを判断する次のステップに進みます。この目的のために、checkConditions 関数を使用します。 checkConditions 関数が true を返し、すべての条件が満たされていることを示した場合、新しいポジションを開くために必要なコードが実行されます。それ以外の場合は、次のティックに進みます。

新しいポジションを開くためのコードでは、ボリューム、ストップロス、テイクプロフィット、その他の必要なパラメーターを設定します。 OrderSend 関数を使用して取引リクエストを送信し、ポジションをオープンします。取引リクエストが成功すると、ポジションのオープンが成功したことを示すメッセージが表示されます。それ以外の場合は、エラー メッセージが表示されます。

最後に、コードをコンパイルしてエラーや警告がないことを確認します。すべてが成功したら、デモまたはライブアカウントで EA をテストする準備が整います。

これでこのビデオは終わります。次のパートでは、機能を追加し、戦略を洗練することで EA の構築を続けます。ご質問やご提案がございましたら、以下のコメント欄に残してください。ご視聴いただきありがとうございます。次のビデオでお会いしましょう!

Candlestick pattern EA in mql5! | Part 2
Candlestick pattern EA in mql5! | Part 2
  • 2023.03.05
  • www.youtube.com
Today I will show you how to code a candlestick pattern trading bot for Metatrader 5. This is a step by step coding tutorial for mql5.As an algo trader I dev...
 

MQL5 の素晴らしいローソク足パターン EA! |パート 3



MQL5 の素晴らしいローソク足パターン EA! |パート 3

このビデオでは、Toby が自己紹介をし、MetaTrader5 のローソク足パターン Expert Advisor (EA) の開発を継続することに重点を置くことを発表しました。目標は、最初のバックテストを実行して結果を得るために必要なコア ロジックを作成することです。トビーは視聴者に、シリーズの前の部分をまだチェックしていない場合はチェックするよう勧めています。

Toby はメタ エディターを開き、前のビデオで中断したところからコーディングを開始します。同氏は、買いポジションと売りポジションをオープンするためのコードはすでに実装されているが、今度は条件チェックを追加する必要があると説明しました。これを行うために、Toby は買い取引と売り取引の両方の条件を確認するために呼び出すことができるカスタム関数を作成する予定です。

Toby は、コーディング プロセスを開始する前に、既存のコードに間違いがないことを確認したいと考えています。コードをコンパイルして、エラーや警告がないかチェックします。

次に、Toby は「チェック条件」と呼ばれるカスタム関数のロジックを作成します。この関数は、for ループを使用して各条件を反復処理します。ループ内で、「1 つの条件をチェック」という別のカスタム関数を呼び出して、個々の条件を評価します。

Toby は、売買取引のパラメーターとチェックする条件のインデックスを受け取る「1 つの条件をチェック」関数を作成します。この関数内では、条件がアクティブであるかどうかの判断など、さまざまなチェックが実行されます。条件が非アクティブな場合、関数は true を返し、それが無関係であることを示します。

条件を確認するには、Toby はバー データを取得する必要があります。彼は、mql rate 型の変数を宣言します。これは、始値、高値、安値、終値を含む事前定義された構造です。レート配列を系列として設定し、コピー レート関数を使用して条件に必要なデータを取得します。

棒データの取得に成功した後、Toby は条件の比較と評価に使用される変数 A と B の値の設定に進みます。値は、始値、高値、安値、終値、レンジ、本体、比率、値などの条件のモードに基づいて決定されます。値は、買い取引か売り取引かを考慮して、それに応じて割り当てられます。

値が設定されると、Toby はコードをコンパイルして間違いやエラーがないかチェックします。

Toby はモード B 条件のプロセスを繰り返し、変数とケースに必要な調整を加えます。

最後に、Toby はコードに間違いがないことを確認し、コードのロジックを理解することの重要性を強調してビデオを締めくくります。

Awesome candlestick pattern EA in mql5! | Part 3
Awesome candlestick pattern EA in mql5! | Part 3
  • 2023.03.09
  • www.youtube.com
Today I will show you how to code a candlestick pattern trading bot for Metatrader 5. This is a step by step coding tutorial for mql5. With this EA you can t...
 

驚くべき結果が! MQL5のローソク足パターンEA! |パート 4


驚くべき結果が! MQL5のローソク足パターンEA! |パート 4

こんにちは、トビーです。今日のビデオでは、ローソク足パターン エキスパート アドバイザ (EA) のコーディングを続けます。このビデオにはいくつかの具体的な目標があります。まず、EA にパネルを追加します。このパネルには、さまざまな条件とそれに対応する売買シグナルが表示されます。また、EA の機能を確認するために追加の入力チェックも実行します。最後に、いくつかのバックテストを実施し、興味深い結果をいくつか紹介します。それでは始めましょう。

先に進む前に、このローソク足パターンのコーディング シリーズの前の部分をまだ見ていない場合は、最初に確認することをお勧めします。説明にリンクがあります。

このビデオでは、EA のグラフィカル パネルを作成することから始めます。パネルにはさまざまな条件を表す線が含まれており、十字は買いシグナルと売りシグナルを示します。条件が満たされると、EA は指定された方向に取引を実行します。さらに、ストラテジー テスターでの最適化を促進するために入力チェックを実装します。

パネルのコーディングを開始するには、MetaEditor を開いてインクルード フォルダーに移動します。 include フォルダー内に、YouTube という名前の新しいフォルダーを作成します。 YouTube フォルダー内に、グラフィカル パネル ファイルを作成します。ファイルのデフォルトの内容をクリアし、パネルに必要なファイルを含めます。

次に、パネルに必要なラベルを定義します。各ラベルは、番号、条件、買い、売りなどの特定の要素を表します。また、条件ごとに複数の行を表示するラベルの配列も作成します。

ラベルを定義したら、Panel クラスのコーディングに進みます。このクラスは CAppDialog クラスを継承し、そのメンバーへのアクセスを許可します。パネルのラベルと、コンストラクター、デストラクター、onInit、update、bannerChartEvent などのいくつかのメソッド用のプライベート セクションを作成します。

コンストラクターはパネルを初期化し、デストラクターはパネルのクリーンアップを処理します。 onInit メソッドは EA の onInit 関数から呼び出され、パネルを作成します。 update メソッドはティックごとに呼び出され、パネルのコンテンツを更新します。最後に、bannerChartEvent メソッドはパネルに関連するイベントを処理します。

createPanel メソッド内で、チャート ID、名前、サブウィンドウ、座標などの必要なパラメーターを使用して実際のパネルを作成します。パネルが正常に作成されたことを確認し、作成された場合は true を返し、そうでない場合は false を返します。

パネル クラスをコーディングしたら、それをエキスパート アドバイザ ファイルに含めます。パネル オブジェクトのインスタンスを作成し、マジック ナンバーを設定した後、その onInit メソッドを呼び出します。パネルの作成が失敗した場合は、適切なエラー メッセージが返されます。

ローソク足パターンのコーディング シリーズのこの部分はこれで終わりです。次のビデオでは、引き続き EA に機能を追加し、さらなるテストを実行します。さらに興味深い結果を期待してください。

Surprising results! Candlestick pattern EA in mql5! | Part 4
Surprising results! Candlestick pattern EA in mql5! | Part 4
  • 2023.03.13
  • www.youtube.com
Today I will show you how to code a candlestick pattern trading bot for Metatrader 5. This is a step by step coding tutorial for mql5. With this EA you can t...
 

MQL5 でカスタム条件をコーディングする



MQL5 でカスタム条件をコーディングする

こんにちは、トビーです。このビデオでは、MQL5 で Expert Advisor 最適化のためのカスタム基準をコーディングする方法を説明します。 Hilo ブラケット EA を例として使用します。目標は、最適化結果をランク付けする際に、利益率と取引数の両方を考慮するカスタム基準を作成することです。

まず、コーディング環境 (Visual Studio Code など) で EA を開き、新しい名前で保存します。次に、「OnTester」という定義済み関数を EA に追加します。この関数はカスタム基準を計算し、その値を返します。 「TestStatistics」関数を使用すると、取引回数とプロフィットファクターを取得できます。これら 2 つの値を乗算してカスタム基準を計算します。

コードをコンパイルして、エラーがないことを確認します。次に、MetaTrader に切り替えて最適化を実行します。 EA を選択し、カスタム条件を使用するための最適な検索条件として「カスタム最大値」を選択します。最適化を開始し、結果を待ちます。カスタム基準が取引数と利益率の積に基づいて計算されていることがわかります。

プロフィットファクターの重みを調整したい場合は、コード内で「MathPower」関数を使用できます。たとえば、利益係数を 4 乗して重みを大きくすることができます。再コンパイルして最適化を再度実行すると、更新されたランキングが表示されます。

さらに、if ステートメントをコードに追加して、100 件未満の取引の組み合わせを除外することができます。取引数が 100 未満の場合は、値 0 を返すことができます。これにより、十分な数の取引が行われた組み合わせのみが考慮されるようになります。

これらの手順に従うことで、Expert Advisor に最適な最適化結果をランク付けして選択するための独自のカスタム基準を作成できます。変更を加える前に、変更した EA を新しい名前で保存してください。このビデオが役に立ったと思われた場合は、「いいね!」を残してください。コメント欄で今後のビデオに関するリクエストやアイデアをお気軽に共有してください。ありがとうございます。また次のビデオでお会いしましょう!

Code a custom criteria in mql5
Code a custom criteria in mql5
  • 2023.03.31
  • www.youtube.com
In this video I show you step by step how to code a custom criteria for the Metatrader 5 strategy tester. With a custom criterion, you can create your own ra...
 

MQL5 の確率的取引ボット! |パート1



MQL5 の確率的取引ボット! |パート1

このビデオでは、MetaTrader 5 で単純な確率的 EA をコーディングする方法を説明します。ビデオの終わりに向かって、過去 10 年間の戦略のパフォーマンスを評価するバックテストも実行します。

まずは一般的な戦略の考え方を理解することから始めましょう。広く知られている確率指標を使用します。 EA は、ストキャスティクスが下位レベルを通過したときに買い取引を実行し、上位レベルを通過したときに売り取引を実行します。チャートを見ている間、私たちの脳は収益性の高い取引に集中する傾向があるため、戦略をコーディングしてバックテストしてその有効性を評価することが重要であることを覚えておくことが重要です。

次に、Visual Studio Code に切り替えて、EA のコーディングを開始しましょう。デフォルトの MetaEditor を使用して YouTube フォルダーに新しいファイルを作成し、「Stochastic EA」という名前を付けます。次に、Visual Studio Code でファイルを開き、読みやすさを向上させるために書式を調整します。

コードをセクションに整理し、インクルードから始めます。 CTrade クラスを含むファイル「trades.mqh」を 1 つだけ含める必要があります。その後、EA の入力を定義します。マジックナンバーやロットサイズなどの入力に関する一般的なセクションがあり、その後にストップロス、テイクプロフィット、反対シグナルでの取引の終了に関する取引セクションが続きます。次に、K 期間と上位レベルを含む、確率的インジケーター専用の入力セクションを用意します。

入力が定義されたら、グローバル変数セクションに進み、確率インジケーターのハンドル、バッファー、現在のティック、取引オブジェクトの変数を宣言します。グローバル変数の後に、onInit 関数を実装します。まず、checkInputs 関数を使用してユーザー入力をチェックします。これにより、入力値が許可された範囲内にあることが確認されます。入力が正しくない場合は、「初期パラメータが正しくありません」が返されます。

次に、ユーザーが指定した入力値を使用して取引オブジェクトのマジック ナンバーを設定します。次に、組み込みの確率関数を使用してインジケーター ハンドルを作成し、シンボル、期間、K 期間、D 期間 (信号線がない場合は 1 に設定)、スロー値、MA メソッド (SMA)、および価格フィールドを指定します。 (低/高)。インジケーター ハンドルの作成が成功したかどうかを確認します。無効なハンドルが返された場合は、警告メッセージが表示され、「初期化に失敗しました」が返されます。最後に、arraySetAsSeries 関数を使用してバッファーを設定し、それが時系列であることを示します。

次に、各入力の有効性を検証する checkInputs 関数を定義します。マジック ナンバーとロット サイズが許容範囲内であるかどうかを確認し、許容範囲内にない場合は false を返します。さらに、ロット サイズが 10 を超えないようにするなど、さらにチェックを追加できます。onInit 関数と checkInputs 関数が完了すると、コードをコンパイルしてビデオの次のステップに進むことができます。

この関数は、いくつかのステップを実行するように設計されています。まず、現在のティックを取得し、グローバル変数「CT」に保存します。次に、「CopyBuffer」関数を使用してインジケーター値を取得します。この関数はエラーをチェックし、成功した場合は値を「メイン」バッファに保存します。エラーがある場合は、メッセージを出力して関数を終了します。

次のステップでは、オープンポジションの数を数えます。これは「CountOpenPositions」関数を使用して行われ、カウントは 2 つの整数変数「CountBuy」と「CountSell」に格納されます。位置のカウントにエラーがある場合は、メッセージが出力され、関数は終了します。

次に、関数は買い取引または売り取引をチェックします。オープンな買いポジションがない場合 (CountBuy がゼロの場合)、インジケーターの値をチェックして、買い取引をオープンする必要があるかどうかを決定します。買い取引を開始するための条件は、現在の指標値が指定された下位レベルを下回っており、以前の指標値が下位レベルを上回っていることです。これらの条件が満たされると、買いポジションのオープンを示すメッセージが表示されます。同様に、この関数はオープンな売りポジションがない場合 (CountSell がゼロの場合)、売り取引をチェックします。売り取引を開始するための条件は、指標値が指定された上限レベルを上回っており、以前の指標値が上限レベルを下回っていることです。これらの条件が満たされると、売りポジションのオープンを示すメッセージが出力されます。

取引ロジックが実装された後、入力パラメーター「ClosedSignal」が true に設定されている場合、関数はすべての売りポジションをクローズします。パラメーター値 2 を指定して「ClosePositions」関数を使用して、すべての売りポジションをクローズします。ポジションを決済する際にエラーが発生した場合、関数は終了してメッセージを出力します。次に、関数は入力パラメーターに基づいてストップロスとテイクプロフィットの値を計算します。入力ストップロス値がゼロの場合、ストップロスはゼロに設定されます。それ以外の場合は、現在のティック価格と入力ストップロス値に基づいて計算されます。テイクプロフィット値の計算にも同じプロセスが続きます。

ポジションをオープンする前に、関数は「NormalizePrice」関数を使用してストップロスとテイクプロフィットの価格を正規化します。正規化でエラーが発生した場合、関数は終了します。最後に、関数は取引オブジェクトの「PositionOpen」メソッドを使用してポジションをオープンします。ポジションはタイプ (買いまたは売り)、量、価格、ストップロス、テイクプロフィットの値に基づいてオープンされます。注文コメントも付いております。

この関数はエラーがないことを確認するためにコンパイルされ、履歴データを使用して MetaTrader でテストし、指定された条件に従って目的の取引の開始と終了が行われるかどうかを確認できます。ポジションをオープンした後、関数は「GetLastError」関数を使用してエラーをチェックします。エラーがある場合は、メッセージを出力して終了します。

最後に、この関数はグローバル変数「LastTick」と「LastSignal」をそれぞれ現在のティックとシグナル タイプ (買いまたは売り) で更新します。これは、最後に処理されたティックを追跡し、将来の計算のために信号を送信するために行われます。

この関数は、現在のティックを取得し、インジケーター値を取得し、オープンポジションの数をカウントし、取引機会をチェックし、指定された条件に基づいてポジションをオープンし、必要に応じて売りポジションをクローズし、ストップロスとテイクプロフィットの値を計算し、価格を正規化し、ポジションをオープンします。 、エラーを処理し、グローバル変数を更新します。

MetaTrader 5 環境でこの関数を使用するには、この関数をエキスパートアドバイザーまたはスクリプトに統合し、取引戦略に従って入力パラメーターとインジケーターの値をカスタマイズする必要があります。さらに、ポジションの管理、エラーの処理、およびその他の取引操作を実行するために、他の関数の実装が必要になる場合があります。

提供される説明は提供される情報に基づく一般的な理解であり、実際の実装は使用される特定の取引プラットフォームやプログラミング言語によって異なる場合があることに注意してください。

Stochastic trading bot in mql5! | Part 1
Stochastic trading bot in mql5! | Part 1
  • 2023.04.13
  • www.youtube.com
Today I will show you how to code a stochastic trading bot for Metatrader 5. In this video we will create a fully working stochastic Expert Advisor for Metat...
 

MetaTrader 5 用の確率的 EA |パート2



MetaTrader 5 用の確率的 EA |パート2

このビデオでは、Toby がホストとして自己紹介し、確率指標を使用して取引戦略を改善するための簡単なフィルターについて話し合うと述べています。 Toby 氏は、このフィルターは確率指標だけでなく他の指標にも適用できると述べています。

Toby は、コーディング チュートリアルの最初の部分で EA (エキスパート アドバイザ) とインジケーターのコア ロジックについて説明したと説明します。この部分では、さまざまなエントリーシグナルとフィルターを追加して戦略を強化する予定です。コーディングに入る前に、Toby は目的を理解することの重要性を強調します。彼らは、インジケーターの下部ゾーンと上部ゾーンからの退出に基づく 2 番目のタイプのエントリーシグナルやシグナルを反転するオプションなど、EA に追加したいコンポーネントについて説明しています。

次に Toby は、MQL5 コーディングに推奨されているエディターである Visual Studio Code に切り替えることを提案します。彼らは、これから取り組むコードは最初の部分で作成した EA であると述べています。コンパイルして正しく動作することを確認した後、コーディングに進みます。

最初のステップは、さまざまなモードの enum (列挙) を使用して信号モードの入力を追加することです。 「シグナルモード」と呼ばれる列挙型を作成し、「出口クロスノーマル」、「入口クロスノーマル」、「出口クロス反転」、「入口クロス反転」などのオプションを指定します。トビーは、各オプションの意味と、それがトレーディング戦略にどのような影響を与えるかを説明します。

列挙型を追加した後、Toby はそれをコードの入力として追加し、デフォルトのオプションを「exit Cross Normal」として割り当てます。また、コードをコンパイルしてエラーがないか確認します。

次に、Toby は、OnTick() 関数のシグナル モードを使用して、新しいシグナルをチェックすることを計画しています。コードを簡素化し、複雑な if ステートメントを避けるために、Toby は信号ロジックを処理する「check signal」と呼ばれる別の関数を作成することにしました。彼らは、この関数は取引を開始すべきかどうかを示すブール値を返すと説明しています。

Toby は「チェックシグナル」関数を作成します。この関数は 2 つのパラメーターを取ります。買いシグナルか売りシグナルをチェックしているかを指定するブールパラメーターと、オープンポジションの数を表す整数パラメーターです。関数とパラメータの目的を説明するコメントを追加します。また、ポジションがすでにオープンしている場合に false を返すチェックも追加します。

次に、Toby は、選択した信号モードに基づいてクロスオーバーをチェックするコードを追加します。 「上部出口クロス」、「上部入口クロス」、「下部出口クロス」、「下部入口クロス」など、各クロスオーバー オプションのブール変数を作成します。確率指標バッファーの値を参照しながら、各クロスオーバー条件の背後にあるロジックを説明します。

クロスオーバー チェックを追加した後、Toby はコードをコンパイルしてエラーがないことを確認します。また、欠落している if ステートメントを追加し、コンパイル エラーを修正します。

「チェックシグナル」関数とクロスオーバーチェックが完了すると、Toby は OnTick() 関数に戻り、買いポジションと売りポジションをチェックするための既存の if ステートメントを「チェックシグナル」関数の呼び出しに置き換えます。彼らは適切なパラメータとオープンポジション数を関数に渡し、取引を開始する前にそれが true を返すかどうかをチェックします。

コードを再度コンパイルした後、Toby は MetaTrader に切り替えて EA のロジックをテストします。 EA を選択し、始値のみモードを選択し、テスト用のビジュアル モードを有効にします。各信号モードの入力パラメータを設定し、ビジュアル テストを実行します。 Toby 氏は、EA が期待どおりに動作することを確認するために、EA を徹底的にテストすることが重要であると説明しています。

Toby は、視覚テストの結果に基づいて、すべての信号モードが正しく動作していると結論付けました。彼らは、チュートリアルの次の部分でフィルターの追加に進むことを提案しています。

現在、信号をチェックするために値「one」と「two」を取得します。ただし、バッファのインデックス 0 から開始するようにこれを変更したいと思います。さらに、チェック信号の 3 つの値を取得する必要があります。チェック・クリア・バー・フィルターがアクティブな場合、追加の値が必要になる場合があります。これらの変更を実装するには、コードを変更する必要があります。

まず、インジケーター値を取得する場所まで上にスクロールしましょう。 「untick」関数の「インジケーター値を取得」という行があるので、いくつかの変更を加える必要があります。最初のパラメータはインジケーターのバッファ番号を表します。インデックス 0 にある主行のみに関心があります。したがって、それは変わりません。ただし、開始位置は現在インデックス 1 に設定されており、2 つの値を取得します。開始位置をインデックス 0 に変更し、少なくとも 3 つの値を取得したいと考えています。そこで、インデックス 0 から開始して 3 つの値 (0、1、2) を取得するようにコードを変更します。

クリアバーのチェックフィルターがアクティブな場合、フィルターをチェックするために追加のインジケーター値を取得する必要があります。 「3」と入力したクリアバーの値を取得する必要があります。たとえば、入力クリアバー値が 5 に設定されている場合、合計 8 つの値が必要になります。したがって、インデックス 0 から必要な値までの値を取得するようにコードを変更します。

これらの変更を行った後、取得した値を「Main」という名前のバッファーに保存する必要があります。さらに、関数が要求された値 (入力クリア バーの値に 3 を加えたもの) の取得に成功したかどうかを確認する必要があります。このチェックを含めるようにコードを変更します。

次に、信号をチェックするコードを更新する必要があります。クロスオーバー チェックのために、インデックス 0 でバッファ Main にアクセスする代わりに、インデックス 1 と 2 でバッファ Main にアクセスする必要があります。インデックス 0 のすべてのインスタンスを 1 に置き換え、インデックス 1 を 2 に置き換えます。

これで正しいインジケーター値が得られたので、for ループに進むことができます。間違いがないようにコードをコンパイルする必要があります。

for ループでは、インデックス 3 から始まるクリア バー フィルターをチェックします。これは、信号クロスオーバー チェック後の位置です。カウンタが 3 プラスクリアバーの値を下回るまで、このループを続けます。たとえば、クリア バーの値が 5 に設定されている場合、カウンターは 8 になります。これは、ループの最後の値であるインデックス 7 までをチェックすることを意味します。このループの目的は、これらのバー内で上部のラインが交差しないようにすることです。これらの変更を反映するためにコードを更新します。

for ループ内で、まず上位レベルをチェックします。バッファ Main[i-1] の値を入力上位レベルと比較します。それが大きく、バッファ Main[i] の値が入力上位レベル以下の場合、クロスオーバーが存在します。また、反対方向の交差については反対の条件もチェックします。それに応じてコードを変更します。

for ループの後に、別の if-else ステートメントを追加します。入力クリアバーの reverse が true の場合、フィルターが反転されたときにクロスオーバーが必要なため、true を返します。それ以外の場合は false を返します。

最後に、下位レベルのチェック用に同様の if-else ステートメントを追加します。既存の if ステートメントをコピーし、下位レベルのチェックに必要な変更を加えます。

これらの変更を加えた後、コードを再度コンパイルして、間違いがないことを確認します。これで、OnTick 関数でチェック クリア バー関数を使用できるようになりました。

OnTick 関数では、シグナルをチェックする if ステートメントにチェック クリア バー関数を追加します。

最適化プロセスを続けましょう。ユーロ/ドル記号と 2019 年から始まる時間枠を選択しました。始値のみと高速の汎用アルゴリズムを使用します。私たちの最適化の目標は、clearbars フィルターに最適なパラメーターを見つけることです。

最適化を開始する前に、最適化するパラメーターを定義しましょう。この場合、フィルターで考慮するバーの数を決定するクリアバーフィルターのルックバック期間を最適化します。 5 ~ 20 の範囲の値を 5 ずつ増分してテストします。さらに、フィルターの上限と下限のレベルのしきい値を最適化し、50 ~ 150 の値を 25 ずつ増分してテストします。

次に、最適化を実行して結果を分析しましょう。純利益、総取引額、プロフィットファクターを見て、各パラメーターの組み合わせのパフォーマンスを評価します。これらの指標に基づいて、最大の利益を生み出す最適なパラメーター値を特定できます。

最適化を実行した後、結果を調べて、最も優れたパフォーマンスを発揮したパラメーター値を特定できます。ルックバック期間が 10、上限レベルのしきい値が 100、下位レベルのしきい値が 75 の場合に、最高の純利益と利益率が得られることがわかります。

最適なパラメーター値を特定したら、それを使用して、より大きなデータセットで戦略をバックテストしたり、実際の取引口座に展開したりできます。

最適化の結果は履歴データに基づいており、将来のパフォーマンスを保証するものではないことに注意してください。戦略のパフォーマンスを継続的に監視および評価し、必要に応じてパラメーターを調整することが重要です。

最適化されたパラメーターを使用すると、戦略をさらに洗練し、他の改善の可能性を探ることができます。戦略の有効性を高めるために、フィルターや条件を追加することを検討できます。

結論として、最適化プロセスは、クリアバー フィルターに最適なパラメーター値を見つけるのに役立ち、戦略のパフォーマンスが向上し、収益性が向上する可能性があります。これは、取引戦略の開発と改良において貴重なツールです。

Stochastic EA for MetaTrader 5 | Part 2
Stochastic EA for MetaTrader 5 | Part 2
  • 2023.05.01
  • www.youtube.com
Today I will show you how to code a stochastic trading bot for Metatrader 5. In this video we will improve our stochastic Expert Advisor for Metatrader 5. We...