MT5とスピードの関係 - ページ 52 1...454647484950515253545556575859...94 新しいコメント Roman 2020.10.09 23:55 #511 マクロのためのリエンジニアリング #define µsSLEEP(µsRange) \ { \ ulong c = GetMicrosecondCount() + µsRange; \ while(GetMicrosecondCount() < c); \ } //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { while(!_StopFlag) { µsSLEEP(5000000); Print("Прошло 5000000 микросекунд"); } } Andrey Khatimlianskii 2020.10.10 00:00 #512 Roman:もちろん、1つのコアだけでなく、それ以上のことも可能です。 Sleepが ない間という意味です。 マイクロ秒を必要とするため、ここではスリップが適さないことは明らかです。でも、それがなくても鼻歌交じりになる...。 Roman 2020.10.10 00:12 #513 Andrey Khatimlianskii:Sleepがない間という意味です。マイクロ秒が必要なので、スリップがうまくいかないのは明らかです。でも、それがなくても鼻歌が出ます。 もちろん、滑ることなく鼻歌も歌えます。GetMicrosecondCount カウンタが動作しています。 //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { ulong µs = 0; while(!_StopFlag) { µs = GetMicrosecondCount(); Comment((string)µs); ChartRedraw(); } Comment(""); } Andrey Khatimlianskii 2020.10.10 00:44 #514 Roman:もちろんスリップせずに回転しています。 GetMicrosecondCountカウンタが動作しています。 積んでいるのはカウンターだけではありません。空の無限ループも読み込まれます。そういうことなんです。 一般的に悪い解決方法です。しかし、より良いものを提案することはしない。 Roman 2020.10.10 00:55 #515 Andrey Khatimlianskii:積んでいるのはカウンターだけではありません。空のエンドレスループも読み込まれます。そういうことなんです。すべてにおいて、悪い解決策だと思います。でも、より良いものを提案することはしません。 そのため、空のループは当然、プロセッサのクロックサイクルの可能性を最大限に引き出すことになる。 解答が悪いという文句は理解できない。リソースに適さないとしても、それが悪いというわけではありません。 µsSLEEP は、標準的なSleep(1) よりも短いループレイテンシを与えます; すなわち、ミリ秒ではなくマイクロ秒です。 上記の例の5000000はあくまで例であり、実際の戦闘時の周波数は1ms以下であろう あなたの問題は理解できない。 ストレスから解放されるために必要なのか? 定期的に置く Sleep(20);単位はミリ秒 Andrey Khatimlianskii 2020.10.10 02:40 #516 Roman:そのため、プロセッサーのクロックサイクルのポテンシャルを最大限に引き出すことができるのです。 解答が悪いという文句は理解できない。自分のリソースに合わなくても、それが悪いというわけではありません。 µsSLEEP は、標準的な Sleep(1) よりも短いループレイテンシを与えます; すなわち、ミリ秒ではなくマイクロ秒です。 上記の例の5000000はあくまで例であり、実際の戦闘時の周波数は1ms以下であろうあなたの問題は理解できない。 ストレスから解放されるために必要なのか? 通常のSleep(20);をミリ秒単位で入れてください。 不満はなかったんです。 そんなタイマーは必要ない、興味本位で勉強していたのです。しかし、不必要にプロセッサに負荷をかけるので、私は悪い解決策だと思います。 また、どのような目的でマイクロ秒のスリップが必要なのでしょうか? Roman 2020.10.10 03:09 #517 Andrey Khatimlianskii:不満はなかった。 そんなタイマーは必要ない、興味本位で勉強した。しかし、不必要にプロセッサに負荷をかけるので、私はこの解決策は悪いと思います。マイクロ秒のスリップは何のために必要なのでしょうか? なぜ負荷がかかるのか、その理由を考えて解決すれば、このような意見にはならないはずです。 1ms以下を求めるなら、リソースで賄うしかないでしょう。 また、マイクロ秒タイマーで インターバルをカウントする必要があるため、アンロードはできないようです。 一方、マイクロ秒タイマーを常時動作させ、空白の時間と同等の負荷を与える場合、、なぜこのような遅延が発生するのかという疑問があり、マイクロ秒タイマーを 使用します。とにかく、リリカルなんです。 そこで、ある頻度でサーバーにpingを打ち、その間は遅延がないようにしています。 また、不要な呼び出しが発生するので、マイクロ秒単位のサンプリングが必要です。 私は先に投稿した最初の解決策を使っていますし、μsSleepも書きましたので、便利かもしれません。 Roman 2020.10.10 19:37 #518 Andrey Khatimlianskii: マイクロ秒のスリップはどのような目的で必要なのでしょうか? ここでは、既成概念を覆す解決策をご紹介します。Print() はもちろん自分のコードに置き換えます。 #define SEND_PING \ { \ ulong currCount = GetMicrosecondCount(); \ switch((currCount - prevCount) > 5000000) \ { \ case 0: \ break; \ case 1: \ prevCount = currCount; \ Print("ping"); \ break; \ } \ } //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { ulong prevCount = 0; while(!_StopFlag) { SEND_PING; } } fxsaber 2020.10.11 12:50 #519 Renat Fatkhullin:私たちが書いている新しいテスターでは、これを変更しようと思っています。 fxsaber: PMに送信されました。 テスターでは、このEAが完全かつ合理的な(スパムではない)取引注文の 記録を修正という形で何百万件も生成しています。このため、テスターのログは破滅的にすぐに詰まってしまう。 これらのログは99%必要ありませんが、Expert AdvisorがPrintで出力する内容が必要になることがよくあります。そのため、TesterでOrderSendの各パックのエントリーを自動生成しないようにすることを再度検討して頂きたいと思います。 もし私の理解が正しければ、そのような文字列の生成を無効にすることで、単一実行のパフォーマンスが向上することになります。つまり、メリットは2つあるのです。 Renat Fatkhullin 2020.10.11 14:56 #520 Renat Fatkhullin: しかし、シカゴに物理的なプラットフォームのコアを持つMetaTrader 5のAMPGlobalEU-Live(実際にはAMPGlobalUSA-Liveとして検索する方がよい)は、最も近いサーバーがニューヨークにあるため、実際には19.53msになります。すべてのポイントを手動で特殊スキャン - 最小値は19ms。数日中にシカゴにサーバーを置くようにします。まだ手をつけていない。 シカゴのサーバーが展開されました。 24時間以内にすべてのサーバーをスキャンし、配信を開始します。 1...454647484950515253545556575859...94 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
マクロのためのリエンジニアリング
もちろん、1つのコアだけでなく、それ以上のことも可能です。
Sleepが ない間という意味です。
マイクロ秒を必要とするため、ここではスリップが適さないことは明らかです。でも、それがなくても鼻歌交じりになる...。
Sleepがない間という意味です。
マイクロ秒が必要なので、スリップがうまくいかないのは明らかです。でも、それがなくても鼻歌が出ます。
もちろん、滑ることなく鼻歌も歌えます。
GetMicrosecondCount カウンタが動作しています。
もちろんスリップせずに回転しています。
GetMicrosecondCountカウンタが動作しています。
積んでいるのはカウンターだけではありません。空の無限ループも読み込まれます。そういうことなんです。
一般的に悪い解決方法です。しかし、より良いものを提案することはしない。
積んでいるのはカウンターだけではありません。空のエンドレスループも読み込まれます。そういうことなんです。
すべてにおいて、悪い解決策だと思います。でも、より良いものを提案することはしません。
そのため、空のループは当然、プロセッサのクロックサイクルの可能性を最大限に引き出すことになる。
解答が悪いという文句は理解できない。リソースに適さないとしても、それが悪いというわけではありません。
µsSLEEP は、標準的なSleep(1) よりも短いループレイテンシを与えます; すなわち、ミリ秒ではなくマイクロ秒です。
上記の例の5000000はあくまで例であり、実際の戦闘時の周波数は1ms以下であろう
あなたの問題は理解できない。
ストレスから解放されるために必要なのか?
定期的に置く Sleep(20);単位はミリ秒
そのため、プロセッサーのクロックサイクルのポテンシャルを最大限に引き出すことができるのです。
解答が悪いという文句は理解できない。自分のリソースに合わなくても、それが悪いというわけではありません。
µsSLEEP は、標準的な Sleep(1) よりも短いループレイテンシを与えます; すなわち、ミリ秒ではなくマイクロ秒です。
上記の例の5000000はあくまで例であり、実際の戦闘時の周波数は1ms以下であろう
あなたの問題は理解できない。
ストレスから解放されるために必要なのか?
通常のSleep(20);をミリ秒単位で入れてください。
不満はなかったんです。
そんなタイマーは必要ない、興味本位で勉強していたのです。しかし、不必要にプロセッサに負荷をかけるので、私は悪い解決策だと思います。
また、どのような目的でマイクロ秒のスリップが必要なのでしょうか?
不満はなかった。
そんなタイマーは必要ない、興味本位で勉強した。しかし、不必要にプロセッサに負荷をかけるので、私はこの解決策は悪いと思います。
マイクロ秒のスリップは何のために必要なのでしょうか?
なぜ負荷がかかるのか、その理由を考えて解決すれば、このような意見にはならないはずです。
1ms以下を求めるなら、リソースで賄うしかないでしょう。
また、マイクロ秒タイマーで インターバルをカウントする必要があるため、アンロードはできないようです。
一方、マイクロ秒タイマーを常時動作させ、空白の時間と同等の負荷を与える場合、
、なぜこのような遅延が発生するのかという疑問があり、マイクロ秒タイマーを 使用します。とにかく、リリカルなんです。
そこで、ある頻度でサーバーにpingを打ち、その間は遅延がないようにしています。
また、不要な呼び出しが発生するので、マイクロ秒単位のサンプリングが必要です。
私は先に投稿した最初の解決策を使っていますし、μsSleepも書きましたので、便利かもしれません。
マイクロ秒のスリップはどのような目的で必要なのでしょうか?
ここでは、既成概念を覆す解決策をご紹介します。
Print() はもちろん自分のコードに置き換えます。
PMに送信されました。
テスターでは、このEAが完全かつ合理的な(スパムではない)取引注文の 記録を修正という形で何百万件も生成しています。このため、テスターのログは破滅的にすぐに詰まってしまう。
これらのログは99%必要ありませんが、Expert AdvisorがPrintで出力する内容が必要になることがよくあります。そのため、TesterでOrderSendの各パックのエントリーを自動生成しないようにすることを再度検討して頂きたいと思います。
もし私の理解が正しければ、そのような文字列の生成を無効にすることで、単一実行のパフォーマンスが向上することになります。つまり、メリットは2つあるのです。
しかし、シカゴに物理的なプラットフォームのコアを持つMetaTrader 5のAMPGlobalEU-Live(実際にはAMPGlobalUSA-Liveとして検索する方がよい)は、最も近いサーバーがニューヨークにあるため、実際には19.53msになります。
すべてのポイントを手動で特殊スキャン - 最小値は19ms。
数日中にシカゴにサーバーを置くようにします。まだ手をつけていない。
シカゴのサーバーが展開されました。
24時間以内にすべてのサーバーをスキャンし、配信を開始します。