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

 

ここにあったかどうかわからないけど。

ボックスツリーとハッシュマップが本当に必要。マルチボリュームの場合、ソフトウェア・ハッシュマップは非常に遅いので、さらにテストが必要です。

そしてC++17 :)

 

ベータ版ビルド2577を試してみてください。

ストーリーサンプリングで改善したので、今後も抜本的に見直す予定です。

 
Renat Fatkhullin:

ベータ版ビルド2577を試してみてください。

ストーリーサンプリングで改善し、今後も劇的にデザインを変えていく予定です。

悪化しているようです。

2020.08.19 03:41:43.173         Time[MT4Orders.mqh 434: ::HistorySelect(this.LastTime,D'31.12.3000 23:59:59')] = 11 ms.
2020.08.19 03:41:43.174         Time[MT4Orders.mqh 622: this.RefreshHistory()] = 12 ms.

前日の2573にはそのような数字はなかった。

 
Andrey Pogoreltsev:

ここにあったかどうかわからないけど。

ボックスツリーとハッシュマップが本当に必要。マルチボリュームの場合、ソフトウェア・ハッシュマップは 非常に遅いので、さらにテストが必要です。

そしてC++17 :)

提供されたハッシュマップは、私が確認した ところ、すべての実装の中で最速です。CBには他に2つのバリエーションが転がっていて、そのうちの1つについての記事もあるのですが、そちらは桁違いに遅いです。また、ソフトウェアではなく、どのようなハッシュマップが必要なのでしょうか?FPGAでハードウェアハッシュマップは いらないのでは?))どうですか、イーロン・マスクさん!

プラスの何がいけないのか?MQL5は64ビットDLLの読み込みをサポートしなくなったのですか?この暴挙について、すぐにレナーテに書け!C++20まで対応しているんですよ覚えるしかないですね ))

------------------

MicrosoftVisual Studio Enterprise 2019 プレビュー

バージョン16.7.0プレビュー4.0

インストールされたバージョン: Enterprise

Microsoft VisualC++ 2019

 
Andrey Khatimlianskii:

悪化しているようです。

前日の2573にはそのような数字はなかった。

初のコールドリクエストだったようです。それ以来、一度もプリントしていない。

 
Renat Fatkhullin:

ベータ版ビルド2577を試してみてください。

ストーリーサンプリングで改善したので、今後も抜本的に見直す予定です。

