Ошибки, баги, вопросы - страница 2570

 
Nikolai Semko:

у стринга пустота, словно его и нет, т.е. даже памяти не выделяется.

У других типов такого наблюдается. Если объявили переменную, значит память уже выделилась.
Но ведь по сути стринг это же не примитивный тип, а ссылочный.

Как же нет? Память под объект string в куче выделена, а по адресу памяти, с которого начинается сам текст стоит 0х00
 
Igor Makanu:

не могу сообразить как проверить PrintFormat

Примечание

При работе в тестере стратегий в режиме оптимизации функция PrintFormat() не выполняется.

есть мысли у кого?

А если StringFormat и полученную строку в файл? (для каждого прохода свой файл создавать в папке общего доступа - чтобы тестер не затёр их).

 
Vladimir Simakov:
Как же нет? Память под объект string в куче выделена, а по адресу памяти, с которого начинается сам текст стоит 0х00

память выделяется только на имя и на ссылку, но не на сам объект, т.к. его пока нет. С примитивными типами такого нет, там память выделяется в момент создания переменной, даже без инициализации.
Не хочу бадаться терминологией. И так все друг друга понимают. 
Все это очевидности. 

 
Vladimir Karputov:

А если StringFormat и полученную строку в файл? (для каждого прохода свой файл создавать в папке общего доступа - чтобы тестер не затёр их).

хороший вариант, протестирую

ЗЫ: код в очередной раз переписываю, чтобы в оптимизаторе быстрее работал (результаты было 5ч, сейчас 1,5 ч !!!)

вот сейчас наткнулся в справке на printf(), и решил проверить все свои принты, где нужно заменить....ну заменил и стала оптимизация  22 ч ....нашел где накосячил, но естественно сразу мысли, что дело все в  printf()  !!!

)))


попробовал проверить работу printf() в оптимизаторе так:

int xx=10;
void OnTick()
{  printf("1/x = %f",1/(xx--));
....

пока сразу получил, что ожидал: 

2019.09.20 11:29:16.611 Core 1 genetic pass (0, 607) tested with error "critical runtime error 503 in OnTick function (zero divide, module Experts\)" in 0:00:00.048


ожидалось, что если написано "PrintFormat() не выполняется." то и должен это получить

 
У меня было такое, что оптимизация кода ускоряла выполнение в 450 раз :).
 
Igor Makanu:

хороший вариант, протестирую

ЗЫ: код в очередной раз переписываю, чтобы в оптимизаторе быстрее работал (результаты было 5ч, сейчас 1,5 ч !!!)

вот сейчас наткнулся в справке на printf(), и решил проверить все свои принты, где нужно заменить....ну заменил и стала оптимизация  22 ч ....нашел где накосячил, но естественно сразу мысли, что дело все в  printf()  !!!

)))


попробовал проверить работу printf() в оптимизаторе так:

пока сразу получил, что ожидал: 

2019.09.20 11:29:16.611 Core 1 genetic pass (0, 607) tested with error "critical runtime error 503 in OnTick function (zero divide, module Experts\)" in 0:00:00.048


ожидалось, что если написано "PrintFormat() не выполняется." то и должен это получить

Аха. И получите разное значение переменной xx при одиночном тестировании и при оптимизации.

Не выполняется только вызов функции printf.

 
Slava:

Аха. И получите разное значение переменной xx при одиночном тестировании и при оптимизации.

Не выполняется только вызов функции printf.

да понятно, что пользователь может и так поступить

но проверить то как printf() ? 

ЗЫ: хотя, если Разработчик сказал, что не выполняется, тогда можно и не проверять

 
Igor Makanu:


но проверить то как printf() ? 

Сравнить время одного прохода из оптимизации и время одиночного прохода

 
Slava:

Продублирую:

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

Ошибки, баги, вопросы

Alexey Kozitsyn, 2019.09.18 09:34

Несколько вопросов по платформе:

1. Будет ли добавлен допустимый диапазон торговли для ВП через MOEX (например, EURRUB_TOM)? Сейчас нельзя точно узнать, будет ли выставлена лимитка, т.к. нет доступа к диапазону (макс. и мин. возможным ценам). Добавьте, пожалуйста.

2. Можно ли добавить в терминал и метаэдитор автосохранение состояния каждые N минут? Очень не хватает, т.к. при внезапном разрыве связи возвращаешься к состоянию на момент старта программы с потерей всех изменений! Очень напрягает!

По первому пункту: поймите, что невозможно нормально торговать, если не знать ограничений! Почему у каких-то инструментов эти ограничения можно получить, а у каких-то нет!?

 

справка опять некорректная, читаю: https://www.mql5.com/ru/docs/math/mathmax

Функция возвращает максимальное из двух числовых значений.

double  MathMax(
   double  value1,     // первое число
   double  value2      // второе число
   );

вижу, что вариантов нет, тип функции  fmax() double , ищу где мог потерять дробное значение, после поисков всего и вся, провожу тест:

void OnStart()
{
   long slvl = SymbolInfoInteger(_Symbol, SYMBOL_TRADE_STOPS_LEVEL);
   int sl = 300;
   Print(typename(fmax(slvl,sl)));
}

2019.09.20 18:06:34.194 tst (EURUSD,H1) long

ЗЫ: отвечаю сразу, я справку дочитал до конца и вижу фразу: "Тип возвращаемого значения соответствует старшему типу." ...имхо, это не серьезно, что в 99% случаев достаточно посмотреть в справке описание функции, чем искать потаенный смысл между строк - написано тип результата fmin() --> double - значит вариантов как бы нет
Причина обращения: