記事"「サル」でもわかるMQL:オブジェクトクラスの設計 構築方法"についてのディスカッション - ページ 5

 
joo:

それでも、OOPを使う利点は見当たらない。

だから、あなたの仕事には必要ない。
 
DC2008:
だから、あなたの用途には必要ない。

あるいは、必要なのかもしれないが、私にはわからない。:)

それを解明するのを手伝ってくれ。

 
joo:

...手伝ってくれ

遺伝的アルゴリズムを OOPスタイルで書き換えてみてくれ。彼らはそこに行きたいと懇願しているだけだ。

それに、あなたは他人のコードを拾うにはあまりに怠惰だが、自分のコードは拾わない。始めれば成功するし、同時に両方の亜種の性能を比較することもできる。私の乏しい統計によれば、opはプログラムの動作を遅くする。

 
joo:

それでも、OOPを使う利点は見当たらない。もしかしたら、そのような「クラス」がどのような獣なのか理解できないのかもしれない。

あなたが言ったことは、別々の関数として形式化できる。それとも、すべてではないのですか?私はOOPの原理を理解しようとしているのです。

具体的な簡単な例で、適切にフォーマットされたコード(OOPがある場合とない場合)の作業スピードの違いや、プロジェクト編成の簡素化という点でのOOPの優位性を見てみたいのです。

あなたのようなスキルを持つ開発者からOOPについての質問を聞くのは奇妙なことです。)冗談でしょう。もちろん、OOPを使わず、すべてを関数で実装することもできます。しかし、人間的な観点、つまり開発やメンテナンスの面で、OOPは単に利便性が低いだけなのだ。OOPによってプログラム自体のスピードが上がるわけではない。

同じ例をストラテジークラスで続けるなら、ストラテジーに応じてオープンポジションを検索するコードがあるとする。これを関数で実装すると、次のようになる:

foreach Position in Positions[]
 if StrategyType(Position) == N1 TrailTypeN1(Position);
 else if StrategyType(Position) == N2 TrailTypeN2(Position);
 ...

OOPを使えば、次のようになる:

foreach Position in Positions[]
 Position.Trail;

レコードがコンパクトで明快であること、新しいタイプのストラテジーを追加する場合でもコードのこの部分を変更する必要がないこと、(潜在的に多くの)パラメーターを渡したり、グローバル変数や 配列の代わりに宣言したりする必要がないこと、他のコード部分から不注意にダメージを受ける可能性がないこと......などである。

一般的に、このテーマに関する本はたくさんあるようです。それとも質問の本質が違うのでしょうか?

Документация по MQL5: Основы языка / Переменные / Глобальные переменные
Документация по MQL5: Основы языка / Переменные / Глобальные переменные
  • www.mql5.com
Основы языка / Переменные / Глобальные переменные - Документация по MQL5
 
DC2008:

遺伝的アルゴリズムを OOPスタイルで書き換えてみよう。彼らはそこに行きたいと懇願しているだけだ。

記事を書いた後、事務局からOOPから書き直すよう提案・要請された。私は正直に、手がかりがないことを認めた。そのまま掲載することを許可された。

今試しているところだ。まだ動かない。やり直したら、OOPのコードとドキュメントを記事に追加します。

DC2008:

始めれば成功し、同時に両バリアントのパフォーマンスを比較することができる。私の少ない統計によると、OOPはプログラムを遅くする。

なるほど、OOPを使ったコードは反応が鈍いという私の意見を裏付けるものだ。私の経験では、OOPを知っている開発者と一緒に仕事をすると、パフォーマンスがかなり低下します。

マーケター

あなたのようなスキルを持つ開発者からOOPについての質問を聞くのは奇妙なことです。)冗談でしょう?

残念ながら、冗談ではありません。そう、私はマンモスのように大きくなった。今、私は羊毛を取り除く努力をしています。


もちろん、OOPを使わず、すべてを関数で実装することもできる。しかし、人間の視点から見ると、それは単に不便なだけなのだ。

そう、私は「柔軟性」を求めている。だから興味があるんです。

市場関係者

..............

一般的に、このテーマに関する本はたくさんあります。それとも、質問の本質は別のところにあるのでしょうか?

どうやら、私はいくつかの微妙な部分をキャッチしていません。:(

まあいい。この小さな壁を乗り越えよう。:)

 

おいおい、冗談だろう?

これはOOPを学ぼうとして いる新人プログラマーのための「ダミーズ」ガイドではない。新米プログラマーや初級プログラマーに役立つには、あまりにも曖昧なアプリケーションのコードをカット&ペーストしている。

 
クラスについて調べ始めた。この記事に出会った。そうだ、そうだ、私のExpert Advisorにこのようなシンプルなインターフェースを挿入する必要がある。作者のファイルを見ようと思ったが、何もない。:-( より正確には、masterwindows-doc.zip フォルダの中に、空のヘルプファイル MasterWindows-Doc.chm がある!もしかして、この記事に書いてあることは全部もう古いのでしょうか?
 
Aleksandr Brown:
クラスについて調べ始めた。この記事に出会った。そうだ、そうだ、私のExpert Advisorにこのようなシンプルなインターフェースを挿入する必要がある。作者のファイルを見ようと思ったが、何もない。:-( より正確には、masterwindows-doc.zip フォルダの中に、空のヘルプファイル MasterWindows-Doc.chm がある!もしかして、この記事で紹介したものはすべてすでに古くなっているのでしょうか?

確認しました。ファイルは正常です。

念のため、ここに貼り付けておきます。

ファイル:
 
Sergey Pavlov:

チェック済み。ファイルは問題ない。

念のためここに置いておきます。

ご配慮ありがとうございました。認めるよ、僕はちょっとバカだった。数日前に新しいオペレーティング・システムをインストールしたのですが、セキュリティ・サービスがインターネットからダウンロードしたファイルをすべてブロックしてしまったのです。正確には、ダウンロードしたファイルを開くプログラムは起動しましたが、ダウンロードしたファイルの内容は表示されませんでした。現在はすべて設定され、記事の添付ファイルも正常に開くことができます。ありがとうございました。
 
MasterWindowsをコンパイルしようとすると、"WinEXE.Run() "の行で"'CMasterWindowsEXE::Run' - cannot call protected memberfunction ClassMasterWindows.mqh "とエラーが出ます。どうすればいいでしょうか?