質問編集履歴
5
誤字の修正
test
CHANGED
File without changes
|
test
CHANGED
File without changes
|
4
誤字の修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -58,7 +58,9 @@
|
|
58
58
|
|
59
59
|
|
60
60
|
|
61
|
-
②書き出し側のファイル(WriteGlobalParamaeters.mq4)については問題のクラスにおけるSave(HANDLE)を用いずに、MQL組み込み関数であるGlobalVariablesTotal(),GlobalVariableName(),GlobalVariableGet(),GlobalVariableTime()を用いてそれら情報をWrite
|
61
|
+
②書き出し側のファイル(WriteGlobalParamaeters.mq4)については問題のクラスにおけるSave(HANDLE)を用いずに、MQL組み込み関数であるGlobalVariablesTotal(),GlobalVariableName(),GlobalVariableGet(),GlobalVariableTime()を用いてそれら情報をFileWrite()関数にて書き込む(↓)
|
62
|
+
|
63
|
+
```MQL4
|
62
64
|
|
63
65
|
for(int i=GlobalVariablesTotal()-1; i>=0; i--){
|
64
66
|
|
@@ -70,9 +72,11 @@
|
|
70
72
|
|
71
73
|
datetime gTime=GlobalVariableTime(gName);
|
72
74
|
|
73
|
-
|
75
|
+
FileWrite(hFile,gName,gValue,gTime);
|
76
|
+
|
74
|
-
|
77
|
+
}
|
78
|
+
|
75
|
-
|
79
|
+
```により変数のリストを指定ディレクトリ内のtxtファイルへ書き出すことが可能であった。
|
76
80
|
|
77
81
|
しかしながら上記GlobalVariable関数群を用いた場合には書き出しは可能であっても読み込み&Terminalのグローバル変数リストへの追加できないため頓挫している。
|
78
82
|
|
3
誤字・文法の修正
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
MT4/MT5においてGlobal変数/大域変数の書き出し・読み込みを行いたい(Class使用・外部txtファイル操作)
|
test
CHANGED
@@ -14,33 +14,33 @@
|
|
14
14
|
|
15
15
|
②条件:
|
16
16
|
|
17
|
-
WindowsAPI(HANDLE CreateFileW)やMQL独自の組み込み関数(FileOpen()やFileWrite())等ではなく、
|
18
|
-
|
19
17
|
下記参照ページに記載されているCGlobalVar.mqh並びにCGlobalVarList.mqhクラスを用いて実現したい。
|
20
18
|
|
21
|
-
(具体的にはCGLobalVarListクラスのSave()/Load()の両メソッド)
|
19
|
+
(具体的にはCGLobalVarListクラスのSave()/Load()の両メソッドを利用してGlobal変数の書き出し・読み込みを実行する)
|
20
|
+
|
21
|
+
基本的にはWindowsAPI(HANDLE CeateFileW()等)は使用しない。
|
22
22
|
|
23
23
|
|
24
24
|
|
25
25
|
③操作ファイル格納場所:
|
26
26
|
|
27
|
-
書き出し先のファイルは
|
27
|
+
書き出し先のファイル位置は本クラスの仕様に従い、デフォルトである
|
28
|
-
|
28
|
+
|
29
|
-
|
29
|
+
/Files
|
30
|
-
|
30
|
+
|
31
|
-
|
31
|
+
もしくは
|
32
|
-
|
32
|
+
|
33
|
-
FILE_COMMON指定
|
33
|
+
FileOpen()の引数としてFILE_COMMONを指定した際に保管される
|
34
34
|
|
35
35
|
C:\User\User-Name\AppData\Roaming\MetaQuotes\Terminal\Common\Files\File
|
36
36
|
|
37
|
-
とする。
|
37
|
+
のいずれかとする。
|
38
38
|
|
39
39
|
|
40
40
|
|
41
41
|
④作成したファイル:
|
42
42
|
|
43
|
-
|
43
|
+
実験用サンプルとして2つのシンプルなScriptファイル
|
44
44
|
|
45
45
|
WriteGlobalParameters.mq4
|
46
46
|
|
@@ -54,17 +54,15 @@
|
|
54
54
|
|
55
55
|
※備考
|
56
56
|
|
57
|
-
①別Terminalと変数を共有する
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
string gName=GlobalVariableNamr(i);
|
57
|
+
①別TerminalとGlobal変数を共有するだけが目的であれば共有メモリを使用する等の方法も考えられるが、今回はあくまでも外部のtxtファイルを使用する方法に限定して考える。
|
58
|
+
|
59
|
+
|
60
|
+
|
61
|
+
②書き出し側のファイル(WriteGlobalParamaeters.mq4)については問題のクラスにおけるSave(HANDLE)を用いずに、MQL組み込み関数であるGlobalVariablesTotal(),GlobalVariableName(),GlobalVariableGet(),GlobalVariableTime()を用いてそれら情報をWriteFile()関数にて書き込む(↓)
|
62
|
+
|
63
|
+
for(int i=GlobalVariablesTotal()-1; i>=0; i--){
|
64
|
+
|
65
|
+
string gName=GlobalVariableName(i);
|
68
66
|
|
69
67
|
if(this.CheckGlobalVar(gName))continue;
|
70
68
|
|
@@ -74,7 +72,9 @@
|
|
74
72
|
|
75
73
|
WriteFile(hFile,gName,gValue,gTime);
|
76
74
|
|
75
|
+
}により変数のリストを指定ディレクトリ内のtxtファイルへ書き出すことが可能であった。
|
76
|
+
|
77
|
-
|
77
|
+
しかしながら上記GlobalVariable関数群を用いた場合には書き出しは可能であっても読み込み&Terminalのグローバル変数リストへの追加できないため頓挫している。
|
78
78
|
|
79
79
|
|
80
80
|
|
@@ -98,9 +98,11 @@
|
|
98
98
|
|
99
99
|
|
100
100
|
|
101
|
+
※以上のエラーメッセージから
|
102
|
+
|
101
|
-
|
103
|
+
ポインタ指定の不備・ファイル操作の不備により意図した操作が行われていないことが分かるが、
|
102
|
-
|
104
|
+
|
103
|
-
以下のコードの何処に問題があるのか不明なのでその点についてご教授いただ
|
105
|
+
以下のコードの何処に問題があるのか不明なので、その点についてご教授いただけたらと存じます(uninit reason 0についても同様)
|
104
106
|
|
105
107
|
|
106
108
|
|
@@ -446,9 +448,9 @@
|
|
446
448
|
|
447
449
|
### 試したこと
|
448
450
|
|
449
|
-
⓪MT4を起動
|
450
|
-
|
451
|
-
|
451
|
+
⓪MT4を起動しTerminal上のGlobal変数リストに任意の名前と数値(ココでは簡単に0.0ないしは1.0)を登録した。
|
452
|
+
|
453
|
+
(時刻は登録時に自動で設定されるため未指定)
|
452
454
|
|
453
455
|
|
454
456
|
|
@@ -460,13 +462,15 @@
|
|
460
462
|
|
461
463
|
①⓪の設定を施したChartに対しWriteGlobalParameters.mq4を適用させた。
|
462
464
|
|
463
|
-
→正常動作
|
465
|
+
→正常動作していれば上記で示したディレクトリ内にファイルが作成されGlobal変数に関する情報が入力されているはずであった。
|
464
|
-
|
465
|
-
|
466
|
-
|
466
|
+
|
467
|
+
|
468
|
+
|
467
|
-
②当該ディレクトリ(C:\User\User-Name\AppData\Roaming\MetaQuotes\Terminal\Common\Files)を確認してみると、
|
469
|
+
②当該ディレクトリ(C:\User\User-Name\AppData\Roaming\MetaQuotes\Terminal\Common\Files)を確認してみると、
|
470
|
+
|
468
|
-
|
471
|
+
指定した"Write.txt"は作成されているが、ファイルサイズは0kbyte。
|
472
|
+
|
469
|
-
→
|
473
|
+
→開いてみると当然の事ながらGlobal変数の名前や数値は入力されていなかった。
|
470
474
|
|
471
475
|
|
472
476
|
|
@@ -476,13 +480,13 @@
|
|
476
480
|
|
477
481
|
|
478
482
|
|
479
|
-
③②と同じディレクトリ内に
|
483
|
+
③②と同じディレクトリ内に任意の名前・数値を入力したGlobal変数読み取り用ファイル"Read.txt"を作成した
|
480
|
-
|
484
|
+
|
481
|
-
(名前/数値/時間の各区切りは;区切りとタブ区切りの2種を作成
|
485
|
+
(名前/数値/時間の各区切りは;区切り(未指定)とタブ区切り(FileOpen()時に"\t"を指定)の2種を作成し実験した)
|
482
|
-
|
483
|
-
|
484
|
-
|
486
|
+
|
487
|
+
|
488
|
+
|
485
|
-
④①同様
|
489
|
+
④結果は①同様、ChartにReadGlobalParameters.mq4を適用するも上記エラーメッセージが表示され、Terminal上のGlobal変数リストを開くも空であった。
|
486
490
|
|
487
491
|
|
488
492
|
|
@@ -490,7 +494,7 @@
|
|
490
494
|
|
491
495
|
※備考
|
492
496
|
|
493
|
-
|
497
|
+
念のためFileOpen()関数についてデフォルトで指定されるFILE_CSVやFILE_UNICODE、FILE_BINやFILE_ANSIでも同様の実験を行ったが結果は変わらなかった。
|
494
498
|
|
495
499
|
|
496
500
|
|
2
書式の改善
test
CHANGED
File without changes
|
test
CHANGED
@@ -452,7 +452,7 @@
|
|
452
452
|
|
453
453
|
|
454
454
|
|
455
|
-
=================================================================
|
455
|
+
=================================================================
|
456
456
|
|
457
457
|
先ずはWriteGlobalParameters.mq4側から---
|
458
458
|
|
@@ -470,7 +470,7 @@
|
|
470
470
|
|
471
471
|
|
472
472
|
|
473
|
-
==================================================================
|
473
|
+
==================================================================
|
474
474
|
|
475
475
|
次にReadGlobalParameters.mq4側について---
|
476
476
|
|
@@ -486,7 +486,7 @@
|
|
486
486
|
|
487
487
|
|
488
488
|
|
489
|
-
==================================================================
|
489
|
+
==================================================================
|
490
490
|
|
491
491
|
※備考
|
492
492
|
|
1
タイトル・タグの変更
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
グローバル変数の書き出し・読み込みを行いたい
|
1
|
+
グローバル変数の書き出し・読み込みを行いたい(Class使用・外部txtファイル操作)
|
test
CHANGED
File without changes
|