エラー、バグ、質問 - ページ 2778

 
Alain Verleyen:

別のTerminalですが、20のチャート(異なるシンボル)が同時にスタートしました。

ピークが来るところをAUDUSDで確認しました。

2020.06.13 09:16:35.151 342152 (USDJPY, H1) Quantity = 240
2020.06.13 09:16:35.151 342152 (USDJPY, H1) Min = 38
2020.06.13 09:16:35.151 342152 (USDJPY, H1) Max = 2235
2020.06.13 09:16:35.151 342152 (USDJPY, H1) Avg = 472
2020.06.13 09:16:35.151 352152 (USDJPY) H1.151 342152 (CADCHF, H1) Avg = 240
2020.06.13 09: 16: 35.151 342152 (CADCHF, H1) Min = 48
2020.06.13 09: 16: 35.151 342152 (CADCHF, H1) Max = 2323
2020.06.14 09: 16: 35.151 342152 (CADCHF, H1) Max = 2324 2020.06.15 09: 16: 36.15 342152 (CADCHF) Min = 48 2020.06.06.13 09: 16: 35.152 342152 (CADCHF, H1) Avg = 606
2020.06.13 09: 16: 35.152 342152 (EURAUD, H1) Quantity = 240
2020.06.13 09: 16: 35.16: 35.152 342152(EURCHF、H1)数量= 240
2020.06.13 09:16:35.152 342152(GBPCHF、H1)数量= 240
2020.06.13 09:16:35.152 342152(EURCHF、H1)最小= 141
2020.06.13 09:16:35.152 342152(EURGBP、H1)数量= 240
2020.06.13 09:16:35.152342152152 342152 (CHFJPY, H1) Quantity = 240
2020.06.13 09: 16: 35.152 342152 (AUDJPY, H1) Quantity = 240
2020.06.13 09: 16: 35.152 342152 (AUDJPY, H1) Min = 47
2020.06.13 09: 16: 35.152 342152 (EURUSD, H1) Quantity = 240
2020.06.13 09: 16: 35.152 342152 (EURUSD, H1) Min.= 23
2020.06.13 09: 16: 35.152 342152 (EURUSD, H1) Max = 2368
2020.06.13 09: 16: 35.152 342152 (AUDUSD, H1) Quantity = 240
2020.06.13 09: 16: 35.152 342152 (EURUSD, H1) Avg = 607
2020.06.13 09: 16: 35.152 342152 (AUDUSD, H1) Min = 74
2020.06.13 09: 16: 35.152 342152 (GBPJPY, H1) Avg = 240
2020.06.13 09: 16: 35.152 342152 (AUDNZD, H1) Avg = 240
2020.06.13 09: 16: 35.152 342152 (USDCHF, H1) Avg = 240
2020年。06.06.13 09: 16: 35.152 342152 (AUDNZD, H1) Min = 122
2020.06.13 09: 16: 35.152 342152 (AUDCHF, H1) Quantity = 240
2020.06.13 09: 16: 35.152 342152 (AUDNZD, H1) Max = 2402
2020.06.13 09: 16: 35.152 342152 (AUDNZD, H1) Avg = 660
2020年.06.06.13 09: 16: 35.152 342152 (AUDCHF, H1) Min = 157
2020.06.13 09: 16: 35.152 342152 (AUDCHF, H1) Max = 2354
2020.06.13 09: 16: 35.152 342152 (AUDCHF, H1) Avg = 663
2020.06.13 09: 16: 35.152 342152 (GBPCHF, H1) Min = 32
2020.06.13 06: 16: 35.152 352152 (AUDCHF, H2) Min = 157 2020.06.12.16:35.152342152(豪ドル円) 2020.06.06.13 09: 16: 35.152 342152 (GBPCHF, H1) Max = 2380
2020.06.13 09: 16: 35.152 342152 (GBPCHF, H1) Avg = 616
2020.06.13 09: 16: 35.152 342152 (EURCHF, H1) Max = 2327
2020.06.13 09: 16: 35.152 342152 (EURCHF, H1) Avg = 618
2020年.06.13 09:16:35.152 342152 (EURGBP, H1) Min = 36
2020.06.13 09:16:35.152 342152 (EURGBP, H1) Max = 2233
2020.06.13 09:16:35.152 342152 (EURGBP, H1) Avg = 503
2020.06.13 09:16:35.152 342152 (CHFJPY, H1) Min = 11
2020.06.13 09:16:35.152 342152 (EURGBP, H1)13 09: 16: 35.152 342152 (CHFJPY, H1) Max = 2387
2020.06.13 09: 16: 35.152 342152 (CHFJPY, H1) Avg = 657
2020.06.13 09: 16: 35.152 342152 (AUDJPY, H1) Max = 2292
2020.06.13 09: 16: 35.152 342152 (AUDJPY, H1) Avg = 612
2020.06.13 09:15:35:16 342 342152 (CHFJPY)13 09: 16: 35.152 342152 (EURNZD, H1) 数量 = 240
2020.06.13 09: 16: 35.152 342152 (EURNZD, H1) Min = 54
2020.06.13 09: 16: 35.152 342152 (EURNZD, H1) Max = 2361
2020.06.13 09: 16: 35.152 342152 (EURNZD, H1) Avg = 612
2020.06.13 09: 16: 35.151 352152 (EURNZD, H2) Min = 54 20.032010.06.13日:16:15.35.25(ユーロネオジム) 2020.06.06.13 09: 16: 35.152 342152 (AUDCAD, H1) Avg = 240
2020.06.13 09: 16: 35.152 342152 (AUDCAD, H1) Min = 121
2020.06.13 09: 16: 35.152 342152 (EURCAD, H1) Avg = 240
2020.06.13 09: 16: 35.152342152 (AUDCAD, H1) Avg = 240 2020.06.13 09: 16: 35.152 342152 (AUDCAD, H1) Avg = 240 2020.06.13 09: 17: 16: 35.152342151152 342152 (AUDCAD, H1) Max = 2328
2020.06.13 09: 16: 35.152 342152 (AUDCAD, H1) Avg = 605
2020.06.13 09: 16: 35.152 342152 (AUDUSD, H1) Max = 2361
2020.06.13 09: 16: 35.152 342152 (AUDUSD, H1) Avg = 611
2020.06.13 09: 16: 35.155.352342152 (AUDUSD, H1)最大 = 2328 20:05: 16: 35.155 342152 (AUDUSD) Avg = 611 2020.06.13 09: 16: 35.155 342152 (AUDCAD, H1)最大 = 2361 152 342152(GBPJPY、H1) Min = 13
2020.06.13 09: 16: 35.152 342152(GBPJPY、H1) Max = 2411
2020.06.13 09: 16: 35.152 342152(GBPJPY、H1) Avg = 661
2020.06.13 09: 16: 35.153 342152(GBPUSD, H1)アベグ= 240
2020.06.13 09: 16: 35.158.13 09: 16: 35.153 342152 (GBPUSD, H1) Min = 113
2020.06.13 09: 16: 35.153 342152 (GBPUSD, H1) Max = 2362
2020.06.13 09: 16: 35.153 342152 (GBPUSD, H1) Avg = 667
2020.06.13 09: 16: 35.153 342152 (USDCAD, H1) 数量= 240
2020.06.06.13 09: 16: 35.153 342152 (USDCAD, H1) Min = 151
2020.06.13 09: 16: 35.153 342152 (USDCAD, H1) Max = 2386
2020.06.13 09: 16: 35.153 342152 (EURAUD, H1) Min = 35
2020.06.13 09: 16: 35.153 342152 (USDCAD, H1) Avg = 671
2020.06.13 09: 15: 15: 35.153 352152 (USDCAD, H2) Min = 35 2020.06.13 09: 16: 35.153 342152 (EURAUD, H1) Max = 2233
2020.06.13 09: 16: 35.153 342152 (EURAUD, H1) Avg = 478
2020.06.13 09: 16: 35.153 342152 (EURJPY, H1) Quantity = 240
2020.06.13 09: 16: 35.153 342152 (EURJPY, H1) Min = 10
2020.06.13 10: 35.153 35252 (EURAUD, H2) Avg = 2233 2020.06.14 09: 16:30 35.153 3424 (UVRAUD, H1) Avg = 2233 2020.06.15 09: 16: 35.15434215106.06.13 09: 16: 35.153 342152 (EURCAD, H1) Min = 123
2020.06.13 09: 16: 35.153 342152 (EURCAD, H1) Max = 2384
2020.06.13 09: 16: 35.153 342152 (EURCAD, H1) Avg = 658
2020.06.13 09: 16: 35.153 342152 (USDCHF, H1) Min = 32
2020.06.13 06: 16: 35.153 352152 (EURCAD, H2) Min = 234 2020.06.13 06: 16: 35.153 342152 (USDCHF) Avg = 234 2020.06.13 06: 16: 35.153 342152 (EURCAD, H1)06.06.13 09: 16: 35.153 342152 (USDCHF, H1) Max = 2369
2020.06.13 09: 16: 35.153 342152 (USDCHF, H1) Avg = 614
2020.06.13 09: 16: 35.153 342152 (EURJPY, H1) Max = 2344
2020.06.13 09: 16: 35.153 342152 (EURJPY, H1) Avg = 658

