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

 
bool CTrade::PositionClosePartial(const ulong ticket,const double volume,const ulong deviation,const string comment = NULL)
{
...
  m_request.comment = (comment == NULL) ? ::PositionGetString(POSITION_COMMENT) : comment;
...
 
fxsaber:

Нарушается уже существующая логика.

Вот так будет интереснее

bool CTrade::PositionClosePartial(const ulong ticket,const double volume,const ulong deviation,const string comment = "")
{
...
  m_request.comment = (comment == NULL) ? ::PositionGetString(POSITION_COMMENT) : comment;
...

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

Если явно передать NULL, то копируем существующий коммент

 
Slava:

Нарушается уже существующая логика.

Никто этой логикой не пользуется. Тем более, что она бажная.

 
Slava:

Нарушается уже существующая логика.

Вот так будет интереснее

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

Если явно передать NULL, то копируем существующий коммент

Посмотрите пожалуйста и 

bool CTrade::PositionClose(const string symbol,const ulong deviation)

в ней делается 10 (!!!) попыток закрыть позицию :( У меня бывали вот такие ситуации когда отлаживал (неттинг, реал, Открытие):

2019.01.28 16:58:11.764 57384742        Si-3.19 buy     in      1.00    66492   98591318        -1.03   0.00    0.00            Price=66493
2019.01.28 17:01:14.586 57384818        Si-3.19 sell    out     1.00    66503   98591566        0.00    0.00    11.00           
2019.01.28 17:01:14.598 57384819        Si-3.19 sell    in      1.00    66502   98591567        -1.03   0.00    0.00            
2019.01.28 17:04:16.067 57385000        Si-3.19 buy     out     1.00    66514   98591891        0.00    0.00    -12.00          

выделенная строка - это 2-ая попытка закрыть позицию :) И как видно по логам уже не совсем удачная

На данный момент пользуюсь:

bool CTrade::PositionClose(const ulong ticket,const ulong deviation)

Тут попытка закрыть позицию по коду уже одна. Видится правильным возложить на пользователя контроль факта закрытия позиции. 10 попыток - это не панацея

 
Slava:

Нарушается уже существующая логика.

Вот так будет интереснее

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

Если явно передать NULL, то копируем существующий коммент

А может наоборот удобней будет

bool CTrade::PositionClosePartial(const ulong ticket,const double volume,const ulong deviation,const string comment = NULL)
{
...
  m_request.comment = (comment == NULL) ? ::PositionGetString(POSITION_COMMENT) : comment;
...

Тогда кому надо, тот затрет пустым значением. А по умолчанию будет копироваться.

 

Уважаемые разработчики! 

Терминал обновился на 1983. В тестере стали лезть непонятные ошибки при создании графических объектов (создаю вертикальные линии и трендовые линии). В 1981 все было нормально.

Сейчас же получаю ошибки 4001.

Код создания:

//+------------------------------------------------------------------+
//| Создаем трендовую линию на чарте                                                                                    |
//+------------------------------------------------------------------+
void DrawTrendLine(const string id,// Строковый идентификатор
                   const datetime t1,         // Время первой точки линии
                   const datetime t2,         // Время второй точки линии
                   const double price,// Цена обеих точек линии
                   const color clr            // Цвет линии
                   )
  {
//--- Формируем имя линии
   const string name=_prefix+id+TimeToString(t1)+"_"+TimeToString(t2);
//--- Сбрасываем код последней ошибки
   ResetLastError();
//---
//Print( __FUNCTION__,": Создаем тренд-линию "+name+": t1 = "+TimeToString( t1 )+", t2 = "+TimeToString( t2 )+", price = "+DoubleToString( price ) );
//--- Создаем объект, проверяем создание
   if(ObjectCreate(0,name,OBJ_TREND,0,t1,price,t2,price))   // Если объект создан
     {
      //--- Меняем свойства линий
      ObjectSetInteger(0,name,OBJPROP_COLOR,clr);
      ObjectSetInteger(0,name,OBJPROP_BACK,true);
      ObjectSetInteger(0,name,OBJPROP_SELECTABLE,false);
      ObjectSetInteger(0,name,OBJPROP_SELECTED,false);
      ObjectSetInteger(0,name,OBJPROP_STYLE,STYLE_DOT);
      ObjectSetInteger(0,name,OBJPROP_RAY_LEFT,false);
      ObjectSetInteger(0,name,OBJPROP_RAY_RIGHT,false);
     }
   else                                                 // Если объект не создан
   Print(__FUNCTION__,": ОШИБКА #",GetLastError(),": Объект '"+name+"' не построен! t1 = "+TimeToString(t1)+", t2 = "+TimeToString(t2)+", price = "+DoubleToString(price));
  }
//+------------------------------------------------------------------+
//| Создаем вертикальную линию на чарте                              |
//+------------------------------------------------------------------+
void DrawVLine( const string id,         // Строковый идентификатор
               const datetime time      // Время
               )
  {
//--- Формируем имя линии
   const string name=_prefix+id+TimeToString(time);
//--- Сбрасываем код последней ошибки
   ResetLastError();
//--- Создаем объект, проверяем создание
   if(ObjectCreate(0,name,OBJ_VLINE,0,time,0))   // Если объект создан
     {
      //--- Меняем свойства линий
      ObjectSetInteger(0,name,OBJPROP_COLOR,_vLineClr);
      ObjectSetInteger(0,name,OBJPROP_BACK,true);
      ObjectSetInteger(0,name,OBJPROP_SELECTABLE,false);
      ObjectSetInteger(0,name,OBJPROP_SELECTED,false);
      ObjectSetInteger(0,name,OBJPROP_STYLE,STYLE_DOT);
     }
   else                                                 // Если объект не создан
   Print(__FUNCTION__,": ОШИБКА #",GetLastError(),": Объект '"+name+"' не построен! t1 = "+TimeToString(time));
  }
 
Также перестали отображаться комментарии в тестере.
 

Вопрос к разработчикам.

Из функции стандартной библиотеки mytrade.PositionClose(const string symbol,ulong deviation=ULONG_MAX)   отсутствует параметр комментарии:  const string comment=""

Это что, упущение ?

 

Похоже, что правильнее написать сюда:

https://www.mql5.com/ru/forum/302709#comment_10570043

Вопросы по проектам / папки Projects и Shared Projects
Вопросы по проектам / папки Projects и Shared Projects
  • 2019.02.08
  • www.mql5.com
Попытался начать работать с проектами, но что-то не ладится. Допустим, уже есть исходный файл с инклудами...
 
Уберите из Документации STATUS_TERMINAL_PATH.
Причина обращения: