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

回答編集履歴

1

回答追加

2020/09/07 22:59

投稿

mah
mah

スコア598

answer CHANGED
@@ -11,4 +11,74 @@
11
11
  bool OrderDelete(ticketS,Red);
12
12
  }
13
13
  ```
14
- boolがついているため、関数宣言と判定されてコンパイルエラーになっています。
14
+ boolがついているため、関数宣言と判定されてコンパイルエラーになっています。
15
+
16
+ 動かしていないので参考までにですが、ポジションの決済の処理を書いてみました。
17
+ 実際に動かす場合はOrderCloseのエラーチェック等も必要です。
18
+ あとは、この辺りのリファレンスを見ながらやってみるといいと思います。[https://yukifx.web.fc2.com/sub/reference/16_trade_func/cone/trade_root.html](https://yukifx.web.fc2.com/sub/reference/16_trade_func/cone/trade_root.html)
19
+
20
+ ```MQL
21
+ void OnTick()
22
+ {
23
+ // ...
24
+
25
+ for (int i = OrdersTotal() - 1; i >= 0; i--)
26
+ {
27
+ // ポジション又は注文を選択
28
+ if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
29
+ {
30
+ continue;
31
+ }
32
+ if (OrderSymbol() != Symbol())
33
+ {
34
+ continue;
35
+ }
36
+ if (OrderMagicNumber() != 1111)
37
+ {
38
+ continue;
39
+ }
40
+
41
+ int ticket = OrderTicket();
42
+ int type = OrderType();
43
+
44
+ if (highestL > C1)
45
+ {
46
+ printf("売りの条件発生 %f %f", highestL, C1);
47
+
48
+ if (type == OP_BUY)
49
+ {
50
+ printf("買いポジションクローズ");
51
+ OrderClose(ticket, OrderLots(), Bid, 10, Red);
52
+ }
53
+
54
+ if (type == OP_BUYLIMIT)
55
+ {
56
+ printf("買い注文削除");
57
+ OrderDelete(ticket, Red);
58
+ }
59
+ }
60
+
61
+ if (cheapestH < C1)
62
+ {
63
+ printf("買いの条件発生 %f %f", cheapestH, C1);
64
+
65
+ if (type == OP_SELL)
66
+ {
67
+ printf("売りポジションクローズ");
68
+ OrderClose(ticket, OrderLots(), Ask, 10, Red);
69
+ }
70
+
71
+ if (type == OP_SELLLIMIT)
72
+ {
73
+ printf("売り注文削除");
74
+ OrderDelete(ticket, Red);
75
+ }
76
+ }
77
+ }
78
+
79
+ if (OrdersTotal() == 0) // ポジション・注文がない場合
80
+ {
81
+ // ...
82
+ }
83
+ }
84
+ ```