MT5とスピードの関係 - ページ 3

 
fxsaber:

空っぽの端子2460。


ZS 空のアカウントで実行する。


スピードは注文数ではなく、取引 数に大きく影響されるようですね。

可能なんです。必ずチェックします。

20000ms/100000サイクルという恐ろしい数字でも、1コールあたり5〜30msとは比べものにならないのです。

 

仕組みがよくわからない。

- ちょっとだけ出てきました。

撮影者

 
A100:

最もシンプルな形で。

計算のやり方そのものを変えればいいのです(タスクに必要な回数だけ中間戻りをする)。しかし、複雑な場合は、第一段階でOnMainがないと考えてください(メインコードをOnMainではなく、OnTrade2XXに移動します)、それぞれOnMainで何かを学ぶ必要はありません。

OnMainとは何ですか? すべてのイベントがOnMainを呼び出してキューを処理する場合、OnMainのキューに複数のイベントが存在するのはなぜですか?

 
fxsaber:

取引履歴の多い口座で実行する必要がある。

もうどうでもいいことですが、デンマーク王国の何か・・・。あとの文章は?))

 

テスト1
 
fxsaber:

読者の皆様には、このスクリプトの結果を引用していただくようお願いします。

あまり新しくないノートパソコンから実行。


 

異なるキャラクターで3回起動。その結果です。

2020.05.29 14:21:52.586 t2 (EURUSD,H1)  HistoryDealsTotal() = 4987
2020.05.29 14:21:52.588 t2 (EURUSD,H1)  HistoryOrdersTotal() = 4981
2020.05.29 14:21:52.757 t2 (EURUSD,H1)  100000 HistorySelect = 169.73 ms


2020.05.29 14:23:08.299 t2 (USDCHF,H4)  HistoryDealsTotal() = 4987
2020.05.29 14:23:08.299 t2 (USDCHF,H4)  HistoryOrdersTotal() = 4981
2020.05.29 14:23:08.480 t2 (USDCHF,H4)  100000 HistorySelect = 181.60 ms


2020.05.29 14:23:37.074 t2 (USDCAD,H1)  HistoryDealsTotal() = 4987
2020.05.29 14:23:37.074 t2 (USDCAD,H1)  HistoryOrdersTotal() = 4981
2020.05.29 14:23:37.238 t2 (USDCAD,H1)  100000 HistorySelect = 163.83 ms

リソースを提供します。

2020.05.29 14:25:26.874 Terminal        MetaTrader 5 x64 build 2460 started for MetaQuotes Software Corp.
2020.05.29 14:25:26.876 Terminal        Windows 10 build 17763, AMD Phenom II X3 720 Processor, 10 / 15 Gb memory, 597 / 930 Gb disk, IE 11, UAC, Admin, GMT+3


その結果は、イマドキ、素晴らしいものです。

また、コンピュータ上では様々なプロセスが実行されており、平均的なCPU使用率は50~65%です。

 
fxsaber:


読者の皆様には、このスクリプトの結果を引用していただくようお願いします。

2020.05.29 14:58:20.187 ddd (Si-6.20,M1)        HistoryDealsTotal() = 4267
2020.05.29 14:58:20.187 ddd (Si-6.20,M1)        HistoryOrdersTotal() = 43089
2020.05.29 14:58:24.777 ddd (Si-6.20,M1)        100000 HistorySelect = 4589.30 ms
 
Anton:

20000ms / 100000サイクルという恐ろしい数字でも、1コールあたり5-30msには程遠い。

#include <fxsaber\Benchmark.mqh> // https://c.mql5.com/3/321/Benchmark.mqh

void OnStart()
{
  MqlTick Tick;

  if (SymbolInfoTick(_Symbol, Tick))
    for (int i = 0; i < 100000; i++)
      _B(HistorySelect(Tick.time, INT_MAX), 5);
}
        Alert: Time[Test6.mq5 9: HistorySelect(Tick.time,INT_MAX)] = 32 ms.
        Alert: Time[Test6.mq5 9: HistorySelect(Tick.time,INT_MAX)] = 6 ms.


戦闘用EAでは、あちこちの関数を怪しいところで_B(FuncName(...), AlertTime) にラップしています。ここでは、最新のエントリーからログの一部を抜粋してご紹介します。

2020.05.29 15:08:41.806 Alert: Time[NewTicks.mqh 271: NEWTICKS::IsHistoryDeals(MarketWatchTick.time_msc)] = 20 ms.
2020.05.29 15:08:41.806 Alert: Time[SyncChannel.mqh 381: NEWTICKS::CheckFreshTicks(::LastTicks)] = 21 ms.
2020.05.29 15:08:42.793 Alert: Time[NewTicks.mqh 112: ::HistorySelect(TimeMsc/1000,INT_MAX)] = 8 ms.
2020.05.29 15:08:42.793 Alert: Time[NewTicks.mqh 271: NEWTICKS::IsHistoryDeals(MarketWatchTick.time_msc)] = 8 ms.
2020.05.29 15:08:42.925 Alert: Time[NewTicks.mqh 112: ::HistorySelect(TimeMsc/1000,INT_MAX)] = 6 ms.
2020.05.29 15:08:42.930 Alert: Time[NewTicks.mqh 247: NEWTICKS::IsHistoryDeals(Ticks[Size-1].time_msc)] = 7 ms.
2020.05.29 15:08:42.930 Alert: Time[SyncChannel.mqh 381: NEWTICKS::CheckFreshTicks(::LastTicks)] = 11 ms.
2020.05.29 15:08:42.952 Alert: Time[NewTicks.mqh 112: ::HistorySelect(TimeMsc/1000,INT_MAX)] = 6 ms.
2020.05.29 15:08:42.952 Alert: Time[NewTicks.mqh 271: NEWTICKS::IsHistoryDeals(MarketWatchTick.time_msc)] = 6 ms.
2020.05.29 15:08:44.557 Alert: Time[NewTicks.mqh 112: ::HistorySelect(TimeMsc/1000,INT_MAX)] = 7 ms.
2020.05.29 15:08:44.557 Alert: Time[NewTicks.mqh 271: NEWTICKS::IsHistoryDeals(MarketWatchTick.time_msc)] = 12 ms.
2020.05.29 15:08:44.557 Alert: Time[SyncChannel.mqh 381: NEWTICKS::CheckFreshTicks(::LastTicks)] = 12 ms.
2020.05.29 15:08:45.010 Alert: Time[NewTicks.mqh 112: ::HistorySelect(TimeMsc/1000,INT_MAX)] = 5 ms.
2020.05.29 15:08:45.010 Alert: Time[NewTicks.mqh 247: NEWTICKS::IsHistoryDeals(Ticks[Size-1].time_msc)] = 6 ms.
2020.05.29 15:08:46.303 Alert: Time[NewTicks.mqh 112: ::HistorySelect(TimeMsc/1000,INT_MAX)] = 24 ms.
2020.05.29 15:08:46.303 Alert: Time[NewTicks.mqh 271: NEWTICKS::IsHistoryDeals(MarketWatchTick.time_msc)] = 32 ms.
2020.05.29 15:08:46.303 Alert: Time[SyncChannel.mqh 381: NEWTICKS::CheckFreshTicks(::LastTicks)] = 32 ms.
2020.05.29 15:08:51.984 Alert: Time[NewTicks.mqh 112: ::HistorySelect(TimeMsc/1000,INT_MAX)] = 15 ms.
時間欄は、フリーズの発生頻度を示しています。
ファイル:
Benchmark.mqh  2 kb
 
2020.05.29 14:59:37.947    Test_HS (USDJPY,M15)    HistoryDealsTotal() = 5097
2020.05.29 14:59:37.948    Test_HS (USDJPY,M15)    HistoryOrdersTotal() = 5154
2020.05.29 14:59:37.961    Test_HS (USDJPY,M15)    100000 HistorySelect = 13.81 ms

リソースを提供します。

2020.05.29 14:49:51.173 Terminal        MetaTrader 5 x64 build 2460 started for MetaQuotes Software Corp.
2020.05.29 14:49:51.175 Terminal        Windows 10 build 19041, Intel Core i7-9700  @ 3.00 GHz, 54 / 63 Gb memory, 78 / 222 Gb disk, IE 11, UAC, GMT+3