そして、この時に登場するのがトップスです。

2020.06.13 09:17:35.151 342152 (USDJPY, H1) Avg = 480
2020.06.13 09:17:35.151 342152 (USDJPY, H1) Min = 38
2020.06.13 09:17:35.151 342152 (USDJPY, H1) Max = 17421
2020年.06.06.13 09: 17: 35.151 342152 (USDJPY, H1) Avg = 533
2020.06.13 09: 17: 35.151 342152 (EURAUD, H1) Quantity = 480
2020.06.13 09: 17: 35.151 342152 (EURAUD, H1) Min = 35
2020.06.13 09: 16: 17: 35.163 342152 (USDJPY) Avg = 532 (USDJPY, H1) Min = 534 2020.06.13 09: 17: 35.163 342152 (EURAUD, H1)06.06.13 09: 17: 35.151 342152 (EURAUD, H1) Max = 17406
2020.06.13 09: 17: 35.151 342152 (EURAUD, H1) Avg = 518
2020.06.13 09: 17: 35.151 342152 (EURGBP, H1) Quantity = 480
2020.06.13 09: 18: 35.151 35252 (EURAUD, H2) Acceleration = 5.5.0 06.13 09:17:35.151 342152(EURGBP, H1) Min = 36
2020.06.13 09:17:35.151 342152(EURGBP, H1) Max = 17425
2020.06.13 09:17:35.151 342152(EURGBP, H1) Avg = 515
2020.06.13 09:17:35.151 342152(EURUSD、H1)数量= 480
2020.06.13 09:17:35.151 342152(EURUSD、H1)最小= 18
2020.06.13 09:17:35.151 342152(EURUSD、H1)最大= 17366
2020.06.13 09:17:35.151 352152(EURUSD、H1)最小= 18 2020.06.13 09:18:35.151 342152(EURUSD、H1)最小= 17366 2020.06.14 09:17:35.151 342152(EURCHF、H1)マックス= 480
2020.06.13 09:17:35.151 342152(EURUSD、H1)平均= 618
2020.06.13 09:17:35.151 342152(AUDCHF、H1)マックス= 480
2020.06.13 09:17:35.151 3.151 342152(USDCHF、H1) 数量=480
2020.06.13 09:17:35.151 342152(AUDCHF、H1) Min=126
2020.06.13 09:17:35.151 342152(CADCHF, H1)数量=480
2020.06.13 09:17:35.151 3.151 342152(AUDCHF、H1)マックス= 10477
2020.06.13 09:17:35.151 342152(EURCAD、H1)数量= 480
2020.06.13 09:17:35.151 342152(GBPUSD、H1)数量= 480
2020.06.13.13 09:17:35.152 342152(EURCAD、H1) Min = 123
2020.06.13 09:17:35.152 342152(GBPUSD、H1) Min = 112
2020.06.13 09:17:35.152 342152(ERCAD, H1) Max = 10485
2020.06.13 09:17:35.152 342152 (EURCAD, H1) Avg = 663
2020.06.13 09: 17: 35.152 342152 (GBPUSD, H1) Max = 10435
2020.06.13 09: 17: 35.152 342152 (GBPUSD, H1) Avg = 661
2020.06.13 09: 17: 35.152 342152 (EURCHF, H1) Min = 71
2020年.06月.13日。06.06.13 09: 17: 35.152 342152 (EURJPY, H1) Avg = 480
2020.06.13 09: 17: 35.152 342152 (USDCAD, H1) Avg = 480
2020.06.13 09: 17: 35.152 342152 (USDCAD, H1) Min = 54
2020.06.13 09: 17: 35.152 342152 (USDJPY, H1) Avg = 480 2020.06.13 09: 17: 35.152 352152 (USDJPY) Avg = 480 2020.06.13 09: 17: 35.152 342152 (EURJPY, H1) Min = 10
2020.06.13 09: 17: 35.152 342152 (EURJPY, H1) Max = 10487
2020.06.13 09: 17: 35.152 342152 (EURJPY, H1) Avg = 664
2020.06.13 09: 17: 35.152 342152 (EURJPY, H1) Avg = 664. "EuroJPYは "H1、EurJPYは "EURJPYは "H1、EurJPyは""EURJPYは "H1 "H1 "H1 "H2.13 09: 17: 35.152 342152 (EURNZD, H1) 数量 = 480
2020.06.13 09: 17: 35.152 342152 (EURNZD, H1) Min = 54
2020.06.13 09: 17: 35.152 342152 (EURNZD, H1) Max = 17426
2020.06.13 09: 16: 35.152342152 (EURNZD, H1) 数量 = 480 2020.06.14 09: 16: 35.163342152 (EURNZD) Max = 17442 06.06.13 09:17:35.152 342152(EURNZD, H1) Avg = 620
2020.06.13 09:17:35.152 342152(USDCHF, H1) Min = 32
2020.06.13 09:17:35.152 342152(USDCHF, H1) Max = 17427
2020.06.13 09:17:35.152 342152 (USDCHF, H1) Avg = 649
2020.06.13 09: 17: 35.152 342152 (GBPCHF, H1) Max = 480
2020.06.13 09: 17: 35.152 342152 (GBPCHF, H1) Min = 32
2020.06.13 09: 17: 35.152342152 (GBPCHF、H1)Min = 32。152 342152 (GBPCHF, H1) Max = 17433
2020.06.13 09: 17: 35.152 342152 (GBPCHF, H1) Avg = 647
2020.06.13 09: 17: 35.152 342152 (AUDJPY, H1) Min = 480
2020.06.13 09: 17: 35.152 342152 (AUDJPY, H1) Min.= 47
2020.06.13 09: 17: 35.152 342152 (AUDJPY, H1) Max = 17415
2020.06.13 09: 17: 35.152 342152 (AUDJPY, H1) Avg = 640
2020.06.13 09: 17: 35.152 342152 (CADCHF, H1) Min = 48
2020.06.13 09: 17: 35.352342152 (ADCHF) H1.152 342152 (CADCHF, H1) Max = 17435
2020.06.13 09: 17: 35.152 342152 (CADCHF, H1) Avg = 637
2020.06.13 09: 17: 35.152 342152 (AUDCHF, H1) Avg = 662
2020.06.13 09: 17: 35.152 342152 (AUDUSD, H1) 数量 = 480
2020.06.13 09: 17: 35.152 342152 (CADCHF, H1) Evg = 762 2020.06.13 10: 17: 35.152342151 2020.06.13 09: 17: 35.152 342152 (AUDCHF) Avg = 762152 342152 (AUDUSD, H1) Min = 43
2020.06.13 09: 17: 35.152 342152 (AUDUSD, H1) Max = 17416
2020.06.13 09: 17: 35.152 342152 (AUDUSD, H1) Avg = 620
2020.06.13 09: 17: 35.152 342152 (GBPJPY, H1) 数量 = 480
2020.06.13 09: 17: 35.152342152 (BUDUSD) H2.13 09: 17: 35.152 342152 (GBPJPY, H1) Min = 13
2020.06.13 09: 17: 35.152 342152 (GBPJPY, H1) Max = 10468
2020.06.13 09: 17: 35.152 342152 (GBPJPY, H1) Avg = 660
2020.06.13 09: 17: 35.152 342152 (CHFJPY, H1) 数量 = 480
2020.06.06.13 09: 17: 35.152 342152 (CHFJPY, H1) Min = 11
2020.06.13 09: 17: 35.152 342152 (CHFJPY, H1) Max = 10474
2020.06.13 09: 17: 35.152 342152 (AUDNZD, H1) 数量=480
2020.06.13 09: 17: 35.152 342152 (AUDNZD, H1) Min = 61
2020.06.13 09: 17: 35.152 342152 (AUDNZD, H1) Max = 10491
2020.06.13 09: 17: 35.152 342152 (AUDNZD, H1) Avg = 663
2020.06.13 09: 17: 35.152 342152 (EURCHF, H1) Max = 17414
2020.06.13 09: 17: 35.152 352152 (AUDNZD, H1) Avg = 663 2020.06.14 10: 17: 35.152 352152 (AUDNZD, H1) Max = 664 20: 06.14 09: 16: 18: 16: 18: 18: 17152 342152 (EURCHF, H1) Avg = 646
2020.06.13 09: 17: 35.152 342152 (AUDCAD, H1) Max = 480
2020.06.13 09: 17: 35.152 342152 (AUDCAD, H1) Min = 100
2020.06.13 09: 17: 35.152 342152 (AUDCAD, H1) Max = 17421
2020年.06.06.13 09: 17: 35.152 342152 (AUDCAD, H1) Avg = 638
2020.06.13 09: 17: 35.152 342152 (USDCAD, H1) Max = 10488
2020.06.13 09: 17: 35.152 342152 (USDCAD, H1) Avg = 666
2020.06.13 09: 17: 35.152 342152 (CHFJPY, H1) Avg = 656

