Init()およびDeInit()実行シーケンス - ページ 20 1...13141516171819202122232425262728 新しいコメント fxsaber 2017.04.14 15:07 #191 Комбинатор:fを変更したとき。インジケーターのバッファに古いタイムフレームのゴミが残っていると、タイマーにも影響が出る場合があります。 より美しくなる トレーディング、自動売買システム、ストラテジーテストに関するフォーラム MetaTrader 4の新バージョン(ビルド1065)。 セルゲイ・クリモフ さん 2017.04.14 16:34 アカウントを切り替えても、インジケーターの変数_Digitsは変化しません。 TheXpert 2017.04.14 15:32 #192 fxsaber: よりかわいくなりました。 桁が違うので、あちこちに行きそうなので、5年ほど前に同じ端末でそのようなアカウントを横断するのをやめました。 Alexey Viktorov 2017.04.14 15:45 #193 fxsaber: よりかわいくなりました。MT4で正しい整合性を語る人向けです。 MT4では、すべてがそれほどきれいではないことを見て、理解してください。 Nikolai Semko 2017.04.14 16:16 #194 fxsaber: キューは曖昧なものではありません。 さて、どこが曖昧なのでしょうか?この原始的な例を試してみてください。TFを交換すると "らしさ "がわかる。この例では、OnInitで現在時刻と 価格の座標を持つオブジェクトが作成されます。OnCalculateでは、このオブジェクトは価格と一緒に移動します。OnDeinitでは単純に(論理的に)削除される。TFを切り替えると、オブジェクトが現れ、そして消える。 なぜ、このようなことが起こるのでしょうか。 なぜなら、古いTFのOnDeinitで、新しいTFのOnInitですでに作成されたものを削除して しまうことが あるからです。バグではありません!この例を作ったプログラマは、このブランチを読まずにどう考えるべきでしょうか?#property copyright "Copyright 2016, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" #property indicator_chart_window //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int OnInit() { datetime t = TimeCurrent(); double pr = SymbolInfoDouble(Symbol(),SYMBOL_BID); ObjectCreate(0,"InitDeinit",OBJ_ARROW_THUMB_UP,0,t,pr); ObjectSetInteger(0,"InitDeinit",OBJPROP_WIDTH,15); return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { ObjectDelete(0,"InitDeinit"); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int OnCalculate (const int rates_total, // размер массива price[] const int prev_calculated, // обработано баров на предыдущем вызове const int begin, // откуда начинаются значимые данные const double& price[]) // массив для расчета { datetime t = TimeCurrent(); double pr = SymbolInfoDouble(Symbol(),SYMBOL_BID); ObjectMove(0,"InitDeinit",0,t,pr); return(rates_total); } //+------------------------------------------------------------------+ ファイル: Init-Deinit.mq5 5 kb fxsaber 2017.04.14 16:32 #195 Nikolai Semko:さて、彼女はどこに一心不乱にいるのだろう。 そこで話題になったのが、タイマーです。 Nikolai Semko 2017.04.14 16:41 #196 fxsaber: そこにタイマーのことが書かれていました。 何が違うのか。オブジェクトの生成の代わりにEventSetTimerをUniteに、オブジェクトの削除の代わりにEventKillTimerをDeuniteに配置すればよい。そして、これは不確実性を減らすことはできません。なぜなら、設定されたタイマーは 古いTFのDeuniteによって殺されるし、そうでない場合もあるからです。そして、さらに悪いことに、少なくとも対象物は見えますが、タイマーは見えないのです。 Dmitry Fedoseev 2017.04.14 16:54 #197 もしかしたら、もう発明しているかもしれない、全部読んでないけど。インジケータがパネルを作成する場合、ターミナルのグローバル変数を 使用し、initでその値を1増加させ、グラフィカルオブジェクトの名前への加算として使用することができます。私の仕事は、パネルのパラメータを保存することで、そのためにdeinitで端末のグローバル変数を作成しました。解決策は簡単で、端末のグローバル変数をiniteで作成し、グラフィックパネルでパラメータが変更されたときにそれぞれを更新することです。インジケータの削除により非初期化が発生した場合のみ、deinit で変数を削除する。 Forester 2017.04.14 17:03 #198 Dmitry Fedoseev インジケータがパネルを作成する場合、ターミナルのグローバル変数を 使用し、その値を1だけ増やし、グラフィカルオブジェクトの名前の追加として使用することができます。 これは松葉杖です。端末で正しい注文をすればそれでいいのです。まず、前のインスタンスを終了させ、それから新しいインスタンスを開始させます。ニコライ・セムコこの例を作ったプログラマは、このスレッドを読んでないのに何を考えているのだろう?全く同感です。読者以外の人はこの機能を知らず、それを理解するために時間を浪費してしまうでしょう。それも数百人単位で...。...特に初心者の方。必要なのは、一度バグを修正すること、それだけです。 fxsaber 2017.04.14 17:18 #199 Nikolai Semko: 何が違うのか。オブジェクトの生成の代わりにEventSetTimerをUniteに、オブジェクトの削除の代わりにEventKillTimerをDeuniteに配置すればよい。また、旧TFのDeuniteによってセットタイマーが 殺されることもあれば、そうでないこともあるので、不確実性は減らないでしょう。さらに悪いことに、少なくともオブジェクトは見えますが、タイマーが動作しているかどうかがわからないのです。 バカみたいですね。インジケーターコピーのタイマーは互いに関係ない。 Nikolai Semko 2017.04.14 17:41 #200 elibrarius: すべて松葉づえです。端末で正しい順序を作るだけで、それだけでいいのです。まず、前のインスタンスをdeinitし、その後で新しいインスタンスを初期化するのみです。全く同感です。読者以外の人はこの機能を知らず、それを理解するために時間を浪費してしまうでしょう。それも数百人単位で...。特に初心者の方には申し訳ないです。一回バグを直せばそれでいいのです。 さすがです! 個人的には、言葉だけでなく行動でも対処法を知っているので、大多数より有利だと感じており、調子に乗っています。すでにパッチを作成し、プログラムに松葉杖を追加しています。ただ、開発者がこの「機能」をバグとみなすことを頑なに拒むのは理解できない。 例えば。スラワ指標は本来の目的のために使用されるべきものである。つまり、チャートの シンボル期間が変わったときのOnInitとOnDeinitの実行順序は、誰も気にする必要はないはずです。しかし、上記のアニメーションGIFの例では、このトピックを読んでいないプログラマにとっては、決定的なバグがありますね。意図したとおりに行われないこととは? 1...13141516171819202122232425262728 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
fを変更したとき。
インジケーターのバッファに古いタイムフレームのゴミが残っていると、タイマーにも影響が出る場合があります。
トレーディング、自動売買システム、ストラテジーテストに関するフォーラム
MetaTrader 4の新バージョン(ビルド1065)。
セルゲイ・クリモフ さん 2017.04.14 16:34
アカウントを切り替えても、インジケーターの変数_Digitsは変化しません。
よりかわいくなりました。
よりかわいくなりました。
MT4で正しい整合性を語る人向けです。
MT4では、すべてがそれほどきれいではないことを見て、理解してください。
キューは曖昧なものではありません。
さて、どこが曖昧なのでしょうか?
この原始的な例を試してみてください。TFを交換すると "らしさ "がわかる。
この例では、OnInitで現在時刻と 価格の座標を持つオブジェクトが作成されます。OnCalculateでは、このオブジェクトは価格と一緒に移動します。
OnDeinitでは単純に(論理的に)削除される。
TFを切り替えると、オブジェクトが現れ、そして消える。
なぜ、このようなことが起こるのでしょうか。
なぜなら、古いTFのOnDeinitで、新しいTFのOnInitですでに作成されたものを削除して しまうことが あるからです。バグではありません!この例を作ったプログラマは、このブランチを読まずにどう考えるべきでしょうか?
さて、彼女はどこに一心不乱にいるのだろう。
そこにタイマーのことが書かれていました。
何が違うのか。オブジェクトの生成の代わりにEventSetTimerをUniteに、オブジェクトの削除の代わりにEventKillTimerをDeuniteに配置すればよい。そして、これは不確実性を減らすことはできません。なぜなら、設定されたタイマーは 古いTFのDeuniteによって殺されるし、そうでない場合もあるからです。そして、さらに悪いことに、少なくとも対象物は見えますが、タイマーは見えないのです。
もしかしたら、もう発明しているかもしれない、全部読んでないけど。インジケータがパネルを作成する場合、ターミナルのグローバル変数を 使用し、initでその値を1増加させ、グラフィカルオブジェクトの名前への加算として使用することができます。
私の仕事は、パネルのパラメータを保存することで、そのためにdeinitで端末のグローバル変数を作成しました。解決策は簡単で、端末のグローバル変数をiniteで作成し、グラフィックパネルでパラメータが変更されたときにそれぞれを更新することです。インジケータの削除により非初期化が発生した場合のみ、deinit で変数を削除する。
インジケータがパネルを作成する場合、ターミナルのグローバル変数を 使用し、その値を1だけ増やし、グラフィカルオブジェクトの名前の追加として使用することができます。
この例を作ったプログラマは、このスレッドを読んでないのに何を考えているのだろう?
全く同感です。読者以外の人はこの機能を知らず、それを理解するために時間を浪費してしまうでしょう。それも数百人単位で...。...特に初心者の方。
必要なのは、一度バグを修正すること、それだけです。
何が違うのか。オブジェクトの生成の代わりにEventSetTimerをUniteに、オブジェクトの削除の代わりにEventKillTimerをDeuniteに配置すればよい。また、旧TFのDeuniteによってセットタイマーが 殺されることもあれば、そうでないこともあるので、不確実性は減らないでしょう。さらに悪いことに、少なくともオブジェクトは見えますが、タイマーが動作しているかどうかがわからないのです。
すべて松葉づえです。端末で正しい順序を作るだけで、それだけでいいのです。まず、前のインスタンスをdeinitし、その後で新しいインスタンスを初期化するのみです。
全く同感です。読者以外の人はこの機能を知らず、それを理解するために時間を浪費してしまうでしょう。それも数百人単位で...。特に初心者の方には申し訳ないです。
一回バグを直せばそれでいいのです。
さすがです!
個人的には、言葉だけでなく行動でも対処法を知っているので、大多数より有利だと感じており、調子に乗っています。すでにパッチを作成し、プログラムに松葉杖を追加しています。
ただ、開発者がこの「機能」をバグとみなすことを頑なに拒むのは理解できない。
例えば。
指標は本来の目的のために使用されるべきものである。
つまり、チャートの シンボル期間が変わったときのOnInitとOnDeinitの実行順序は、誰も気にする必要はないはずです。
しかし、上記のアニメーションGIFの例では、このトピックを読んでいないプログラマにとっては、決定的なバグがありますね。意図したとおりに行われないこととは?