English Русский 中文 Español Deutsch Português
ファイルの操作。重要な市場イベントの可視化例。

ファイルの操作。重要な市場イベントの可視化例。

MetaTrader 4 | 10 3月 2016, 12:39
950 0
Andrey Opeyda
Andrey Opeyda


各トレーダーは、テクニカル分析(ТА)だけを用いてポジションを開く事は、少し危険だということを知っています。ファンダメンタル分析とテクニカル分析を用いてポジションを開く方が、より適切であるでしょう。多くの場合、テクニカル分析を用いるトレーダーは、起こりうる市場のボラティリティを考慮し、自分のポジションを容認しがたいリスクに晒さない為に、イベントカレンダーを使用しています。もし価格チャートに、その日の全ての主要な取引イベントが表示されたら、とても便利ではないでしょうか。例:


2006年5月15日;9:00; 工業生産MM;日本;3月;3.40%;1.00%;
2006年5月15日;16:30;ニューヨーク連邦準備調査;アメリカ;5月;15.8;15;
2006年5月15日;17:00; 純資本フロー;アメリカ;3月;869億;800億;
2006年5月16日;12:30; HICP Y.Y ;イギリス;4月;1.80%;2.00%;
2006年5月16日;13:00; ZEW 景況感指数;ドイツ;5月;62.7;65;
2006年5月16日;16:00;ウォルマートストアーズ報告書;アメリカ;1四半期;-0.61;-;
2006年5月16日;16:30; PPI M.M ;アメリカ;4月;0.50%;0.70%;
2006年5月16日;16:30; モーゲージとエネルギーを除くPPI MM;アメリカ;4月;0.10%;0.20%;
2006年5月16日;16:30;住宅着工;アメリカ;4月;196万;196万;
2006年5月16日;16:30;建築許可;アメリカ;4月;209万4千;205万;
2006年5月16日;17:15;工業生産MM;アメリカ;4月;0.60%;0.40%;
2006年5月16日;17:15;稼働率;アメリカ;4月;81.30%;81.50%;
2006年5月17日;8:30;工業生産指数MM;日本;3月;0.20%;0.20%;
2006年5月17日;12:30;失業数MM;イギリス;4月;+12,600;+5,000;
2006年5月17日;12:30;英中銀議事録4.05;イギリス;-;-;-;
2006年5月17日;13:00;工業生産MM;ユーロ圏;3月;0.00%;-0.20%;
2006年5月17日;13:00;工業生産Y.Y;ユーロ圏;3月;3.20%;2.80%;
2006年5月17日;13:00; HICP Y.Y ;ユーロ圏;4月;2.40%;2.40%;
2006年5月17日;16:30; CPI M.M;アメリカ;4月;0.40%;0.50%;
2006年5月17日;16:30;モーゲージとエネルギーを除くPPI MM;アメリカ;4月;0.30%;0.20%;
2006年5月18日;12:30;小売売上高MM;イギリス;4月;0.70%;0.20%;
2006年5月18日;12:30;小売売上高MM;イギリス;4月;2.60%;2.60%;
2006年5月18日;16:30;失業保険申請件数;アメリカ;8-14.05;324,000;320,000;
2006年5月18日;17:30;バーナンキ議長の発言;アメリカ;-;-;-;
2006年5月18日;8:00;景気先行指標MM;アメリカ;4月;-0.10%;0.10%;
2006年5月18日;20:00;フィラデルフィア連銀景況指数;アメリカ;5月;13.2;12;
2006年5月19日;1:30;アラン・グリーンスパンの発言;アメリカ;-;-;-;
2006年5月19日;3:50;国内総生産;日本;1四半期;1.30%;0.20%;
2006年5月19日;8:00;中央銀行会合;日本;-;-;-;
2006年5月19日;13:00;取引バランス;ユーロ圏;3月;-45億;-30億;
     

