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

 
Andrey Khatimlianskii:

端末全体を折りたたむことができるのに、なぜチャートを折りたたむのか?

確認しました。チャート、Market Watch、Toolsを最小化した場合よりもCPU負荷が高くなります。


間違っているかもしれません。

 
CHART_IS_MINIMIZEDと同様にTERMINAL_IS_MINIMIZEDを追加してください。これまではDLLで解決していました。
user32::IsIconic(TerminalHandle)
同じマウスポールを削除することができることを理解するために、パネルを描画しない、など。
 

このEAを(自宅のマシンではなく)VPSから実行した結果を教えてください。

#include <fxsaber\Benchmark\Benchmark.mqh> // https://www.mql5.com/ru/code/31279

const bool Init = EventSetTimer(1);

void OnTimer()
{  
  _B(GetMicrosecondCount(), 1); // Замеряем длительность выполнения GetMicrosecondCount()
}


このVPSでは

2020.10.03 20:21:49.222 Terminal        MetaTrader 5 x64 build 2629 started for MetaQuotes Software Corp.
2020.10.03 20:21:49.222 Terminal        Windows Server 2012 R2 build 9600 on KVM, Intel Xeon E3-12 xx v2 (Ivy Bridge, IBRS), 4 / 5 Gb memory, 7 / 38 Gb disk, IE 11, RDP, UAC, Admin, GMT+3


の結果です。

2020.10.04 12:01:22.763 Test6 (EOSUSD,M1)       Alert: Time[Test6.mq5 7 in OnTimer: GetMicrosecondCount()] = 26 mсs.
2020.10.04 12:01:23.747 Test6 (EOSUSD,M1)       Alert: Time[Test6.mq5 7 in OnTimer: GetMicrosecondCount()] = 33 mсs.
2020.10.04 12:01:24.747 Test6 (EOSUSD,M1)       Alert: Time[Test6.mq5 7 in OnTimer: GetMicrosecondCount()] = 36 mсs.
2020.10.04 12:01:25.748 Test6 (EOSUSD,M1)       Alert: Time[Test6.mq5 7 in OnTimer: GetMicrosecondCount()] = 32 mсs.
2020.10.04 12:01:26.762 Test6 (EOSUSD,M1)       Alert: Time[Test6.mq5 7 in OnTimer: GetMicrosecondCount()] = 23 mсs.


上記のように、結果とともにVPSの構成も提供することが望ましい。


文字通りすべての機能が遅いという事実に直面。VPSを変更する前に、他のソリューションと比較し、どれを選択するのが良いのか理解したいです。だから、客観的なイメージのために共有してください。


MT4/MT5、どの端末でも使える。しかし、私はもちろん5の方に興味があります。

 
WinAPI 版に置き換えてみた。
#import "kernel32.dll"
  int QueryPerformanceCounter(ulong &lpPerformanceCount);
  int QueryPerformanceFrequency(ulong &lpFrequency);
#import

ulong QueryPerfomanceCounter() { ulong value;  if (QueryPerformanceCounter(value)) return value;  return 0; } 

ulong QueryPerformanceFrequency() { ulong freq = 0;  if (kernel32::QueryPerformanceFrequency(freq)) return freq;  return 0; }  


// https://www.mql5.com/ru/forum/170952/page89#comment_8203859
ulong GetPerfomanceCount_mcs()
{ 
  static ulong freq= QueryPerformanceFrequency();
  return freq ? QueryPerfomanceCounter()*1000000/freq : 0;
}

#define GetMicrosecondCount GetPerfomanceCount_mcs
結果は通常のものと同じです。どうやら、内部実装は同じようです。マイクロ秒測光の他の実装はないのでしょうか?
Особенности языка mql5, тонкости и приёмы работы
Особенности языка mql5, тонкости и приёмы работы
  • 2018.07.27
  • www.mql5.com
В данной теме будут обсуждаться недокументированные приёмы работы с языком mql5, примеры решения тех, или иных задач...
 

ブレーキがかかっている機械でプログラムが実行されているかどうかを判断します。

// Возвращает true, если тормозной VPS.
bool IsFreezeVPS()
{
  static bool FirstRun = true;
  static bool Res;
  
  if (FirstRun)
  {
    if (Res = ::GetMicrosecondCount() - ::GetMicrosecondCount())
      ::Alert("Warning: FreezeVPS - https://www.mql5.com/ru/forum/342090/page40#comment_18579094");
    
    FirstRun = false;
  }
  
  return(Res);
}
 

VPSマシンのGetMicrosecondsCountのブレーキを回避して いるようです。何でもないことのように思えるかもしれません。実際、戦闘用EAはCPU負荷でVPSを殺していました。マイクロ秒のカウントは取引環境のスナップショットでフルに使わなければならず、逆に負荷をかけないように、CPUから負荷を取り除くように設計されているからです。


他に誰が来たんだ?スナップショット、そして今回のGetMicrosecondsCount...。

 
fxsaber:

ブレーキがかかっている機械でプログラムが実行されているかどうかを判断します。

差がヌルになるかどうかは、偶然の産物である。

void OnStart()
{
        const int max = 2000000;
        int count = 0;
        for ( int i = 0; i < max; i++ )
                if ( GetMicrosecondCount() != GetMicrosecondCount() )
                        count++;
        Print( max, ":" ,count );
}

結果:2000000:213579

 
A100:

ゼロかゼロでないかは、偶然の産物です。

結果:2000000:213579

そう、だからmqhではそういう条件にしているのです。

    // Несколько проверок - от ложных срабатываний.
    bool Res = (bool)(::GetMicrosecondCount() - ::GetMicrosecondCount()) &&
               (bool)(::GetMicrosecondCount() - ::GetMicrosecondCount()) &&
               (bool)(::GetMicrosecondCount() - ::GetMicrosecondCount()) &&
               (bool)(::GetMicrosecondCount() - ::GetMicrosecondCount()) &&
               (bool)(::GetMicrosecondCount() - ::GetMicrosecondCount());
 
fxsaber:

そう、だからmqhではこの条件を使っているんです。

たった5回のチェックです。私のパソコンは遅いのですが(タブレット)、そんな私でも2000000/213579=10回目のチェック ごとにしか差は出ません。そして、私が遅いというのは、これでも 他の人が再現して いないことで確定しているのです。

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

MT5とスピードの関係

A100, 2020.09.05 00:13

また、遅延について

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

設定はすべて初期設定です。

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

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

12797

ノー

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

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


 
A100:

たった5回のチェックです。私のパソコンは遅いのですが(タブレット)、そんな私でも2000000/213579=10回目のチェック ごとにしか差は出ません。そして、私が遅いというのは、これでも 他の人が再現して いないことで確定しているのです。

5回連続のチェックで0以外の結果が出た場合は、遅いGetMicrosecondsCountになる。もちろん、問題が存在するかどうかを判断するために、他の(より論理的な)選択肢があるかもしれません。今のところ、そのままにしています。

バーヒストリーを使った作業については......使わないですね。常にM1+5000バーです。課題は、迅速な取引です。