回答編集履歴

1

回答追加

2020/09/07 22:59

投稿

mah
mah

スコア591

test CHANGED
@@ -25,3 +25,143 @@
25
25
  ```
26
26
 
27
27
  boolがついているため、関数宣言と判定されてコンパイルエラーになっています。
28
+
29
+
30
+
31
+ 動かしていないので参考までにですが、ポジションの決済の処理を書いてみました。
32
+
33
+ 実際に動かす場合はOrderCloseのエラーチェック等も必要です。
34
+
35
+ あとは、この辺りのリファレンスを見ながらやってみるといいと思います。[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)
36
+
37
+
38
+
39
+ ```MQL
40
+
41
+ void OnTick()
42
+
43
+ {
44
+
45
+ // ...
46
+
47
+
48
+
49
+ for (int i = OrdersTotal() - 1; i >= 0; i--)
50
+
51
+ {
52
+
53
+ // ポジション又は注文を選択
54
+
55
+ if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
56
+
57
+ {
58
+
59
+ continue;
60
+
61
+ }
62
+
63
+ if (OrderSymbol() != Symbol())
64
+
65
+ {
66
+
67
+ continue;
68
+
69
+ }
70
+
71
+ if (OrderMagicNumber() != 1111)
72
+
73
+ {
74
+
75
+ continue;
76
+
77
+ }
78
+
79
+
80
+
81
+ int ticket = OrderTicket();
82
+
83
+ int type = OrderType();
84
+
85
+
86
+
87
+ if (highestL > C1)
88
+
89
+ {
90
+
91
+ printf("売りの条件発生 %f %f", highestL, C1);
92
+
93
+
94
+
95
+ if (type == OP_BUY)
96
+
97
+ {
98
+
99
+ printf("買いポジションクローズ");
100
+
101
+ OrderClose(ticket, OrderLots(), Bid, 10, Red);
102
+
103
+ }
104
+
105
+
106
+
107
+ if (type == OP_BUYLIMIT)
108
+
109
+ {
110
+
111
+ printf("買い注文削除");
112
+
113
+ OrderDelete(ticket, Red);
114
+
115
+ }
116
+
117
+ }
118
+
119
+
120
+
121
+ if (cheapestH < C1)
122
+
123
+ {
124
+
125
+ printf("買いの条件発生 %f %f", cheapestH, C1);
126
+
127
+
128
+
129
+ if (type == OP_SELL)
130
+
131
+ {
132
+
133
+ printf("売りポジションクローズ");
134
+
135
+ OrderClose(ticket, OrderLots(), Ask, 10, Red);
136
+
137
+ }
138
+
139
+
140
+
141
+ if (type == OP_SELLLIMIT)
142
+
143
+ {
144
+
145
+ printf("売り注文削除");
146
+
147
+ OrderDelete(ticket, Red);
148
+
149
+ }
150
+
151
+ }
152
+
153
+ }
154
+
155
+
156
+
157
+ if (OrdersTotal() == 0) // ポジション・注文がない場合
158
+
159
+ {
160
+
161
+ // ...
162
+
163
+ }
164
+
165
+ }
166
+
167
+ ```