Новая версия платформы MetaTrader 5 build 3091: Улучшения в работе - страница 15

 
Igor Makanu #:

тогда и так должна инициализироваться строка:

Видимо, инициализация NULLом (или даже простое присваивание) переводит строку в неинициализированное состояние?
 

В двух местах компилятор не предупреждает об отсутствии инициализации.

void OnStart()
{
  int i;
  string Str;
  
  while (Str != ""); // OK
    
  while (i); // OK

  while (i != 0); // possible use of uninitialized variable 'i'
}
 
fxsaber #:

В двух местах компилятор не предупреждает об отсутствии инициализации.

string всегда инициализирована, другими словами - следующие записи равнозначны

string Str;        //(1)
string Str = NULL; //(2)
 
A100 #:

string всегда инициализирована, другими словами - следующие записи равнозначны

Как я понимаю, для string, по смыслу, лучше различать понятие "инициализированная переменная" и "иницилизировая строка/string", "содержащаяся" в этой переменной.

Переменная string всегда инициализирована, а вот строка в ней - нет, если NULL.

 
A100 #:

string всегда инициализирована, другими словами - следующие записи равнозначны

Не равнозначны. Неоднократно видел мусор во время дебага.

 
fxsaber #:

Не равнозначны. Неоднократно видел мусор во время дебага.

В дебаге это возможно, если например Вы находитесь в функции f(), то в text - может быть мусор

int f() { return 0; }
struct S {
        S() : i(f()), text("ABCD") {}
        int i;
        string text;
};

но это не значит, что здесь

void OnStart()
{
    S s;
}

s - не инициализирована

 

Запускаю советник-пустышку.

void OnTick() {}


Полный лог одиночного прохода без визуализации.

2021.11.08 03:33:20.203 Tester  EURUSD: history data begins from 2020.11.02 00:00
2021.11.08 03:33:20.203 Tester  EURUSD: ticks data begins from 2020.11.02 00:00
2021.11.08 03:33:20.204 Core 1  connecting to 127.0.0.1:3000
2021.11.08 03:33:20.204 Core 1  connected
2021.11.08 03:33:20.216 Core 1  authorized (agent build 3099)
2021.11.08 03:33:20.225 Tester  EURUSD,M1 (): testing of Experts\Test19.ex5 from 2021.04.01 00:00 to 2021.10.09 00:00
2021.11.08 03:33:20.237 Core 1  common synchronization completed
2021.11.08 03:33:20.247 Core 1  EURUSD: history for 2020 year synchronized
2021.11.08 03:33:20.248 Core 1  EURUSD: ticks synchronized already [83 bytes]
2021.11.08 03:33:22.349 Core 1  test Experts\Test19.ex5 on EURUSD,M1 thread finished
2021.11.08 03:33:22.349 Core 1  prepare for shutdown
2021.11.08 03:33:22.349 Core 1  login (build 3050)
2021.11.08 03:33:22.349 Core 1  account info found with currency USD
2021.11.08 03:33:22.349 Core 1  expert file added: Experts\Test19.ex5. 4524 bytes loaded
2021.11.08 03:33:22.349 Core 1  calculate profit in pips, initial deposit 100000000, leverage 1:100
2021.11.08 03:33:22.349 Core 1  successfully initialized
2021.11.08 03:33:22.349 Core 1  4107 bytes of total initialization data received
2021.11.08 03:33:22.349 Core 1  Intel Core i7-2700K  @ 3.50GHz, 16301 MB
2021.11.08 03:33:22.349 Core 1  EURUSD: symbol to be synchronized
2021.11.08 03:33:22.349 Core 1  EURUSD: symbol synchronized already, 58 bytes received
2021.11.08 03:33:22.349 Core 1  EURUSD: load 67 bytes of history data to synchronize in 0:00:00.000
2021.11.08 03:33:22.349 Core 1  EURUSD: history synchronized from 2020.11.02 to 2021.10.09
2021.11.08 03:33:22.349 Core 1  EURUSD: ticks synchronization started
2021.11.08 03:33:22.349 Core 1  EURUSD: load 74 bytes of tick data to synchronize in 0:00:00.000
2021.11.08 03:33:22.349 Core 1  EURUSD: history ticks synchronized from 2021.04.01 to 2021.10.08
2021.11.08 03:33:22.349 Core 1  EURUSD,M1: history cache allocated for 365624 bars and contains 169166 bars from 2020.11.02 00:05 to 2021.03.31 23:58
2021.11.08 03:33:22.349 Core 1  EURUSD,M1: history begins from 2020.11.02 00:05
2021.11.08 03:33:22.349 Core 1  EURUSD,M1 (): generating based on real ticks
2021.11.08 03:33:22.349 Core 1  EURUSD,M1: testing of Experts\Test19.ex5 from 2021.04.01 00:00 to 2021.10.09 00:00 started
2021.11.08 03:33:22.349 Core 1  EURUSD : real ticks begin from 2021.04.01 00:00:00
2021.11.08 03:33:22.349 Core 1  final balance 100000000.00 pips
2021.11.08 03:33:22.349 Core 1  EURUSD,M1: 6820008 ticks, 258262 bars generated. Environment synchronized in 0:00:00.026. Test passed in 0:00:02.111 (including ticks preprocessing 0:00:01.188).
2021.11.08 03:33:22.349 Core 1  EURUSD,M1: total time from login to stop testing 0:00:02.137 (including 0:00:00.026 for history data synchronization)
2021.11.08 03:33:22.349 Core 1  390 Mb memory used including 24 Mb of history data, 192 Mb of tick data
2021.11.08 03:33:22.349 Core 1  log file "C:\Program Files\MetaTrader 5\Tester\Agent-127.0.0.1-3000\logs\20211108.log" written
2021.11.08 03:33:22.355 Core 1  connection closed


Почему идет потребление на 390 Мб, когда тиков всего 192 Мб?


ЗЫ В одном месте лога build 3099, в другом - 3050.

 
Комментарии, не относящиеся к этой теме, были перенесены в "Клиринг в тестере".
 

В метаредакторе не работает прокрутка если кликнуть по правому краю (край экрана) что удручает потому что нужно прицеливаться в полоску прокрутки...

Это уже довольно давно и странно что разработчики до сих пор это не исправили.

Ждём... надеемся...

 
transcendreamer #:

В метаредакторе не работает прокрутка если кликнуть по правому краю (край экрана) что удручает потому что нужно прицеливаться в полоску прокрутки...

Да, во многих программах (в частности в браузерах) удобно сделано, что в полноэкранном режиме вертикальная полоса прокрутки занимает всё крайнее правое положение и при смещении мыши в крайнее правое положение оказываешься на полосе прокрутке, а не на рамке (пользователи клавиатуры данного удобства не поймут)

Другими словами правая (да и левая) рамка в MetaEditor - просто лишние