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

 

Привет всем!

Столкнулся с таким багом (или может я чего недопонимаю)

При просмотре истории за месяц, отображаются адекватные данные, т.е. заработано 740, своп -250

В то же время когда смотрю за весь период, то заработано 500, своп почти такой же

Вот и не пойму как такое может быть когда заработано за весь период меньше чем заработано за месяц

Если надо, могу отчеты по истории приложить 

 
tol64:

Поэтому выставить 5-ый отложенный ордер Buy Stop при открытой позиции объёмом в 3 лота и имеющихся 4-ёх ордерах Buy Stop по 3 лота каждый (при ограничении 15 лот), не должно получаться.

В общем-то да - с точки зрения того, что описано в хелпе.

Но по логике - не обязательно. На биржевых рынках, в стаканах есть только лимитные ордера, а  стоповые хранятся на сервере брокера и имеют два параметра - цена активации ("Цена" в МТ) и цена выставляемой лимитной заявки (худшая цена, по которой готовы осуществить сделку). Что-то вроде BuyStopLimit и SellStopLimit в MT5, только Limit может равнятся цене стопа или быть выше (для BuyStopLimit) или ниже (для SellStopLimit). На биржевых рынках выставление Limit выше (для покупок) лучшего аска приводит к сделке, а в MT так сделать нельзя. Таким образом, на биржевых рынках, особенно недоразвитых (например, Украинская Биржа), относительно нередко (а особенно в день истечения квартального фьючерса на индекс в промежутке 16:30-16:35) стопы не успевают сработать и стакан заполняется лимитными ордерами, которые бы при обычных условиях, сразу бы привели к исполнению.

 Так вот - Limit в стакане - твёрдое обязательство купить/продать (если денег вдруг стало мало, брокер может снять ордер, но РАНЬШЕ, чем к нему придёт очередь к исполнению), а  STOP - просто запись на сервере брокера, поэтому в момент достижения цены активации брокер может оценить свободные средства и решить - выставлять лимитник или нет. Поэтому и говорю, что для лимитов должны выполняться ограничения по кол-ву, а для стопов, в теории, - не обязательно.

 
Yedelkin:

Добрались до DoubleToString? :) 

 А, посмотрите NormalizeDouble:

 Нужно иметь в виду, что нормализованное число при выводе в Журнал с помощью Print() может содержать большее количество знаков после запятой, чем вы ожидаете. 

   double pi=M_PI;
   Print("pi=",DoubleToString(pi,16));
      
   double pi_3=NormalizeDouble(M_PI,3);
   Print("NormalizeDouble(pi,3) = ",DoubleToString(pi_3,16))
   ;
   double pi_8=NormalizeDouble(M_PI,8);
   Print("NormalizeDouble(pi,8) = ",DoubleToString(pi_8,16));
   
   double pi_0=NormalizeDouble(M_PI,0);
   Print("NormalizeDouble(pi,0) = ",DoubleToString(pi_0,16));
/*
   Результат:
   pi= 3.1415926535897931
   NormalizeDouble(pi,3)= 3.1419999999999999                          <-----------
   NormalizeDouble(pi,8)= 3.1415926499999998                          <-----------
   NormalizeDouble(pi,0)= 3.0000000000000000
*/

Ничего не смущает? 

 
victorg:

 А, посмотрите NormalizeDouble:

Ничего не смущает?    

Не-а, ничего не смущает. В Вашем примере

void OnStart()
  {
  double a=2000000.0/3.0;
  Print(DoubleToString(a,30));
  }
речи вообще не шло про применение функции NormalizeDouble() и нормализованных чисел. Соответственно, моя реплика "Добрались до DoubleToString? :)" сопровождалась без тени смущения цитатой из описания функции DoubleToString(). Актуальность же этой цитаты пока никто не опроверг. 
 
Yedelkin:

Не-а, ничего не смущает. В Вашем примере

речи вообще не шло про применение функции NormalizeDouble() и нормализованных чисел. Соответственно, моя реплика "Добрались до DoubleToString? :)" сопровождалась без тени смущения цитатой из описания функции DoubleToString(). Актуальность же этой цитаты пока никто не опроверг. 

Вообще то я не про Ваш коммент, а про док по NormalizeDouble().

 
notused:

В общем-то да - с точки зрения того, что описано в хелпе.

