Бета-версия платформы MetaTrader 5 build 1910: Свободное перетаскивание графиков и .Net библиотеки в MQL5 - страница 5

 

Здравствуйте!

До обновления 1910, функция ObjectsTotal ( 0 , -1 , OBJ_CHART ) перебирала все графики, включая основной.

В справке для ObjectsTotal до сих пор говорится, что если указан тип объекта -1, то означает все типы. Однако сейчас эта функция полностью игнорирует основной график.

 
Renat Fatkhullin:
Этого недостаточно для воспроизведения.

Код для воспроизведения ниже. Индикатор для тестов можно взять из этой статьи: Универсальный индикатор RSI для работы одновременно в двух направлениях

//+------------------------------------------------------------------+
//|                                             TestIndicatorBag.mq5 |
//|                        Copyright 2018, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
double m_buffer1[];
double m_buffer2[];
//---
int handle=WRONG_VALUE;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit(void)
  {
   string indicator_path="Custom\\RSI\\ChartRSI_Plus1\\ChartRSI_Plus1.ex5";
   handle=::iCustom(_Symbol,_Period,indicator_path,8,30,2,100);
   ::ArraySetAsSeries(m_buffer1,true);
   ::ArraySetAsSeries(m_buffer2,true);
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick(void)
  {
   ::CopyBuffer(handle,0,0,3,m_buffer1);
   ::CopyBuffer(handle,1,0,3,m_buffer2);
//---
   int index=1;
//---
   if(m_buffer1[index]>0)
     {
      Print(__FUNCTION__," > m_buffer1: ",m_buffer1[index]);
     }
   if(m_buffer2[index]>0)
     {
      Print(__FUNCTION__," > m_buffer2: ",m_buffer2[index]);
     }
  }
//+------------------------------------------------------------------+

//---

В режиме визуализации получаем значения индикатора:

2018.10.08 02:35:00   OnTick > m_buffer2: 1.15199
2018.10.08 03:15:00   OnTick > m_buffer1: 1.15275
2018.10.08 03:45:00   OnTick > m_buffer2: 1.15201
2018.10.08 04:05:00   OnTick > m_buffer2: 1.15171
2018.10.08 08:45:00   OnTick > m_buffer2: 1.15077
2018.10.08 08:55:00   OnTick > m_buffer2: 1.15048
2018.10.08 11:00:00   OnTick > m_buffer2: 1.149
2018.10.08 11:10:00   OnTick > m_buffer2: 1.14861
2018.10.08 11:35:00   OnTick > m_buffer2: 1.14758

В других режимах пустые значения:

quality of analyzed history is 100%
MetaTester 5 started on 127.0.0.1:3000
initialization finished
login (build 1910)
3860 bytes of account info loaded
1482 bytes of tester parameters loaded
188 bytes of input parameters loaded
4249 bytes of symbols list loaded
expert file added: Experts\Work\TestIndicatorBag.ex5. 9053 bytes loaded
initial deposit 10000.00 USD, leverage 1:1000
successfully initialized
13 Kb of total initialization data received
Intel Core i7-4770  @ 3.40GHz, 16267 MB
EURUSD: symbol to be synchronized
EURUSD: symbol synchronized, 3464 bytes of symbol info received
EURUSD: load 27 bytes of history data to synchronize in 0:00:00.000
EURUSD: history synchronized from 1999.01.04 to 2018.10.12
EURUSD,M5: history cache allocated for 133714 bars and contains 131549 bars from 2017.01.02 00:00 to 2018.10.05 23:55
EURUSD,M5: history begins from 2017.01.02 00:00
EURUSD,M5 (MetaQuotes-Demo): OHLC bar states generating. OnTick executed on the bar begin only
EURUSD,M5: testing of Experts\Work\TestIndicatorBag.ex5 from 2018.10.08 00:00 to 2018.10.13 00:00 started
program file added: Indicators\Custom\RSI\ChartRSI_Plus1\ChartRSI_Plus1.ex5. 37159 bytes loaded
final balance 10000.00 USD
EURUSD,M5: 5465 ticks, 1440 bars generated. Environment synchronized in 0:00:00.078. Test passed in 0:00:00.390.
EURUSD,M5: total time from login to stop testing 0:00:00.468 (including 0:00:00.078 for history data synchronization)
4450 Mb memory used including 7 Mb of history data, 64 Mb of tick data
log file "E:\#Terminals\MetaQuotes\MetaTrader 5 test\Tester\Agent-127.0.0.1-3000\logs\20181014.log" written
connection closed
 
Спасибо, все проверим и исправим.
 

Хочу построить график загрузки ЦП процессом терминала.

В последнем билде мне не хватает такой возможности:

TerminalInfoInteger(TERMINAL_CPU_LOAD) //значение загрузки ЦП в процентах.

Добавьте пожалуйста.

PS: задача состоит в том, чтобы получить график загрузки ЦП, как на вашем VPS, но со своим масштабом времени.
 

1910 зависает, когда я компилирую в своем текущем проекте

 

Со старыми сборками прекрасно ...

 

Оптимизируйте пожалуйста скорость выполнения функций TerminalInfoInteger(TERMINAL_MEMORY_*)

Замер скорости:

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
struct MEMORYSTATUSEX
  {
   uint              dwLength;
   uint              dwMemoryLoad;
   ulong             ullTotalPhys;
   ulong             ullAvailPhys;
   ulong             ullTotalPageFile;
   ulong             ullAvailPageFile;
   ulong             ullTotalVirtual;
   ulong             ullAvailVirtual;
   ulong             ullAvailExtendedVirtual;
  };

#import "kernel32.dll"
int GlobalMemoryStatusEx(MEMORYSTATUSEX &status);
#import
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- native   
   ulong gtc= GetMicrosecondCount();
   for(int i=0;i<1000;i++)
     {
      int mem=TerminalInfoInteger(TERMINAL_MEMORY_PHYSICAL);
      if(i==0)
         Print("MEMORY_PHYSICAL: ",mem);
     }
   printf("Native: %.02f us",(GetMicrosecondCount()-gtc)/1000.0);

//--- winapi
   gtc=GetMicrosecondCount();
   for(int i=0;i<1000;i++)
     {
      MEMORYSTATUSEX status={};
      status.dwLength=sizeof(status);
      GlobalMemoryStatusEx(status);
      if(i==0)
         Print("MEMORY_PHYSICAL: ",status.ullTotalPhys/1024/1024);
     }
   printf("WinAPI: %.02f us",(GetMicrosecondCount()-gtc)/1000.0);
  }

результаты:

2018.10.14 20:51:02.537    MEMORY_speed (EURUSD,M1)    MEMORY_PHYSICAL: 32709
2018.10.14 20:51:17.403    MEMORY_speed (EURUSD,M1)    Native: 14884.39 us


2018.10.14 20:51:17.404    MEMORY_speed (EURUSD,M1)    MEMORY_PHYSICAL: 32709
2018.10.14 20:51:17.405    MEMORY_speed (EURUSD,M1)    WinAPI: 1.10 us

 

Как обезопасить себя и свой депозит от новых билдов?

У кого есть старые билды до 1881 ?

поделитесь

 

Вот это приятные новости про .Net. Ждём оф. релиза. 

А для MT4 не планируется такой радости?

 
Sergey Chalyshev:

Как обезопасить себя и свой депозит от новых билдов?

У кого есть старые билды до 1881 ?

поделитесь

Читайте комментарии разработчиков и не перейдете вы на тестовый билд. Все довольно просто.