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

 

Воспроизведение этой ситуации

Запускаем на Оптимизацию

input int Range = 0; // 1..10
input bool Bool = false;

void OnInit() {}


В результатах Оптимизации выбираем "Запустить одиночное тестирование".

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

 
fxsaber:

Воспроизведение этой ситуации

Есть более "жесткий" вариант этой проблемы:

https://www.mql5.com/ru/forum/304239/page47#comment_11320269

Новая версия платформы MetaTrader 5 build 2007: Экономический календарь, MQL5-программы в виде сервисов
Новая версия платформы MetaTrader 5 build 2007: Экономический календарь, MQL5-программы в виде сервисов
  • 2019.04.08
  • www.mql5.com
21 февраля 2019 года будет выпущена обновленная версия платформы MetaTrader 5...
 
Igor Zakharov:

Есть более "жесткий" вариант этой проблемы:

https://www.mql5.com/ru/forum/304239/page47#comment_11320269

Без воспроизведения, к сожалению.

 
Если скопировать terminal64.exe в какую-нибудь папку и запустить оттуда, то поиск брокеров работать не будет.
 
fxsaber:

Да.

И в чем разница синхронного и асинхронного режима?!.. Получается, чтобы дождаться рыночного исполнения позиции, нужно все равно отлавливать TRADE_TRANSACTION_DEAL_ADD.

Т.е. синхронный режим - фикция?! Все же это бага, иначе в режимах нет смысла. В предыдущих билдах все работало нормально. Как минимум в этом, синхронный режим перестал работать. Опять заплатку лепить, видимо...

 
Vladimir Belozercev:

И в чем разница синхронного и асинхронного режима?!.. Получается, чтобы дождаться рыночного исполнения позиции, нужно все равно отлавливать TRADE_TRANSACTION_DEAL_ADD.

Т.е. синхронный режим - фикция?! Все же это бага, иначе в режимах нет смысла. В предыдущих билдах все работало нормально. Как минимум в этом, синхронный режим перестал работать. Опять заплатку лепить, видимо...

Синхронный вариант дожидается размещения ордера (не открытия позиции). Асинхронный - ничего не ждет.

Выше дал начальный тест на умение писать торговлю под MT5. Думаю, его почти никто не пройдет, потому что неправильное представление, как работает MT5.

 
fxsaber:

Синхронный вариант дожидается размещения ордера (не открытия позиции). Асинхронный - ничего не ждет.

Выше дал начальный тест на умение писать торговлю под MT5. Думаю, его почти никто не пройдет, потому что неправильное представление, как работает MT5.

Сам то, без году неделя начал пользовать МТ5.

Откуда тебе знать как он должен работать?

 
Sergey Chalyshev:

Сам то, без году неделя начал пользовать МТ5.

Откуда тебе знать как он должен работать?

Предложен конструктивный тест. Срач ни к чему.

 
fxsaber:

Синхронный вариант дожидается размещения ордера (не открытия позиции). Асинхронный - ничего не ждет.

Выше дал начальный тест на умение писать торговлю под MT5. Думаю, его почти никто не пройдет, потому что неправильное представление, как работает MT5.

Спасибо. Интересный трэд, отрезвляющий... )) Забил на синхрон и пошел допиливать асинхрон (заготовку сделал давно, да все руки не доходили)...

 

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

ОТЧЕТ ОБ ОШИБКАХ: ограничение размера строки для входных данных при оптимизации

Энрике Вилела , 2019.04.16 16:08

 string A= "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" ;
// The string above has 200 characters
input int B= 0 ;

int OnInit ()
  {
   return ( INIT_SUCCEEDED );
  }
double OnTester ()
  {
   // Just return the character count
   return StringLen (A);
  }

Если я запускаю тестирование советника выше, результат OnTester будет 200.

Если я запускаю оптимизацию входа «B» (значения не имеют значения, он используется, чтобы я мог провести оптимизацию), результат также равен 200.


Все идет нормально.


Теперь давайте преобразуем переменную «A» во входе.

 input  string A= "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" ;
// The string above has 200 characters
input int B= 0 ;

int OnInit ()
  {
   return ( INIT_SUCCEEDED );
  }
double OnTester ()
  {
   // Just return the character count
   return StringLen (A);
  }

Теперь, если я проведу тестирование бэк-эксперта выше, результат OnTester будет 200, как и ожидалось.

Ничего особенного, пока здесь.


Но если я выполню оптимизацию ввода «B», результат будет 63 .


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

Очень странно иметь один и тот же советник, генерирующий разные результаты для одного бэк-теста против оптимизации с одинаковыми входными данными.

Если вы (Metaquotes) хотите ограничить размер строки, вы должны ограничить размер строки, которую может ввести пользователь.


Спасибо.


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