ファイルの操作。重要な市場イベントの可視化例。
各トレーダーは、テクニカル分析(ТА)だけを用いてポジションを開く事は、少し危険だということを知っています。ファンダメンタル分析とテクニカル分析を用いてポジションを開く方が、より適切であるでしょう。多くの場合、テクニカル分析を用いるトレーダーは、起こりうる市場のボラティリティを考慮し、自分のポジションを容認しがたいリスクに晒さない為に、イベントカレンダーを使用しています。もし価格チャートに、その日の全ての主要な取引イベントが表示されたら、とても便利ではないでしょうか。例:
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
- 無料取引アプリ
- 8千を超えるシグナルをコピー
- 金融ニュースで金融マーケットを探索