METATRADEで、ティックデータを保存するマクロを考えています。
メタトレード側の処理としては、WEBサーバーを仕込んで置き、
クライアントからリクエストが来たら、それをトリガーにして、
ティックデータを排出させるにあたり、
スクリプトとインジケーターの2つを使おうとしています。
プログラム構成としては、WEBサーバーをスクリプトにして無限に走らせておき、
EA側はステータスの状態を、グローバル変数で判断して、リクエストが来ている状態なら、
csvファイルを新規にオープンして、一定時間だけ、ティックを書き出して、クローズしようとしました。
関連記事 https://www.mql5.com/ja/articles/1393
しかしながら、グローバル変数に通貨ペアの情報(USDJPYなど)や、CSVファイル名を
保持しようとしたら、数字データしか保持できないことが分かりました。
スクリプトとEAから、共通で参照できる文字列データを作るには、
やはりテキストデータ(CONFIG.ini)のようなものを作って、read/writeするしかないでしょうか?
mql4
1//+------------------------------------------------------------------+ 2//| test.mq4 | 3//| Copyright 2019, MetaQuotes Software Corp. | 4//| https://www.mql5.com | 5//+------------------------------------------------------------------+ 6#property copyright "Copyright 2019, MetaQuotes Software Corp." 7#property link "https://www.mql5.com" 8#property version "1.00" 9#property strict 10//+------------------------------------------------------------------+ 11//| Script program start function | 12//+------------------------------------------------------------------+ 13void OnStart() 14 { 15//--- 16 string msg = "USD/JPY HIGH 123456789"; 17 18 string str; 19 20 str = StringReplace(msg," ","/"); 21 22 string sep_str[]; 23 int sep_num; 24 25 printf(msg); 26 27 sep_num = StringSplit(msg , '/' , sep_str); 28 29 for ( int icount = 0; icount < sep_num ; icount++ ) { 30 printf("sep_str[%d]:%s",icount,sep_str[icount]); 31 } 32 33 string filename = StringConcatenate(sep_str[0],sep_str[1],sep_str[2]); 34 printf(filename); 35 filename += IntegerToString(TimeYear(sep_str[3])) + IntegerToString(TimeMonth(sep_str[3]), 2, '0') + IntegerToString(TimeDay(sep_str[3]), 2, 0); 36 filename += IntegerToString(TimeHour(sep_str[3]), 2, '0') + IntegerToString(TimeMinute(sep_str[3]), 2, '0') + IntegerToString(TimeSeconds(sep_str[3]), 2, '0'); 37 filename += ".csv"; 38 39 printf(filename); 40 41GlobalVariableSet("REQUEST","on"); 42GlobalVariableSet("SYNBOL",sep_str[0] + "/"+ sep_str[1] ); 43GlobalVariableSet("DATE",sep_str[3]); 44GlobalVariableSet("FILENAME",filename); 45 46 } 47//+------------------------------------------------------------------+ 48
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。