私は mql5 として知られる C++ に似た言語でコーディングしています。(mt5 取引プラットフォーム用) 多くの類似点があります...以下に示すような for ループがあります。
void OnTick() // this functon basically executes the code after every price change.
{
for (int i = 0; i<5; i++) //the for loop function
{
Print(i); //this prints the loop
}
}
時間の経過とともに価格が変化するたびに上記のコードを実行した結果は次のようになります。
13:27:18.706 0
13:27:18.706 1
13:27:18.706 2
13:27:18.706 3
13:27:18.706 4
13:27:18.900 0
13:27:18.900 1
13:27:18.900 2
13:27:18.900 3
13:27:18.900 4
質問は、for ループのインデックスの最後の要素にアクセスし、価格が変更されるたびに 4 番目のインデックスを出力するにはどうすればよいですか? mql5 は C++ に似ています。 C++ から引き継げるものはありますか?
例
13:27:18.706 4
13:27:18.900 4
ループのスコープ外では i にアクセスすることはできません。
– πάντα ῥεῖ
2020 年 9 月 3 日 10:37
------------------------
必要なのは、i をループの外に引き出すことだけです。
void OnTick()
{
int i = 0;
for (; i < 5; i++)
{
Print(i);
}
// i is now one past the last index
int last = i - 1;
}
事前に 5 回ループすることがわかっている場合は、以下を使用して最後のインデックスを取得することもできます。
int last = 5 - 1;
0
------------------------
マジックナンバーは使用しないでください。 5 は魔法の数字です。 number_of_prices のような意味のある名前を付けます。
constexpr size_t number_of_prices = 5;
void OnTick()
{
for (size_t i = 0; i < number_of_prices; ++i) //the for loop function
{
Print(i); //this prints the loop
}
Print(number_of_prices - 1); // access last price
}