だから、すべてが同時に起こったのです。しかし、これはまだMT5の問題である可能性があります。他の同時接続端末で確認します。

ログから判断すると、片方の減速ともう片方の減速は一致しない、つまり同時には減速していない。つまり、端末自体に問題があるわけです。

 

MQL5プログラムは、トランザクションキューを経由してチャートと連携(Get/Setメソッド)します。

これにより、MQL5プログラムでは避けられない閉塞感からGUIや端末そのものを解放することができます。

トランザクション非同期では、分離モードでの素早い書き込みや読み出しが可能で、SetメソッドとGetメソッドを混在させると、すぐに同期モードが有効になります。

つまり、GetとSetを交互に行うのではなく、非同期でSetを1000回行い、その後Getを1000回行う方が、キューを同期処理にすることができるのです。なぜなら、前の非同期Setが正確に重なっていて、今読めたかどうかを確認する必要があるからです。


システム機能は慎重に使い、可能な限りキャッシュする必要があります。

 
Renat Fatkhullin:

システム関数は慎重に使い、可能な限りキャッシュする必要があります。

午後、問題は少し違っていて、ChartGetIntegerと同様の関数の実行が非常に遅いのです。
ビルド 2009 からビルド 2485 に切り替えたとき、ChartGetInteger の実行時間が 5ms からピークで 200-250ms に増加し、特に 50 以上のチャートを開いているときに問題になることがあります。
システム:ターミナル Windows 10 ビルド 18363、Intel Core i7-7700HQ @ 2.80GHz、19 / 31 GB メモリ、262 / 640 GB ディスク、4K モニター、NVidia 1050Ti
問題説明のコードが使用さ れました: https://www.mql5.com/en/forum/342152

