質問編集履歴
2
コードの追加
title
CHANGED
File without changes
|
body
CHANGED
@@ -144,4 +144,165 @@
|
|
144
144
|

|
145
145
|
### 補足情報(FW/ツールのバージョンなど)
|
146
146
|
|
147
|
+
**変更したソースコードを追記**
|
148
|
+
```ここに言語を入力
|
149
|
+
|
150
|
+
#property indicator_chart_window
|
151
|
+
#property indicator_buffers 2
|
152
|
+
#property indicator_color1 SteelBlue
|
153
|
+
#property indicator_color2 Crimson
|
154
|
+
#property indicator_color3 SteelBlue
|
155
|
+
#property indicator_color4 Crimson
|
156
|
+
#property indicator_color5 Aqua
|
157
|
+
#property indicator_color6 Red
|
158
|
+
#property indicator_color7 Orange
|
159
|
+
|
160
|
+
extern double BoxSize = 10.0;
|
161
|
+
double G_ibuf_84[];
|
162
|
+
double G_ibuf_88[];
|
163
|
+
double G_ibuf_92[];
|
164
|
+
double G_ibuf_96[];
|
165
|
+
double Arrow_Up[];
|
147
|
-
|
166
|
+
double Arrow_Down[];
|
167
|
+
double Trend[];
|
168
|
+
|
169
|
+
int init() {
|
170
|
+
IndicatorBuffers(4);
|
171
|
+
SetIndexStyle(0, DRAW_HISTOGRAM);
|
172
|
+
SetIndexBuffer(0, G_ibuf_84);
|
173
|
+
SetIndexStyle(1, DRAW_HISTOGRAM);
|
174
|
+
SetIndexBuffer(1, G_ibuf_88);
|
175
|
+
SetIndexStyle(2, DRAW_NONE);
|
176
|
+
SetIndexBuffer(2, G_ibuf_92);
|
177
|
+
SetIndexStyle(3, DRAW_NONE);
|
178
|
+
SetIndexBuffer(3, G_ibuf_96);
|
179
|
+
SetIndexStyle(4, DRAW_ARROW,0,4);
|
180
|
+
SetIndexBuffer(4, Arrow_Up);
|
181
|
+
SetIndexStyle(5, DRAW_ARROW,0,4);
|
182
|
+
SetIndexBuffer(5, Arrow_Down);
|
183
|
+
SetIndexStyle(6, DRAW_ARROW,0,4);
|
184
|
+
SetIndexBuffer(6,Trend);
|
185
|
+
SetIndexLabel(0, "Up");
|
186
|
+
SetIndexLabel(1, "Dn");
|
187
|
+
IndicatorDigits(Digits);
|
188
|
+
Comment("ScalSignal |" + BoxSize);
|
189
|
+
return (0);
|
190
|
+
}
|
191
|
+
|
192
|
+
int deinit() {
|
193
|
+
Comment("");
|
194
|
+
return (0);
|
195
|
+
}
|
196
|
+
|
197
|
+
int start() {
|
198
|
+
double Ld_0;
|
199
|
+
double Ld_8;
|
200
|
+
|
201
|
+
double Ld_02;
|
202
|
+
double Ld_82;
|
203
|
+
|
204
|
+
double Ld_24;
|
205
|
+
double Ld_32;
|
206
|
+
double pips_44;
|
207
|
+
int Li_52 = IndicatorCounted();
|
208
|
+
if (Li_52 < 0) return (-1);
|
209
|
+
if (Li_52 > 0) Li_52--;
|
210
|
+
G_ibuf_84[Bars] = Close[Bars];
|
211
|
+
G_ibuf_88[Bars] = Close[Bars];
|
212
|
+
G_ibuf_92[Bars] = Close[Bars];
|
213
|
+
G_ibuf_96[Bars] = Close[Bars];
|
214
|
+
if (Digits == 5 || Digits == 3) pips_44 = NormalizeDouble(10.0 * BoxSize, Digits);
|
215
|
+
else pips_44 = NormalizeDouble(BoxSize, Digits);
|
216
|
+
double Ld_16 = NormalizeDouble(Point * pips_44, Digits);
|
217
|
+
int Li_40 = Bars - Li_52;
|
218
|
+
|
219
|
+
|
220
|
+
|
221
|
+
//i が使用可能
|
222
|
+
|
223
|
+
for (int i = Li_40; i >= 0; i--) {
|
224
|
+
Ld_0 = NormalizeDouble(High[i] - (G_ibuf_92[i + 1]) - Ld_16, Digits);
|
225
|
+
Ld_8 = NormalizeDouble(Low[i] - (G_ibuf_96[i + 1]) + Ld_16, Digits);
|
226
|
+
|
227
|
+
//矢印用追加条件 まえの足の状態?
|
228
|
+
Ld_02 = NormalizeDouble(High[i+1] - (G_ibuf_92[i + 2]) - Ld_16, Digits);
|
229
|
+
Ld_82 = NormalizeDouble(Low[i+1] - (G_ibuf_96[i + 2]) + Ld_16, Digits);
|
230
|
+
|
231
|
+
|
232
|
+
//修正前
|
233
|
+
// Ld_0 = NormalizeDouble(High[i] - (G_ibuf_92[i + 1]) - Ld_16, Digits);
|
234
|
+
// Ld_8 = NormalizeDouble(Low[i] - (G_ibuf_96[i + 1]) + Ld_16, Digits);
|
235
|
+
|
236
|
+
|
237
|
+
|
238
|
+
if (Ld_0 >= 0.0 ) {
|
239
|
+
Ld_32 = NormalizeDouble((High[i] - (G_ibuf_92[i + 1])) / Ld_16, Digits);
|
240
|
+
Ld_24 = NormalizeDouble(MathFloor(Ld_32), Digits);
|
241
|
+
|
242
|
+
G_ibuf_92[i] = iBands(NULL,0,20,2,0,PRICE_CLOSE,MODE_LOWER,i+1) + Ld_16 * 1*Point;
|
243
|
+
//G_ibuf_92[i] = G_ibuf_92[i + 1] + Ld_16 * Ld_24;
|
244
|
+
|
245
|
+
G_ibuf_96[i] = G_ibuf_92[i] - Ld_16 ;
|
246
|
+
G_ibuf_84[i] = G_ibuf_92[i];
|
247
|
+
G_ibuf_88[i] = G_ibuf_96[i];
|
248
|
+
G_ibuf_96[i] = G_ibuf_92[i] - Ld_16;
|
249
|
+
|
250
|
+
//矢印のみの条件(上昇)
|
251
|
+
|
252
|
+
if (Ld_0 >= 0.0 ){
|
253
|
+
Trend[i] =1;
|
254
|
+
if(Trend[i] != Trend[i+1] && Trend[i] ==1) Arrow_Up[i] = Low[i];
|
255
|
+
}
|
256
|
+
|
257
|
+
|
258
|
+
} else {
|
259
|
+
if (Ld_8 <= 0.0 ) {
|
260
|
+
Ld_32 = NormalizeDouble((G_ibuf_96[i + 1] - Low[i]) / Ld_16, Digits);
|
261
|
+
Ld_24 = NormalizeDouble(MathFloor(Ld_32), Digits);
|
262
|
+
|
263
|
+
G_ibuf_96[i] = iBands(NULL,0,20,2,0,PRICE_CLOSE,MODE_UPPER,i+1)- Ld_16 * 1*Point;
|
264
|
+
//G_ibuf_96[i] = G_ibuf_96[i + 1] - Ld_16 * Ld_24;
|
265
|
+
|
266
|
+
|
267
|
+
G_ibuf_92[i] = G_ibuf_96[i] + Ld_16 ;
|
268
|
+
G_ibuf_88[i] = G_ibuf_92[i];
|
269
|
+
G_ibuf_84[i] = G_ibuf_96[i];
|
270
|
+
G_ibuf_92[i] = G_ibuf_96[i] + Ld_16;
|
271
|
+
|
272
|
+
//矢印のみの条件(下落)
|
273
|
+
if (Ld_8 <= 0.0 ){
|
274
|
+
Trend[i] =-1;
|
275
|
+
|
276
|
+
if(Trend[i] != Trend[i+1] && Trend[i] ==-1 ) Arrow_Down[i] =High[i];
|
277
|
+
}
|
278
|
+
|
279
|
+
|
280
|
+
} else {
|
281
|
+
Trend[i] =0;
|
282
|
+
//重要な箇所 削ると表示されない
|
283
|
+
G_ibuf_92[i] = G_ibuf_92[i + 1];
|
284
|
+
G_ibuf_96[i] = G_ibuf_96[i + 1];
|
285
|
+
|
286
|
+
|
287
|
+
|
288
|
+
|
289
|
+
if (G_ibuf_84[i + 1] > G_ibuf_88[i + 1]) {
|
290
|
+
G_ibuf_84[i] = G_ibuf_84[i + 1];
|
291
|
+
G_ibuf_88[i] = G_ibuf_84[i] - Ld_16;
|
292
|
+
Trend[i] =0;
|
293
|
+
|
294
|
+
}
|
295
|
+
if (G_ibuf_88[i + 1] > G_ibuf_84[i + 1]) {
|
296
|
+
G_ibuf_84[i] = G_ibuf_84[i + 1];
|
297
|
+
G_ibuf_88[i] = G_ibuf_84[i] + Ld_16;
|
298
|
+
Trend[i] =0;
|
299
|
+
|
300
|
+
}
|
301
|
+
|
302
|
+
|
303
|
+
}
|
304
|
+
}
|
305
|
+
}
|
306
|
+
return (0);
|
307
|
+
}
|
308
|
+
```
|
1
画像の追加
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
### 前提・実現したいこと
|
2
2
|
|
3
|
-
インジケータをMQL4で制作していますが、
|
3
|
+
インジケータをMQL4で制作していますが、シグナルが切り替わったときにバツ印を表示させたいと思っているのですが、
|
4
4
|
最初の1個だけを表示させたいのでアドバイスよろしくお願いします。
|
5
5
|
いろいろ調べましたがわかりませんでした。
|
6
6
|
|
@@ -141,7 +141,7 @@
|
|
141
141
|
```
|
142
142
|
|
143
143
|
|
144
|
-
|
144
|
+

|
145
145
|
### 補足情報(FW/ツールのバージョンなど)
|
146
146
|
|
147
147
|
ここにより詳細な情報を記載してください。
|