Новая версия платформы MetaTrader 5 build 2007: Экономический календарь, MQL5-программы в виде сервисов - страница 28

 
Доброго вечера!
Подскажите как можно настроить работу терминала с двумя мониторами? 
 
AxeEffect:
Доброго вечера!
Подскажите как можно настроить работу терминала с двумя мониторами? 

Открепляете график (Alt+D) и переносите его на нужный монитор

 
datetime-входные параметры не преобразоются во время в логах одиночного прохода

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Пользовательские символы. Ошибки, баги, вопросы, предложения.

fxsaber, 2019.03.14 22:20

TESTER_EURUSD.rann_RannForex: history data begins from 2019.03.01 00:00
TESTER_EURUSD.rann_RannForex: ticks data begins from 2019.03.01 00:00
agent process started
connecting to 127.0.0.1:3000
connected
authorized (agent build 2007)
TESTER_EURUSD.rann_RannForex,M1 (MetaQuotes-Beta): testing of Experts\fxsaber\TesterTickCheck.ex5 from 2019.03.01 00:00 to 2019.03.14 00:00
common synchronization completed
TESTER_EURUSD.rann_RannForex: history for 2018 year synchronized
TESTER_EURUSD.rann_RannForex: ticks synchronized already [87 bytes]
MetaTester 5 started on 127.0.0.1:3000
initialization finished
login (build 2007)
3860 bytes of account info loaded
1482 bytes of tester parameters loaded
1724 bytes of input parameters loaded
675 bytes of symbols list loaded
expert file added: Experts\fxsaber\TesterTickCheck.ex5. 21663 bytes loaded
5659 Mb available, 70 blocks set for ticks generating
initial deposit 10000.00 EUR, leverage 1:100
successfully initialized
22 Kb of total initialization data received
Intel Core i7-2700K  @ 3.50GHz, 16301 MB
TESTER_EURUSD.rann_RannForex: symbol to be synchronized
TESTER_EURUSD.rann_RannForex: symbol synchronized, 3464 bytes of symbol info received
TESTER_EURUSD.rann_RannForex: load 71 bytes of history data to synchronize in 0:00:00.000
TESTER_EURUSD.rann_RannForex: history synchronized from 2019.03.01 to 2019.03.13
TESTER_EURUSD.rann_RannForex: ticks synchronization started
TESTER_EURUSD.rann_RannForex: load 78 bytes of tick data to synchronize in 0:00:00.000
TESTER_EURUSD.rann_RannForex: history ticks synchronized from 2019.03.01 to 2019.03.13
TESTER_EURUSD.rann_RannForex: start time changed to 2019.03.02 00:00 to provide data at beginning
TESTER_EURUSD.rann_RannForex,M1: history cache allocated for 13776 bars and contains 1429 bars from 2019.03.01 00:00 to 2019.03.01 23:54
TESTER_EURUSD.rann_RannForex,M1: history begins from 2019.03.01 00:00
TESTER_EURUSD.rann_RannForex,M1 (MetaQuotes-Beta): generating based on real ticks
TESTER_EURUSD.rann_RannForex,M1: testing of Experts\fxsaber\TesterTickCheck.ex5 from 2019.03.01 00:00 to 2019.03.14 00:00 started with inputs:
  BeginTime=1551484800
  EndTime=1552176000
  inFlags=false
 

Подскажите после ArrayResize в меньшую сторону разве не должно уменьшаться количество используемой памяти ?


int OnInit()
{
    MqlTick Tick[];      // массив для приема Новых тиков
   
    ArrayResize( Tick, 1000000 );
    Print("Используемая память после ArrayResize( Tick, 1000000 ) ",MQLInfoInteger(MQL_MEMORY_USED));
    ArrayResize( Tick, 0 );
    Print("Используемая память после ArrayResize( Tick, 0 ) ",MQLInfoInteger(MQL_MEMORY_USED));
    ArrayFree(Tick);
    Print("Используемая память после ArrayFree(Tick) ",MQLInfoInteger(MQL_MEMORY_USED));       
    
    return -1;    
 }

