MQL5におけるOOPに関する質問 - ページ 33

 
Alexey Viktorov:

経済カレンダー イベントのサンプルがCalendarValueHistory()であることは周知の通りです。ある場合は、ある時間帯のすべてのニュース。別の国別、別の時間帯で。シンボルによる3枚目ではしかし、根本的な違いがあるのでしょうか?プログラミングの講義では、実行するタスクの種類によって解答を分けているのでしょうか?

最近、運転免許試験に合格しなかった人に会ったのですが、「教習所でこの交差点を走らなかったから、この交差点の走り方を知らないだけだ」と憤慨していました。

クラスを作成する場合、新しいタイプのデータを導入することになります。

あなたのクラスが具体的に何をするのかは、それほど重要ではありません。

重要なのは、クラスオブジェクトをデータとしてどうするつもりなのか?

(配列に入れる、関数に渡す、関数から返す、...)。

この時点で、この授業が必要なのかどうか、よくわからなくなってきました。

そして、もしそうであるならば、それは必ずしも3クラスではなく、1クラスでなければならないのでしょうか?

もしかしたら、あなたのタスクでは、1つ(または3つ)の機能でうまくいくかもしれませんよ?

 
Alexey Viktorov:

退屈...また、マスターへのインターフェースを持つテンプレートもあります?

MQLにはインターフェースというものは存在しない、数ページ前の抽象クラスでも同じだ、後からコードを読むだけの方が楽だ

インターフェースは、異なるコンストラクタで初期化するのが便利です。

ヘルプの例https://www.mql5.com/ru/docs/basis/types/classes by keyword interface は、私のテンプレートを一対一で再現しています。

 
Igor Makanu:

MQLにはインターフェースというものは存在しない、数ページ前の抽象クラスでも同じだ、後からコードを読むだけの方が楽だ

インターフェースは、異なるコンストラクタで初期化するのが便利です。

ヘルプの例https://www.mql5.com/ru/docs/basis/types/classes by キーワード interface - これはまさに私のテンプレートです、自分の環境で例を再現してみてください、多分これがあなたが探しているものです

イゴール、皇帝がフェドート・ストレルツィに与えた 任務を覚えているか?

     その "To-Can't-Be "を捕まえてみろ! 名前を書けよ、急いで忘れてしまわないようにな。

そして、2人の若者はどう答えたか。

     回路図や設計図があればいいのですが、なければないで、探して悪魔を見つけるのです

ルールや最終的に得られる結果がわからないのに、どうして再現しようとするのか......。

 
Alexey Viktorov:

つまらない...。テンプレートやインターフェースも使いこなす必要があるのでは?

まあ、つまんないなら仕方ないけどね。
 
Koldun Zloy:

クラスを作成する場合、新しいデータ型を導入することになります。

このクラスが全く必要ないかというと、まだそうではありません。

また、その場合、3つではなく1つである必要があるのでしょうか?

もしかしたら、あなたのタスクでは、1つ(または3つ)の機能で何とかなるかもしれませんよ?

可能かもしれませんし、可能である可能性も高いのですが、インジケータとExpert Advisorの両方に接続できるクラスを書きたいと思います。そして、このインジケータは、私の見解では、関数をさまざまなバリエーションで呼び出すように設計されています。

 
Alexey Viktorov:

インジケータやExpert Advisorから呼び出せるようなクラスを作りたいのですが、可能でしょうか?そして、このインジケータは、私の意見では、関数をさまざまなバリエーションで呼び出すように設計されています。

また、この関数はインジケーターやExpert Advisorからも呼び出すことができます。

 
Alexey Viktorov:

OOPの必要性、有用性がわかってきたような気がするのですが、なかなか実行に移せないでいます。

私は3つの異なる変数セットで使用するクラスを持っています。しかし、それは一つの仕事をこなしている。簡単に言うと、3つのコンストラクタを挿入し、3つの変数を宣言し、それらを参照することができます。しかし、私の見るところ、それはちょっと正しくないようです。その上、2つのバリエーションで1つの文字列型の変数がありますが、名前が異なり、コードの異なる部分で使用されています。もちろん、変数の並びを変えてもいいのですが、これもちょっと正しくないかなと思います。

