質問編集履歴

1

コードの修正

2020/11/18 09:56

投稿

nisei2
nisei2

スコア19

test CHANGED
File without changes
test CHANGED
@@ -44,65 +44,123 @@
44
44
 
45
45
  #include "LibEA4.mqh"
46
46
 
47
+
48
+
47
-
49
+ //仕掛けシグナル関数-------------------------------------------------
48
-
50
+
49
- //直近日足の四本値
51
+ int Sig_Entry(){
50
-
51
- double H0 = iHigh(NULL,PERIOD_D1,0);
52
+
52
-
53
- double L0 = iLow(NULL,PERIOD_D1,0);
53
+ int ret = 0;
54
-
55
- double C0 = iClose(NULL,PERIOD_D1,0);
54
+
56
-
57
-
55
+
58
56
 
59
57
  //前日足の四本値
60
58
 
59
+ double C1 = iClose(NULL,PERIOD_D1,1);
60
+
61
+
62
+
63
+ //前週の四本値
64
+
61
- double H1 = iHigh(NULL,PERIOD_D1,1);
65
+ double WH1 = iHigh(NULL,PERIOD_W1,1);
66
+
67
+ double WL1 = iLow(NULL,PERIOD_W1,1);
68
+
69
+
70
+
71
+ //前々週の四本値
72
+
73
+ double WH2 = iHigh(NULL,PERIOD_W1,2);
74
+
75
+ double WL2 = iLow(NULL,PERIOD_W1,2);
76
+
77
+
78
+
79
+ //前月の四本値
80
+
81
+ double MNH1 = iHigh(NULL,PERIOD_MN1,1);
82
+
83
+ double MNL1 = iLow(NULL,PERIOD_MN1,1);
84
+
85
+
86
+
87
+ //前々月の4本値
88
+
89
+ double MNH2 = iHigh(NULL,PERIOD_MN1,2);
90
+
91
+ double MNL2 = iLow(NULL,PERIOD_MN1,2);
92
+
93
+
94
+
95
+ //月足が高値・安値ともに切り上がっている
96
+
97
+ if(MNH2 < MNH1 && MNL2 < MNL1){
98
+
99
+ //週足の高値・安値ともに切り下がっている
100
+
101
+ if(WH2 > WH1 && WL2 > WL1){
102
+
103
+ //週足の高値を日足の終値でブレイクする
104
+
105
+ if(WH1 < C1){
106
+
107
+ ret = 1;
108
+
109
+ return ret;
110
+
111
+ }//日足のif
112
+
113
+ }//週足のif
114
+
115
+ }//月足のif
116
+
117
+
118
+
119
+ return ret;
120
+
121
+ };//-------------------------------------------------
122
+
123
+
124
+
125
+
126
+
127
+
128
+
129
+
130
+
131
+ //手仕舞いシグナル関数-------------------------------------------------
132
+
133
+ int Sig_Exit(){
134
+
135
+ int ret = 0;
136
+
137
+
138
+
139
+ //前日足のlow
62
140
 
63
141
  double L1 = iLow(NULL,PERIOD_D1,1);
64
142
 
65
- double C1 = iClose(NULL,PERIOD_D1,1);
143
+
66
-
67
-
68
-
144
+
69
- //前日足の四本値
145
+ //前日足のlow
70
-
71
- double H2 = iHigh(NULL,PERIOD_D1,2);
72
146
 
73
147
  double L2 = iLow(NULL,PERIOD_D1,2);
74
148
 
75
-
76
-
77
- //前週の四本値
149
+
78
-
79
- double WH1 = iHigh(NULL,PERIOD_W1,1);
150
+
80
-
81
- double WL1 = iLow(NULL,PERIOD_W1,1);
82
-
83
-
84
-
85
- //前々四本
151
+ //前々日足の安を前日の日足の安値が割ってしまった時
86
-
87
- double WH2 = iHigh(NULL,PERIOD_W1,2);
152
+
88
-
89
- double WL2 = iLow(NULL,PERIOD_W1,2);
90
-
91
-
92
-
93
- //前月の四本値
153
+ if(L2 > L1)
94
-
95
- double MNH1 = iHigh(NULL,PERIOD_MN1,1);
154
+
96
-
97
- double MNL1 = iLow(NULL,PERIOD_MN1,1);
155
+ ret = 1;
98
-
99
-
100
-
156
+
101
- //前々月の4本値
157
+ return ret;
102
-
158
+
103
- double MNH2 = iHigh(NULL,PERIOD_MN1,2);
159
+ };//-------------------------------------------------
104
-
105
- double MNL2 = iLow(NULL,PERIOD_MN1,2);
160
+
161
+
162
+
163
+
106
164
 
107
165
 
108
166
 
@@ -150,66 +208,10 @@
150
208
 
151
209
  MyOrderSendMarket(sig_entry,sig_exit,lots);
152
210
 
211
+
212
+
153
213
  }
154
214
 
155
-
156
-
157
- //仕掛けシグナル関数
158
-
159
- int Sig_Entry(){
160
-
161
- int ret = 0;
162
-
163
-
164
-
165
- //月足が高値・安値ともに切り上がっている
166
-
167
- if(MNH2 < MNH1 && MNL2 < MNL1){
168
-
169
- //週足の高値・安値ともに切り下がっている
170
-
171
- if(WH2 > WH1 && WL2 > WL1){
172
-
173
- //週足の高値を日足の終値でブレイクする
174
-
175
- if(WH1 < C1){
176
-
177
- ret = 1;
178
-
179
- return ret;
180
-
181
- }//日足のif
182
-
183
- }//週足のif
184
-
185
- }//月足のif
186
-
187
-
188
-
189
- return ret;
190
-
191
- };
192
-
193
-
194
-
195
- //手仕舞いシグナル関数
196
-
197
- int Sig_Exit(){
198
-
199
- int ret = 0;
200
-
201
-
202
-
203
- //前前日の日足の安値を前日の日足の安値が割ってしまった時
204
-
205
- if(L2 > L1)
206
-
207
- ret = 1;
208
-
209
- return ret;
210
-
211
- };
212
-
213
215
  ```
214
216
 
215
217