Особенности языка mql4, тонкости и приёмы работы - страница 18

 
Dmitry Rannev:

Проблему выше описал fxsaber. Мы пытаемся найти причину.

Вот так будет корректно работать

NormalizeDouble(Price1 - Price2, _Digits) != 0.0;
 
Alexey Viktorov:

Вот так будет корректно работать

Тут не пытаются решить проблему сравнения даблов. Задача другая.

 
Dmitry Rannev:

Проблему выше описал fxsaber. Мы пытаемся найти причину.

Ну значит fxsaber правильно ответил - я бы добавил не пользуйтесь Принтом, пользуйтесь printf и указывайте желаемую точность вывода чисел { printf("Open: %.6f, Close: %.6f", OrderOpenPrice(), OrderClosePrice()); }

 
Ilya Malev:

Ну значит fxsaber правильно ответил - я бы добавил не пользуйтесь Принтом, пользуйтесь printf и указывайте желаемую точность вывода чисел { printf("Open: %.6f, Close: %.6f", OrderOpenPrice(), OrderClosePrice()); }

Если вы хотите понять в чем именно проблема, спросите у fxsaber, что ему мешает нормально писать советников. Мы пытаемся со стороны разработчика софта для брокеров сделать так, чтобы проблем было меньше. Мы ищем проблему не в написании советников, а в сохранении данных в трейдрекорде сервера, которая мешает fxsaber писать советников.

 
Не слышал, чтобы fxsaber что-то мешало нормально писать советников, ну да ладно, проехали :) Если мой коммент был не в тему, pardon.
 
Dmitry Rannev:

...а в сохранении данных в трейдрекорде сервера, которая мешает fxsaber писать советников.

Ах вон оно чё…  А мы то понять не можем, что же ему мешает.
 
Alexey Navoykov:
Ах вон оно чё…  А мы то понять не можем, что же ему мешает.

С этого началось. И переросло в это

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

Ненормализованные цены в MT4

fxsaber, 2019.02.20 23:03

А вот ситуация гораздо хуже, и при этом на MQ-Demo
// 15326434
// wmefo5sa
// MetaQuotes-Demo
void OnStart()
{
  const double Price1 = HistoryOrderSelect(356138100) ? HistoryOrderGetDouble(HistoryOrderGetTicket(0), ORDER_PRICE_CURRENT) : 0;
  const double Price2 = PositionSelectByTicket(356138100) ? PositionGetDouble(POSITION_PRICE_OPEN) : 0;  
  
  Print(Price1 - Price2); // -2.220446049250313e-16
}


Цена открытия текущей позиции не равна цене своих ордера/сделки.

 
fxsaber:
Особенности ArrayResize для многомерных массивов

потому что через ArrayRange() надо получать кол-во элементов в нужном измерении, а ресайзить всё равно только 1-е измерение можно, поэтому в mql5 логичнее

 

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

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

Andrey Khatimlianskii, 2019.03.12 22:57

Интересно, а давно TerminalInfoInteger(TERMINAL_TRADE_ALLOWED) (кнопка АвтоТорговля) влияет на тестируемых советников (МТ4)?

В 1170 влияет, прямо кнопкой можно управлять торговлей в тестере. Я в шоке.

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

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

Vladimir Pastushak, 2019.03.13 19:12

Если в коде есть что то типа 

if(!TerminalInfoInteger (TERMINAL_TRADE_ALLOWED))
return;

То кнопка работает. 

Без этой команды советник на кнопку не реагирует

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

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

Vladislav Andruschenko, 2019.03.13 19:14


я об этом писал года два назад. 


именно так и есть. Поэтому проверки кнопки я отключил в тестере стратегий





 

Оказалось, что возможно получение значений буферов запущенных на чарте индикаторов (одноразовое использование WinAPI).

Если без DLL - почти в автоматическом режиме.