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

 
Artyom Trishkin:

次のリリースバージョン(現在はベータ版)以降になる可能性が高い

感謝
 
Artyom Trishkin:

次のリリースバージョン(現在はベータ版)以降になる可能性が高い

お買い得品がずらりと並ぶのでは?

 

トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム

MT5とスピードの関係

fxsaber, 2020.08.13 04:36

  1. 取引履歴が比較的長いMetaQuotes-Demoのデモ口座に移動します。
    1. デモ口座の取引履歴が少ない場合は、自動売買を許可し、並行してOrderSend-Test2.ex5 スクリプト(添付ファイルのソースコード)を実行します。

この古いスクリプトは、1つのMQ-Demoチャートで実行し、さらにMarket Watchに取引シンボルを追加すると、多くのブレーキを表示します(私は100個持っていました)。

端末のログ。

2020.09.04 17:51:33.112 Trades  '34510052': cancel order #702851395 buy stop 0.01 EURCAD at 1.55852
2020.09.04 17:51:33.512 Trades  '34510052': accepted cancel order #702851395 buy stop 0.01 EURCAD at 1.55852
2020.09.04 17:51:33.514 Trades  '34510052': cancel #702851395 buy stop 0.01 EURCAD at market done in 401.845 ms

保留中の取引の削除は401msで行われました。開発者は取引サーバーのログにアクセスでき、そこでどれくらいの時間、実行が続いたかを知ることができる。例えば、こんな感じです。

誰でも自分のサイトに再現することができる。


念のため、結果を伴う取引注文はこんな感じです。

2020.09.04 17:51:33.514 OrderSend-Test2 (EURUSD,M1)     Alert: EURCAD 702851395 Request executed 401.915 + 0.003 (0) ms.
2020.09.04 17:51:33.514 OrderSend-Test2 (EURUSD,M1)     Request.action = TRADE_ACTION_REMOVE (8)
2020.09.04 17:51:33.514 OrderSend-Test2 (EURUSD,M1)     Request.magic = 0
2020.09.04 17:51:33.514 OrderSend-Test2 (EURUSD,M1)     Request.order = 702851395
2020.09.04 17:51:33.514 OrderSend-Test2 (EURUSD,M1)     Request.symbol = EURCAD
2020.09.04 17:51:33.514 OrderSend-Test2 (EURUSD,M1)     Request.volume = 0.0
2020.09.04 17:51:33.514 OrderSend-Test2 (EURUSD,M1)     Request.price = 0.0
2020.09.04 17:51:33.514 OrderSend-Test2 (EURUSD,M1)     Request.stoplimit = 0.0
2020.09.04 17:51:33.514 OrderSend-Test2 (EURUSD,M1)     Request.sl = 0.0
2020.09.04 17:51:33.514 OrderSend-Test2 (EURUSD,M1)     Request.tp = 0.0
2020.09.04 17:51:33.514 OrderSend-Test2 (EURUSD,M1)     Request.deviation = 0
2020.09.04 17:51:33.514 OrderSend-Test2 (EURUSD,M1)     Request.type = ORDER_TYPE_BUY (0)
2020.09.04 17:51:33.514 OrderSend-Test2 (EURUSD,M1)     Request.type_filling = ORDER_FILLING_FOK (0)
2020.09.04 17:51:33.514 OrderSend-Test2 (EURUSD,M1)     Request.type_time = ORDER_TIME_GTC (0)
2020.09.04 17:51:33.514 OrderSend-Test2 (EURUSD,M1)     Request.expiration = 1970.01.01 00:00:00
2020.09.04 17:51:33.514 OrderSend-Test2 (EURUSD,M1)     Request.comment = 
2020.09.04 17:51:33.514 OrderSend-Test2 (EURUSD,M1)     Request.position = 0
2020.09.04 17:51:33.514 OrderSend-Test2 (EURUSD,M1)     Request.position_by = 0
2020.09.04 17:51:33.514 OrderSend-Test2 (EURUSD,M1)     Result.retcode = 10009
2020.09.04 17:51:33.514 OrderSend-Test2 (EURUSD,M1)     Result.deal = 0
2020.09.04 17:51:33.514 OrderSend-Test2 (EURUSD,M1)     Result.order = 702851395
2020.09.04 17:51:33.514 OrderSend-Test2 (EURUSD,M1)     Result.volume = 0.0
2020.09.04 17:51:33.514 OrderSend-Test2 (EURUSD,M1)     Result.price = 0.0
2020.09.04 17:51:33.514 OrderSend-Test2 (EURUSD,M1)     Result.bid = 0.0
2020.09.04 17:51:33.514 OrderSend-Test2 (EURUSD,M1)     Result.ask = 0.0
2020.09.04 17:51:33.514 OrderSend-Test2 (EURUSD,M1)     Result.comment = Request executed 401.915 + 0.003 (0) ms.
2020.09.04 17:51:33.514 OrderSend-Test2 (EURUSD,M1)     Result.request_id = 6133
2020.09.04 17:51:33.514 OrderSend-Test2 (EURUSD,M1)     Result.retcode_external = 0


