Вопросы от "чайника" - страница 135

 
Cmu4:

Объем сокращаю встречным ордером, пишу в нём коммент, но коммент в нём и остаётся, не "цепляется" к позиции...

Самое интересное, что если ордер отсылается с комментарием в направлении позиции, то она получает этот комментарий, если против - то нет. 

Может, это баг? 

Посмотрел у себя в режиме визуализации и увидел, что иногда комментарии "цепляются", а иногда нет. Пока ничего не могу сказать (у меня это не критично). Понаблюдайте ещё и напишите в Сервисдеск, если найдётся какая-то закономерность для воспроизведения.
 
tol64:
Посмотрел у себя в режиме визуализации и увидел, что иногда комментарии "цепляются", а иногда нет. Пока ничего не могу сказать (у меня это не критично). Понаблюдайте ещё и напишите в Сервисдеск, если найдётся какая-то закономерность для воспроизведения.

Уже написал. Хм, а у меня всегда не цепляются. И с "выциплением" коммента какая-то чертовщина. Уффф..

Кстати, вот простенькая функция по получению коммента последней сделки (в комментах только цифры) по позиции, она верная? А то, может быть, я не так "выципляю"..

double OrderLastMy()
{HistorySelectByPosition(pos_id);
 int total=HistoryDealsTotal();
 double Comments = StringToDouble(HistoryDealGetString(total,DEAL_COMMENT));
 if (Comments!=0)
  {Print("comment = ", Comments));
   return(Comments);
  }
 else return(0);
 }
 
Cmu4:

Уже написал. Хм, а у меня всегда не цепляются. И с "выциплением" коммента какая-то чертовщина. Уффф..

Кстати, вот простенькая функция по получению коммента последней сделки (в комментах только цифры) по позиции, она верная? А то, может быть, я не так "выципляю"..

double OrderLastMy()
{HistorySelectByPosition(pos_id);
 int total=HistoryDealsTotal();
 double Comments = StringToDouble(HistoryDealGetString(total,DEAL_COMMENT));
 if (Comments!=0)
  {Print("comment = ", Comments));
   return(Comments);
  }
 else return(0);
 } 

У функции HistoryDealGetString() первым параметром должен идти тикет сделки, а у Вас пока что указывается количество сделок в истории.

 
Yedelkin:

У функции HistoryDealGetString() первым параметром должен идти тикет сделки, а у Вас пока что указывается количество сделок в истории.

Подправил, но что-то всё-равно не работает.  Господа, подскажите пожалуйста, а то, что-то я запутался...

double OrderLastMy()
{HistorySelectByPosition(pos_id);
 int total=HistoryDealsTotal();
 int ticket = HistoryDealGetTicket(total);
 double Comments = StringToDouble(HistoryDealGetString(ticket,DEAL_COMMENT));
 if (Comments!=0)
  {Print("commentttt = ", ticket);
   return(Comments);
  }
 else return(0);
 }
 
 
 
Cmu4:

Подправил, но что-то всё-равно не работает.  Господа, подскажите пожалуйста, а то, что-то я запутался...

 Всё в порядке, идём дальше :)

Вот в этой строчке

int ticket = HistoryDealGetTicket(total);
не учтено, что нумерация элементов в списках (в том числе, нумерация сделок в списке сделок)  начинается  с "0", а не  с  "1". Поэтому, указывая в качестве "номера сделки в списке сделок" значение total, Вы указываете несуществующий номер. См. пример в Справочник MQL5 / Торговые функции / HistoryDealGetTicket.   
 
Yedelkin:

 Всё в порядке, идём дальше :)

Вот в этой строчке

не учтено, что нумерация элементов в списках (в том числе, нумерация сделок в списке сделок)  начинается  с "0", а не  с  "1". Поэтому, указывая в качестве "номера сделки в списке сделок" значение total, Вы указываете несуществующий номер. См. пример в Справочник MQL5 / Торговые функции / HistoryDealGetTicket.   
Спасибо вам большое, добавив -1, всё решилось (надеюсь, что решилось - пока проверил через принт). :)
 
 Странно...
   datetime Arr[], time1;
   int t;

   t=CopyTime(_Symbol,_Period,0,1,Arr);
   time1=Arr[0];
 В данном варианте кода Print(time1) ничего не выводит, а в этом:
   datetime Arr[], time1;

   CopyTime(_Symbol,_Period,0,1,Arr);
   time1=Arr[0];

- выводит.

  Это баг или фича?

 
Может, t следует определить, как datetime?
 
Cmu4:
Может, t следует определить, как datetime?

 t не может быть datetime, внимательно читаем справку по CopyTime:

"Возвращаемое значение:

Количество скопированных элементов массива либо -1 в случае ошибки. "

Если интуитивно, то такое ощущение, будто отрабатывается return этой функции с благополучным присвоением возвращаемого значения переменной t... и на этом происходит затык, словно в Arr уже ничего копироваться не хочет. Но по идее, мне казалось, что сперва происходит копирование в массив, а уж потом присвоение переменной t возвращаемого количества скопиорванных элементов. А не тут-то было...
 
alph:

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

Написал советник, всё работает. Но сегодня при компиляции выдаёт ошибку в строке открытия  ' request.type_filling = ORDER_FILLING_AON;'-undeclared identifer и implicit enum conversion

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

Заранее спасибо.

Если кликните на ссылку ORDER_FILLING_AON, то увидите, что название поменялось просто.
Причина обращения: