Изучаем и пишем вместе на MQL5 - страница 37

 
Dimka-novitsek:
Спасибо! Текущая цена спроса и предложения-ноль. Тикет сделки . Тикет ордера. Щас, тут папа. 
 Ну так а retcode-то какой?  И что он означает?
 

Спасибо!! Щас посмотрю  retcode ! 

СПАСИБО!!!! Я понял! Без вас-никуда!

 

Здравствуйте.

Столкнулся вот с такой проблемой, совершенно мне непонятной. Объясните плиз, почему в данном случае NormalizeDouble() не всегда работает?

   for ( x = .... ) {
      close = tf_rates[x].close;
      close = NormalizeDouble(close, 4 );
   }

Записываю в файл цены и другие данные текущего таймфрейма. Около 10 процентов от всех записей составляют строки вида:

1971.01.07,00:00,0.5368000000000001,0.5368000000000001,0.5368000000000001,0.5368000000000001,1

Результат не зависит от порядка нормализации, подставляю в функцию 1, 2, 3, 4, 5, Digits - всё без разницы. Где засада?

Документация по MQL5: Файловые операции / FileWrite
Документация по MQL5: Файловые операции / FileWrite
  • www.mql5.com
Файловые операции / FileWrite - Документация по MQL5
 
wtvirtual:

Здравствуйте.

Столкнулся вот с такой проблемой, совершенно мне непонятной. Объясните плиз, почему в данном случае NormalizeDouble() не всегда работает?

Записываю в файл цены и другие данные текущего таймфрейма. Около 10 процентов от всех записей составляют строки вида:

1971.01.07,00:00,0.5368000000000001,0.5368000000000001,0.5368000000000001,0.5368000000000001,1

Результат не зависит от порядка нормализации, подставляю в функцию 1, 2, 3, 4, 5, Digits - всё без разницы. Где засада?

Засады нет. Так и выглядят некоторые нормализованные значения. см. в Справочнике раздел про эту функцию.
 
Yedelkin:
Засады нет. Так и выглядят некоторые нормализованные значения. см. в Справочнике раздел про эту функцию.
Ну в справочнике есть замечание лишь про вывод с помощью Print. Допустим, что не только данная функция, но и все другие также "нормализуют". И как тогда такое вот значение подавать в виде цен в отложенный ордер?
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров - Документация по MQL5
 
wtvirtual:
Ну в справочнике есть замечание лишь про вывод с помощью Print.

Ну так а Вы с помощью какой функции выводите эти нормализованные значения? :) - А, понял. Прочтение из файла. В примере из Справочника функция Print() просто выводит число "как оно есть".

wtvirtual:
Допустим, что не только данная функция, но и все другие также "нормализуют". И как тогда такое вот значение подавать в виде цен в отложенный ордер?

 Вот именно в таком виде и подавать. Для ордера что требуется? - Нормализованные цены. Вот мы их нормализуем и подаём. А как выглядят эти нормализованные цены при распечатке - уже не наша проблема :)

Более того, если Вы выводите "цены текущего таймфрейма", значит вот именно такие цены с большим количеством знаков после запятой и приемлемы на сервере в качестве нормализованных. ..Это уже как бы мой вывод, но контраргументов не найду.

 
wtvirtual:

Здравствуйте.

Столкнулся вот с такой проблемой, совершенно мне непонятной. Объясните плиз, почему в данном случае NormalizeDouble() не всегда работает?

Записываю в файл цены и другие данные текущего таймфрейма. Около 10 процентов от всех записей составляют строки вида:

1971.01.07,00:00,0.5368000000000001,0.5368000000000001,0.5368000000000001,0.5368000000000001,1

Результат не зависит от порядка нормализации, подставляю в функцию 1, 2, 3, 4, 5, Digits - всё без разницы. Где засада?

Объяснить можно так, попробуйте записать число 1/3 в десятичном виде - не выйдет (не хватит бумаги, пасты и жизни).
Рано или поздно Вы согласитесь на небольшую неточность и округлите значение.
Примерно тоже самое происходит и с вещественными числами записанными в двоичном виде (как их представляет компьютер).
Если нет возможности представить число с помощью мантисы в 52 бита (например 0.53680) появляется "небольшая" неточность...
 

 Добрый день! подскажите пожалуста, как, каким типом правильно обьявить переменную? Вот примерная накидка функции.

string OrderType() {
string Si="";
POSITION_TYPE Type;bool Bull=false;
Bull =PositionGetInteger(POSITION_TYPE,Type);
if ( Bull ) {
if ( Type==POSITION_TYPE_BUY) Si="OP_BUY";
if ( Type==POSITION_TYPE_SELL) Si="OP_SELL";
return (Si); }

ORDER_TYPE ORType;
Bull =OrderGetInteger(ORDER_TYPE,ORType);
if ( Bull ) {
if ( Type==ORDER_TYPE_BUY_LIMIT) Si="OP_BUY_LIMIT";
if ( Type==ORDER_TYPE_SELL_LIMIT) Si="OP_SELL_LIMIT";
if ( Type==ORDER_TYPE_BUY_STOP) Si="OP_BUY_STOP";
if ( Type==ORDER_TYPE_SELL_STOP) Si="OP_SELL_STOP";
return (Si); }

}

Может, в ней вообще что-то не так, я например еще не пробовал имено таким образом получать значения функций  PositionGetInteger и  OrderGetInteger. 

 
Dimka-novitsek:

 Добрый день! подскажите пожалуста, как, каким типом правильно обьявить переменную? Вот примерная накидка функции.

Может, в ней вообще что-то не так, я например еще не пробовал имено таким образом получать значения функций  PositionGetInteger и  OrderGetInteger. 

О какой переменной идёт речь?
 
POSITION_TYPE Type   Ох комп тормозит, чуть не  через 40 секунд смог вставить!
Причина обращения: