●ソースコード
下記は本ソースではないですが同じようなところでエラーが出るので
簡潔にするために作成したテストコードです。
MQL4``` void OnTick() { double sikakeArr[]; int orderSu; orderSu = 5;//OrdersTotal(); ArrayResize(sikakeArr,orderSu); for(int i = 0; i <= orderSu; i++){ sikakeArr[i] = 0; } } ``` for文でiが1~5まで繰り返し処理はされるのですが、 その後にエラー(Array out of range)が出ます。 エラーメッセージから配列の範囲についてのエラーだとはわかるのですが、 double sikakeArr[];と動的配列を宣言してるのが関係しているのでしょうか? そもそも、根本的な何かを間違えているのでしょうか? 楽天証券のMT4のEAです。
解決されたようですが for 文の評価
for(int i = 0; i <= orderSu; i++){
が、orderSu と同じ値までループになっています。
配列の頭は 0 番目から始まるので orderSu - 1 番目が最後の要素で
orderSu 番目という要素は存在しないから「配列範囲外」なのです。
for(int i = 0; i < orderSu; i++){
「 <= orderSu 以下」ではなく「 < orderSu より小さければ 」
とすればエラーは出ません。
回答1件
あなたの回答
tips
プレビュー