無料でロボットをダウンロードする方法を見る
Twitter上で私たちを見つけてください。
私たちのファンページに参加してください
興味深いスクリプト?
それではリンクにそれを投稿してください。-
他の人にそれを評価してもらいます
記事を気に入りましたか?MetaTrader 5ターミナルの中でそれを試してみてください。
エキスパート

多通貨エキスパートアドバイザーとインディケータのための「MCMコントロールパネル」 - MetaTrader 5のためのエキスパート

ビュー:
1740
評価:
(41)
パブリッシュ済み:
2016.04.25 15:40
アップデート済み:
2016.11.22 07:34
このコードに基づいたロボットまたはインジケーターが必要なら、フリーランスでご注文ください フリーランスに移動

内容

MQL5言語の利点の一つは、多通貨のインディケータとエキスパートアドバイザーを使用する可能性です。MQL5コードベース多通貨 OnTickMarketWatchをご覧ください。

スクリプトの中で提案された概念の使用は便利ではありません。例えば、イベントが多数ある場合、イベントキューがあふれ出る場合があります。

下記はMQL5レフェレンスでの注意事項です。

クライアント端末は、イベントキューにイベントを追加します。そこでイベントは、それらが受信された順番に応じて、順番に処理されます。NewTickイベントは例外です。キューに既にそのようなイベントがある、またはこのイベントが処理されている場合は、新しいNewTickイベントが追加されません。

イベントキューのサイズには制限があります。キューがオーバーフローすると、古いイベントは、新規イベントの受信を可能にするために処理されずに除去されます。したがって、効率的なイベントハンドラの記述が推奨され、無限ループの使用は推奨されません(Startイベントを処理するスクリプトのみは例外です)。

また、時には、新しいバーが現れた時だけにインディケータ値の算出を行うことが必要です。他には、複数の銘柄の「オンザフライ」取引を無効にする必要がある場合や、多通貨エキスパートアドバイザーで銘柄や時間枠や何か他のものを変更する必要がある場合があります。

この「何か他のもの」は外部データであるかもしれません。MCM(MultiCurrency Mode、多通貨モード)コントロールパネルはこの考えに基づいています。

ところで、これは単通貨での取引にも利用できます。

「MCM コントロールパネル」(コンテストバージョン)には下記の特徴があります。

これには、エキスパートアドバイザーとインディケータで多通貨モードを使用するために必要な最小限の機能があります。

  • 取引と分析のための銘柄の追加と削除
  • それは、任意の銘柄と期間の「新規ティック」と「新規バー」イベントを追跡することができます。
  • すべての設定は、エキスパートアドバイザーやインディケータを再起動せずに「オンザフライ」で変更することができます。 
  • パネルは、エキスパートアドバイザーとインディケータで使用することができます。
  • また、それはコードに含めることができ、コードと共にロードされます。
  • それは透明です。エキスパートアドバイザーやインディケータにMCMコントロールパネルのコードを追加する必要はありません。

「MCMコントロールパネル」を使うと、自分自身の独自の特徴を追加することができます。詳細は下をご覧ください。

コントロールパネルの設定の保存/復元はこのバージョンではサポートされていません。


MCMコントロールパネルの起動

MCMコントロールパネルの起動の仕方は複数あります。 

  • 「iControl Panel MCM」をチャートに取り付けます。
  • 「scControl パネルMCM」スクリプトを起動します。スクリプトは「iControl Panel MCM」インディケータを読み込みます。
  • エキスパートアドバイザーやインディケータからパネルをロードします。詳細は「exControl パネルMCM」でご覧ください。

3番目の場合、パネルはエキスパートアドバイザーかインディケータとともに読み込まれチャートに取り付けられます。

エキスパートアドバイザーはMCMコントロールパネルイベントを処理するOnChartEvent()イベントハンドラを備えているべきです。

インターフェース

ユーザーインターフェースは、メニューとして実装されていて単純です。メニューのサイズと色は、入力パラメータで構成することができます。

外観は下記のようです。


 

設計

パネルは、多通貨エキスパートアドバイザーとインディケータのイベントを設定するために使用されます。

パネルのサイズと位置は、(入力パラメータで定義された)チャートのサイズとフォントサイズに依存します。ワークスペースを広くするために、パネルは最小化することができます。


 

パネルの大きさは、入力パラメータでのフォントサイズ(デフォルトでは10)を変更することによって変更できます。

 

色はお望みに合わせて設定できます。

例えば、これがピンクのスキームです。


これがEMOスキームです。


 

 

使いやすさ

メニューは直感的で使いやすいです。

「MCMコントロールパネル」には追加的な特徴があります(このバージョンには含まれません)


「チャート」ボタンを使うと現在の銘柄と時間軸を選択して簡単に切り替えられます。


 