ピンときた。

2020.09.04 17:51:57.567 AccountInfoString(ACCOUNT_SERVER) = MetaQuotes-Demo
2020.09.04 17:51:57.567 TerminalInfoInteger(TERMINAL_PING_LAST) = 74808


スクリプトが機能したのは10分ほど。


こういう減速はどうでもいいんです。ただ、どこをどう調整すれば状況が改善されるのかが知りたいのです。ターミナルなのか取引サーバーなのか?一般に、開発者は再現するためのあらゆる可能性を持っており、希望すれば理解することもできます。

Особенности исполнения торговых приказов MT5
Особенности исполнения торговых приказов MT5
  • 2020.02.06
  • www.mql5.com
Анализировал с владельцем MT5-сервера тормоза торговых приказов. Запускался OrderSend-Test2.mq5 в том же месте, где MT5-сервер стоит. Т.е. нулевой пинг. Демо, все внутри. Изучались логи MT5-сервера (2170) и MT5-клиента (2280). Логи сервера не буду приводить, просто словами опишу. Думаю, результаты буду интерсны всем, т.к. это поможет раскрыть...
 
fxsaber:

この古いスクリプトは、1つのMQ-Demoチャートで実行し、Market Watchに取引シンボルを 増やすと、多くのブレーキが表示されます(私は100個でした)。

こんなケースもありましたね

トレーディング、自動売買システム、ストラテジーテストに関するフォーラム

MetaTrader 5プラットフォームビルド1880の新バージョン:完全な合成商品の履歴を計算する。

A100, 2018.07.25 21:55

いずれにせよ負荷を考慮する必要がある。

パソコンの速度が遅いので・・・。と、本当に本当に遅いんですが・・・。それで...マーケットウォッチで63シンボルを追加し、その後F10を押すと、MetaTraderが激しくハングアップします(再起動が必要)...。他のすべてのモードでは正常に動作しますが

F10を使おうとしたら、少なくとも1年間はハングアップし続けました - 32ビット版ですが

 
A100:

こんな事例があったような

マーケットレビューの文字数は、ブレーキをかける上で重要ではありません。私のところでは、そうしてきただけです。