2020.08.19 09:30:06.512 Test6 (GBPNZD,H1)       Alert: Time[Test6.mq5 17: CopyTicks(Symb,Ticks,COPY_TICKS_ALL,0,1)] = 1 ms.
2020.08.19 09:30:08.035 Test6 (EURGBP,M1)       Alert: Time[Test6.mq5 40: SymbolInfoDouble(Symb,SYMBOL_TRADE_TICK_VALUE)] = 4 ms.
2020.08.19 09:30:08.038 Test6 (GBPNZD,H1)       Alert: Time[Test6.mq5 13: SymbolInfoTick(Symb,Tick)] = 7 ms.
2020.08.19 09:30:08.042 Test6 (EURNZD,H1)       Alert: Time[Test6.mq5 13: SymbolInfoTick(Symb,Tick)] = 10 ms.
2020.08.19 09:30:08.044 Test6 (EURUSD,H1)       Alert: Time[Test6.mq5 74: SymbolsTotal(true)] = 13 ms.
2020.08.19 09:30:08.046 Test6 (GBPNZD,H1)       Alert: Time[Test6.mq5 39: SymbolInfoDouble(Symb,SYMBOL_ASK)] = 4 ms.
2020.08.19 09:30:08.046 Test6 (EURGBP,M1)       Alert: Time[Test6.mq5 40: SymbolInfoDouble(Symb,SYMBOL_TRADE_TICK_VALUE)] = 7 ms.
2020.08.19 09:30:08.047 Test6 (EURUSD,H1)       Alert: Time[Test6.mq5 75: SymbolName(0,true)] = 3 ms.
2020.08.19 09:30:08.048 Test6 (GBPNZD,H1)       Alert: Time[Test6.mq5 40: SymbolInfoDouble(Symb,SYMBOL_TRADE_TICK_VALUE)] = 2 ms.
2020.08.19 09:30:08.052 Test6 (EURUSD,H1)       Alert: Time[Test6.mq5 13: SymbolInfoTick(Symb,Tick)] = 2 ms.
2020.08.19 09:30:08.053 Test6 (EURGBP,M1)       Alert: Time[Test6.mq5 41: SymbolInfoDouble(Symb,SYMBOL_POINT)] = 5 ms.
2020.08.19 09:30:08.055 Test6 (GBPNZD,H1)       Alert: Time[Test6.mq5 40: SymbolInfoDouble(Symb,SYMBOL_TRADE_TICK_VALUE)] = 3 ms.
2020.08.19 09:30:08.060 Test6 (EURGBP,M1)       Alert: Time[Test6.mq5 42: SymbolInfoInteger(Symb,SYMBOL_DIGITS)] = 5 ms.
2020.08.19 09:30:08.071 Test6 (EURNZD,H1)       Alert: Time[Test6.mq5 40: SymbolInfoDouble(Symb,SYMBOL_TRADE_TICK_VALUE)] = 25 ms.
2020.08.19 09:30:24.489 Test6 (GBPNZD,H1)       Alert: Time[Test6.mq5 74: SymbolsTotal(true)] = 1 ms.
2020.08.19 09:30:25.857 Test6 (EURGBP,M1)       Alert: Time[Test6.mq5 22: HistorySelect(Tick.time,INT_MAX)] = 1 ms.
2020.08.19 09:30:26.092 Test6 (EURUSD,H1)       Alert: Time[Test6.mq5 22: HistorySelect(Tick.time,INT_MAX)] = 1 ms.
2020.08.19 09:30:26.119 Test6 (EURUSD,H1)       Alert: Time[Test6.mq5 22: HistorySelect(Tick.time,INT_MAX)] = 1 ms.
2020.08.19 09:30:29.279 Test6 (EURNZD,H1)       Alert: Time[Test6.mq5 17: CopyTicks(Symb,Ticks,COPY_TICKS_ALL,0,1)] = 1 ms.
2020.08.19 09:30:31.931 Test6 (EURUSD,H1)       Alert: Time[Test6.mq5 42: SymbolInfoInteger(Symb,SYMBOL_DIGITS)] = 2 ms.
2020.08.19 09:30:31.931 Test6 (EURNZD,H1)       Alert: Time[Test6.mq5 40: SymbolInfoDouble(Symb,SYMBOL_TRADE_TICK_VALUE)] = 1 ms.
2020.08.19 09:30:33.402 Test6 (EURNZD,H1)       Alert: Time[Test6.mq5 34: HistoryOrderSelect(0)] = 7 ms.
2020.08.19 09:30:35.686 Test6 (GBPNZD,H1)       Alert: Time[Test6.mq5 74: SymbolsTotal(true)] = 2 ms.
2020.08.19 09:30:37.810 Test6 (EURUSD,H1)       Alert: Time[Test6.mq5 39: SymbolInfoDouble(Symb,SYMBOL_ASK)] = 1 ms.
2020.08.19 09:30:52.415 Test6 (GBPNZD,H1)       Alert: Time[Test6.mq5 22: HistorySelect(Tick.time,INT_MAX)] = 3 ms.
2020.08.19 09:31:10.903 Test6 (EURNZD,H1)       Alert: Time[Test6.mq5 22: HistorySelect(Tick.time,INT_MAX)] = 1 ms.
2020.08.19 09:31:11.414 Test6 (GBPNZD,H1)       Alert: Time[Test6.mq5 40: SymbolInfoDouble(Symb,SYMBOL_TRADE_TICK_VALUE)] = 5 ms.
2020.08.19 09:31:11.414 Test6 (EURNZD,H1)       Alert: Time[Test6.mq5 39: SymbolInfoDouble(Symb,SYMBOL_ASK)] = 9 ms.
2020.08.19 09:31:32.694 Test6 (EURGBP,M1)       Alert: Time[Test6.mq5 42: SymbolInfoInteger(Symb,SYMBOL_DIGITS)] = 2 ms.
2020.08.19 09:31:51.245 Test6 (GBPNZD,H1)       Alert: Time[Test6.mq5 22: HistorySelect(Tick.time,INT_MAX)] = 1 ms.
2020.08.19 09:31:53.989 Test6 (EURGBP,M1)       Alert: Time[Test6.mq5 17: CopyTicks(Symb,Ticks,COPY_TICKS_ALL,0,1)] = 2 ms.
2020.08.19 09:32:11.871 Test6 (GBPNZD,H1)       Alert: Time[Test6.mq5 22: HistorySelect(Tick.time,INT_MAX)] = 1 ms.
2020.08.19 09:32:20.310 Test6 (EURNZD,H1)       Alert: Time[Test6.mq5 42: SymbolInfoInteger(Symb,SYMBOL_DIGITS)] = 3 ms.
2020.08.19 09:32:47.513 Test6 (EURUSD,H1)       Alert: Time[Test6.mq5 22: HistorySelect(Tick.time,INT_MAX)] = 3 ms.
2020.08.19 09:32:49.367 Test6 (EURUSD,H1)       Alert: Time[Test6.mq5 22: HistorySelect(Tick.time,INT_MAX)] = 1 ms.
2020.08.19 09:32:56.358 Test6 (EURGBP,M1)       Alert: Time[Test6.mq5 22: HistorySelect(Tick.time,INT_MAX)] = 1 ms.
2020.08.19 09:33:05.424 Test6 (EURNZD,H1)       Alert: Time[Test6.mq5 75: SymbolName(0,true)] = 2 ms.
2020.08.19 09:33:16.537 Test6 (EURUSD,H1)       Alert: Time[Test6.mq5 40: SymbolInfoDouble(Symb,SYMBOL_TRADE_TICK_VALUE)] = 5 ms.
2020.08.19 09:33:16.551 Test6 (EURNZD,H1)       Alert: Time[Test6.mq5 40: SymbolInfoDouble(Symb,SYMBOL_TRADE_TICK_VALUE)] = 13 ms.
2020.08.19 09:33:47.303 Test6 (EURUSD,H1)       Alert: Time[Test6.mq5 40: SymbolInfoDouble(Symb,SYMBOL_TRADE_TICK_VALUE)] = 7 ms.
2020.08.19 09:33:50.587 Test6 (EURNZD,H1)       Alert: Time[Test6.mq5 22: HistorySelect(Tick.time,INT_MAX)] = 2 ms.
2020.08.19 09:33:56.181 Test6 (EURNZD,H1)       Alert: Time[Test6.mq5 41: SymbolInfoDouble(Symb,SYMBOL_POINT)] = 1 ms.
2020.08.19 09:33:59.244 Test6 (EURNZD,H1)       Alert: Time[Test6.mq5 74: SymbolsTotal(true)] = 1 ms.
2020.08.19 09:34:03.255 Test6 (GBPNZD,H1)       Alert: Time[Test6.mq5 41: SymbolInfoDouble(Symb,SYMBOL_POINT)] = 2 ms.
2020.08.19 09:34:47.388 Test6 (EURNZD,H1)       Alert: Time[Test6.mq5 28: HistoryDealSelect(0)] = 1 ms.
2020.08.19 09:34:47.498 Test6 (EURGBP,M1)       Alert: Time[Test6.mq5 22: HistorySelect(Tick.time,INT_MAX)] = 1 ms.
2020.08.19 09:35:06.001 Test6 (EURGBP,M1)       Alert: Time[Test6.mq5 74: SymbolsTotal(true)] = 3 ms.
2020.08.19 09:35:06.005 Test6 (EURGBP,M1)       Alert: Time[Test6.mq5 75: SymbolName(0,true)] = 1 ms.
2020.08.19 09:35:06.017 Test6 (EURGBP,M1)       Alert: Time[Test6.mq5 22: HistorySelect(Tick.time,INT_MAX)] = 1 ms.
2020.08.19 09:35:06.022 Test6 (EURNZD,H1)       Alert: Time[Test6.mq5 42: SymbolInfoInteger(Symb,SYMBOL_DIGITS)] = 3 ms.
2020.08.19 09:35:06.046 Test6 (EURNZD,H1)       Alert: Time[Test6.mq5 28: HistoryDealSelect(0)] = 12 ms.
2020.08.19 09:35:29.014 Test6 (GBPNZD,H1)       Alert: Time[Test6.mq5 22: HistorySelect(Tick.time,INT_MAX)] = 1 ms.
2020.08.19 09:36:30.289 Test6 (EURUSD,H1)       Alert: Time[Test6.mq5 40: SymbolInfoDouble(Symb,SYMBOL_TRADE_TICK_VALUE)] = 1 ms.
2020.08.19 09:36:55.946 Test6 (EURUSD,H1)       Alert: Time[Test6.mq5 74: SymbolsTotal(true)] = 2 ms.
2020.08.19 09:36:55.950 Test6 (EURNZD,H1)       Alert: Time[Test6.mq5 39: SymbolInfoDouble(Symb,SYMBOL_ASK)] = 3 ms.

だいぶ良くなりました。戦闘時は、まだテストしていません。


ZZY Combatのバージョンログを見ると、まだ修正すべき点がたくさんあるようです...。

 
Alexey Volchanskiy:

提供されたハッシュマップは、私が確認 したすべての実装の中で最速です。CBには他に2つのバリエーションが あり、そのうちの1つの記事があります、それらは一桁遅いです。ソフトウェアではなく、どのようなハッシュマップが必要なのでしょうか?FPGAでハードウェアハッシュマップは いらないのでは?))どうですか、イロンマスクさん!

std::を実行言語mql5で実装しないと、plusのネイティブ実装よりかなり遅いので、その意味です。


プラスの何がいけないのか?MQL5は64ビットDLLの読み込みをサポートしなくなったのですか?この暴挙について、すぐにレナーテに書け!C++20まで対応しているんですよただ、コツをつかむことが必要です ))!

ネイティブDLLオプションはいいのですが、多くの欠点があります:

  1. ストラテジーテスターで サポートされていない
  2. 同じショップに貼り付けられない
  3. すべてのユーザーがDLLでEAを実行することを好むわけではない
  4. 私の理解では(間違っていたら訂正してください)、DLLは呼び出しのたびにロード/アンロードされます。
そして、MQL5自体がC99だけあってC++のアナログなので、このようなことになります。