考えられる原因

バグ、不具合、問題

セルゲイ・デジブリク, 2020.06.13 19:20

MT5 2009とMT5 2485の2つのバージョンでChartGetInteger関数の実装を比較したところ、おそらく以下のような問題があると思われます。
1.
mfence; lock mov eax,[rax+2C];
2009年版では、次のような操作で行われます: lock xadd [rcx+2C],eax

2.また、ntdll_RtlEnterCriticalSectionのロジックと可能な滞留時間が大幅に変更されたようです。
以前(2009年)は、クリティカルセクションは受信値のペアをチェックするだけで、アトミック演算は行わなかった。
そして2485では、チャートのリンクリストオブジェクトをさらに列挙することができるようになった。


おそらく、新しいコンパイラへの移行の一環として、チャート関数で作業する際のクラッシュが修正されたとき(約2-3ヶ月前)に、この問題が発生する可能性があります。
MT5(build 2485)のChartGetInteger呼び出しの アセンブラコードを添付します。



 
調べてみよう。
 
Renat Fatkhullin:
チェックしてみてください。

再生のための手順

long chart_id;

int OnInit(){
   for(int i = 0; i < 95; ++i){
      ChartOpen(_Symbol, _Period);
   }

   chart_id = ChartID();
   EventSetMillisecondTimer(250);
   return(INIT_SUCCEEDED);
}

