MQL5におけるOOPに関する質問 - ページ 21 1...141516171819202122232425262728...96 新しいコメント Igor Makanu 2019.08.29 21:41 #201 Alexey Navoykov: 純粋にテスト用のクラスなのか、本当に使うのか? 静的 変数は、私の記憶では、キャラクターが変わっても再初期化されません。 また、一般に、定数静止画を外部値で初期化することは、初期化時に必ずしも利用できるわけではありません。 第二に、私は自分自身のためにも、MT4の下でとにかく書いている - それはいくつかのシンボルのテスターで動作しません、私はMT4で便利なものを見れば、私はMT4Ordersを使ってMT5に切り替えます - 私はこのライブラリで問題なく私の "創作 "をチェックしました。 まず、ちゃんとしたOOPのアイデアを見たい。だから、何が出てくるかテストしているのですが、今のところかなり混乱しています...。時間があるので、自分で作った充電器です )))) MQLでは、グローバルな可視性レベルでもすべてが常に利用可能で、ソースの人たちがそのままトップに行ってそのように書いているのを見ました。 #property strict int dig = _Digits; double point = _Point; double startbalance = AccountBalance(); そして、これらの誤った初期化は、ビルドからビルドへと何年も働き続けています。 一般に、開発者は人々を甘やかしています )))) SZZY: ここでは一般的に、OOPを使うときはいつもそうですが、主なことは、問題を複雑な要素に正しく分割し、手元のすべてを継承しないことです。 私は、テキスト出力エラーをどこに「貼り付ける」のかわかりません。それは、あらゆるクラス、プログラムのあらゆる場所にあるべきです。 Alexey Navoykov 2019.08.29 22:39 #202 Igor Makanu: ppの1月3日すべての解決可能な、しかし...OK、ここで静力学と助け、ヘルプがあるので、それがそうであるように、少なくとも彼の決定を正当化するために何か、今コードは次のとおりです。 Cdealのインスタンスを3つ作成し、ログを取得しました。 ... 今のところ、すべて意図したとおりに動いています また、この関数はクラスの外部で実装されているため、クラス内でフィールドの順序を制御することは困難です。 少なくとも、クラス内に「こういうフィールドは並べ替えてはいけない」という太字のコメントを書くべきでしょう)。でも、どうせなら最初のバリエーションが良かったですね。1行のコードを節約するためにセキュリティを犠牲にしてはいけません ) Igor Makanu 2019.08.29 22:55 #203 Alexey Navoykov: しかし、いずれにしても、あなたのオリジナル版のほうがよかった。一行のコードを節約するために信頼性を犠牲にしてはいけない ) どれどれ- トピックの半分がバリエーションになってる )))) が、うん、100%その通りだ!。 SZYです。 最もシンプルで確実な方法は、OnInit() で new を使ってクラスのインスタンスを作成し、ターミナルの環境変数をすべてすぐにコピーすることですが、これは最善の方法ではありません。この例でコンストラクタを起動したときにすぐに注文を開くつもりなら、このクラスのインスタンスはおそらく削除されて、再度作成されるかもしれません。一般に、この方法では解けません。 ZZZY: 多分、もう一日実験して、最終的には@Vladimir Simakov の 例を取るでしょう - そこではすべてが非常に明確です。 Koldun Zloy 2019.08.30 06:27 #204 Igor Makanu: フィールドを定数値で一度初期化する必要があるクラスをスケッチしてみたところ、意図したとおりに動作するようです。 私は2つのことが嫌いです。 1.初期化の順序が定義されていないため、SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_STEP)を繰り返し呼び出す- VolumeSTEPが最初に初期化され、その後GetDigitsInVolumeStepが 呼ばれることが確実ではない、すなわち 2.静的メソッド static int GetDigitsInVolumeStep()を 取り除きたい - youtubeで、純粋なOOPでは静的メソッドを使用すべきではないというビデオを見たので、今は風車と戦っています。 ビデオへのリンクは、基本的に同じものですhttps://youtu.be/lfdAwl3-X_c とhttps://youtu.be/zME4SOCHT0I この2点をどのように書き直せばよいのでしょうか? 1.この関数を2回呼んでも何も問題はありません。 2.静的関数を使うことに反対している人たちが、微塵も反論しないことに戸惑いを感じないのでしょうか? 誰々のビデオを見るのではなく、本を読んだ方がいい。 Igor Makanu 2019.08.30 07:28 #205 Koldun Zloy: 2.静的関数の使用に反対している人たちが、微塵も反論しないことに戸惑いを感じないのでしょうか? そして、あなたはビデオが実践から何も対応していないという私をサポートする最初の人です、私は別のスレッドでビデオについての私の意見を書いた - スピーカーは、学生の質問に答えることができませんでした。 Artyom Trishkin 2019.08.30 07:34 #206 Igor Makanu: このビデオについて、私は別のスレッドで私の意見を書きました-レポーターは生徒の質問にさえ答えることができませんでした。 OOPは、ネットの口先だけの根拠のない定説に盲従して、自分の能力を削ることではなく、みんなが自分なりのやり方で掃除することだと思います。 Igor Makanu 2019.08.30 08:15 #207 Artyom Trishkin: 私は、OOPとは、インターネット上の一部の口先だけの根拠のない定説に盲従するために、自分の能力を低下させることではなく、誰もが自分なりのやり方で掃除することだと思います。 このビデオをご覧になった方は、ターゲットが・・・・・・と理解されるはずです。まあ、一般的には、あなたも何もわかっていないし、まだ十分に成熟していないのでしょう。 SZZ:後でちょっとインターフェースで実験してみます。"実体美 "が出てくるかもしれませんね )))。 削除済み 2019.08.30 08:46 #208 彼の静力学のビデオを見たのは、すべてああいう書き方をするためだったんだ。 new Type0(new Type1(new Type2(...))); まあ、スタティックの上にラッパーを書くというのは問題ですよね。 class Stateless_with_state { Stateless q; Data d; call() {q::call(d);} }; また、スルーテンプレートの方が明らかに効率的です。会場からの質問も良かったですねhttps://www.youtube.com/watch?v=75U9eefFYoU#t=33m25s Igor Makanu 2019.08.31 19:08 #209 Igor Makanu: ZS: あとでちょっとだけインターフェイスの実験をして、「実体美」が出てくるかもしれませんね ))) OOPパターン - Behavioural patterns - Strategy」が動作するか確認しました。 interface IStrategy { void Algorithm(); }; //+------------------------------------------------------------------+ class Strategy_1 : public IStrategy { public: Strategy_1() {Print(__FUNCTION__);} void Algorithm() {Print(__FUNCTION__);} }; //+------------------------------------------------------------------+ class Strategy_2 : public IStrategy { public: Strategy_2() {Print(__FUNCTION__);} void Algorithm() {Print(__FUNCTION__);} }; //+------------------------------------------------------------------+ class Context { private: IStrategy *s; public: Context(IStrategy &_strategy) {Print(__FUNCTION__); s = GetPointer(_strategy); s.Algorithm();} ~Context() {delete s;} }; //+------------------------------------------------------------------+ void OnStart() { Context c1(new Strategy_1); Context c2(new Strategy_2); } //+------------------------------------------------------------------+ 2019.08.31 21:04:40.441 tst (EURUSD,H1) Strategy_1::Strategy_1 2019.08.31 21:04:40.442 tst (EURUSD,H1) Context::Context 2019.08.31 21:04:40.442 tst (EURUSD,H1) Strategy_1::Algorithm 2019.08.31 21:04:40.442 tst (EURUSD,H1) Strategy_2::Strategy_2 2019.08.31 21:04:40.442 tst (EURUSD,H1) Context::Context 2019.08.31 21:04:40.442 tst (EURUSD,H1) Strategy_2::Algorithm 私見ですが、問題なく動作しています。 Vladimir Simakov 2019.08.31 19:41 #210 Igor Makanu: OOPパターン - Behavioural Patterns - Strategy (戦略)」が動作するか確認しました。 2019.08.31 21:04:40.441 tst (EURUSD,H1) Strategy_1::Strategy_1 2019.08.31 21:04:40.442 tst (EURUSD,H1) Context::Context 2019.08.31 21:04:40.442 tst (EURUSD,H1) Strategy_1::Algorithm 2019.08.31 21:04:40.442 tst (EURUSD,H1) Strategy_2::Strategy_2 2019.08.31 21:04:40.442 tst (EURUSD,H1) Context::Context 2019.08.31 21:04:40.442 tst (EURUSD,H1) Strategy_2::Algorithm は、私にとって何の問題もなく動作します。 Context(IStrategy* _strategy):s(_strategy){Print(__FUNCTION__); s.Algorithm();} もちろん、開発者が暗黙のデリファレンスで失敗したために、このバージョンでは動作しているのですが、私は文書化されていないことにこだわるのはやめようと思っています。 2.確かにC++ではありませんが、非常に似ているので、初期化リスト(効率は分かりませんが)はコッソリあります。 1...141516171819202122232425262728...96 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
純粋にテスト用のクラスなのか、本当に使うのか?
第二に、私は自分自身のためにも、MT4の下でとにかく書いている - それはいくつかのシンボルのテスターで動作しません、私はMT4で便利なものを見れば、私はMT4Ordersを使ってMT5に切り替えます - 私はこのライブラリで問題なく私の "創作 "をチェックしました。
まず、ちゃんとしたOOPのアイデアを見たい。だから、何が出てくるかテストしているのですが、今のところかなり混乱しています...。時間があるので、自分で作った充電器です ))))
MQLでは、グローバルな可視性レベルでもすべてが常に利用可能で、ソースの人たちがそのままトップに行ってそのように書いているのを見ました。
そして、これらの誤った初期化は、ビルドからビルドへと何年も働き続けています。 一般に、開発者は人々を甘やかしています ))))
SZZY: ここでは一般的に、OOPを使うときはいつもそうですが、主なことは、問題を複雑な要素に正しく分割し、手元のすべてを継承しないことです。 私は、テキスト出力エラーをどこに「貼り付ける」のかわかりません。それは、あらゆるクラス、プログラムのあらゆる場所にあるべきです。
ppの1月3日すべての解決可能な、しかし...OK、ここで静力学と助け、ヘルプがあるので、それがそうであるように、少なくとも彼の決定を正当化するために何か、今コードは次のとおりです。
Cdealのインスタンスを3つ作成し、ログを取得しました。
...
今のところ、すべて意図したとおりに動いています
しかし、いずれにしても、あなたのオリジナル版のほうがよかった。一行のコードを節約するために信頼性を犠牲にしてはいけない )
どれどれ- トピックの半分がバリエーションになってる ))))
が、うん、100%その通りだ!。
SZYです。
最もシンプルで確実な方法は、OnInit() で new を使ってクラスのインスタンスを作成し、ターミナルの環境変数をすべてすぐにコピーすることですが、これは最善の方法ではありません。この例でコンストラクタを起動したときにすぐに注文を開くつもりなら、このクラスのインスタンスはおそらく削除されて、再度作成されるかもしれません。一般に、この方法では解けません。
ZZZY: 多分、もう一日実験して、最終的には@Vladimir Simakov の 例を取るでしょう - そこではすべてが非常に明確です。
フィールドを定数値で一度初期化する必要があるクラスをスケッチしてみたところ、意図したとおりに動作するようです。
私は2つのことが嫌いです。
1.初期化の順序が定義されていないため、SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_STEP)を繰り返し呼び出す- VolumeSTEPが最初に初期化され、その後GetDigitsInVolumeStepが 呼ばれることが確実ではない、すなわち
2.静的メソッド static int GetDigitsInVolumeStep()を 取り除きたい - youtubeで、純粋なOOPでは静的メソッドを使用すべきではないというビデオを見たので、今は風車と戦っています。
ビデオへのリンクは、基本的に同じものですhttps://youtu.be/lfdAwl3-X_c とhttps://youtu.be/zME4SOCHT0I
この2点をどのように書き直せばよいのでしょうか?
1.この関数を2回呼んでも何も問題はありません。
2.静的関数を使うことに反対している人たちが、微塵も反論しないことに戸惑いを感じないのでしょうか?
誰々のビデオを見るのではなく、本を読んだ方がいい。
2.静的関数の使用に反対している人たちが、微塵も反論しないことに戸惑いを感じないのでしょうか?
そして、あなたはビデオが実践から何も対応していないという私をサポートする最初の人です、私は別のスレッドでビデオについての私の意見を書いた - スピーカーは、学生の質問に答えることができませんでした。
このビデオについて、私は別のスレッドで私の意見を書きました-レポーターは生徒の質問にさえ答えることができませんでした。
OOPは、ネットの口先だけの根拠のない定説に盲従して、自分の能力を削ることではなく、みんなが自分なりのやり方で掃除することだと思います。
私は、OOPとは、インターネット上の一部の口先だけの根拠のない定説に盲従するために、自分の能力を低下させることではなく、誰もが自分なりのやり方で掃除することだと思います。
このビデオをご覧になった方は、ターゲットが・・・・・・と理解されるはずです。まあ、一般的には、あなたも何もわかっていないし、まだ十分に成熟していないのでしょう。
SZZ:後でちょっとインターフェースで実験してみます。"実体美 "が出てくるかもしれませんね )))。
彼の静力学のビデオを見たのは、すべてああいう書き方をするためだったんだ。
まあ、スタティックの上にラッパーを書くというのは問題ですよね。
class Stateless_with_state { Stateless q; Data d; call() {q::call(d);} };
また、スルーテンプレートの方が明らかに効率的です。会場からの質問も良かったですねhttps://www.youtube.com/watch?v=75U9eefFYoU#t=33m25s
ZS: あとでちょっとだけインターフェイスの実験をして、「実体美」が出てくるかもしれませんね )))
OOPパターン - Behavioural patterns - Strategy」が動作するか確認しました。
2019.08.31 21:04:40.441 tst (EURUSD,H1) Strategy_1::Strategy_1
2019.08.31 21:04:40.442 tst (EURUSD,H1) Context::Context
2019.08.31 21:04:40.442 tst (EURUSD,H1) Strategy_1::Algorithm
2019.08.31 21:04:40.442 tst (EURUSD,H1) Strategy_2::Strategy_2
2019.08.31 21:04:40.442 tst (EURUSD,H1) Context::Context
2019.08.31 21:04:40.442 tst (EURUSD,H1) Strategy_2::Algorithm
私見ですが、問題なく動作しています。
OOPパターン - Behavioural Patterns - Strategy (戦略)」が動作するか確認しました。
2019.08.31 21:04:40.441 tst (EURUSD,H1) Strategy_1::Strategy_1
2019.08.31 21:04:40.442 tst (EURUSD,H1) Context::Context
2019.08.31 21:04:40.442 tst (EURUSD,H1) Strategy_1::Algorithm
2019.08.31 21:04:40.442 tst (EURUSD,H1) Strategy_2::Strategy_2
2019.08.31 21:04:40.442 tst (EURUSD,H1) Context::Context
2019.08.31 21:04:40.442 tst (EURUSD,H1) Strategy_2::Algorithm
は、私にとって何の問題もなく動作します。
もちろん、開発者が暗黙のデリファレンスで失敗したために、このバージョンでは動作しているのですが、私は文書化されていないことにこだわるのはやめようと思っています。
2.確かにC++ではありませんが、非常に似ているので、初期化リスト(効率は分かりませんが)はコッソリあります。