新しいオペレータに関する ドキュメントを読みましたが、それがどのように役立つのか理解できません。3つの異なるオブジェクト変数と、同じオブジェクトへの3つのポインタの違いがわかりません。おそらく、一度ポインターを作って、このオブジェクトを使い、不要になったら削除すると儲かるのでしょう。しかし、定期的にそのオブジェクトが必要な場合、その都度ポインタを作成して削除するのは絶対におかしいです。

というわけで、よろしくお願いします。C++のOOPの説明をいくつか読みましたが、そこではmql5のドキュメントよりもひどい表現で説明されています。せっかちな方はご遠慮ください、質問しすぎちゃいますよ。私も説明のない既成のコードには興味がなく、理解したいし、「Do with us, do as we do...」とバカみたいに繰り返すのはやめたい。

クラス」という概念に最も近い存在は「構造」です。そして、構造体とは、リンクされたデータの集合のことである。つまり、異質な変数が意味のある形で結びついた一群のことである。また、クラスには、このデータを操作するためのメソッドが追加されます。メソッド」の最も近い類型は関数である。すなわち、クラスとは、その中にあるデータを制御し、形成するために使用できる一連の関数を組み込んだ構造体である。クラスオブジェクト内のデータ形成の状況やバリエーションに応じて、いくつかのメソッドを用意することができます。あなたの場合、それぞれの状況に応じて、クラス内のデータを形成する3つのメソッドが必要になります。
クラス内に「デフォルトコンストラクタ」が存在すること。このことは、new演算子を使ってクラスの新しいオブジェクトが作られるときに呼び出されます。デフォルトのコンストラクタをMQLプログラムのOnInit関数に例えてみます。
デストラクタは、例えるならOnDeinit関数のアナローグである。
オブジェクトが作成され、役目を終えた後、すぐに「殺す」必要はないのです。MQLプログラム終了後、OnDeinit関数で作成したオブジェクトを「殺す」ことができます。プログラム実行中は、すべてのオブジェクトがメモリ上に存在し、それらを参照することができます。
 
Koldun Zloy:

また、この関数は、インジケーターとEAの両方から呼び出すことができます。

それは間違いないですね。私は流行のプログラミングのやり方に加わりたかったのですが、このようなアドバイスをいただきました))))OOPからお断りすることもあります。すでにこのようなギミックの必要性が理解できないのに、それを言い出すとは :)))

 
Alexey Viktorov:

それは間違いないですね。流行のプログラミングのやり方に参加したかったのに、こんなアドバイスをしてくれるなんて......(笑)。OOPを使うことを一切拒否したほうがいい。すでにこのようなギミックの必要性が理解できないのに、それを言い出すとは :)))

よくわからないものにクラスを使っているのなら、それはOOPではありません。

そうそう、こういうギミックの必要性を理解するまでは、使わない方がいいと忠告しておきます。

 
BlackTomcat:
クラス」という概念に最も近い存在は「構造」です。そして、構造体とは、リンクされたデータの集合のことである。つまり、異質な変数が意味のある形で結びついた一群のことである。 また、クラスには、このデータを操作するためのメソッドが追加されます。メソッド」の最も近い類型は「関数」である。すなわち、クラスとは、その中にあるデータを制御し、形成するために使用できる一連の関数を組み込んだ構造体である。クラスオブジェクト内のデータ形成の状況やバリエーションに応じて、いくつかのメソッドを用意することができます。 あなたの 場合、それぞれの状況に応じて、クラス内にデータを生成する3つのメソッドが必要に なります。
クラス内に「デフォルトコンストラクタ」が存在すること。このことは、new演算子を使ってクラスの新しいオブジェクトが作られるときに呼び出されます。デフォルトのコンストラクタをMQLプログラムのOnInit関数に例えてみます。
デストラクタは、例えるならOnDeinit関数のアナローグである。
オブジェクトが作成され、役目を終えた後、すぐに「殺す」必要はないのです。MQLプログラム終了後、OnDeinit関数で作成したオブジェクトを「殺す」ことができます。プログラム実行中は、すべてのオブジェクトがメモリ上に存在し、それらを参照することができます。

だから、似たような方法を3つも使わないようにしているんです。何しろ、ほとんど同じなのですから。カレンダーイベントの配列を取得し、不要なレコードをふるいにかけて、さらに処理するための配列を提供するのです。

理由: