MT5とスピードの関係 - ページ 50 1...434445464748495051525354555657...94 新しいコメント fxsaber 2020.10.08 06:04 #491 トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム MT5とスピードの関係 fxsaber, 2020.10.07 11:13 #include <fxsaber\Benchmark\Benchmark.mqh> // https://www.mql5.com/ru/code/31279 void OnTick() { _BV(Print(""), 1); } 低速のVPSではどうなるか確認できない。 OrderSendの後に何らかの印刷を行う場合(注文送信結果など)、それらをstring-variableに蓄積し、On-functionの終了時にprintに送るのがよいでしょう。 そうでなければ、Print-snapshotに 接続することで大きな損失を被る可能性があります。どのくらい - 誰かが彼のVPSに上記の顧問を実行する場合、あなたは答えることができます。 ZZZ 最もシンプルな実装です。 #include <fxsaber\Benchmark\Benchmark.mqh> // https://www.mql5.com/ru/code/31279 class PRINT { private: string Str; public: PRINT() : Str(NULL) { ::StringSetLength(this.Str, 5000); } ~PRINT() { if (this.Str != NULL) ::Print(this.Str); } template <typename T> void Add( const T PrintStr ) { this.Str += ((this.Str == NULL) ? NULL : "\n") + (string)PrintStr; } }; #define Print PrintObj.Add // Закомментируйте, чтобы посмотреть скорость обычного Print. void OnTick() { PRINT PrintObj; // Накопитель Print-ов. for (int i = 0; i < 5; i++) { _BV(Print(i), 1) Sleep(100); // Эмуляция OrderSend } } 高速なマシンでは、この解決策は通常のアプローチよりもはるかに高速になります。VPSの場合はどうなんでしょう。 Edgar Akhmadeev 2020.10.08 06:53 #492 fxsaber: OrderSendの後に何らかの印刷を行う場合(例:注文送信結果)、それらをstring-variableに蓄積し、On-functionの終了時に印刷に回すとよいでしょう。そうでなければ、Print-snapshotに 接続することで大きな損失を被る可能性があります。どのくらい - 誰かが彼のVPSに上記の顧問を実行する場合、あなたは答えることができます。 私の3ドルVPSで 2020.10.08 09:50:59.631 Test Print (EURUSD,H1) Alert: Time[Test Print.mq5 5: Print()] = 3121 mсs. 2020.10.08 09:50:59.724 Test Print (EURUSD,H1) 2020.10.08 09:50:59.724 Test Print (EURUSD,H1) Alert: Time[Test Print.mq5 5: Print()] = 78 mсs. 2020.10.08 09:50:59.837 Test Print (EURUSD,H1) 2020.10.08 09:50:59.837 Test Print (EURUSD,H1) Alert: Time[Test Print.mq5 5: Print()] = 86 mсs. 2020.10.08 09:50:59.930 Test Print (EURUSD,H1) 2020.10.08 09:50:59.931 Test Print (EURUSD,H1) Alert: Time[Test Print.mq5 5: Print()] = 159 mсs. 2020.10.08 09:51:00.036 Test Print (EURUSD,H1) 2020.10.08 09:51:00.036 Test Print (EURUSD,H1) Alert: Time[Test Print.mq5 5: Print()] = 84 mсs. 2020.10.08 09:51:00.138 Test Print (EURUSD,H1) 2020.10.08 09:51:00.138 Test Print (EURUSD,H1) Alert: Time[Test Print.mq5 5: Print()] = 94 mсs. 2020.10.08 09:51:00.243 Test Print (EURUSD,H1) 2020.10.08 09:51:00.243 Test Print (EURUSD,H1) Alert: Time[Test Print.mq5 5: Print()] = 86 mсs. 2020.10.08 09:51:00.380 Test Print (EURUSD,H1) 2020.10.08 09:51:00.380 Test Print (EURUSD,H1) Alert: Time[Test Print.mq5 5: Print()] = 54 mсs. 2020.10.08 09:51:00.973 Test Print (EURUSD,H1) 2020.10.08 09:51:00.973 Test Print (EURUSD,H1) Alert: Time[Test Print.mq5 5: Print()] = 79 mсs. 2020.10.08 09:51:01.129 Test Print (EURUSD,H1) 2020.10.08 09:51:01.129 Test Print (EURUSD,H1) Alert: Time[Test Print.mq5 5: Print()] = 91 mсs. 2020.10.08 09:51:01.186 Test Print (EURUSD,H1) 2020.10.08 09:51:01.186 Test Print (EURUSD,H1) Alert: Time[Test Print.mq5 5: Print()] = 60 mсs. 2020.10.08 09:51:01.320 Test Print (EURUSD,H1) 2020.10.08 09:51:01.321 Test Print (EURUSD,H1) Alert: Time[Test Print.mq5 5: Print()] = 75 mсs. 2020.10.08 09:51:01.402 Test Print (EURUSD,H1) 2020.10.08 09:51:01.402 Test Print (EURUSD,H1) Alert: Time[Test Print.mq5 5: Print()] = 86 mсs. 2020.10.08 09:51:01.546 Test Print (EURUSD,H1) 2020.10.08 09:51:01.555 Test Print (EURUSD,H1) Alert: Time[Test Print.mq5 5: Print()] = 72 mсs. 2020.10.08 09:51:02.158 Test Print (EURUSD,H1) 2020.10.08 09:51:02.158 Test Print (EURUSD,H1) Alert: Time[Test Print.mq5 5: Print()] = 67 mсs. 2020.10.08 09:51:04.651 Test Print (EURUSD,H1) 2020.10.08 09:51:04.651 Test Print (EURUSD,H1) Alert: Time[Test Print.mq5 5: Print()] = 74 mсs. 2020.10.08 09:51:04.929 Test Print (EURUSD,H1) 2020.10.08 09:51:04.930 Test Print (EURUSD,H1) Alert: Time[Test Print.mq5 5: Print()] = 200 mсs. 2020.10.08 09:51:07.200 Test Print (EURUSD,H1) 2020.10.08 09:51:07.200 Test Print (EURUSD,H1) Alert: Time[Test Print.mq5 5: Print()] = 58 mсs. 2020.10.08 09:51:07.330 Test Print (EURUSD,H1) 2020.10.08 09:51:07.330 Test Print (EURUSD,H1) Alert: Time[Test Print.mq5 5: Print()] = 68 mсs. 2020.10.08 09:51:07.452 Test Print (EURUSD,H1) 2020.10.08 09:51:07.460 Test Print (EURUSD,H1) Alert: Time[Test Print.mq5 5: Print()] = 77 mсs. 2020.10.08 09:51:07.728 Test Print (EURUSD,H1) 2020.10.08 09:51:07.728 Test Print (EURUSD,H1) Alert: Time[Test Print.mq5 5: Print()] = 64 mсs. 2020.10.08 09:51:07.870 Test Print (EURUSD,H1) 2020.10.08 09:51:07.870 Test Print (EURUSD,H1) Alert: Time[Test Print.mq5 5: Print()] = 72 mсs. 2020.10.08 09:51:07.967 Test Print (EURUSD,H1) 2020.10.08 09:51:07.967 Test Print (EURUSD,H1) Alert: Time[Test Print.mq5 5: Print()] = 58 mсs. 2020.10.08 09:51:08.130 Test Print (EURUSD,H1) 2020.10.08 09:51:08.130 Test Print (EURUSD,H1) Alert: Time[Test Print.mq5 5: Print()] = 56 mсs. 2020.10.08 09:51:11.274 Test Print (EURUSD,H1) 2020.10.08 09:51:11.275 Test Print (EURUSD,H1) Alert: Time[Test Print.mq5 5: Print()] = 63 mсs. 2020.10.08 09:51:11.409 Test Print (EURUSD,H1) 2020.10.08 09:51:11.409 Test Print (EURUSD,H1) Alert: Time[Test Print.mq5 5: Print()] = 73 mсs. 2020.10.08 09:51:11.903 Test Print (EURUSD,H1) 2020.10.08 09:51:11.903 Test Print (EURUSD,H1) Alert: Time[Test Print.mq5 5: Print()] = 86 mсs. 2020.10.08 09:51:12.022 Test Print (EURUSD,H1) 2020.10.08 09:51:12.022 Test Print (EURUSD,H1) Alert: Time[Test Print.mq5 5: Print()] = 79 mсs. 2020.10.08 09:51:12.699 Test Print (EURUSD,H1) 2020.10.08 09:51:12.700 Test Print (EURUSD,H1) Alert: Time[Test Print.mq5 5: Print()] = 69 mсs. 2020.10.08 09:51:12.977 Test Print (EURUSD,H1) 2020.10.08 09:51:12.977 Test Print (EURUSD,H1) Alert: Time[Test Print.mq5 5: Print()] = 67 mсs. 2020.10.08 09:51:13.226 Test Print (EURUSD,H1) 2020.10.08 09:51:13.226 Test Print (EURUSD,H1) Alert: Time[Test Print.mq5 5: Print()] = 98 mсs. 2020.10.08 09:51:13.412 Test Print (EURUSD,H1) 2020.10.08 09:51:13.412 Test Print (EURUSD,H1) Alert: Time[Test Print.mq5 5: Print()] = 93 mсs. 2020.10.08 09:51:13.854 Test Print (EURUSD,H1) 2020.10.08 09:51:13.854 Test Print (EURUSD,H1) Alert: Time[Test Print.mq5 5: Print()] = 59 mсs. 2020.10.08 09:51:14.000 Test Print (EURUSD,H1) 2020.10.08 09:51:14.000 Test Print (EURUSD,H1) Alert: Time[Test Print.mq5 5: Print()] = 62 mсs. 2020.10.08 09:51:18.343 Test Print (EURUSD,H1) 2020.10.08 09:51:18.343 Test Print (EURUSD,H1) Alert: Time[Test Print.mq5 5: Print()] = 86 mсs. fxsaber 2020.10.08 06:55 #493 Edgar Akhmadeev:私の3ドルのVPSで。 ありがとうございます。間違いなく、より良い回避策です。 Anton 2020.10.08 07:48 #494 fxsaber:#include <fxsaber\Benchmark\Benchmark.mqh> // https://www.mql5.com/ru/code/31279 long GetAnotherChart() { long Chart = ::ChartFirst(); while (Chart == ChartID()) Chart = ChartNext(Chart); return(Chart); } void OnTick() { const long Chart = GetAnotherChart(); if (Chart) _B(EventChartCustom(Chart, 123, 0, 0, NULL), 1); _B(EventChartCustom(0, 123, 0, 0, NULL), 1); }自分のチャートより他人のチャートに送る方が高くつく。 この方法で試してみてください。 _B(EventChartCustom(-1, 123, 0, 0, NULL), 1); fxsaber 2020.10.08 08:21 #495 Anton:この方法で試してみてください。 // https://www.mql5.com/ru/forum/342090/page50#comment_18647171 class PRINT { private: string Str; public: PRINT() : Str(NULL) { ::StringSetLength(this.Str, 5000); } ~PRINT() { if (this.Str != NULL) ::Print(this.Str); } template <typename T> void Add( const T PrintStr ) { this.Str += ((this.Str == NULL) ? NULL : "\n") + (string)PrintStr; } }; #define Alert PrintObj.Add PRINT PrintObj; //#define BENCHMARK_OFF // Выключение замеров. #include <fxsaber\Benchmark\Benchmark.mqh> // https://www.mql5.com/ru/code/31279 void OnTick() { _B(EventChartCustom(-1, 123, GetMicrosecondCount(), 0, NULL), 1); } void OnChartEvent(const int id, const long& lparam,const double& dparam,const string& sparam) { if (id == 1123) Print("Time[from OnTick To OnChartEvent] = " + (string)(GetMicrosecondCount() - lparam) + " mcs."); } 結果 2020.10.08 11:35:52.050 Benchmark.mqh: TimeAvg[GetMicrosecondsCount()] = 0 mcs. 2020.10.08 11:35:52.050 Benchmark.mqh is On. 2020.10.08 11:35:55.617 Time[from OnTick To OnChartEvent] = 14 mcs. 2020.10.08 11:35:55.821 Time[from OnTick To OnChartEvent] = 3 mcs. 2020.10.08 11:35:56.729 Time[from OnTick To OnChartEvent] = 4 mcs. 2020.10.08 11:35:56.932 Time[from OnTick To OnChartEvent] = 9 mcs. 2020.10.08 11:35:57.841 Time[from OnTick To OnChartEvent] = 9 mcs. 2020.10.08 11:35:58.177 Bench_Stack = 0, 1 <= Time[Test9.mq5 23 in OnTick: EventChartCustom(-1,123,GetMicrosecondCount(),0,NULL)] = 2 mcs. 2020.10.08 11:35:58.177 Bench_Stack = 0, 1 <= Time[Test9.mq5 23 in OnTick: EventChartCustom(-1,123,GetMicrosecondCount(),0,NULL)] = 2 mcs. 2020.10.08 11:35:58.177 Bench_Stack = 0, 1 <= Time[Test9.mq5 23 in OnTick: EventChartCustom(-1,123,GetMicrosecondCount(),0,NULL)] = 2 mcs. 測光をオフにした場合 2020.10.08 11:15:19.084 Benchmark.mqh: TimeAvg[GetMicrosecondsCount()] = 0 mcs. 2020.10.08 11:15:19.084 Benchmark.mqh is Off. 2020.10.08 11:15:24.171 Time[from OnTick To OnChartEvent] = 4 mcs. 2020.10.08 11:15:24.376 Time[from OnTick To OnChartEvent] = 3 mcs. 2020.10.08 11:15:27.010 Time[from OnTick To OnChartEvent] = 3 mcs. 2020.10.08 11:15:31.859 Time[from OnTick To OnChartEvent] = 5 mcs. 2020.10.08 11:15:32.266 Time[from OnTick To OnChartEvent] = 4 mcs. 2020.10.08 11:15:32.470 Time[from OnTick To OnChartEvent] = 3 mcs. 2020.10.08 11:15:32.670 Time[from OnTick To OnChartEvent] = 6 mcs. すなわち、"OnEmpty "に切り替わるまで10µs未満です。 なぜ、ゼロのために同じことをしないのか? Anton 2020.10.08 09:00 #496 fxsaber:つまり、"OnEmpty "に切り替わるまで10µs以下です。なぜ、ゼロのために同じことをしないのか? 意味も違えば、実行の仕組みも違う。0 - "自分の "チャートへのイベント。-1 - 自分のチャートキューにあるイベント。 fxsaber 2020.10.08 14:59 #497 トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム MT5とスピードの関係 fxsaber, 2020.10.07 12:41 MQL5でTimeCurrentMscを使うことは、何度もお願いしているにもかかわらず、一度も試したことがありません。 そうなるのでしょうか? fxsaber 2020.10.08 15:27 #498 Anton:意味も違えば、実行の仕組みも違う。0は "自 "チャートキューにあるイベントです。-1 - 自分自身のキューにあるイベント。 その結果、同じAlertを-1非同期で 実装することはできないことが判明した。 A100 2020.10.08 20:57 #499 fxsaber:つまり、OnEmptyに切り替わるまで10マイクロ秒以下です。 皆さんの協力で、最も楽観的な予測よりも早くすべてが解決されましたが、隠れたバックドアがあることが判明しました。 Roman 2020.10.08 21:22 #500 fxsaber: あるのでしょうか? 全く同じではありませんが、mcs間隔によるカウンターです。 そうですね、TimeCurrentMcsの 方がいいですね、願いに参加 します。 //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { ulong mcs = 0; while(!_StopFlag) { mcs = GetMicrosecondCount(); switch(GetInterval(mcs, 5000000)) //5 секунд { case 1: Print((string) mcs); break; case 0: break; } } } //-------------------------------------------------------------------- //Получить интервал ulong prevCount = 0; int GetInterval(ulong currCount, ulong mcsIntrval) { int res = 0; switch((currCount - prevCount) > mcsIntrval) { case 1: prevCount = currCount; res = 1; break; default: break; } return(res); } 2020.10.09 00:15:45.712 TestScript (MNQZ20,M1) 5000001 2020.10.09 00:15:50.712 TestScript (MNQZ20,M1) 10000002 2020.10.09 00:15:55.712 TestScript (MNQZ20,M1) 15000003 2020.10.09 00:16:00.712 TestScript (MNQZ20,M1) 20000004 2020.10.09 00:16:05.712 TestScript (MNQZ20,M1) 25000006 2020.10.09 00:16:10.712 TestScript (MNQZ20,M1) 30000007 2020.10.09 00:16:15.712 TestScript (MNQZ20,M1) 35000008 2020.10.09 00:16:20.712 TestScript (MNQZ20,M1) 40000009 2020.10.09 00:16:25.713 TestScript (MNQZ20,M1) 45000581 2020.10.09 00:16:30.713 TestScript (MNQZ20,M1) 50000582 1...434445464748495051525354555657...94 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム
MT5とスピードの関係
fxsaber, 2020.10.07 11:13
低速のVPSではどうなるか確認できない。
OrderSendの後に何らかの印刷を行う場合(注文送信結果など)、それらをstring-variableに蓄積し、On-functionの終了時にprintに送るのがよいでしょう。
そうでなければ、Print-snapshotに 接続することで大きな損失を被る可能性があります。どのくらい - 誰かが彼のVPSに上記の顧問を実行する場合、あなたは答えることができます。
ZZZ 最もシンプルな実装です。
高速なマシンでは、この解決策は通常のアプローチよりもはるかに高速になります。VPSの場合はどうなんでしょう。
OrderSendの後に何らかの印刷を行う場合(例:注文送信結果)、それらをstring-variableに蓄積し、On-functionの終了時に印刷に回すとよいでしょう。
そうでなければ、Print-snapshotに 接続することで大きな損失を被る可能性があります。どのくらい - 誰かが彼のVPSに上記の顧問を実行する場合、あなたは答えることができます。
私の3ドルVPSで
私の3ドルのVPSで。
ありがとうございます。間違いなく、より良い回避策です。
自分のチャートより他人のチャートに送る方が高くつく。
この方法で試してみてください。
この方法で試してみてください。
結果
測光をオフにした場合
すなわち、"OnEmpty "に切り替わるまで10µs未満です。
なぜ、ゼロのために同じことをしないのか?
つまり、"OnEmpty "に切り替わるまで10µs以下です。
なぜ、ゼロのために同じことをしないのか?
意味も違えば、実行の仕組みも違う。0 - "自分の "チャートへのイベント。-1 - 自分のチャートキューにあるイベント。
トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム
MT5とスピードの関係
fxsaber, 2020.10.07 12:41
MQL5でTimeCurrentMscを使うことは、何度もお願いしているにもかかわらず、一度も試したことがありません。
そうなるのでしょうか?
意味も違えば、実行の仕組みも違う。0は "自 "チャートキューにあるイベントです。-1 - 自分自身のキューにあるイベント。
その結果、同じAlertを-1非同期で 実装することはできないことが判明した。
つまり、OnEmptyに切り替わるまで10マイクロ秒以下です。
皆さんの協力で、最も楽観的な予測よりも早くすべてが解決されましたが、隠れたバックドアがあることが判明しました。
あるのでしょうか?
全く同じではありませんが、mcs間隔によるカウンターです。
そうですね、TimeCurrentMcsの 方がいいですね、願いに参加 します。