ファイルからのデータの読み取りには、初めにファイルに関連づける必要があります。つまり、ファイルを読むために開きます。MQL4には、この為の演算子があります。

int FileOpen( string filename, int mode, int delimiter=';')

パラメータは次の通りです。ファイル名、タイプ(バイナリFILE_BINまたはセパレーターを持つ文字列FILE_CSV)、アクセス方法(FILE_READの書き込みまたはFILE_WRITEの読み取り)、文字列データ間の区切り文字です。ファイルが正常に開かれた場合は、識別子には一意の値が割り当てられ、そうでない場合にはファイルの識別子には−1の値が割り当てられます。エラーについての情報の詳細には、GetLastError()関数が使用されます。FileName変数は、スクリプトの見出しに配置されました。

#property show_inputs
extern string FileName = "week.txt";
 
…
 
   int handle;
   handle=FileOpen(FileName,FILE_CSV|FILE_READ,';');
   if(handle<1)
    {
     Print("ファイルが見つかりませんでした: ", GetLastError());
     return(false);
    }

こうして私達はファイルに関連づけました。次の段階では、全てのデータの読み取りをします。行を読み取り、それから私達に必要なタイプにそれらを変換します。その後、イベントを表示するフィルターを作成してみましょう。この為に必要な事は、その国のイベントを価格チャートに表示する必要があるかどうかを示すスクリプトの見出しに、変数を配置するだけです。

  while(!FileIsEnding(handle))
   {
    string sDate=FileReadString(handle); // Date
    string sTime=FileReadString(handle); // Time
    string sCountry=FileReadString(handle); // Country
    string sPeriod=FileReadString(handle); // Period
    string sDescription=FileReadString(handle); // Description
    string sPrev=FileReadString(handle); // Prev    
    string sForecast=FileReadString(handle); // Expected        
    string sCurrent=FileReadString(handle); // Current value
    
    FileReadString(handle); // null
    
    
    Print(
      sDate+" "
      ,sTime+" "
      ,sCountry+" "
      ,sPeriod+" "
      ,sDescription+" "
      ,sForecast+" "
      ,sCurrent+" ");
      
    i++;
    datetime dt = StrToTime(sDate+" "+sTime);
    
         color c = Red;
 
         if (sCountry == "日本") c = Yellow;            
         if (sCountry == "アメリカ") c = Brown;         
         if (sCountry == "ドイツ") c = Green;
         if (sCountry == "ユーロ圏") c = Blue;            
         if (sCountry == "イギリス") c = Orange;
         if (sCountry == "カナダ") c = Gray;
         if (sCountry == "オーストラリア") c = DarkViolet;
         if (sCountry == "スウェーデン") c = FireBrick;
         if (sCountry == "南アフリカ共和国") c = DodgerBlue;
         if (sCountry == "デンマーク") c = RosyBrown;
         if (sCountry == "ノルウェー") c = HotPink;
         
 
 
         if ((sCountry == "日本") && (!Japan)) continue;            
         if ((sCountry == "アメリカ") && (!USA)) continue;            
         if ((sCountry == "ドイツ") && (!Germany)) continue;            
         if ((sCountry == "ユーロ圏") && (!ES)) continue;            
         if ((sCountry == "イギリス") && (!GB)) continue;                      
         if ((sCountry == "カナダ") && (!Canada)) continue;                     
         if ((sCountry == "オーストラリア") && (!Australia)) continue;      
         if ((sCountry == "スウェーデン") && (!Shweden)) continue;      
         if ((sCountry == "南アフリカ共和国")&& (!UAR)) continue;      
         if ((sCountry == "デンマーク") && (!Dania)) continue;      
         if ((sCountry == "ノルウェー") && (!Norvegia)) continue;
         
 
            
            
          if (DisplayText)
          {
          ObjectCreate("x"+i, OBJ_TEXT, 0, dt, Close[0]);
          ObjectSet("x"+i, OBJPROP_COLOR, c);          
          ObjectSetText("x"+i, 
            sDescription + " "
            + sCountry + " "
            + sPeriod + " "
            + sCurrent + " "
            + sForecast,
            8);          
          ObjectSet("x"+i, OBJPROP_ANGLE, 90);          
          }
          
                   
          ObjectCreate(sCountry+" "+i, OBJ_VLINE, 0, dt, Close[0]);
          ObjectSet(sCountry+" "+i, OBJPROP_COLOR, c);                    
          ObjectSet(sCountry+" "+i, OBJPROP_STYLE, STYLE_DOT);                    
          ObjectSet(sCountry+" "+i, OBJPROP_BACK, true);          
          ObjectSetText(sCountry+" "+i, 
            sDescription + " · "
            + sPeriod + " · "
            + sCurrent + " · "
            + sForecast,
            8);          
 
   }