Результат.

Используемая память после ArrayResize( Tick, 1000000 ) 58
Используемая память после ArrayResize( Tick, 0 ) 58
Используемая память после ArrayFree(Tick) 0
Размер массива после удаления 0  Используем памяти. 0
 
pivomoe:

Подскажите после ArrayResize в меньшую сторону разве не должно уменьшаться количество используемой памяти ?

Нет
 
Slava:
Нет

А нет ли какой нибудь функции, чтобы освободить память после сокращения размеров массива ( не до нуля ) ? Сделал свой аналог ArrayResize , с сокращением размера памяти, но там два раза весь массив копируется...

 
pivomoe:

А нет ли какой нибудь функции, чтобы освободить память после сокращения размеров массива ( не до нуля ) ? Сделал свой аналог ArrayResize , с сокращением размера памяти, но там два раза весь массив копируется...

Вариант с одним копированием

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Особенности языка mql5, тонкости и приёмы работы

fxsaber, 2019.03.15 11:15

// ArrayResize с освобождением памяти
template <typename T>
int ArrayResize2( T &Array[], const int NewSize, const int Reserve = 0 )
{
  T ArrayTmp[];
  
  ArraySwap(Array, ArrayTmp);
  const int Res = ArrayResize(Array, NewSize, Reserve);
  
  if (Res > 0)
    ArrayCopy(Array, ArrayTmp, 0, 0, MathMin(Res, ArraySize(ArrayTmp)));
    
  return(Res);
}
 
pivomoe:

А нет ли какой нибудь функции, чтобы освободить память после сокращения размеров массива ( не до нуля ) ? Сделал свой аналог ArrayResize , с сокращением размера памяти, но там два раза весь массив копируется...

ArrayResize( arr, new_size, -1)

 
Ilyas:

ArrayResize( arr, new_size, -1)

Работает. Правда версия fxsaber быстрее. Его версия выполняется обычно 22 милесекунды( максимум был 26) . Ваш вариант минимум выполняется за 30(обычно 37). Хотя вроде бы одно и тоже.

template <typename T>
int ArrayResize2( T &Array[], const int NewSize, const int Reserve = 0 )
{
  T ArrayTmp[];
  
  ArraySwap(Array, ArrayTmp);
  const int Res = ArrayResize(Array, NewSize, Reserve);
  
  if (Res > 0)
    ArrayCopy(Array, ArrayTmp, 0, 0, MathMin(Res, ArraySize(ArrayTmp)));
    
  return(Res);
}

int OnInit()
{
    MqlTick Tick[];      // массив для приема Новых тиков      
   
    ArrayResize( Tick, 1000000 );
    Print("Используемая память после ArrayResize( Tick, 1000000 ) ",MQLInfoInteger(MQL_MEMORY_USED));
    
 // ArrayResize2( Tick, 500000 );
    ArrayResize( Tick, 500000, -1 );   
    Print("Используемая память после ArrayResize2( Tick, 0 ) ",MQLInfoInteger(MQL_MEMORY_USED));
           
    return -1;    
 }
 
Slava:

Для объекта типа OBJ_LABEL его размер будет посчитан только после отрисовки

В документации https://www.mql5.com/ru/docs/constants/objectconstants/enum_object_property об этом прямо сказано

  • Width/Height – объекты имеет ширину и высоту. Если указано "только для чтения", то это означает, что значения ширины и высоты вычисляются только после отрисовки объекта на графике;

И дальше

OBJPROP_XSIZE

Ширина объекта по оси X в пикселях. Задается для объектов OBJ_LABEL (read only), OBJ_BUTTON, OBJ_CHART, OBJ_BITMAP, OBJ_BITMAP_LABEL, OBJ_EDIT, OBJ_RECTANGLE_LABEL.

int


Спасибо (из кармана в англ - и там тоже спасибо).

Причина обращения: