TESTER_EURUSD.rann_RannForex: history data begins from2019.03.0100:00
TESTER_EURUSD.rann_RannForex: ticks data begins from2019.03.0100: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 from2019.03.0100:00 to 2019.03.1400:00
common synchronization completed
TESTER_EURUSD.rann_RannForex: history for2018 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 setfor 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 in0:00:00.000
TESTER_EURUSD.rann_RannForex: history synchronized from2019.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 in0:00:00.000
TESTER_EURUSD.rann_RannForex: history ticks synchronized from2019.03.01 to 2019.03.13
TESTER_EURUSD.rann_RannForex: start time changed to 2019.03.0200:00 to provide data at beginning
TESTER_EURUSD.rann_RannForex,M1: history cache allocated for13776 bars and contains 1429 bars from2019.03.0100:00 to 2019.03.0123:54
TESTER_EURUSD.rann_RannForex,M1: history begins from2019.03.0100:00
TESTER_EURUSD.rann_RannForex,M1 (MetaQuotes-Beta): generating based on real ticks
TESTER_EURUSD.rann_RannForex,M1: testing of Experts\fxsaber\TesterTickCheck.ex5 from2019.03.0100:00 to 2019.03.1400:00 started with inputs:
BeginTime=1551484800
EndTime=1552176000
inFlags=false
Подскажите после ArrayResize в меньшую сторону разве не должно уменьшаться количество используемой памяти ?
intOnInit()
{
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
А нет ли какой нибудь функции, чтобы освободить память после сокращения размеров массива ( не до нуля ) ? Сделал свой аналог ArrayResize , с сокращением размера памяти, но там два раза весь массив копируется...
А нет ли какой нибудь функции, чтобы освободить память после сокращения размеров массива ( не до нуля ) ? Сделал свой аналог ArrayResize , с сокращением размера памяти, но там два раза весь массив копируется...
А нет ли какой нибудь функции, чтобы освободить память после сокращения размеров массива ( не до нуля ) ? Сделал свой аналог ArrayResize , с сокращением размера памяти, но там два раза весь массив копируется...
Работает. Правда версия fxsaber быстрее. Его версия выполняется обычно 22 милесекунды( максимум был 26) . Ваш вариант минимум выполняется за 30(обычно 37). Хотя вроде бы одно и тоже.
template <typename T>
int ArrayResize2( T &Array[], constint NewSize, constint Reserve = 0 )
{
T ArrayTmp[];
ArraySwap(Array, ArrayTmp);
constint Res = ArrayResize(Array, NewSize, Reserve);
if (Res > 0)
ArrayCopy(Array, ArrayTmp, 0, 0, MathMin(Res, ArraySize(ArrayTmp)));
return(Res);
}
intOnInit()
{
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;
}
Width/Height
– объекты имеет ширину и высоту. Если указано "только для чтения", то
это означает, что значения ширины и высоты вычисляются только после
отрисовки объекта на графике;
И дальше
OBJPROP_XSIZE
Ширина объекта по оси
X в пикселях. Задается для объектов OBJ_LABEL (read only), OBJ_BUTTON,
OBJ_CHART, OBJ_BITMAP, OBJ_BITMAP_LABEL, OBJ_EDIT, OBJ_RECTANGLE_LABEL.
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Подскажите как можно настроить работу терминала с двумя мониторами?
Доброго вечера!
Подскажите как можно настроить работу терминала с двумя мониторами?
Открепляете график (Alt+D) и переносите его на нужный монитор
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Пользовательские символы. Ошибки, баги, вопросы, предложения.
fxsaber, 2019.03.14 22:20
Подскажите после ArrayResize в меньшую сторону разве не должно уменьшаться количество используемой памяти ?
Результат.
Подскажите после ArrayResize в меньшую сторону разве не должно уменьшаться количество используемой памяти ?
Нет
А нет ли какой нибудь функции, чтобы освободить память после сокращения размеров массива ( не до нуля ) ? Сделал свой аналог ArrayResize , с сокращением размера памяти, но там два раза весь массив копируется...
А нет ли какой нибудь функции, чтобы освободить память после сокращения размеров массива ( не до нуля ) ? Сделал свой аналог ArrayResize , с сокращением размера памяти, но там два раза весь массив копируется...
Вариант с одним копированием
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Особенности языка mql5, тонкости и приёмы работы
fxsaber, 2019.03.15 11:15
А нет ли какой нибудь функции, чтобы освободить память после сокращения размеров массива ( не до нуля ) ? Сделал свой аналог ArrayResize , с сокращением размера памяти, но там два раза весь массив копируется...
ArrayResize( arr, new_size, -1)
ArrayResize( arr, new_size, -1)
Работает. Правда версия fxsaber быстрее. Его версия выполняется обычно 22 милесекунды( максимум был 26) . Ваш вариант минимум выполняется за 30(обычно 37). Хотя вроде бы одно и тоже.
Для объекта типа OBJ_LABEL его размер будет посчитан только после отрисовки
В документации https://www.mql5.com/ru/docs/constants/objectconstants/enum_object_property об этом прямо сказано
И дальше
OBJPROP_XSIZE
Ширина объекта по оси X в пикселях. Задается для объектов OBJ_LABEL (read only), OBJ_BUTTON, OBJ_CHART, OBJ_BITMAP, OBJ_BITMAP_LABEL, OBJ_EDIT, OBJ_RECTANGLE_LABEL.
int
Спасибо (из кармана в англ - и там тоже спасибо).