これであなたは常に、今後のイベントやそれが市場に与える影響を可視的に見ることができます。スクリプトの既製のコードとデータファイルは記事に添付されています。また、スクリプトはExperts/Scriptsディレクトリにある必要があり、データファイルはExperts/Filesディレクトリにある必要があることにご留意ください。同様に、日付形式(YYYY.MM.DD HH:MM)と区切り文字についてもお忘れなく。スクリプトの動作は以下の図に表されています。









MQL4でのファイルの操作は、幅広い可能性をユーザーに提供し、これはターミナルと外部のデータソースとの繋がりであり、取引ターミナルを使った動作の最適化と簡素化であります。例として、World Wide Webから直接データを受け取ることによる、ログ操作やサポート/レジスタンスレベルの表示があります。つまり、ユーザーはファイルの操作方法を選択する際に制限されないことを意味します。取引におけるエントリーとポジション管理のプロセスの自動化は、トレーダーの心理的ストレスを軽減し、取引に影響を与える多くの要因を分析する可能性を与える必要があります。基本的に、MQL4言語はまさにこの為に設計されています。

ファイル操作の為のMQL4の全ての関数です。詳細はMQL4のマニュアルに記載されています。

FileClose
FileDelete
FileFlush
FileIsEnding
FileIsLineEnding
FileOpen
FileOpenHistory
FileReadArray
FileReadDouble
FileReadInteger
FileReadNumber
FileReadString
FileSeek
FileSize
FileTell
FileWrite
FileWriteArray
FileWriteDouble
FileWriteInteger
FileWriteString

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

添付されたファイル |
week1.txt (2.13 KB)
week.txt (2.46 KB)
ReadFromFile.mq4 (6.2 KB)
MQL5 クックブック: 板情報の実装 MQL5 クックブック: 板情報の実装
この記事では、板情報(DOM)を利用する方法を示します。また、CMarketBookクラスの動作についても説明します。これは、MQL5クラスの標準ライブラリを拡張し、DOMを使用する際の便利な方法となります。
MQL5でのレジスタンス・サポートレベルの描写 MQL5でのレジスタンス・サポートレベルの描写
この記事では、サポートとレジスタンスのレベルを描画するための4つの極点を求める方法を説明します。通貨ペアのチャートの極値を見つけるために、RSIインジケータを使用します。例として、サポートとレジスタンスのレベルを表示するインジケータコードを掲載しています。
МetaТrader 4のイベント МetaТrader 4のイベント
この記事は、注文のオープン、クローズ、変更などのイベントを観測するМetaТrader 4ターミナルのプログラムに着目しており、MQL4でのプログラミングやターミナルを扱う基本的なスキルを持つユーザーを想定して書かれています。
CCanvas Classを使ったメーターの描写 CCanvas Classを使ったメーターの描写
メーターは車や飛行機などの産業や日常生活で見ることができます。これには管理する値を即座に反映する半円を使います。この記事では、 MetaTrader 5用のメーターのライブラリについて説明します。