void OnTimer(){
  ulong t=GetMicrosecondCount();
  long autoscroll = ChartGetInteger(chart_id, CHART_AUTOSCROLL);
  ulong delay =(GetMicrosecondCount()-t)/1000;
  if (delay>0){
    Print("Execution delay: ",delay, " ms");
  }
}


1.クリーンなMTターミナルで1つのチャートを開き、そのチャート上で上記のコンパイル済みEAを実行します。
2.95 個の新しいチャートをすべて開いた後、これまで開いていなかった場合は、MT のチャート・ウィンドウをチャート・スペースの幅いっぱいに広げます。
3.チャートタブから別のタブに移動し、ChartGetIntegerの実行値をログから記録する。
開いているチャートをすべて閉じるには、CTRL+Wを長押しします。


MT5(ビルド2009)の結果です。

2020.06.14 15:33:43.173 Test123456 (EURUSD,H1)  Execution delay: 2 ms
2020.06.14 15:33:43.674 Test123456 (EURUSD,H1)  Execution delay: 3 ms
2020.06.14 15:33:44.177 Test123456 (EURUSD,H1)  Execution delay: 5 ms
2020.06.14 15:33:44.422 Test123456 (EURUSD,H1)  Execution delay: 4 ms
2020.06.14 15:33:44.673 Test123456 (EURUSD,H1)  Execution delay: 2 ms
2020.06.14 15:33:44.923 Test123456 (EURUSD,H1)  Execution delay: 3 ms
2020.06.14 15:33:45.173 Test123456 (EURUSD,H1)  Execution delay: 2 ms
2020.06.14 15:33:45.423 Test123456 (EURUSD,H1)  Execution delay: 2 ms
2020.06.14 15:33:45.672 Test123456 (EURUSD,H1)  Execution delay: 2 ms


