teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

コードの追加

2021/04/04 07:43

投稿

spa
spa

スコア52

title CHANGED
File without changes
body CHANGED
@@ -144,4 +144,165 @@
144
144
  ![イメージ説明](d57d6142b8c40513bfbc5d28404783df.png)
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

画像の追加

2021/04/04 07:43

投稿

spa
spa

スコア52

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
+ ![イメージ説明](d57d6142b8c40513bfbc5d28404783df.png)
145
145
  ### 補足情報(FW/ツールのバージョンなど)
146
146
 
147
147
  ここにより詳細な情報を記載してください。