MT5和速度在行动 - 页 59 1...525354555657585960616263646566...94 新评论 fxsaber 2020.10.20 08:05 #581 Anton:你是如何做到这一点的? 在6/8代理商运行时,只是重新制作了刹车。 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/8代理商运行时,只是重新制作了刹车。 即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张图表,b2656。机器上只有终端在运行,测试仪没有运行。 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/8代理商运行时,只是重新制作了刹车。也就是说,问题出在CPU加载时。 这对你来说是新信息吗? fxsaber 2020.10.20 09:42 #584 Anton:这对你来说是新信息吗? 我不完全理解为什么不可能绕过这些CPU负载滞后。可能是无能为力,无法做到这一点。 然而,下面是一个干净的测试,显示了MT5中价格数据相关性的问题。我已经提供了带有注释的代码。简而言之,通过SymbolInfoTick/stack 来获取ticks并相互检查。特别是要避免来自不同来源的相同刻度之间的差距和大滞后。 // Демонстрация лагов 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在运行,CPU负载约为零,一个图表,没有使用测试仪)。 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可能比它们来到终端时晚几十毫秒到达。因此,应从两个渠道申请当前的蜱虫。 fxsaber 2020.10.26 07:57 #586 向开发商提问。 假设SymbolInfoTick被执行了5ms。打勾是对应于当前时间,还是之前的5毫秒? fxsaber 2020.10.26 08:16 #587 SymbolInfoTick 的刹车被关闭。其结果是这样的。 如果CPU过载(比如优化甚至不在所有核心上),SymbolInfoTick可能需要几十毫秒才能完成。没有答案,为什么终端中这个最受欢迎的功能没有定期快照。如果可能的话,请把它拍成快照。不要忘记,即使在CPU零负载的情况下,OnTick函数也可能比终端的tick晚工作几十毫秒。 总而言之,相当可悲,但这并不能让那些原始交易的人担心。 Anton 2020.10.26 10:25 #588 fxsaber:SymbolInfoTick的刹车被关闭。其结果是这样的。如果CPU过载(比如优化甚至不在所有核心上),SymbolInfoTick可能需要几十毫秒才能完成。没有答案,为什么终端中这个最受欢迎的功能没有定期快照。如果可能的话,请把它拍成快照。不要忘记,即使在CPU零负载的情况下,OnTick函数也可能比终端的tick晚工作几十毫秒。总而言之,相当不幸,但它不能困扰那些原始交易的人。 对于那些交易 "不原始 "的人来说:硬件必须能够完成任务。 "你是在说 "6/8 "吗?也就是说,6个进程,每个进程在测试期间100%加载一个CPU核心?而且只有4个物理核心?并真诚地感到惊讶的是,在这样的背景下,测试 "变慢了"? 如果这确实是你的理解水平,那么。"学习、学习、再学习"。 如果你想用16-20个线程强奸CPU--至少要买有20个物理核心的CPU。 fxsaber 2020.10.26 13:40 #589 Anton:对于那些 "非原始 "的交易:硬件必须能够胜任。"你说的是 "6/8 "吗?也就是说,6个进程,每个进程在整个测试时间内100%加载一个CPU核心?而且只有4个物理核心?并真诚地感到惊讶的是,在这样的背景下,测试 "变慢了"?如果这确实是你的理解水平,那么。"学习、学习、再学习"。如果你想用16-20个线程强奸CPU--至少要买有20个物理核心的CPU。 我相信我可以证明,获得你目前的价格 是非常缓慢的。由于MQL5中最重要的功能的不正确实现,CPU负载才会造成这样的迟缓。 Anton 2020.10.26 13:43 #590 fxsaber:我相信我可以证明,你获取当前价格 的实施是非常缓慢的。由于MQL5中主函数的不正确实现,CPU负载只产生了这样的速度减慢。测试代码。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,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
你是如何做到这一点的?
在6/8代理商运行时,只是重新制作了刹车。
在6/8代理商运行时,只是重新制作了刹车。
即CPU加载时的问题。
MQ-Demo,20张图表,b2656。机器上只有终端在运行,测试仪没有运行。
在6/8代理商运行时,只是重新制作了刹车。
也就是说,问题出在CPU加载时。
这对你来说是新信息吗?
这对你来说是新信息吗?
我不完全理解为什么不可能绕过这些CPU负载滞后。可能是无能为力,无法做到这一点。
然而,下面是一个干净的测试,显示了MT5中价格数据相关性的问题。我已经提供了带有注释的代码。简而言之,通过SymbolInfoTick/stack 来获取ticks并相互检查。特别是要避免来自不同来源的相同刻度之间的差距和大滞后。
结果(机器上只有一个MT5-b2656在运行,CPU负载约为零,一个图表,没有使用测试仪)。
请确认播放。
快速卸载机器的中级总数。
向开发商提问。
假设SymbolInfoTick被执行了5ms。打勾是对应于当前时间,还是之前的5毫秒?
SymbolInfoTick 的刹车被关闭。其结果是这样的。
如果CPU过载(比如优化甚至不在所有核心上),SymbolInfoTick可能需要几十毫秒才能完成。没有答案,为什么终端中这个最受欢迎的功能没有定期快照。如果可能的话,请把它拍成快照。不要忘记,即使在CPU零负载的情况下,OnTick函数也可能比终端的tick晚工作几十毫秒。
总而言之,相当可悲,但这并不能让那些原始交易的人担心。
SymbolInfoTick的刹车被关闭。其结果是这样的。
如果CPU过载(比如优化甚至不在所有核心上),SymbolInfoTick可能需要几十毫秒才能完成。没有答案,为什么终端中这个最受欢迎的功能没有定期快照。如果可能的话,请把它拍成快照。不要忘记,即使在CPU零负载的情况下,OnTick函数也可能比终端的tick晚工作几十毫秒。
总而言之,相当不幸,但它不能困扰那些原始交易的人。
对于那些交易 "不原始 "的人来说:硬件必须能够完成任务。
"你是在说 "6/8 "吗?也就是说,6个进程,每个进程在测试期间100%加载一个CPU核心?而且只有4个物理核心?并真诚地感到惊讶的是,在这样的背景下,测试 "变慢了"?
如果这确实是你的理解水平,那么。"学习、学习、再学习"。
如果你想用16-20个线程强奸CPU--至少要买有20个物理核心的CPU。
对于那些 "非原始 "的交易:硬件必须能够胜任。
"你说的是 "6/8 "吗?也就是说,6个进程,每个进程在整个测试时间内100%加载一个CPU核心?而且只有4个物理核心?并真诚地感到惊讶的是,在这样的背景下,测试 "变慢了"?
如果这确实是你的理解水平,那么。"学习、学习、再学习"。
如果你想用16-20个线程强奸CPU--至少要买有20个物理核心的CPU。
我相信我可以证明,获得你目前的价格 是非常缓慢的。由于MQL5中最重要的功能的不正确实现,CPU负载才会造成这样的迟缓。
我相信我可以证明,你获取当前价格 的实施是非常缓慢的。由于MQL5中主函数的不正确实现,CPU负载只产生了这样的速度减慢。
测试代码。
证明一下吧。