MT5の結果(buidl 2485)。

2020.06.14 15:33:12.947 Test123456 (EURUSD,H1)  Execution delay: 163 ms
2020.06.14 15:33:13.198 Test123456 (EURUSD,H1)  Execution delay: 1 ms
2020.06.14 15:33:13.293 Test123456 (EURUSD,H1)  Execution delay: 1 ms
2020.06.14 15:33:13.831 Test123456 (EURUSD,H1)  Execution delay: 287 ms
2020.06.14 15:33:14.702 Test123456 (EURUSD,H1)  Execution delay: 136 ms
2020.06.14 15:33:15.316 Test123456 (EURUSD,H1)  Execution delay: 3 ms
2020.06.14 15:33:15.677 Test123456 (EURUSD,H1)  Execution delay: 110 ms
2020.06.14 15:33:17.041 Test123456 (EURUSD,H1)  Execution delay: 221 ms


結果と結論の比較:
1.2009年版は2485年版に比べ、表示されるレコード数が大幅に増えています。


2. "通常状態 "でのChartGetInteger関数は、ビルド2485に変更後、高速化しました。ピーク実行時間は、2009ビルドで-15ms、2485ビルドで-310ms です。
ビルド2485に変更後、「好ましくない条件」でのChartGetInteger関数が最大で20倍遅くなる。

