MT5和速度在行动 - 页 40

 
Andrey Khatimlianskii:

当你可以折叠整个终端时,为什么要折叠图表?

已检查。如果你把图表、市场观察和工具最小化,CPU的负荷会更高。


我可能是错的。

 
请增加TERMINAL_IS_MINIMIZED,类似于CHART_IS_MINIMIZED。到目前为止,我们不得不使用DLL解决方案。
user32::IsIconic(TerminalHandle)
要明白,有可能删除相同的鼠标投票,不绘制面板,等等。
 

请分享从你的VPS(而不是你的家用机器)运行该EA的结果。

#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
  • 图表类型:烛台
  • 缩小图表的规模:最大

符号,周期 酒吧 延迟
欧元兑美元,月线 597 转到
欧元兑美元,每周
2590 查阅
欧元兑美元,每日

12797

某种逆向依赖:条数越少,速度越慢

在月线图和周线图上,例如欧元兑英镑(没有这样深的历史)--没有延迟。


 
A100:

这只是5张支票而已。我的电脑(平板电脑)速度很慢,但即使是我,也只是在每2000000/213579=10次检查 时有差异。而我有一个缓慢的事实被证实了,即使是这样也 没有 被其他人复制。

如果连续五次检查都给出非零的结果,那就是一个缓慢的GetMicrosecondsCount。当然,可能还有其他(甚至更合理的)选项来确定是否存在问题。我暂时让它保持这种状态。

至于使用酒吧历史的工作--我不使用它。它始终是M1+5000条。任务是快速交易。