質問編集履歴

5

誤字の修正

2018/05/28 05:09

投稿

mt40806
mt40806

スコア6

test CHANGED
File without changes
test CHANGED
File without changes

4

誤字の修正

2018/05/28 05:08

投稿

mt40806
mt40806

スコア6

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()を用いてそれら情報をWriteFile()関数にて書き込む(↓)
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
- WriteFile(hFile,gName,gValue,gTime);
75
+ FileWrite(hFile,gName,gValue,gTime);
76
+
74
-
77
+ }
78
+
75
- }により変数のリストを指定ディレクトリ内のtxtファイルへ書き出すことが可能であった。
79
+ ```により変数のリストを指定ディレクトリ内のtxtファイルへ書き出すことが可能であった。
76
80
 
77
81
  しかしながら上記GlobalVariable関数群を用いた場合には書き出しは可能であっても読み込み&Terminalのグローバル変数リストへの追加できないため頓挫している。
78
82
 

3

誤字・文法の修正

2018/05/28 05:08

投稿

mt40806
mt40806

スコア6

test CHANGED
@@ -1 +1 @@
1
- グローバル変数の書き出し・読み込みを行いたい(Class使用・外部txtファイル操作)
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
- デフォルトである/Files
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
- 上記目的を現するためにサンプルとしてシンプルな2つのScriptファイル
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
- バックアップを取る都合上、今回はあくまでも外部のtxtファイルを使用する方法に限定して考えている。
60
-
61
-
62
-
63
- ②書き出しファイルについては当該クラスを用いず組み込みファイルを用いた場合
64
-
65
- for(int i=GlobalVariableTotal()-1; i>=0; i--){
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
- }等により書き出すこと可能であったが、GlobalVariable関数同期と同じ方法読み込み~グローバル変数リスト追加できない&上記目的に合致ため此処では質問対象から除外す事にした
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
- 以下のコードの何処に問題があるのか不明なのでその点についてご教授いただ(uninit reason 0についても同様)
105
+ 以下のコードの何処に問題があるのか不明なのでその点についてご教授いただらと存じます(uninit reason 0についても同様)
104
106
 
105
107
 
106
108
 
@@ -446,9 +448,9 @@
446
448
 
447
449
  ### 試したこと
448
450
 
449
- ⓪MT4を起動
450
-
451
- Global変数リストに任意の名前数値(ココでは簡単に0.0ないしは1.0)を与え(時刻は自動で設定される)
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
- →正常動作であれば指定箇所にファイルが作成されGlobal変数に関する情報が入力されているはであった。
465
+ →正常動作していれば上記で示したディレクトリ内にファイルが作成されGlobal変数に関する情報が入力されているはであった。
464
-
465
-
466
-
466
+
467
+
468
+
467
- ②当該ディレクトリ(C:\User\User-Name\AppData\Roaming\MetaQuotes\Terminal\Common\Files)を確認してみると、指定した"Write.txt"を発見。
469
+ ②当該ディレクトリ(C:\User\User-Name\AppData\Roaming\MetaQuotes\Terminal\Common\Files)を確認してみると、
470
+
468
-
471
+ 指定した"Write.txt"は作成されているが、ファイルサイズは0kbyte。
472
+
469
- ファイルサイズは0kbyteで当然の事ながらGlobal変数の名前や数値は入力されていなかった。
473
+ 開いてみると当然の事ながらGlobal変数の名前や数値は入力されていなかった。
470
474
 
471
475
 
472
476
 
@@ -476,13 +480,13 @@
476
480
 
477
481
 
478
482
 
479
- ③②と同じディレクトリ内にいくつかの名前・数値を入力した読み取り用ファイル"Read.txt"を作成
483
+ ③②と同じディレクトリ内に任意の名前・数値を入力したGlobal変数読み取り用ファイル"Read.txt"を作成した
480
-
484
+
481
- (名前/数値/時間の各区切りは;区切りとタブ区切りの2種を作成~実験するも結果は以下に記す様に同じであった)
485
+ (名前/数値/時間の各区切りは;区切り(未指定)とタブ区切り(FileOpen()時に"\t"を指定)の2種を作成実験た)
482
-
483
-
484
-
486
+
487
+
488
+
485
- ④①同様ChartにReadGlobalParameters.mq4を適用するも上記エラーメッセージが表示され、グローバル変数リストを開くも空であり何も入力されていない状態であった。
489
+ 結果は①同様ChartにReadGlobalParameters.mq4を適用するも上記エラーメッセージが表示され、Terminal上のGlobal変数リストを開くも空であった。
486
490
 
487
491
 
488
492
 
@@ -490,7 +494,7 @@
490
494
 
491
495
  ※備考
492
496
 
493
- 上記ファイルハンドルであるhFileの引数について未指定であればデフォルトで選択されるFILE_CSVやFILE_UNICODE、FILE_BINやFILE_ANSIでも確認したが結果は変わらなかった。
497
+ ためFileOpen()関数についてデフォルトで指定されるFILE_CSVやFILE_UNICODE、FILE_BINやFILE_ANSIでも同様の実験を行ったが結果は変わらなかった。
494
498
 
495
499
 
496
500
 

2

書式の改善

2018/05/26 23:56

投稿

mt40806
mt40806

スコア6

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

タイトル・タグの変更

2018/05/26 14:32

投稿

mt40806
mt40806

スコア6

test CHANGED
@@ -1 +1 @@
1
- グローバル変数の書き出し・読み込みを行いたい
1
+ グローバル変数の書き出し・読み込みを行いたい(Class使用・外部txtファイル操作)
test CHANGED
File without changes