3. 目視で95枚のチャートを開く速度を推定できるのと同じです。
どちらのビルドでも、先に開いたチャートの数による「指数関数的」な複雑さは顕著であり、2009ビルドでは実行速度も大幅に向上しています。

 
Stanislav Korotky :

ログから判断すると、片方の減速ともう片方の減速は一致しない、つまり同時には減速しない。つまり、端末自体に問題があるわけです。

ログは1分ごとにしか出力されないので(翻訳でタイムスタンプがめちゃくちゃ!)、もっと正確にチェックできるのですが、その価値はないです。

いくつかの端末で試したところ、明らかにピークが同時ではないことがわかりました。これは明らかにMT5のことです。

 
Renat Fatkhullin :

MQL5プログラムは、トランザクションキューを経由してチャートと連携(Get/Setメソッド)します。

これにより、MQL5プログラムでは避けられない閉塞感からGUIや端末そのものを解放することができます。

トランザクション非同期では、分離モードでの素早い書き込みや読み出しが可能で、SetメソッドとGetメソッドを混在させると、すぐに同期モードが有効になります。

つまり、Get & Setを交互に行うのではなく、非同期のSetを1000回行い、その後Getを1000回行う方が、キューを同期処理にすることができるのです。なぜなら、前の非同期Setが正確に重なっていて、今読めたかどうかを確認する必要があるからです。


システム機能は慎重に使い、可能な限りキャッシュする必要があります。

分かりやすくて良いシステムだと思います。しかし、@Sergey Dzyubliも 実証したように、どこかに不具合があるような気がするのです。
Sergey Dzyublik
Sergey Dzyublik
  • www.mql5.com
Добавил тему Вход через MQL5.community (OAuth) В настройках профиля появилась новая вкладка Приложения (https://www.mql5.com/ru/users/USER_NAME/apps): Эта функция позволяет людям авторизоваться на вашем сайте или в приложении, используя аккаунт MQL5.community. Технология проста и безопасна. Она Добавил...
 
Alexey Navoykov:
私の知る限り、ChartRedrawの呼び出しは、チャートの再描画を即座に引き起こすことはありません。 再描画は、何らかのGet-methodが呼び出されたときにのみ発生します。
また、ChartRedrawも基本的に同じ非同期メソッドです。 ですから、あなたのBuildChartの測定は信頼できません。

この2つの行を入れ替えてみてください。

の場合、測定に非同期なものは存在しないので、何が起こるか見てみましょう。さらに高速化されます。

 
fxsaber:
コンパイラがこの行のどこを嫌っているのか理解できず、長い間おろおろしていました。

ifを書くのを忘れた。そんなアホな人たちのために、メッセージを噛み砕いて説明するのがいいと思ったんです。

5年ほど前、あるいはもっと前に、すべてのコンパイラの エラーと警告の 説明と例を作るように言われました。

もっとうまくできるかもしれない。

 
Renat Fatkhullin:

MQL5プログラムは、トランザクションキューを経由してチャートと連携(Get/Setメソッド)します。

これにより、MQL5プログラムでは避けられない閉塞感から、GUIや端末自体を解放することができます。

トランザクション非同期では、分離モードでの素早い書き込みや読み出しが可能で、SetメソッドとGetメソッドを混在させると、すぐに同期モードが有効になります。

つまり、GetとSetを交互に行うのではなく、非同期でSetを1000回行い、その後Getを1000回行う方が、キューを同期処理にすることができるのです。なぜなら、前の非同期Setが正確に重なっていて、今読めたかどうかを確認する必要があるからです。


システム機能は慎重に使い、可能な限りキャッシュする必要があります。

Setメソッドだけでなく、Getも非同期であることは正しく理解しているのですが?
Ilyasはここを間違えて いましたね?
そして、Slavaはここで 、ChartXYToTimePriceメソッドが非同期であると言ったのは正しいのでしょうか?結局のところ、ChartXYToTimePriceメソッドは、Getメソッドを参照している可能性が高いです。

ドキュメントには、Setメソッドの非同期性についてのみ記載されています。