いくつかの銘柄では「Events」は(エキスパートアドバイザーの再起動なしで)「オンザフライ」イベントの有効化/無効化と必要なイベントの指定を可能にします。これらのイベントは、エキスパートアドバイザーやインディケータのOnChartEvent()関数内で処理することができます。シンボルメニューは「気配値表示」で選択された銘柄のみを含みます。任意のイベントの組み合わせが可能で、それらは全部処理されます。

例えば、時間枠に銘柄の新しいティック/バーが表示されるのを心配する必要はありませんが、パネルエンジンはイベントを送信します。


  

これが「ヘルプ」です。


 

ノウハウとその実装

私の解決法は多通貨OnTickMarketWatchティックイベントハンドラで公表されていますが、パネルにはいくつかの追加的な機能があります。

  • 「MCMコントロールパネルMCM」は直接クライアント端末に実装されていインターフェースを提供します。OnChartEvent() イベントハンドラを経由した多通貨モードの使用が可能です。その他の機能は、「オンザフライ」の設定を変更する可能性です。
  • OnChartEvent()イベントハンドラのイベントを生成するために、MCMコントロールパネルは独自の「エージェント」(MCMコントロールパネルによって起動された銘柄インディケータ)を使用し多通貨取引イベントを提供します。
  • パネルは、エキスパートアドバイザーやインディケータに含むことができます。
  • MCMコントロールパネルはMQL5開発者に可能性を開きます。
  • 私見ですが、パネルはエキスパートアドバイザーとインディケータの新たな構造の一例です。後にいくつかの例をお見せします。

イベントとアラートの情報

パネルにはイベントを表示するステータスバーがあります。


MCMコントロールパネルのインストール

クライアント端末のフォルダにアーカイブファイルmcm_control_panel.zipを展開します。その後次のファイルが表示されます。

  • /mql5/experts/exControl panel MCM.mq5 - エキスパートアドバイザーの例
  • /mql5/scripts/scControl panel MCM.mq5  - スクリプトの例
  • /mql5/indicators/iControl panel MCM.mq5 - インディケータ、メインな「MCMコントロールパネル」エンジン
  • /mql5/indicators/Spy Control panel MCM.mq5 - インディケータ、「MCMコントロールパネル」エージェント
  • /mql5/include/Control panel MCM.mqh - 「MCMコントロールパネル」クラスと関数のセット

次にインディケータ、スクリプトとエキスパートアドバイザをコンパイルします。


MCMコントロールパネルの起動

MCMコントロールパネルの起動は iControl panel MCM.mq5 インディケータをチャートに取り付けます。

パネルは「exControl panel MCM」エキスパートアドバイザーをチャートに取り付けることによって、エキスパートアドバイザーから起動できます。


 

多通貨の例として、マルチトレンドエキスパートアドバイザーを書きました。インディケータは、4通貨ペアの分析に基づいて、米ドルのトレンドをプロットします。

下記がコードです。

//+------------------------------------------------------------------+ 
//|                                                   MultiTrend.mq5 | 
//|                                            Copyright 2010, Lizar | 
//|                            https://www.mql5.com/ru/users/Lizar | 
//+------------------------------------------------------------------+ 
#define VERSION       "1.00 Build 2 (09 Dec 2010)" 
#property copyright   "Copyright 2010, Lizar"
#property link        "https://www.mql5.com/ru/users/Lizar"
#property version     VERSION
#property description "This Expert Advisor uses the MCM Control Panel"
input color bg_color=Gray;        // メニューの色 
input color font_color=Gainsboro; // テキストの色 
input color select_color=Yellow// 選択されたテキストの色 
input int font_size=10;          // フォントサイズ
#include <Control panel MCM.mqh> //<--- インクルードファイル
//+------------------------------------------------------------------+ 
//| エキスパート初期化関数                                   | 
//+------------------------------------------------------------------+ 
int OnInit()
  {    //--- MCMコントロールパネル初期化
//--- 色を設定する必要でない。指定されていない場合、デフォルトの色が使用される。      
   InitControlPanelMCM(bg_color,font_color,select_color,font_size);
//---    
  return(0);   
  } 
//+------------------------------------------------------------------+ 
//| エキスパート初期化解除関数                                 | 
//+------------------------------------------------------------------+ 
void OnDeinit(const int reason)
  {
   DeinitControlPanelMCM();   //<--- MCMコントロールパネル初期化解除
  }