Но по логике - не обязательно. На биржевых рынках, в стаканах есть только лимитные ордера, а  стоповые хранятся на сервере брокера и имеют два параметра - цена активации ("Цена" в МТ) и цена выставляемой лимитной заявки (худшая цена, по которой готовы осуществить сделку). Что-то вроде BuyStopLimit и SellStopLimit в MT5, только Limit может равнятся цене стопа или быть выше (для BuyStopLimit) или ниже (для SellStopLimit). На биржевых рынках выставление Limit выше (для покупок) лучшего аска приводит к сделке, а в MT так сделать нельзя. Таким образом, на биржевых рынках, особенно недоразвитых (например, Украинская Биржа), относительно нередко (а особенно в день истечения квартального фьючерса на индекс в промежутке 16:30-16:35) стопы не успевают сработать и стакан заполняется лимитными ордерами, которые бы при обычных условиях, сразу бы привели к исполнению.

 Так вот - Limit в стакане - твёрдое обязательство купить/продать (если денег вдруг стало мало, брокер может снять ордер, но РАНЬШЕ, чем к нему придёт очередь к исполнению), а  STOP - просто запись на сервере брокера, поэтому в момент достижения цены активации брокер может оценить свободные средства и решить - выставлять лимитник или нет. Поэтому и говорю, что для лимитов должны выполняться ограничения по кол-ву, а для стопов, в теории, - не обязательно.

Спасибо за обстоятельное объяснение.

Валерий, а Вы не пробовали реализовать авто-стратегию в стакане MT5? Я около месяца назад пробовал и у меня что-то не получилось, а на форуме так никто и не ответил. В итоге я так и не понял, баг это или недопонимание с моей стороны. Пролейте свет. :)

 

Добрый день!

Подскажите,  имею индикатор iCustom в обычном теле программы отрабатывает нормально хендел получает, все работает.

Но если я его помещаю в EX5-библиотеку, то получаю хендел= -1 и основная программа выдает ошибку вызова индикатора:

"loading of DZMACD EURGBP,M15 failed"
"cannot load custom indicator 'DZMACD' [4002]"

При этом стандартные индикаторы например iMA или iMACD отрабатывают в этой же библиотеке ex5 нормально, хендел получают.

Не могу понять чего-то не так делаю, или это баг?

Документация по MQL5: Технические индикаторы / iCustom
Документация по MQL5: Технические индикаторы / iCustom
  • www.mql5.com
Технические индикаторы / iCustom - Документация по MQL5
 
В структуре  MqlDateTime

int day;  // день

имеется ввиду день месяца?
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура даты
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура даты
  • www.mql5.com
Стандартные константы, перечисления и структуры / Структуры данных / Структура даты - Документация по MQL5
 
victorg:

Вообще то я не про Ваш коммент, а про док по NormalizeDouble().

Вообще-то сообщение сформулировано было так:

victorg:

 

Yedelkin:

Добрались до DoubleToString? :) 

А, посмотрите NormalizeDouble:

Ничего не смущает? 

 Т.е. шло прямое цитирование именно "моего коммента" с предложением "посмотреть что-то там ещё" и вопросом "не смущает ли?".

Хотели бы изложить только результаты новых исследований в виде "...про док по NormalizeDouble()" - так бы и написали, не цитируя лишней информации. Наверное :/ 

Поскольку же в Вашем сообщении была использована именная ссылка и именно на мою реплику, - был вынужден пояснить, что функция NormalizeDouble() не имела никакого отношения ни к моей реплике, ни к первоначальному Вашему сообщению, которое я позволил себе прокомментировать.

 
Fia:

Добрый день!

Подскажите,  имею индикатор iCustom в обычном теле программы отрабатывает нормально хендел получает, все работает.

Но если я его помещаю в EX5-библиотеку, то получаю хендел= -1 и основная программа выдает ошибку вызова индикатора:

"loading of DZMACD EURGBP,M15 failed"
"cannot load custom indicator 'DZMACD' [4002]"

При этом стандартные индикаторы например iMA или iMACD отрабатывают в этой же библиотеке ex5 нормально, хендел получают.

Не могу понять чего-то не так делаю, или это баг?

С параметрами пользовательского индикатора в библиотеке всё в порядке?

ERR_WRONG_INTERNAL_PARAMETER

4002

Ошибочный параметр при внутреннем вызове функции клиентского терминала

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