簡単に再現することができます。
2020.09.04 18:25:06.131 Trades  '34510052': buy limit 0.01 USDPLN at 3.77653
2020.09.04 18:25:06.202 Trades  '34510052': accepted buy limit 0.01 USDPLN at 3.77653
2020.09.04 18:25:06.202 Trades  '34510052': order #702911224 buy limit 0.01 / 0.01 USDPLN at 3.77653 done in 70.966 ms
2020.09.04 18:25:06.202 Trades  '34510052': cancel order #702911224 buy limit 0.01 USDPLN at 3.77653
2020.09.04 18:25:06.274 Trades  '34510052': accepted cancel order #702911224 buy limit 0.01 USDPLN at 3.77653
2020.09.04 18:25:06.274 Trades  '34510052': cancel #702911224 buy limit 0.01 USDPLN at market done in 71.859 ms
2020.09.04 18:25:06.274 Trades  '34510052': buy stop 0.01 USDPLN at 3.79653
2020.09.04 18:25:06.481 Trades  '34510052': instant sell 0.1 NZDSGD at 0.91421, close #702903930 buy 0.1 NZDSGD 0.91462
2020.09.04 18:25:06.982 Trades  '34510052': accepted buy stop 0.01 USDPLN at 3.79653
2020.09.04 18:25:07.030 Trades  '34510052': order #702911229 buy stop 0.01 / 0.01 USDPLN at 3.79653 done in 755.302 ms
2020.09.04 18:25:07.030 Trades  '34510052': accepted instant sell 0.1 NZDSGD at 0.91421, close #702903930 buy 0.1 NZDSGD 0.91462
2020.09.04 18:25:07.030 Trades  '34510052': deal #681898561 sell 0.1 NZDSGD at 0.91421 done (based on order #702911234)
2020.09.04 18:25:07.031 Trades  '34510052': cancel order #702911229 buy stop 0.01 USDPLN at 3.79653
2020.09.04 18:25:07.031 Trades  '34510052': order #702911234 sell 0.1 / 0.1 NZDSGD at 0.91421 done in 550.273 ms
2020.09.04 18:25:07.103 Trades  '34510052': accepted cancel order #702911229 buy stop 0.01 USDPLN at 3.79653
2020.09.04 18:25:07.103 Trades  '34510052': cancel #702911229 buy stop 0.01 USDPLN at market done in 72.558 ms
2020.09.04 18:25:07.103 Trades  '34510052': instant buy 0.01 USDHUF at 297.871 (deviation: 100)
2020.09.04 18:25:07.130 Trades  '34510052': instant sell 0.01 GBPCAD at 1.73255, close #702904086 buy 0.01 GBPCAD 1.73271
2020.09.04 18:25:07.174 Trades  '34510052': accepted instant buy 0.01 USDHUF at 297.871 (deviation: 100)
2020.09.04 18:25:07.174 Trades  '34510052': deal #681898572 buy 0.01 USDHUF at 297.871 done (based on order #702911246)
2020.09.04 18:25:07.175 Trades  '34510052': order #702911246 buy 0.01 / 0.01 USDHUF at 297.871 done in 72.051 ms
2つの赤いローカル時間の 間には1msしかなく、実際には550msになるはずです(連続したOrderSend)。どうやらここでもPrint-snapshotsが効果を発揮しているようです。
 
Renat Fatkhullin:

あなたの立場のために、どんな自己流でもいいのですか?

// Демонстрация тормозов HistorySelect.
#include <fxsaber\Benchmark.mqh> // https://c.mql5.com/3/321/Benchmark.mqh

input int inAlertTime = 1; // Нижний порог в миллисекундах

#define _B2(A) _B(A, inAlertTime)

const bool Init = EventSetTimer(1);

void OnTimer()
{
  static MqlTradeRequest Request = {0};
  static MqlTradeResult Result = {0};

  if (Request.tp) // Если позиция выставлена - меняем тейк.
  {
    static bool Flag = false;

    Request.action = TRADE_ACTION_SLTP;
    Request.tp += (1 - ((Flag = !Flag) << 1)) * _Point;
        
    if (Result.order)
      Request.position = Result.order;
  }
  else // Иначе выставляем позицию.
  {
    Request.action = TRADE_ACTION_DEAL;
    Request.symbol = _Symbol;
    Request.volume = 0.1;
    Request.price = SymbolInfoDouble(_Symbol, SYMBOL_ASK);
    Request.tp = Request.price + 1000 * _Point;         
  }

  if (OrderSend(Request, Result))
    _B2(HistorySelect(0, INT_MAX)); // В каком месте самострел?
}


