ライブラリ: Init_Sync - ページ 2 12 新しいコメント Georgiy Merts 2017.04.18 08:15 #11 fxsaber:危険な例は見つからなかった。私の記憶では、#includeが存在するにもかかわらず、コードのどこを探してもユーザーから呼び出されないようなライブラリはこれだけだ。さて、このライブラリの主なものは、標準関数のトリッキーなオーバーライドである。これは暗黙の呼び出しであることがわかる。私は、変更とコード・サポートの観点から、その危険性をお伝えしているのです。これらの暗黙のオーバーライドはすぐに忘れ去られ、プラットフォームが変わったりシンクロナイザーが壊れたりしたときに、それを検出するのが非常に難しくなる。しかし、それでも、これが突飛な状況であることには同意する。一般的には、このアイデアは非常に独創的で賢明だ。実際、呼び出しなしでライブラリを接続するだけで、非常に便利な結果を得ることができる。 Nikolai Semko 2017.04.18 08:15 #12 fxsaber: ところで、コードをありがとう。たくさんの貴重なことを学んだし、面白いアイデアももらったよ。 fxsaber 2017.04.18 08:25 #13 遅延時間の測定 static const ulong StartTime = GetMicrosecondCount(); // if (FirstRun && (!::GlobalVariableCheck(INIT_SYNC::InitSync.GlobalName))) if (FirstRun && (!INIT_SYNC::ResourceCheck(INIT_SYNC::InitSync.GlobalName))) { // FirstRun = (::GlobalVariableSet(INIT_SYNC::InitSync.GlobalName, 0) == 0); FirstRun = !INIT_SYNC::ResourceCreate(INIT_SYNC::InitSync.GlobalName); if (!FirstRun) { Print(GetMicrosecondCount() - StartTime);TF切り替え時に300msに達することがある。これは "コールド "の場合ではない。ホット」端子でも時々遅くなることがわかった。おそらく、このことをSDに書いて修正すべきだろう。 Otto Pauser 2017.06.23 10:35 #14 残念ながら、私には理解できない。私のテストでは、シーケンスは乱れていません。DeInitとInitは期待通りに実行されている。それ以外は疑わしい。だから、このコード例は何をしようとしているのだろう! Carl Schreiber 2017.06.23 13:27 #15 このようなことは時々起こるが、常に起こるわけではなく、また必ずしも起こるわけでもないと思う。これはおそらく「スレッドレース」によるもので、何がいつ、どのような順序で実行されるかを決定することはできません。私は以前、次のようなアイデアを思いつきました(MT4で、しかしMT5でも動作するはずです)。 int lastPing = TerminalInfoInteger(TERMINAL_PING_LAST);サーバーへの接続の中断を使用することを考えましたが、それは不可能でした!pingテストはターミナルによって独自のスレッドで実行されるため、このコマンドがOnCalculate()またはOnTick()の一番最初であっても、過少計算が正しく表示されるとは限りません。もしpingテストがほんの1ミリ秒前に実行されたのであれば、すべて問題ないと表示されます :(ランディングケーブルを引っ張って試してみてください。私の提案は、スレッドを変更するか(おそらく難しい)、EAやインジケータから 最後の2、3回のpingテストを提供するか(簡単でしょう)、中断を超簡単に認識できるようにすることです:そんなつもりはありません。 fxsaber 2017.06.23 22:41 #16 Otto Pauser:残念ながら、私には理解できない。私のテストでは、シーケンスは乱れていません。DeInitとInitは期待通りに実行されている。それ以外は疑わしい。このコード例は何をするものなのでしょうか!このインディケータを起動し、時間枠やシンボルを変更すると、ジャーナル内の文字列「Init」と「Deinit」の順序に乱れが生じます。 fxsaber 2017.11.06 09:29 #17 別のMT5インジケーターの特異性のごった煮。ライブラリソースに非常に微妙な点がある。 static string GetMyUniqueName( void ) { const int handle = GetMyHandle(); MqlParam Params[]; ENUM_INDICATOR Type; const int Total = ::IndicatorParameters(handle, Type, Params); ::IndicatorRelease(handle); uchar Bytes[]; for (int i = 1; i < Total; i++) { ::ArrayCopy(Bytes, _R(Params[i].double_value).Bytes, ::ArraySize(Bytes)); ::ArrayCopy(Bytes, _R(Params[i].integer_value).Bytes, ::ArraySize(Bytes)); ::ArrayCopy(Bytes, _R(Params[i].string_value).Bytes, ::ArraySize(Bytes)); } return("::" + (string)::ChartID() + (string)INIT_SYNC::crc64(Bytes) + ::MQLInfoString(MQL_PROGRAM_NAME)); }それはハイライトされた行で、これは必須なのだが、その理由を言葉で説明するのは難しい。 削除済み 2019.01.21 18:34 #18 こんにちは、@fxsaber。あなたのライブラリを使おうとすると、次のようなエラーが出ます。 どうすれば解決できますか? fxsaber 2019.01.21 20:17 #19 Paul Carissimo:こんにちは、@fxsaber。あなたのライブラリを使おうとすると、次のようなエラーが出ます。どうすれば解決できますか?説明をよく読んでください。 12 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
危険な例は見つからなかった。
私の記憶では、#includeが存在するにもかかわらず、コードのどこを探してもユーザーから呼び出されないようなライブラリはこれだけだ。
さて、このライブラリの主なものは、標準関数のトリッキーなオーバーライドである。これは暗黙の呼び出しであることがわかる。
私は、変更とコード・サポートの観点から、その危険性をお伝えしているのです。これらの暗黙のオーバーライドはすぐに忘れ去られ、プラットフォームが変わったりシンクロナイザーが壊れたりしたときに、それを検出するのが非常に難しくなる。しかし、それでも、これが突飛な状況であることには同意する。一般的には、このアイデアは非常に独創的で賢明だ。実際、呼び出しなしでライブラリを接続するだけで、非常に便利な結果を得ることができる。
ところで、コードをありがとう。たくさんの貴重なことを学んだし、面白いアイデアももらったよ。
TF切り替え時に300msに達することがある。これは "コールド "の場合ではない。ホット」端子でも時々遅くなることがわかった。
おそらく、このことをSDに書いて修正すべきだろう。
残念ながら、私には理解できない。私のテストでは、シーケンスは乱れていません。
DeInitとInitは期待通りに実行されている。それ以外は疑わしい。
だから、このコード例は何をしようとしているのだろう!
このようなことは時々起こるが、常に起こるわけではなく、また必ずしも起こるわけでもないと思う。
これはおそらく「スレッドレース」によるもので、何がいつ、どのような順序で実行されるかを決定することはできません。
私は以前、次のようなアイデアを思いつきました(MT4で、しかしMT5でも動作するはずです)。
サーバーへの接続の中断を使用することを考えましたが、それは不可能でした!
pingテストはターミナルによって独自のスレッドで実行されるため、このコマンドがOnCalculate()またはOnTick()の一番最初であっても、過少計算が正しく表示されるとは限りません。
もしpingテストがほんの1ミリ秒前に実行されたのであれば、すべて問題ないと表示されます :(
ランディングケーブルを引っ張って試してみてください。
私の提案は、スレッドを変更するか(おそらく難しい)、EAやインジケータから 最後の2、3回のpingテストを提供するか(簡単でしょう)、中断を超簡単に認識できるようにすることです:そんなつもりはありません。
残念ながら、私には理解できない。私のテストでは、シーケンスは乱れていません。
DeInitとInitは期待通りに実行されている。それ以外は疑わしい。
このコード例は何をするものなのでしょうか!
別のMT5インジケーターの特異性のごった煮。
ライブラリソースに非常に微妙な点がある。
それはハイライトされた行で、これは必須なのだが、その理由を言葉で説明するのは難しい。
こんにちは、@fxsaber。あなたのライブラリを使おうとすると、次のようなエラーが出ます。
どうすれば解決できますか?
こんにちは、@fxsaber。あなたのライブラリを使おうとすると、次のようなエラーが出ます。
どうすれば解決できますか?
説明をよく読んでください。