//+------------------------------------------------------------------+ 
//| OnChartEventイベントハンドラ| 
//| 詳細はMQL5リフェレンスで| 
//| 多通貨取引のためにMCMコントロールパネルと使用できる    | 
//+------------------------------------------------------------------+ 
void OnChartEvent(const int id, //イベントト識別子                                    
                  // id-CHARTEVENT_CUSTOM==0の場合 - 初期化イベント(prev_calculated==0)
                  // id-CHARTEVENT_CUSTOM!=0 - 「気配値」表示ウィンドウの銘柄インデックス   
                  const long&   lparam, // 時間枠 
                  const double& dparam, // 価格 
                  const string& sparam  // 銘柄
                  )
  {
   if(id>=CHARTEVENT_CUSTOM)
     {
      Print(TimeToString(TimeCurrent(),TIME_SECONDS)," -> id=", id-CHARTEVENT_CUSTOM,
                         ":  ",sparam," ",EventDescription(lparam)," price=",dparam);
     }
  }
//+------------------------------------------------------------------+ 

OnChartEvent()パラメータ

コントロールパネルはカスタムイベントを生成します。これらのイベントはOnChartEvent()イベントハンドラを使用してエキスパートアドバイザーまたはインディケータで処理することができます。

入力パラメータ:

  • id - イベント識別子:
          id-CHARTEVENT_CUSTOM !=0 - 「気配値表示」ウィンドウの銘柄インデックスと等しい
  • lparam  -  イベントフラグControl panel MCM.mqhのENUM_CHART_EVENT_SYMBOL列挙をご参照ください。
  • dparam -  時間枠での新しいバーのティック価格や始値
  • sparam -  銘柄名

MCMコントロールパネルでサポートされたイベントのリスト

lparamパラメータを使用して、コントロールパネルは銘柄の64の異なるカスタムイベントを送信することができます。このバージョンでは下記のイベントがサポートされています。 

  • 「初期化」イベント(初期化)
  • 「新規ティック」イベント(tick)
  • M1チャートの「新規バー」イベント (M1)
  • M2チャートの「新規バー」イベント(M2)
  • M3チャートの「新規バー」イベント(M3)
  • M4チャートの「新規バー」イベント(M4)
  • M5チャートの「新規バー」イベント(M5)
  • M6チャートの「新規バー」イベント(M6)
  • M10チャートの「新規バー」イベント(M10)
  • M12チャートの「新規バー」イベント(M12)
  • M15チャートの「新規バー」イベント(M15)
  • M20チャートの「新規バー」イベント(M20)
  • M30チャートの「新規バー」イベント(M30)
  • H1チャートの「新規バー」イベントH1(H1)
  • H2チャートの「新規バー」イベント(H2)
  • H3チャートの「新規バー」イベント (H3)
  • H4チャートの「新規バー」イベント(H4)
  • H6チャートの「新規バー」イベント (H6)
  • H8チャートの「新規バー」イベント(H8)
  • H12チャートの「新規バー」イベント (H12)
  • 日チャートの「新規バー」イベント (D1)
  • 週チャートの「新規バー」イベント(W1)
  • 月チャートの「新規バー」イベント (MN1) 

EventDescription() から返されたイベント記述はブラケットの中に示されます(初期化、ティック、Mxx など)。EventDescription関数は Control panel MCM.mqh で見つかります(ENUM_CHART_EVENT_SYMBOL 列挙の後で)

prev_calculated=0の時に生成される「初期化」イベントはデータの準備に使用できます。例として、インディケータの値が計算できます。


設定イベント

必要に応じてイベントを設定するには、「イベント」ボタンをクリックして銘柄とイベントの種類を選択します。 選択されたイベントは黄色(またはインディケータの入力パラメータで選択した色)で示されています。1つまたは複数のイベントの選択が可能で、それらのすべては、多通貨エキスパートアドバイザーで処理することができます。 変更を適用するには、「イベントを有効/無効にする」ボタンをクリックします。

同じ行程は、すべての必要な銘柄のために行うことができます。


 

下記は「エキスパート」タブからのログです。 


 

MetaQuotes Ltdによってロシア語から翻訳されました。
元のコード: https://www.mql5.com/ru/code/215

20/200 pips - シンプルな収益性の高いエキスパートアドバイザー 20/200 pips - シンプルな収益性の高いエキスパートアドバイザー

これは、単純なコードや取引のルールを備えています。マーチンゲールMMストラテジーは使用されていません。

CIniFileクラス CIniFileクラス

このクラスは、* Windowsに.iniファイルを操作するための方法を提供します。

FAT PANEL FAT PANEL

「MQL5のベストグラフィックパネル」コンテストのためのパネルのデザイン このグラフィックパネルは手動取引を自動化することができます。このパネルは、トレーディングストラテジーの視覚的な建設を含む多くの機能を持っています。

eInTradePanel eInTradePanel

eInTradePanelは手動取引のパネルで、いくつかの便利な機能を用意しています。チャート上の最小のスペースを必要とします。