MT5とスピードの関係 - ページ 46 1...394041424344454647484950515253...94 新しいコメント fxsaber 2020.10.05 23:27 #451 Renat Fatkhullin:ミリ秒タイマーは昔からある: EventSetMillisecondTimer() 完全に蚊帳の外ですね。OnTickで2つのポジションをオープンする必要があるとします。最初のOrderSendは数ミリ秒です。その後、スナップショットを作成する必要があります。そして、2回目のOrderSendが呼び出されるはずです。 OnTickのみ数百ミリ秒の実行が可能です。そして、OnTimerのスナップショットを提案されていますね。 fxsaber 2020.10.05 23:28 #452 Renat Fatkhullin:また、測光ライブラリ自体にも問題があります。オーバーヘッドをはじめ、不要なものがたくさんあります。 スタジオで言い争い!? fxsaber 2020.10.05 23:36 #453 Renat Fatkhullin:以下は私のコードと安定したランタイムです:20個のグラフを並列に並べても数百、数千マイクロ秒の誤差はありません。コア数とプロセッサーの種類は?i7-2600? 8コア 2020.10.06 02:27:59.464 Terminal MetaTrader 5 x64 build 2630 started for MetaQuotes Software Corp. 2020.10.06 02:27:59.465 Terminal Windows 10 build 19042, Intel Core i7-2700 K @ 3.50 GHz, 7 / 15 Gb memory, 19 / 29 Gb disk, IE 11, Admin, GMT+3 数百万のリクエストを並行して行う、隠れたストレステストを再度実施? コンバットアドバイザーは何度も言ったでしょう。通話回数をできる限り少なくした。理論上は(測定していませんが)OnTickあたり最大10コールです。 より透明性を高める。単純な_Bコールを数回掲載しただけで、他の主張の証拠にはなりません。突拍子もない主張をした途端、コードや実際の条件の説明を急に忘れるんですね。 頭の中で何も想像する必要はありません。実際に電話をかけてテストしたことを伝え、見せてください。未知のストレステストを実行し、世界に示すアラートを待つ」という破廉恥な結果ではなく、まさにテストの全コードを表示します。 ライブEAでの結果を公開しています。そこには、WinAPIを含む70個のmqhファイルがあります。口先だけでなく、本当に理解してくれるなら、ソースコードを差し上げます。かなり早くブレーキが再現されますよ。 Renat Fatkhullin 2020.10.06 05:20 #454 fxsaber:完全に蚊帳の外ですね。例えば、OnTickで2つのポジションを開く必要があるとします。最初のOrderSendは数ミリ秒です。その後、スナップショットを作成する必要があります。そして、2回目のOrderSendが呼び出されるはずです。OnTickのみ数百ミリ秒の実行が可能です。そして、OnTimerのスナップショットを提案されていますね。 私はスナップを勧めているのではなく、ミリ秒タイマーについての 直接的な質問に答えたのです。現在のテスターでは1秒後にトリガーされたままですが、それはあります。私たちが書いている新しいテスターでは、これを変更しようと思っています。 Renat Fatkhullin 2020.10.06 05:22 #455 fxsaber:8コア何度もコンバットアドバイザーと言った。通話回数をできる限り少なくした。理論上は(測定していませんが)OnTickあたり最大10コールです。Expert Advisorの結果を公表しています。そこには、WinAPIを含む70個のmqhファイルがあります。口先だけでなく、本当に理解してくれるなら、ソースコードを渡しますよ。ブレーキはすぐに弾けるようになりますよ。 何とかするから、ソースコードをくれ。 Renat Fatkhullin 2020.10.06 06:11 #456 fxsaber:テーブルの上の議論! あなたのベンチマーク 全体はゴミで溢れかえっていますが、実はここにクリーンで理解しやすい(あなたのごちゃごちゃしたコードと違って)バージョンがあります。 //--- benchmark macros #define _B(_function,_alert_interval) \ { \ ulong _latency=GetMicrosecondCount(); \ _function; \ _latency=GetMicrosecondCount()-_latency; \ if(_latency > _alert_interval) \ ::Alert("Time[" + __FILE__ + " " + (string)__LINE__ + " in " + __FUNCTION__+ ": " + #_function + "] = " + (string)_latency + " mсs"); \ } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void OnTick() { MqlTick Tick; _B(SymbolInfoTick(_Symbol,Tick),0); _B(SymbolInfoTick(_Symbol,Tick),0); } あなたの悩みは何ですか。 ふちょうコード オーバーヘッドが多いクラスへのバインディング 50個の結果をスタックに格納するコスト static bool Set( const string Str ) { if (BENCHMARK::Amount == BENCHMARK::ReserveSize) BENCHMARK::ReserveSize = ::ArrayResize(BENCHMARK::Bench, BENCHMARK::ReserveSize + BENCHMARK_RESERVE); BENCHMARK::Bench[BENCHMARK::Amount++].Set(Str); return(true); } taking results - one solid overhead and rubbish in object bindings static ulong Get( const uint AlertInterval = 0 ) { const int Pos = BENCHMARK::Amount - 1; const ulong Res = (Pos < 0) ? 0 : BENCHMARK::Bench[Pos].Get(); if (Pos >= 0) { if (AlertInterval && (Res > AlertInterval)) ::Alert("Time[" + BENCHMARK::Bench[Pos].Str + "] = " + (string)Res + " mсs."); BENCHMARK::Amount = Pos; } return(Res); } テスト用のコード最適 化を無効にしていないでしょうか? metaeditor.iniのグローバルパラメータOptimize= 0のことです。 fxsaber 2020.10.06 08:59 #457 Renat Fatkhullin:あなたのベンチマーク 全体はゴミで溢れかえっていますが、実はここにクリーンで理解しやすい(あなたの乱雑なコードとは対照的な)バージョンがあります。 あなたのバージョンは、残念ながら、利便性を理解するための初期段階です。便利なのは、こんな風にできるときです。 トレーディング、自動売買システム、ストラテジーテストに関するフォーラム ライブラリ: ベンチマーク fxsaber, 2020.10.01 23:49 今度は、標準バリエーションでどこにヒケがあるのかを探ってみます。ソースコードにいくつかのシンボルを追加します。 for (long Chart = _B2(::ChartFirst()); (Chart != -1) && !Res; Chart = _B2(::ChartNext(Chart))) Res = (Chart != chartID) && _B2(::ChartGetInteger(Chart, CHART_IS_MAXIMIZED)); そして、すぐにその理由がわかる。 2020.10.02 00:45:14.113 Alert: Time[Test9.mq5 36 in IsInvisible: ::ChartGetInteger(Chart,CHART_IS_MAXIMIZED)] = 878 mсs. 2020.10.02 00:45:14.114 Alert: Time[Test9.mq5 36 in IsInvisible: ::ChartGetInteger(Chart,CHART_IS_MAXIMIZED)] = 943 mсs. 2020.10.02 00:45:14.114 Alert: Time[Test9.mq5 36 in IsInvisible: ::ChartGetInteger(Chart,CHART_IS_MAXIMIZED)] = 297 mсs. 2020.10.02 00:45:14.116 Alert: Time[Test9.mq5 36 in IsInvisible: ::ChartGetInteger(Chart,CHART_IS_MAXIMIZED)] = 1787 mсs. 2020.10.02 00:45:14.116 Alert: Time[Test9.mq5 35 in IsInvisible: ::ChartNext(Chart)] = 2 mсs. 2020.10.02 00:45:14.117 Alert: Time[Test9.mq5 36 in IsInvisible: ::ChartGetInteger(Chart,CHART_IS_MAXIMIZED)] = 980 mсs. 2020.10.02 00:45:14.117 Alert: Time[Test9.mq5 35 in IsInvisible: ::ChartNext(Chart)] = 2 mсs. 2020.10.02 00:45:14.117 Alert: Time[Test9.mq5 36 in IsInvisible: ::ChartGetInteger(Chart,CHART_IS_MAXIMIZED)] = 59 mсs. 2020.10.02 00:45:14.118 Alert: Time[Test9.mq5 36 in IsInvisible: ::ChartGetInteger(Chart,CHART_IS_MAXIMIZED)] = 803 mсs. 2020.10.02 00:45:14.119 Alert: Time[Test9.mq5 36 in IsInvisible: ::ChartGetInteger(Chart,CHART_IS_MAXIMIZED)] = 1059 mсs. CHART_IS_MAXIMIZED は、他人のチャートでは遅すぎる。バグレポートが出来上がりました図書館と一緒でとても楽でした。 何が問題なのか。 ふちょうコード 鳶職 stack storage cost of 50 results 結果を得る - 1つの大規模なオーバーヘッドとオブジェクトバインディングのゴミ 使い勝手の良さは、わずかなオーバーヘッドを凌駕しています。実装方法をよく見ると悲惨なことになってる。例えば、ArrayResizeはオーバーヘッドであるため、その使用は最小限にとどめています。 テスト用のコード最適 化を無効にしていないでしょうか? metaeditor.iniのグローバルパラメータOptimize= 0のことです。 スローモードには興味がない。アルゴリズムの最適化、コンパイラの最適化にももちろん気を配りながら、戦闘EAのパフォーマンスを見ています。 Roman 2020.10.06 13:35 #458 Renat Fatkhullin:あなたのベンチマーク 全体はゴミで溢れかえっていますが、実はここにクリーンで理解しやすい(あなたのごちゃごちゃしたコードと違って)バージョンがあります。何が問題なんだ。 ふちょうコード オーバーヘッドの多いクラスとのタイアップ stack storage cost of 50 results 結果の取得 - 巨大なオーバーヘッドとオブジェクトバインディングのゴミ テスト用のコード最適 化を無効にしていないでしょうか?metaeditor.iniのグローバルパラメータOptimize= 0のことです。 ここではC-styleで、シンプルで本当にゴミが出ないようになっています。例を挙げていただきありがとうございます。 この接頭辞は、ライブラリやプログラムなどの開発者が使うからです。 また、重複しないように、使わない方がいいとC言語の先生が言ってました。 mql5では、自分の名前と重ねることは可能なのでしょうか? それとも、カスタム名はMQ名から完全に遮蔽されているのでしょうか? Edgar Akhmadeev 2020.10.06 14:27 #459 Roman:あるC言語の先生は、ユーザー名にアンダースコア_Bを使わないことを推奨していました。、この接頭辞はライブラリやソフトウェアなどの開発者が使うからです。 また、重複を避けるために、使わないことを推奨していました。 C言語では、"_"で始まる名前は、サービス名、システム名、特殊名として使用されます。この場合、許されると思います。この機能は、コードの保守・検討に使用されるため。 Roman 2020.10.06 14:38 #460 Edgar Akhmadeev:で始まる名前は、C言語ではサービス名、システム名、特殊名として使われます。この場合は-許容範囲内だと思います。この機能は、コードの保守・検討に使用されるため。 そこがポイントで、mql5以外にも、開発者用のMQサービス名があるのです。 1...394041424344454647484950515253...94 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
ミリ秒タイマーは昔からある: EventSetMillisecondTimer()
完全に蚊帳の外ですね。OnTickで2つのポジションをオープンする必要があるとします。最初のOrderSendは数ミリ秒です。その後、スナップショットを作成する必要があります。そして、2回目のOrderSendが呼び出されるはずです。
OnTickのみ数百ミリ秒の実行が可能です。そして、OnTimerのスナップショットを提案されていますね。
また、測光ライブラリ自体にも問題があります。オーバーヘッドをはじめ、不要なものがたくさんあります。
スタジオで言い争い!?
以下は私のコードと安定したランタイムです:20個のグラフを並列に並べても数百、数千マイクロ秒の誤差はありません。
コア数とプロセッサーの種類は?i7-2600?
8コア
数百万のリクエストを並行して行う、隠れたストレステストを再度実施?
コンバットアドバイザーは何度も言ったでしょう。通話回数をできる限り少なくした。理論上は(測定していませんが)OnTickあたり最大10コールです。
より透明性を高める。単純な_Bコールを数回掲載しただけで、他の主張の証拠にはなりません。突拍子もない主張をした途端、コードや実際の条件の説明を急に忘れるんですね。
頭の中で何も想像する必要はありません。実際に電話をかけてテストしたことを伝え、見せてください。未知のストレステストを実行し、世界に示すアラートを待つ」という破廉恥な結果ではなく、まさにテストの全コードを表示します。
ライブEAでの結果を公開しています。そこには、WinAPIを含む70個のmqhファイルがあります。口先だけでなく、本当に理解してくれるなら、ソースコードを差し上げます。かなり早くブレーキが再現されますよ。
完全に蚊帳の外ですね。例えば、OnTickで2つのポジションを開く必要があるとします。最初のOrderSendは数ミリ秒です。その後、スナップショットを作成する必要があります。そして、2回目のOrderSendが呼び出されるはずです。
OnTickのみ数百ミリ秒の実行が可能です。そして、OnTimerのスナップショットを提案されていますね。
8コア
何度もコンバットアドバイザーと言った。通話回数をできる限り少なくした。理論上は(測定していませんが)OnTickあたり最大10コールです。
Expert Advisorの結果を公表しています。そこには、WinAPIを含む70個のmqhファイルがあります。口先だけでなく、本当に理解してくれるなら、ソースコードを渡しますよ。ブレーキはすぐに弾けるようになりますよ。
テーブルの上の議論!
あなたのベンチマーク 全体はゴミで溢れかえっていますが、実はここにクリーンで理解しやすい(あなたのごちゃごちゃしたコードと違って)バージョンがあります。
あなたの悩みは何ですか。
テスト用のコード最適 化を無効にしていないでしょうか?
metaeditor.iniのグローバルパラメータOptimize= 0のことです。
あなたのベンチマーク 全体はゴミで溢れかえっていますが、実はここにクリーンで理解しやすい(あなたの乱雑なコードとは対照的な)バージョンがあります。
あなたのバージョンは、残念ながら、利便性を理解するための初期段階です。便利なのは、こんな風にできるときです。
トレーディング、自動売買システム、ストラテジーテストに関するフォーラム
ライブラリ: ベンチマーク
fxsaber, 2020.10.01 23:49
今度は、標準バリエーションでどこにヒケがあるのかを探ってみます。ソースコードにいくつかのシンボルを追加します。
そして、すぐにその理由がわかる。
CHART_IS_MAXIMIZED は、他人のチャートでは遅すぎる。バグレポートが出来上がりました図書館と一緒でとても楽でした。
何が問題なのか。
使い勝手の良さは、わずかなオーバーヘッドを凌駕しています。実装方法をよく見ると悲惨なことになってる。例えば、ArrayResizeはオーバーヘッドであるため、その使用は最小限にとどめています。
テスト用のコード最適 化を無効にしていないでしょうか?
metaeditor.iniのグローバルパラメータOptimize= 0のことです。
スローモードには興味がない。アルゴリズムの最適化、コンパイラの最適化にももちろん気を配りながら、戦闘EAのパフォーマンスを見ています。
あなたのベンチマーク 全体はゴミで溢れかえっていますが、実はここにクリーンで理解しやすい(あなたのごちゃごちゃしたコードと違って)バージョンがあります。
何が問題なんだ。
テスト用のコード最適 化を無効にしていないでしょうか?
metaeditor.iniのグローバルパラメータOptimize= 0のことです。
ここではC-styleで、シンプルで本当にゴミが出ないようになっています。例を挙げていただきありがとうございます。
この接頭辞は、ライブラリやプログラムなどの開発者が使うからです。
また、重複しないように、使わない方がいいとC言語の先生が言ってました。
mql5では、自分の名前と重ねることは可能なのでしょうか?
それとも、カスタム名はMQ名から完全に遮蔽されているのでしょうか?
あるC言語の先生は、ユーザー名にアンダースコア_Bを使わないことを推奨していました。
、この接頭辞はライブラリやソフトウェアなどの開発者が使うからです。
また、重複を避けるために、使わないことを推奨していました。
C言語では、"_"で始まる名前は、サービス名、システム名、特殊名として使用されます。この場合、許されると思います。この機能は、コードの保守・検討に使用されるため。
で始まる名前は、C言語ではサービス名、システム名、特殊名として使われます。この場合は-許容範囲内だと思います。この機能は、コードの保守・検討に使用されるため。
そこがポイントで、mql5以外にも、開発者用のMQサービス名があるのです。