MQL5のArrayReverse関数
MQL5のヘルプを眺めていたらArrayReverseという関数が目に留まりました。使ったことがなかったので、以下のコードで動作確認をしてみました。
void OnStart() { int hoge[4] = {3, 5, 7, 9}; for(int i = 0; i < 4; i++) printf("hoge[%d] = %d", i, hoge[i]); ArrayReverse(hoge); Print("ArrayReverse実行"); for(int i = 0; i < 4; i++) printf("hoge[%d] = %d", i, hoge[i]); }
実行結果は以下のとおりです。
hoge[0] = 3 hoge[1] = 5 hoge[2] = 7 hoge[3] = 9 ArrayReverse実行 hoge[0] = 9 hoge[1] = 7 hoge[2] = 5 hoge[3] = 3
使う場面が余り思い浮かばないのですが・・・、私のようにMQL4に慣れた人(チャートの右端にあるローソク足を0本目と数える人)がCopyBufferでインジ領域から配列にデータをコピーした場合に使うかもしれないなとぼんやり思いました。
ArraySetAsSeries関数との違い
ArraySetAsSeries関数との違いについては、ArrayReverse関数のヘルプに以下の記述がありました。
ArraySetAsSeries()関数は物理的に配列要素を移動するものではありません。代わりに、要素へのアクセスを時系列同様に変更するために、インデックスの方向を逆方向に変更するだけです。ArrayReverse()関数は、配列が「反転」されるように物理的に配列要素を移動します。