質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
MQL4

MQL4とは、MT4(MetaTrader4)で用いられるプログラム言語です。MT4は無料で使えるチャートソフトあり、MQL4を使うことで分析ツールのオリジナルスクリプトの作成ができます。

Q&A

解決済

1回答

2208閲覧

metatrade でGLOBAL変数に文字列を入れたい

yuujiMotoki

総合スコア90

MQL4

MQL4とは、MT4(MetaTrader4)で用いられるプログラム言語です。MT4は無料で使えるチャートソフトあり、MQL4を使うことで分析ツールのオリジナルスクリプトの作成ができます。

0グッド

0クリップ

投稿2019/09/01 00:14

編集2019/09/01 07:56

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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

かなり時間がたったので解決処理にしました

投稿2020/04/24 13:14

yuujiMotoki

総合スコア90

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問