記事"MQL5 プログラミング基礎:配列"についてのディスカッション

 

新しい記事 MQL5 プログラミング基礎:配列 はパブリッシュされました:

配列は変数や関数と共にほとんどすべてのプログラム言語に欠くことのできないものです。本稿はまず MQL5 初心者プログラマーに関心を持ってもらえる内容であり、経験あるプログラマーにとっては知識をまとめ体系化するのによい機会となるはずです。

多次元配列

作者: Dmitry Fedoseev

 

全体的に悪くない記事だ。プログラミングの教科書よりもいいし、それほど乾いていないし、かなり明晰だ。

例題が気に入らなかった:「OOPを使った多次元配列」。これは単純な実装だが、このような動的配列のその後の作業はかなり「トリッキー」である。

Документация по MQL5: Основы языка / Переменные
Документация по MQL5: Основы языка / Переменные
  • www.mql5.com
Основы языка / Переменные - Документация по MQL5
 
この記事は、特に初心者にとっては悪くない。
 

書き方は悪くないが、CArrayと その子孫については一言も書かれていない。

初心者は、OOPスタイルで配列を扱うには独自のクラスを書く必要があると思うかもしれないが、そんなものはとっくの昔に書かれている。

 

さて、MQL5プログラミング・チュートリアルの冒頭部分がほぼ完成した。

ただひとつ、OOPでの配列の実装が非常に苦しそうだ。

 
avoitenko:

書き方は悪くないが、CArrayと その子孫については一言も書かれていない。

初心者は、OOPスタイルで配列を扱うには独自のクラスを書く必要があると思うかもしれないが、そんなものはとっくの昔に書かれているのだ。

ところで、これは筆者が連載を続けるべきテーマである。
 
avoitenko:

書き方は悪くないが、この記事はCArrayと その子孫については一言も触れていない。

CArrayとその子孫はすべて忌み嫌われるべきだ。

そういうことはテンプレートに書くべきだ。

ヴラディックス

ただ一つ言えることは、OOPでの配列の実装はとても窮屈に見えるということだ。

ちょっとね。)

 

この配列をOOPでもっとうまくやる方法について、何か提案はありますか?

JavaScriptのようなものを得ようとしています:

var ar=new Array();
ar[0]=new Array();
ar[1]=new Array();
ar[2]=new Array();

ar[0][0]=1;
ar[0][1]=2;

alert(ar[0][1]);

最大の難点は、JavaScriptではリストを一度に配列に入れられることだ:

ar[0][2]=Array(131,132,133,134);
alert(ar[0][2][3]);

そして、ここではそのようなことは思いつかない。したがって、どう考えても良い変形はないだろう。

 
Integer: この配列をOOPでより良くする方法について何か提案はありますか?

僕はYurichの 動的配列の実装が好きなんだ。https://www.mql5.com/ru/forum/6729/page3、パフォーマンス的にどれくらい効率的なのかはわからないけど、コードの読みやすさという点では最高だよ。

 

全くの初心者だけでなく、MT5を初めて使う実験的なプログラマーにとっても、非常に良い記事です。最後のセクション「OOPを使った多次元配列の作成」だけが、最も興味のないところだ。

しかし、ちょっとした間違いがある:

Array indexing order can be determined using the ArrayIsSeries() function:

bool series=ArrayIsSeries(ar);

配列のインデックスが逆順の場合、関数は真を返します。

これは偽です。配列のインデックス順を知るために使う関数はArrayGetAsSeries() である。

ArrayIsSeries() は、配列が時系列か どうかを判定するために使用する。

 

There is only one method that allows you to do a search in an unsorted array

これは厳密には正しくない。ハッシュ・ベースの検索アルゴリズムを見て ほしい。しかし、このアルゴリズムはおそらくトレーディングには適用できないだろう。