PS.私のロボットをDLLに翻訳してみます - その方がテストに合格し、一般的に動作するのが早いかもしれません。

Тестирование стратегий - Алгоритмический трейдинг, торговые роботы - Справка по MetaTrader 5
Тестирование стратегий - Алгоритмический трейдинг, торговые роботы - Справка по MetaTrader 5
  • www.metatrader5.com
Тестер стратегий позволяет тестировать и оптимизировать торговые стратегии (советники) перед началом использования их в реальной торговле. При тестировании советника происходит его однократная прогонка с начальными параметрами на исторических данных. При оптимизации торговая стратегия прогоняется несколько раз с различным набором параметров...
 
b2579.
ファイル:
2579_lags.txt  653 kb
 
fxsaber:
OnTickで、前のティックからのティック履歴を要求しています。

ラグというテーマではありませんが、とりあえず質問させてください。何のためのストーリー?ダニは見逃されることがある?MT4はこれを実践していましたが、MT5はそうならないはずですよね?

 
traveller00:

ラグというテーマではありませんが、とりあえず質問させてください。何のためのストーリー?ダニは見逃されることがある?MT4はそれを実践し、MT5はそれをしないようにする、違うか?

NewTick イベントは新しい相場が到着したときに発生し、付属EAのOnTick() で処理されます。 新しい気配値の到着時に、前の気配値で実行されている OnTick 関数が実行されると、対応するイベントが EA のイベントキューに入れられないため、受信した気配値は Expert Advisor によって無視 されます。

https://www.mql5.com/ru/docs/runtime/event_fire#newtick