システムトレード

MA on Momentumを活用したMT5用EAの最適化ガイド
MetaTrader5
MA on Momentumを活用したMT5用EAの最適化ガイド

アドバイザーのアイデア このEAは、カスタムインジケーター「MA on Momentum」のシグナルに基づいて取引を行います。シグナルは、インジケーターの2本のラインの交差によって発生します。具体的には、'BUY'ポジションをオープンするシグナルは、交差がレベル '100' よりも下で発生した場合のみ有効であり、'SELL'ポジションをオープンするシグナルは、交差がレベル '100' よりも上で発生した場合のみ有効です。 注意:'テイクプロフィット'はポイントで(1.00055-1.00045=10ポイント)、'ストップロス'は金額で設定します。 ポジションは、設定されたポイントでテイクプロフィットレベルに到達するか、金額でストップロスレベルに到達することでクローズされます。EAにはトレーリングはありません。 エキスパートアドバイザーの最適化方法 初期最適化には、以下のパラメーターを使用することをお勧めします。 画像:1. MA on Momentum Min Profit 特異性: このEAは、作業時間枠('作業時間枠')に最適化できます。 バーごとに1つの「エントリー」取引しか行われない(内部パラメーターで、入力パラメーターには含まれず、'ポジションは1つのみ'パラメーターとは関係ありません)。 'インサイドバー'モードで動作する場合(パラメーター'シグナルを探す...'が'バー #0 (各ティックで)'に設定されているとき、現在のバーがバー #0になります。新しいバーの誕生時にのみ動作するモードでは'バー #1 (新しいバーで)'となります)。 各パラメーターグループについて詳しく見ていきましょう。 取引設定: '作業時間枠' - 取引に使用する時間枠。インジケーターが作成される時間枠であり、新しいバーを検索します。ストップロス、テイクプロフィット、トレーリングは、ポイントで設定されます。任意のパラメーター('ストップロス'、'テイクプロフィット'、'トレーリングストップ')は無効にできます - 選択したパラメーターを'0.0'に設定します。トレーリングがどのように機能するかは、トレーリングストップコードの画像で確認できます。 ポジションサイズ管理(ロット計算) ロットは、固定('マネーマネジメント'を'固定ロット'に設定し、ロットサイズを'マネーマネジメントの値'に設定)または動的(取引ごとのリスクのパーセンテージを設定)で管理できます。定数ロットを最小ロットに設定することも可能です - 'マネーマネジメント'を'ロット最小'に設定します。 追加機能: 'ポジション:1つのみ'のフラグが'true'に設定されている場合、EAは市場に1つのポジションしか持てません。 警告:'ポジション:1つのみ'は'true'に設定されている場合、'ポジション:逆転'を無効にすることはできません。逆ポジションは、オープンする前に必ずクローズされます。 'ポジション:逆転'フラグはシグナルの反転を担当します。'ポジション:逆位置をクローズ'は'true'に設定すると、ポジションをオープンする前に必ず逆ポジションを削除します。'ログを出力'は、すべての操作の拡張ログを出力します。'フリーズとストップレベル係数'パラメーターは、シンボルのストップとフリーズレベルがゼロである場合の係数を設定します。推奨値は'3'です。

2022.04.28
新しいバーやキャンドルの開始を検出する方法 - MetaTrader 4用の実用的なコード
MetaTrader4
新しいバーやキャンドルの開始を検出する方法 - MetaTrader 4用の実用的なコード

トレーダーの皆さん、こんにちは!今日は、MetaTrader 4で新しいバーやキャンドルの開始を検出する方法についてお話ししましょう。特に、エキスパートアドバイザー(EA)を使用している方には役立つ内容です。 通常、MetaTraderのターミナルでは、新しいティックの価格が到着すると、デフォルトのイベント処理関数であるOnTick()が呼び出されます。しかし、残念ながら、新しいバーが開始またはオープンした時のデフォルトのイベント処理関数は存在しません。 そこで、新しいバーの開始を検出するためには、現在の最も最近のバーのオープン時間を監視する必要があります。オープン時間が変わった時、それが新しいバーの開始を示します。以下に、MQL4とMQL5の両方に対応したサンプルコードを示します。 // デフォルトのティックイベントハンドラ    void OnTick()    {       // 新しいバーのチェック(MQL4とMQL5両方に対応)          static datetime dtBarCurrent  = WRONG_VALUE;                 datetime dtBarPrevious = dtBarCurrent;                          dtBarCurrent  = iTime( _Symbol, _Period, 0 );                 bool     bNewBarEvent  = ( dtBarCurrent != dtBarPrevious );       // 新しいバーのイベントに反応して処理を行う          if( bNewBarEvent )          {             // 最初のティックを受信したかどうかを検出し、処理を行う                /* 例えば、チャートに最初に添付されたとき、バーが進行中で、実際には新しいバーの開始ではない場合。 */                if( dtBarPrevious == WRONG_VALUE )                {                   // 最初のティックまたはバーの途中で何かをする ...                }                else                {                   // 通常のバーの開始時に何かをする ...                };             // 上記の条件に関わらず、何かをする ...          }          else          {             // 他の処理を行う ...          };       // その他の処理 ...    }; このコードでは、static変数を使用して、バーのオープン時間を記録します。関数を抜ける際にもデータを保持し、現在のバーのオープン時間の変化を検出するための重要な要素です。 また、EAが初めてチャートに配置されたとき、このコードは新しいバーが開いたかのように反応します。この場合は、特別な処理が必要になりますので注意が必要です。 最後に、私のCodeBaseの出版物のソースコードは、現在MetaEditorの「Public Projects」タブでも入手可能です。ぜひ、探してみてください!

2022.04.24
新しいバーやキャンドルの開始を検出する方法 - MetaTrader 5用のシステムトレーディング
MetaTrader5
新しいバーやキャンドルの開始を検出する方法 - MetaTrader 5用のシステムトレーディング

システムトレーディング(EA)を使うと、新しいティックが到着した際に、MetaTraderターミナルはデフォルトのOnTick()イベント処理関数を呼び出します。しかし、新しいバー(キャンドル)が開始する際のデフォルトのイベント処理関数は存在しません。 これを検出するには、現在の最新のバーのオープニングタイムを監視する必要があります。オープニングタイムが変わると、それは新しいバーの開始を示し、ここで何らかのアクションを取ることができます。以下のサンプルコードは、MQL4とMQL5の両方に対応した方法を示しています: // デフォルトのティックイベントハンドラー    void OnTick()    {       // 新しいバーをチェックします(MQL4およびMQL5に対応)。          static datetime dtBarCurrent  = WRONG_VALUE;                 datetime dtBarPrevious = dtBarCurrent;                          dtBarCurrent  = iTime( _Symbol, _Period, 0 );                 bool     bNewBarEvent  = ( dtBarCurrent != dtBarPrevious );       // 新しいバーイベントに反応して処理します。          if( bNewBarEvent )          {             // 最初のティックが受信されたかどうかを検出し、処理します。                /* 例えば、チャートに最初にアタッチされた際にバーが進行中で、実際には新しいバーの開始ではない場合。 */                if( dtBarPrevious == WRONG_VALUE )                {                   // 最初のティックやバーの途中で何かを行う ...                }                else                {                   // 通常のバーが開始したときに何かを行う ...                };             // 上記の条件に関わらず何かを行う ...          }          else          {             // それ以外の処理を行う ...          };       // その他の処理を行う ...    }; 上記のコードでは、static変数がバーのオープニングタイムを記録し、OnTick()関数から戻ってもそのデータを保持します。通常のローカル変数とは異なり、データ内容を記憶し、関数を離れるときに解放されません。これが、現在のバーのオープニングタイムの変化を検出するための鍵となります。 また、EAが最初にチャートに配置されたとき、上記のコードはバーがちょうど開いたかのように反応します。この条件は、状況に応じて特別な処理が必要です。すべての私のCodeBaseの公開ソースコードは、今やMetaEditorの「Public Projects」タブで「FMIC」という名前で入手可能です。

2022.04.24
DeMarkerインジケーターを活用したポジション戦略 - MetaTrader 5用EAの活用法
MetaTrader5
DeMarkerインジケーターを活用したポジション戦略 - MetaTrader 5用EAの活用法

トレーディング戦略 このエキスパートアドバイザーの主なアイデアは、'DeMarker'インジケーターが'DeM: Level DOWN'レベル未満のときに'BUY'ポジションを開き、'DeMarker'インジケーターが'DeM: Level UP'レベルを超えたときに'SELL'ポジションを開くことができるかということです。デフォルトでは、'Positions: Only one'パラメーターが'false'に設定されているため、EAは「市場にすでにポジションがある場合でも新しいポジションを開く」モードで動作します。 新しいポジションは新しいバーが生まれる瞬間に開かれ、オープニングプライスが最良かどうかのチェックは行われません。 このエキスパートアドバイザーにはストップロスやテイクプロフィット、トレーリングは設定されておらず、ポジションは逆のシグナルに従って閉じられ、ポジションを閉じた後に利益がゼロ以上である必要があります。 図1. DeMarkerによるポジションボリュームの増加 すべてのシンボルのテスト例 図2. 設定 図3. 入力 図4. 結果 ここから各パラメーターグループについて詳しく見ていきましょう: トレーディング設定: '作業時間枠' - 作業に使用する時間枠。インジケーターが作成され、新しいバーが探される時間枠です。 ポジションサイズ管理(ロット計算) ロットは、常に固定のもの('マネーマネジメント'を'固定ロット'に設定し、ロットサイズを'マネーマネジメントの値'に設定)や、トレードごとのリスクパーセントに基づく動的なもの('マネーマネジメント'を'取引ごとのリスクパーセント'に設定し、'マネーマネジメントの値'にリスクパーセントを設定)があります。また、最小ロットと等しい固定ロットを設定することも可能です - 'マネーマネジメント'を'ロット最小'に設定します。 追加機能: フラグ'Positions: Only one'を'true'に設定すると、市場に1つのポジションしか持てません。フラグ'Positions: Reverse'はシグナルの反転を担当しています。'Print log'はすべての操作の詳細なログを印刷します。

2022.04.21
PriceChannel_Signal_v2 EA - MetaTrader 5用のトレード支援ツール
MetaTrader5
PriceChannel_Signal_v2 EA - MetaTrader 5用のトレード支援ツール

トレーディング戦略 カスタムインジケーター「PriceChannel_Signal_v2」(こちらから取得しました)は、いくつかのシグナルを生成します。具体的には、「BUY」ポジションを開くための2種類のシグナル、「SELL」ポジションを開くための2種類のシグナル、そして「BUY」と「SELL」をクローズするためのそれぞれ1つのシグナルです。なお、ストップロスやテイクプロフィット、トレーリングは設定されていません。 ポジションを開く例: 画像. 1. PriceChannel_Signal_v2 EA 特長: このEAは、作業時間枠(Working timeframe)に最適化できます。 1バーチャートあたり市場への「エントリー」取引は1件のみです。 「インサイドバー」モードで動作する場合(パラメータSearch signals on ...が「bar #0 (全ティックで)」に設定されているとき)、現在のバーはbar #0です。「新しいバーが生まれる瞬間のみ」のモードで動作する場合(パラメータSearch signals on ...が「bar #1 (新しいバーで)」に設定されているとき)、現在のバーはbar #1になります。 それでは、各パラメータグループについて詳しく見ていきましょう。 トレーディング設定: 「Working timeframe」は、インジケーターが作成される時間枠であり、新しいバーを探す時間枠です。 ポジションサイズ管理(ロット計算) ロットは、恒常的なもの(「Money management」を「Constant lot」に設定し、ロットサイズを「Money managementの値」に設定)や、取引ごとのリスクパーセンテージに基づく動的なもの(「Money management」を「Risk in percent for a deal」に設定し、「Money managementの値」にリスク割合を設定)があります。また、最小ロットに等しい一定のロットも設定できます。「Money management」を「Lots Min」に設定することで実現できます。 追加機能: フラグ「Positions: Only one」を「true」に設定すると、EAは市場に1つのポジションしか持てなくなります。「Print log」はすべての操作の詳細なログを印刷します。

2022.04.16
CHO Smoothed EAの使い方と特徴 - MetaTrader 5トレーディング向け
MetaTrader5
CHO Smoothed EAの使い方と特徴 - MetaTrader 5トレーディング向け

トレーディング戦略 CHO Smoothed EAは、カスタムインジケーター「CHO Smoothed」を使用しています。このインジケーターは、iCHOライン(チャイキンオシレーター、CHO)と移動平均で平滑化されたiCHOラインの2本のラインから構成されています。指定された時間足でインジケーターが作成され、新しいバーの誕生の瞬間を判断するためにも同じ時間足が使用されます(パラメータ「Trailing on ...」や「Search signals on ...」が必要な場合)。設定では、より厳格なシグナルを設定することができ、「Use ZeroLevel」パラメータを「true」にすることで、それが可能になります。 トレーディングシグナル: シグナルは、インジケーターの2本のラインの交差によって生成されます。厳格モードに設定されている場合(「Use ZeroLevel」パラメータが「true」に設定されていると)、'BUY'オープンシグナルはゼロ以下でのみ、'SELL'オープンシグナルはゼロ以上でのみ発生します。 画像1. CHO Smoothed EA 特徴: EAは、作業時間足(「Working timeframe」)に最適化できます。 バーごとに「エントリー市場」取引は1回のみ可能です(これは内部パラメータであり、入力パラメータには含まれていません)。 「インサイドバー」モードで動作する際(パラメータ「Search signals on ...」が「bar #0 (at every tick)」に設定されている場合)、現在のバーはバー#0ですが、「新しいバーの誕生の瞬間のみ」モードで動作する場合(パラメータ「Search signals on ...」が「bar #1 (on a new bar)」に設定されている場合)、現在のバーはバー#1です。 「トレードモードパラメータ」は、取引方向の制限を設定します。値としては「BUYポジションのみ許可」、「SELLポジションのみ許可」、「BUYおよびSELLポジションを許可」のいずれかを取ります。 「時間管理を使用」パラメータは、取引シグナルを検索するための時間間隔を設定します。これは「開始時間」と「終了時間」で設定できます。日をまたぐ時間範囲も設定可能です。 次に、各パラメータグループについて詳しく説明します: トレーディング設定: 「Working timeframe」は作業時間足で、インジケーターが作成され、新しいバーが検索される時間足です。ストップロス、テイクプロフィット、トレーリングはポイントで設定されます。任意のパラメータ(「Stop Loss」、「Take Profit」、「Trailing Stop」)は無効にすることができ、その場合は選択したパラメータを「0.0」に設定します。トレーリングの動作については、TrailingStopコードの画像で確認できます。 ポジションサイズ管理(ロット計算): ロットは、恒久的なもの(「資金管理」を「定数ロット」に設定し、ロットサイズを「資金管理の値」に設定)と、取引ごとのリスクパーセントで動的なもの(「資金管理」を「取引のリスクをパーセントで」に設定し、リスクパーセントを「資金管理の値」に設定)があります。最低ロットと等しい定数ロットを設定することも可能です。 時間管理: このセクションでは、取引シグナルを検索するための時間範囲を設定します。「Use time control」を有効にすると、シグナル検索の時間間隔を「開始時間」と「終了時間」で設定できます。日をまたぐ時間範囲も設定可能で、トレーリングには影響しません。 追加機能: フラグ「ポジション: 一つのみ」を「true」に設定すると、EAは市場に1つのポジションしか持てなくなります。 警告: 「ポジション: 一つのみ」を「true」に設定しても、「ポジション: 逆転」を「true」に設定したものは上書きされません!つまり、反対のポジションは最初にクローズされます。 フラグ「ポジション: 逆転」はシグナルの逆転を制御します。「ポジション: 反対を閉じる」というフラグは、「true」に設定されている場合、ポジションを開く前に反対のポジションを必ず削除します。「プリントログ」は、すべての操作の拡張ログを出力します。「Freeze and StopsLevels Coefficient」パラメータは、シンボルのストップとフリーズレベルがゼロの場合の係数を設定します。推奨値は「3」です。

2022.04.13
MT4でバイナリーオプションのシンボルをチェックする方法
MetaTrader4
MT4でバイナリーオプションのシンボルをチェックする方法

皆さん、こんにちは!今日は、MetaTrader 4(MT4)でのバイナリーオプションのシンボルについてお話ししましょう。 MT4のマーケットウォッチには、いくつかのシンボルが表示されています。その中には、バイナリーオプションも含まれていることがあります。 しかし、異なるブローカーによってバイナリーオプションのシンボルの表記方法はさまざまです。 例えば、 あるブローカーでは、シンボル名の末尾に「.bo」が付くことがあります。 別のブローカーでは、シンボル名に「_OP」が使用されることがあります。 さらに、他のブローカーは全く異なる方法を使うこともあります。 このように、シンボルがバイナリーオプションかどうかを確認するのは、少し混乱することがありますよね。 そこで、私たちが使っているコードを紹介します。このコードでは、MODE_PROFITCALCMODEを使用して、シンボルがバイナリーオプションか否かを判定します。 この方法は、バイナリーオプションのシンボルを見つけるための非常に確実な手段です。 コードは、マーケットウォッチ内のすべてのシンボルを繰り返し処理し、バイナリーオプションのシンボルを特定します。

2021.12.17
最初 前へ 8 9 10 11 12 13 14 15 16 17 18 次へ 最後