MT5とスピードの関係 - ページ 59 1...525354555657585960616263646566...94 新しいコメント fxsaber 2020.10.20 08:05 #581 Anton:どうやるんですか? ただ、6/8Agentsが稼働している時にブレーキを再現しました。 2020.10.20 11:00:33.069 Test9 (GBPUSD,H1) Alert: Bench_Stack = 0, 100 <= Time[Test9.mq5 7 in OnTick: SymbolInfoTick(_Symbol,Tick)] = 101 mcs. 2020.10.20 11:00:34.292 Test9 (NZDCAD,H1) Alert: Bench_Stack = 0, 100 <= Time[Test9.mq5 7 in OnTick: SymbolInfoTick(_Symbol,Tick)] = 5848 mcs. 2020.10.20 11:00:34.486 Test9 (GBPCHF,H1) Alert: Bench_Stack = 0, 100 <= Time[Test9.mq5 7 in OnTick: SymbolInfoTick(_Symbol,Tick)] = 6359 mcs. 2020.10.20 11:00:43.717 Test9 (AUDCHF,H1) Alert: Bench_Stack = 0, 100 <= Time[Test9.mq5 7 in OnTick: SymbolInfoTick(_Symbol,Tick)] = 114 mcs. 2020.10.20 11:00:44.222 Test9 (EURJPY,H1) Alert: Bench_Stack = 0, 100 <= Time[Test9.mq5 7 in OnTick: SymbolInfoTick(_Symbol,Tick)] = 661 mcs. 2020.10.20 11:00:55.232 Test9 (AUDUSD,H1) Alert: Bench_Stack = 0, 100 <= Time[Test9.mq5 7 in OnTick: SymbolInfoTick(_Symbol,Tick)] = 828 mcs. 2020.10.20 11:00:57.579 Test9 (NZDCAD,H1) Alert: Bench_Stack = 0, 100 <= Time[Test9.mq5 7 in OnTick: SymbolInfoTick(_Symbol,Tick)] = 151 mcs. 2020.10.20 11:01:07.398 Test9 (NZDCHF,H1) Alert: Bench_Stack = 0, 100 <= Time[Test9.mq5 7 in OnTick: SymbolInfoTick(_Symbol,Tick)] = 435 mcs. 2020.10.20 11:01:20.046 Test9 (GBPCHF,H1) Alert: Bench_Stack = 0, 100 <= Time[Test9.mq5 7 in OnTick: SymbolInfoTick(_Symbol,Tick)] = 108 mcs. 2020.10.20 11:01:37.749 Test9 (AUDJPY,H1) Alert: Bench_Stack = 0, 100 <= Time[Test9.mq5 7 in OnTick: SymbolInfoTick(_Symbol,Tick)] = 159 mcs. 2020.10.20 11:01:37.751 Test9 (AUDCAD,H1) Alert: Bench_Stack = 0, 100 <= Time[Test9.mq5 7 in OnTick: SymbolInfoTick(_Symbol,Tick)] = 865 mcs. 2020.10.20 11:01:40.787 Test9 (EURCHF,H1) Alert: Bench_Stack = 0, 100 <= Time[Test9.mq5 7 in OnTick: SymbolInfoTick(_Symbol,Tick)] = 197 mcs. 2020.10.20 11:01:42.615 Test9 (GBPCHF,H1) Alert: Bench_Stack = 0, 100 <= Time[Test9.mq5 7 in OnTick: SymbolInfoTick(_Symbol,Tick)] = 207 mcs. 2020.10.20 11:01:46.362 Test9 (AUDCAD,H1) Alert: Bench_Stack = 0, 100 <= Time[Test9.mq5 7 in OnTick: SymbolInfoTick(_Symbol,Tick)] = 278 mcs. 2020.10.20 11:01:54.377 Test9 (AUDUSD,H1) Alert: Bench_Stack = 0, 100 <= Time[Test9.mq5 7 in OnTick: SymbolInfoTick(_Symbol,Tick)] = 165 mcs. 2020.10.20 11:01:55.789 Test9 (GBPCAD,H1) Alert: Bench_Stack = 0, 100 <= Time[Test9.mq5 7 in OnTick: SymbolInfoTick(_Symbol,Tick)] = 228 mcs. 2020.10.20 11:02:04.892 Test9 (USDCAD,H1) Alert: Bench_Stack = 0, 100 <= Time[Test9.mq5 7 in OnTick: SymbolInfoTick(_Symbol,Tick)] = 357 mcs. 2020.10.20 11:02:10.776 Test9 (GBPCHF,H1) Alert: Bench_Stack = 0, 100 <= Time[Test9.mq5 7 in OnTick: SymbolInfoTick(_Symbol,Tick)] = 173 mcs. 2020.10.20 11:02:13.468 Test9 (CADCHF,H1) Alert: Bench_Stack = 0, 100 <= Time[Test9.mq5 7 in OnTick: SymbolInfoTick(_Symbol,Tick)] = 161 mcs. 2020.10.20 11:02:26.274 Test9 (NZDCAD,H1) Alert: Bench_Stack = 0, 100 <= Time[Test9.mq5 7 in OnTick: SymbolInfoTick(_Symbol,Tick)] = 448 mcs. 2020.10.20 11:02:30.687 Test9 (GBPUSD,H1) Alert: Bench_Stack = 0, 100 <= Time[Test9.mq5 7 in OnTick: SymbolInfoTick(_Symbol,Tick)] = 101 mcs. 2020.10.20 11:03:01.429 Test9 (CADCHF,H1) Alert: Bench_Stack = 0, 100 <= Time[Test9.mq5 7 in OnTick: SymbolInfoTick(_Symbol,Tick)] = 159 mcs. 2020.10.20 11:03:04.566 Test9 (AUDCHF,H1) Alert: Bench_Stack = 0, 100 <= Time[Test9.mq5 7 in OnTick: SymbolInfoTick(_Symbol,Tick)] = 1329 mcs. 2020.10.20 11:03:14.940 Test9 (GBPCHF,H1) Alert: Bench_Stack = 0, 100 <= Time[Test9.mq5 7 in OnTick: SymbolInfoTick(_Symbol,Tick)] = 1444 mcs. 2020.10.20 11:03:57.781 Test9 (EURCAD,H1) Alert: Bench_Stack = 0, 100 <= Time[Test9.mq5 7 in OnTick: SymbolInfoTick(_Symbol,Tick)] = 134 mcs. 2020.10.20 11:04:00.115 Test9 (AUDCHF,H1) Alert: Bench_Stack = 0, 100 <= Time[Test9.mq5 7 in OnTick: SymbolInfoTick(_Symbol,Tick)] = 543 mcs. 2020.10.20 11:04:03.998 Test9 (EURCHF,H1) Alert: Bench_Stack = 0, 100 <= Time[Test9.mq5 7 in OnTick: SymbolInfoTick(_Symbol,Tick)] = 102 mcs. fxsaber 2020.10.20 08:15 #582 fxsaber:ただ、6/8Agentsが稼働している時にブレーキを再現しました。 I.e.CPU負荷時の問題。 // Демонстрация тормозов SymbolInfoTick #include <fxsaber\Benchmark\Benchmark.mqh> // https://www.mql5.com/ru/code/31279 void OnTick() { MqlTick Tick; const uint StartTime = GetTickCount(); // return; while (!IsStopped() && (GetTickCount() - StartTime < 10000)) { _B(SymbolInfoTick(_Symbol, Tick), 500); // Sleep(0); // Специально убрал. } } MQ-Demo, 20 charts, b2656.マシンはTerminalのみ起動し、Testerは起動していません。 2020.10.20 11:14:18.615 Test9 (EURNZD,H1) Alert: Bench_Stack = 0, 500 <= Time[Test9.mq5 13 in OnTick: SymbolInfoTick(_Symbol,Tick)] = 1111 mcs. 2020.10.20 11:14:18.615 Test9 (AUDCHF,H1) Alert: Bench_Stack = 0, 500 <= Time[Test9.mq5 13 in OnTick: SymbolInfoTick(_Symbol,Tick)] = 660 mcs. 2020.10.20 11:14:18.615 Test9 (USDRUB,H1) Alert: Bench_Stack = 0, 500 <= Time[Test9.mq5 13 in OnTick: SymbolInfoTick(_Symbol,Tick)] = 657 mcs. 2020.10.20 11:14:18.615 Test9 (EURCAD,H1) Alert: Bench_Stack = 0, 500 <= Time[Test9.mq5 13 in OnTick: SymbolInfoTick(_Symbol,Tick)] = 1055 mcs. 2020.10.20 11:14:18.615 Test9 (AUDCAD,H1) Alert: Bench_Stack = 0, 500 <= Time[Test9.mq5 13 in OnTick: SymbolInfoTick(_Symbol,Tick)] = 1052 mcs. 2020.10.20 11:14:18.615 Test9 (XAUUSD,H1) Alert: Bench_Stack = 0, 500 <= Time[Test9.mq5 13 in OnTick: SymbolInfoTick(_Symbol,Tick)] = 1077 mcs. 2020.10.20 11:14:18.616 Test9 (USDSGD,H1) Alert: Bench_Stack = 0, 500 <= Time[Test9.mq5 13 in OnTick: SymbolInfoTick(_Symbol,Tick)] = 1178 mcs. 2020.10.20 11:14:18.616 Test9 (USDJPY,H1) Alert: Bench_Stack = 0, 500 <= Time[Test9.mq5 13 in OnTick: SymbolInfoTick(_Symbol,Tick)] = 1291 mcs. 2020.10.20 11:14:18.616 Test9 (GBPUSD,H1) Alert: Bench_Stack = 0, 500 <= Time[Test9.mq5 13 in OnTick: SymbolInfoTick(_Symbol,Tick)] = 1209 mcs. 2020.10.20 11:14:18.616 Test9 (USDZAR,H1) Alert: Bench_Stack = 0, 500 <= Time[Test9.mq5 13 in OnTick: SymbolInfoTick(_Symbol,Tick)] = 1244 mcs. 2020.10.20 11:14:18.646 Test9 (GBPUSD,H1) Alert: Bench_Stack = 0, 500 <= Time[Test9.mq5 13 in OnTick: SymbolInfoTick(_Symbol,Tick)] = 623 mcs. 2020.10.20 11:14:18.646 Test9 (USDJPY,H1) Alert: Bench_Stack = 0, 500 <= Time[Test9.mq5 13 in OnTick: SymbolInfoTick(_Symbol,Tick)] = 696 mcs. 2020.10.20 11:14:18.646 Test9 (NZDUSD,H1) Alert: Bench_Stack = 0, 500 <= Time[Test9.mq5 13 in OnTick: SymbolInfoTick(_Symbol,Tick)] = 702 mcs. 2020.10.20 11:14:18.684 Test9 (USDTRY,H1) Alert: Bench_Stack = 0, 500 <= Time[Test9.mq5 13 in OnTick: SymbolInfoTick(_Symbol,Tick)] = 502 mcs. 2020.10.20 11:14:18.684 Test9 (NZDUSD,H1) Alert: Bench_Stack = 0, 500 <= Time[Test9.mq5 13 in OnTick: SymbolInfoTick(_Symbol,Tick)] = 664 mcs. 2020.10.20 11:14:18.684 Test9 (USDJPY,H1) Alert: Bench_Stack = 0, 500 <= Time[Test9.mq5 13 in OnTick: SymbolInfoTick(_Symbol,Tick)] = 677 mcs. 2020.10.20 11:14:18.685 Test9 (USDSGD,H1) Alert: Bench_Stack = 0, 500 <= Time[Test9.mq5 13 in OnTick: SymbolInfoTick(_Symbol,Tick)] = 1201 mcs. 2020.10.20 11:14:18.685 Test9 (AUDCAD,H1) Alert: Bench_Stack = 0, 500 <= Time[Test9.mq5 13 in OnTick: SymbolInfoTick(_Symbol,Tick)] = 708 mcs. 2020.10.20 11:14:18.685 Test9 (GBPUSD,H1) Alert: Bench_Stack = 0, 500 <= Time[Test9.mq5 13 in OnTick: SymbolInfoTick(_Symbol,Tick)] = 730 mcs. 2020.10.20 11:14:18.685 Test9 (XAUUSD,H1) Alert: Bench_Stack = 0, 500 <= Time[Test9.mq5 13 in OnTick: SymbolInfoTick(_Symbol,Tick)] = 763 mcs. 2020.10.20 11:14:18.685 Test9 (USDZAR,H1) Alert: Bench_Stack = 0, 500 <= Time[Test9.mq5 13 in OnTick: SymbolInfoTick(_Symbol,Tick)] = 773 mcs. 2020.10.20 11:14:18.685 Test9 (EURCAD,H1) Alert: Bench_Stack = 0, 500 <= Time[Test9.mq5 13 in OnTick: SymbolInfoTick(_Symbol,Tick)] = 800 mcs. 2020.10.20 11:14:18.685 Test9 (EURNZD,H1) Alert: Bench_Stack = 0, 500 <= Time[Test9.mq5 13 in OnTick: SymbolInfoTick(_Symbol,Tick)] = 808 mcs. Anton 2020.10.20 08:40 #583 fxsaber:fxsaber: ただ、6/8Agentsが稼働している時にブレーキを再現しました。つまり、CPUに負荷がかかったときに問題が発生するのです。 これはあなたにとって新しい情報ですか? fxsaber 2020.10.20 09:42 #584 Anton:これはあなたにとって新しい情報ですか? なぜ、このようなCPU負荷のラグを回避することができないのか、完全に理解できていません。おそらく無能なんだろうけど。 しかし、以下は、MT5における価格データの関連性の問題を示すクリーンなテストです。コメント付きでコードを提供しました。簡単に説明すると、SymbolInfoTick/stackを介して ティックを取得し、互いに照合します。特に、異なるソースからの同一のティック間のギャップや大きなラグを避けるために。 // Демонстрация лагов OnTick и OnBookEvent. input uint inMinInterval = 1000; // Минимальное время (в мкс.) лага // Структура тика, которую удобно будет выводить в ArrayPrint. struct PRICE { double bid; double ask; bool onTick; // true - источник OnTick+SymbolInfoTick, false - источник OnBookEvent+MarketBookGet ulong Interval; // Временной интервал между соседними записями. void Set( const double &dBid, const double &dAsk, const bool bTick ) { static ulong PrevTime = ::GetMicrosecondCount(); const ulong NewTime = ::GetMicrosecondCount(); this.bid = dBid; this.ask = dAsk; this.onTick = bTick; this.Interval = NewTime - PrevTime; PrevTime = NewTime; } // Записи одинаковые, если обе соответствующие цены совпадают. bool operator ==( const PRICE &Price ) const { return((this.bid == Price.bid) && (this.ask == Price.ask)); } }; PRICE Prices[1000]; // Массив для записи тиков из разных источников. int Amount = 0; // Количество записанных тиков // Возвращает bid/ask-цены из стакана. bool GetCurrentPrices( double &bid, double &ask ) { MqlBookInfo Bands[]; const bool Res = MarketBookGet(_Symbol, Bands); if (Res) for (int i = ArraySize(Bands) - 2; i >= 0; i--) if (Bands[i].type == BOOK_TYPE_SELL) { ask = Bands[i].price; bid = Bands[i + 1].price; break; } return(Res); } // Если bid или ask стакана поменялся - записываем их. bool SaveNewTick_Book() { static double PrevBid = 0; static double PrevAsk = 0; double bid; double ask; const bool Res = !IsStopped() && GetCurrentPrices(bid, ask) && ((PrevBid != bid) || (PrevAsk != ask)); if (Res) { PrevBid = bid; PrevAsk = ask; Prices[Amount++].Set(bid, ask, false); if (Amount == ArraySize(Prices)) // Если достигли конца массива - выходим. ExpertRemove(); } return(Res); } // Записываем bid и ask bool SaveNewTick_Tick() { MqlTick Tick; const bool Res = !IsStopped() && SymbolInfoTick(_Symbol, Tick); if (Res) { Prices[Amount++].Set(Tick.bid, Tick.ask, true); if (Amount == ArraySize(Prices)) // Если достигли конца массива - выходим. ExpertRemove(); } return(Res); } // Проверка на наличие багов и задержек. void Check() { if (Amount > 3) { if ((Prices[Amount - 1].onTick == Prices[Amount - 2].onTick) && // Три подряд записи из одного источника - баг. (Prices[Amount - 2].onTick == Prices[Amount - 3].onTick)) Alert("BUG!"); else if ((Prices[Amount - 1] == Prices[Amount - 2]) && // Если цены подряд идущих записей совпадают (Prices[Amount - 1].Interval > inMinInterval)) // И временной интервал между ними большой - информируем. { Alert((Prices[Amount - 1].onTick ? "OnTick-lag! - " : "OnBook-lag! - ") + (string)Prices[Amount - 1].Interval + " mcs."); ArrayPrint(Prices, _Digits, NULL, Amount - 4, 4); // Выводим подробно проблему. } } } int OnInit() { return(!MarketBookAdd(_Symbol)); // Подписались на стакан. } void OnBookEvent( const string &Symb ) { if ((Symb == _Symbol) && SaveNewTick_Book()) // Если записали новые цены из стакана, Check(); // проверяем. } void OnTick() { if (SaveNewTick_Tick()) // Если записали цены тика, Check(); // проверяем. } void OnDeinit( const int ) { MarketBookRelease(_Symbol); // Отписались от стакана. ArrayPrint(Prices, _Digits, NULL, 0, Amount); // Вывод всех записей. } 結果(MT5-b2656が1台のみ稼働、CPU負荷0前後、チャート1枚、Tester未使用)。 2020.10.20 12:26:19.680 Test9 (AUDCAD,H1) Alert: OnTick-lag! - 9573 mcs. 2020.10.20 12:26:19.680 Test9 (AUDCAD,H1) [bid] [ask] [onTick] [Interval] 2020.10.20 12:26:19.680 Test9 (AUDCAD,H1) [0] 0.92777 0.92780 true 76478 2020.10.20 12:26:19.680 Test9 (AUDCAD,H1) [1] 0.92777 0.92780 false 64 2020.10.20 12:26:19.680 Test9 (AUDCAD,H1) [2] 0.92777 0.92781 false 50552 2020.10.20 12:26:19.680 Test9 (AUDCAD,H1) [3] 0.92777 0.92781 true 9573 // В OnTick пришел тик на 9 мс позже, чем он был в стакане. ... 2020.10.20 12:26:33.899 Test9 (AUDCAD,H1) Alert: OnBook-lag! - 22153 mcs. 2020.10.20 12:26:33.899 Test9 (AUDCAD,H1) [bid] [ask] [onTick] [Interval] 2020.10.20 12:26:33.899 Test9 (AUDCAD,H1) [0] 0.92776 0.92783 true 358403 2020.10.20 12:26:33.899 Test9 (AUDCAD,H1) [1] 0.92776 0.92783 false 2361 2020.10.20 12:26:33.899 Test9 (AUDCAD,H1) [2] 0.92776 0.92784 true 2215506 2020.10.20 12:26:33.899 Test9 (AUDCAD,H1) [3] 0.92776 0.92784 false 22153 // В стакан пришел тик на 22 мс позже, чем он был в OnTick. 再生を確認してください。 fxsaber 2020.10.20 10:28 #585 高速アンロード機としては中級のトータル。 CopyTicks は SymbolInfoTick よりも最大で数秒遅れます。SymbolInfoTickとCopyTicksがOnTickの最初に呼ばれた場合、この時点では遅延はありません - これらは同期しています。 バーがOnTickから最大で数秒遅れる。そ のため、バーを通して新しいティックを確認することはできません。リアルタイムのバーとインジケータは大きな問題です。 MT5では、OnTickとOnBookEventは、Terminalに来たときよりも数十ミリ秒遅れて到着することがあります。したがって、現在のダニは、2つのソースから要求する必要があります。 fxsaber 2020.10.26 07:57 #586 開発者に質問です。 SymbolInfoTickが5ms実行されたとする。ティックは現在の時刻に 対応するのか、それともその5ms前に対応するのか? fxsaber 2020.10.26 08:16 #587 SymbolInfoTickの ブレーキは閉じています。結論から言うと、こうです。 CPUに負荷がかかっている場合(Optimizeが全コアでもないような場合)、SymbolInfoTickが完了するまでに数十ミリ秒かかることがあります。ターミナルで最も人気のあるこの機能が、なぜ定期的にスナップショットされないのか、その答えはない。できれば、スナップショットを作っておくとよいでしょう。また、CPU負荷がゼロであっても、OnTick関数がTerminalに来るティックより数十ミリ秒遅れて動作する可能性があることを忘れないでください。 しかし、原始的な取引をしている人たちにとっては、心配には及ばないでしょう。 Anton 2020.10.26 10:25 #588 fxsaber:SymbolInfoTickのブレーキは閉じています。結論から言うと、こうです。CPUに負荷がかかっている場合(Optimizeが全コアでもダメとか)、SymbolInfoTickが完了するのに数十ミリ秒かかることがあります。ターミナルで最も人気のあるこの機能が、なぜ定期的にスナップショットされないのか、その答えはない。できれば、スナップショットを作っておくとよいでしょう。また、CPU負荷がゼロであっても、OnTick関数がTerminalに来るティックより数十ミリ秒遅れて動作する可能性があることを忘れないでください。しかし、原始的なトレードをする人たちには関係ないことです。 プリミティブではない」トレードをする人へ:ハードウェアがそれに見合うものでなければならない。 「つまり、6つのプロセスが、テスト期間中、1つのCPUコアに100%負荷がかかるということでしょうか?物理コアは4つしかないんですか?そして、そのようなバックグラウンドでテストが「遅れている」ことに心から驚いている? これが本当にあなたの理解度だとしたら"学び、学び、また学ぶ"。 16-20スレッドでCPUを犯したいなら、最低でも20物理コアのCPUを買いましょう。 fxsaber 2020.10.26 13:40 #589 Anton:プリミティブではない」取引の場合:ハードウェアがそれに見合うものである必要があります。「6/8」というのは、6つのプロセスが、テスト時間中、1つのCPUコアに100%負荷をかけているという意味ですか?物理コアは4つしかないんですか?そして、そのようなバックグラウンドでテストが「遅くなる」ことに心から驚いている?これが本当にあなたの理解度だとしたら"学び、学び、また学ぶ"。16-20スレッドでCPUを犯したいなら、最低でも20物理コアのCPUを買いましょう。 現在の価格の取得が 非常に遅いことを証明できるはずです。MQL5で最も重要な関数を間違って実装したために、CPU負荷がこのような遅さを生んでいるに過ぎません。 Anton 2020.10.26 13:43 #590 fxsaber:現在の価格を取得 するための実装が非常に遅いことを証明できるはずです。CPUの負荷は、MQL5のメイン関数の間違った実装により、このようなスローダウンを生み出すだけです。テストコードvoid OnTick() { MqlTick Tick; ulong gstart=GetMicrosecondCount(); int count=10000; for(int i=0; i<count; i++) { SymbolInfoTick(_Symbol, Tick); } ulong gend=GetMicrosecondCount()-gstart; Print(count," iterations, total time ", DoubleToString(gend/1000.0,3)," ms; avr time: ",DoubleToString(gend/1000.0/count,3)," ms"); } 証明しなさい。 1...525354555657585960616263646566...94 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
どうやるんですか?
ただ、6/8Agentsが稼働している時にブレーキを再現しました。
ただ、6/8Agentsが稼働している時にブレーキを再現しました。
I.e.CPU負荷時の問題。
MQ-Demo, 20 charts, b2656.マシンはTerminalのみ起動し、Testerは起動していません。
ただ、6/8Agentsが稼働している時にブレーキを再現しました。
つまり、CPUに負荷がかかったときに問題が発生するのです。
これはあなたにとって新しい情報ですか?
これはあなたにとって新しい情報ですか?
なぜ、このようなCPU負荷のラグを回避することができないのか、完全に理解できていません。おそらく無能なんだろうけど。
しかし、以下は、MT5における価格データの関連性の問題を示すクリーンなテストです。コメント付きでコードを提供しました。簡単に説明すると、SymbolInfoTick/stackを介して ティックを取得し、互いに照合します。特に、異なるソースからの同一のティック間のギャップや大きなラグを避けるために。
結果(MT5-b2656が1台のみ稼働、CPU負荷0前後、チャート1枚、Tester未使用)。
再生を確認してください。
高速アンロード機としては中級のトータル。
開発者に質問です。
SymbolInfoTickが5ms実行されたとする。ティックは現在の時刻に 対応するのか、それともその5ms前に対応するのか?
SymbolInfoTickの ブレーキは閉じています。結論から言うと、こうです。
CPUに負荷がかかっている場合(Optimizeが全コアでもないような場合)、SymbolInfoTickが完了するまでに数十ミリ秒かかることがあります。ターミナルで最も人気のあるこの機能が、なぜ定期的にスナップショットされないのか、その答えはない。できれば、スナップショットを作っておくとよいでしょう。また、CPU負荷がゼロであっても、OnTick関数がTerminalに来るティックより数十ミリ秒遅れて動作する可能性があることを忘れないでください。
しかし、原始的な取引をしている人たちにとっては、心配には及ばないでしょう。
SymbolInfoTickのブレーキは閉じています。結論から言うと、こうです。
CPUに負荷がかかっている場合(Optimizeが全コアでもダメとか)、SymbolInfoTickが完了するのに数十ミリ秒かかることがあります。ターミナルで最も人気のあるこの機能が、なぜ定期的にスナップショットされないのか、その答えはない。できれば、スナップショットを作っておくとよいでしょう。また、CPU負荷がゼロであっても、OnTick関数がTerminalに来るティックより数十ミリ秒遅れて動作する可能性があることを忘れないでください。
しかし、原始的なトレードをする人たちには関係ないことです。
プリミティブではない」トレードをする人へ:ハードウェアがそれに見合うものでなければならない。
「つまり、6つのプロセスが、テスト期間中、1つのCPUコアに100%負荷がかかるということでしょうか?物理コアは4つしかないんですか?そして、そのようなバックグラウンドでテストが「遅れている」ことに心から驚いている?
これが本当にあなたの理解度だとしたら"学び、学び、また学ぶ"。
16-20スレッドでCPUを犯したいなら、最低でも20物理コアのCPUを買いましょう。
プリミティブではない」取引の場合:ハードウェアがそれに見合うものである必要があります。
「6/8」というのは、6つのプロセスが、テスト時間中、1つのCPUコアに100%負荷をかけているという意味ですか?物理コアは4つしかないんですか?そして、そのようなバックグラウンドでテストが「遅くなる」ことに心から驚いている?
これが本当にあなたの理解度だとしたら"学び、学び、また学ぶ"。
16-20スレッドでCPUを犯したいなら、最低でも20物理コアのCPUを買いましょう。
現在の価格の取得が 非常に遅いことを証明できるはずです。MQL5で最も重要な関数を間違って実装したために、CPU負荷がこのような遅さを生んでいるに過ぎません。
現在の価格を取得 するための実装が非常に遅いことを証明できるはずです。CPUの負荷は、MQL5のメイン関数の間違った実装により、このようなスローダウンを生み出すだけです。
テストコード
証明しなさい。