b2592 MQ-Demoでの結果です。

2020.09.04 23:30:32.661 Alert: Time[Test6.mq5 35: HistorySelect(0,INT_MAX)] = 5 ms.
2020.09.04 23:30:33.681 Alert: Time[Test6.mq5 35: HistorySelect(0,INT_MAX)] = 5 ms.
2020.09.04 23:30:34.655 Alert: Time[Test6.mq5 35: HistorySelect(0,INT_MAX)] = 5 ms.
2020.09.04 23:30:35.674 Alert: Time[Test6.mq5 35: HistorySelect(0,INT_MAX)] = 5 ms.
2020.09.04 23:30:36.657 Alert: Time[Test6.mq5 35: HistorySelect(0,INT_MAX)] = 5 ms.
2020.09.04 23:30:37.668 Alert: Time[Test6.mq5 35: HistorySelect(0,INT_MAX)] = 5 ms.
2020.09.04 23:30:38.661 Alert: Time[Test6.mq5 35: HistorySelect(0,INT_MAX)] = 5 ms.
2020.09.04 23:30:39.666 Alert: Time[Test6.mq5 35: HistorySelect(0,INT_MAX)] = 5 ms.

すべての通話にラグがある。

 
また、遅延について

トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム

バグ、バグ、質問

A100, 2020.08.31 15:55

特にEURUSDのタイムフレームは、カーソルに追従して十字線が非常にゆっくり動くので、カーソルをスムーズに斜め移動させるだけで再現できるのですが。他の時間軸では OKです。以前はこのような遅れはありませんでした。

また、手動でのプロット(トレンド、フィボナッチなど)もすべて遅いです

すべての設定は初期状態です。

  • サーバー:MetaQuotes-Demo
  • 歴史:1971年1月1日から使用可能
  • 具体的な時間帯:なし
  • ウィンドウ内の最大バー数。100000
  • チャートの種類:ローソク足
  • チャートの縮小表示:最大

記号、期間 バー レイテンシー
EURUSD, マウンツリー 597 出向く
EURUSD, 週足
2590 チェックする
EURUSD, 日足

12797

ノー

バーが少ないほど速度が遅くなるという逆依存性のようなもの

EURGBPのような月足・週足チャートでは(そのような深い履歴がない場合) - 遅延なし

 
A100:

バーが低いほど遅くなるという、ある種の逆相関が存在する

むしろ、TFが高いほど、遅延が長くなるという直接的なものです。

どうやらこれは、下部TFによる精密な座標計算によるものらしい。私たちが探している週足/月足のバーに含まれるバーの指標を得るのに、どこかで混乱が生じました。

ps: 私の場合、すべてうまくいき、バーの数も同じです。

 
Andrey Khatimlianskii:

より直線に近く、TFが高いほど遅れが大きくなります。

どうやら、下のTFの座標を正確に計算したことによるようです。どこかで、必要な週次・月次のバーに含まれるバーの指標を得ることに失敗したのでしょう。

ps: 私の場合、すべてうまくいき、バーの数も同じです。

もちろん、EA/指標/スクリプトは作動しておらず、手動作成のみです。表示された遅延時間は、平均的な最新の64bitタブレットで再現可能です。i7のコンピュータをお持ちの方は、この遅延に遭遇していないと仮定します。
 
A100:
当然ながら、エキスパートやインジケーター、スクリプトは実行せず、手動でのビルドのみです。表示された遅延時間は、平均的な最新の64ビットタブレットで再現可能です。i7のコンピュータをお持ちの方は、この遅延に遭遇していないと仮定します。

タブレットを使用していることを明記すべきだったかもしれません。

i5を持っている