не пойму, где собака порылась (кодинг) - страница 2

 

Делай-делай, как я!... Йоу...

//+----------------------------------------------------------------------------+
//|  Установка значка на графике                                               |
//|  Параметры:                                                                |
//|    cd - код значка                                                         |
//|    cl - цвет значка                                                        |
//|    nm - наименование               ("" - время открытия текущего бара)     |
//|    t1 - время открытия бара        (0  - текущий бар)                      |
//|    p1 - ценовой уровень            (0  - Bid)                              |
//|    sz - размер значка              (0  - по умолчанию)                     |
//+----------------------------------------------------------------------------+
void SetArrow(int cd, color cl,
              string nm="", datetime t1=0, double p1=0, int sz=0) {
  if (nm=="") nm=DoubleToStr(Time[0], 0);
  if (t1<=0) t1=Time[0];
  if (p1<=0) p1=Bid;
  if (ObjectFind(nm)<0) ObjectCreate(nm, OBJ_ARROW, 0, 0,0);
  ObjectSet(nm, OBJPROP_TIME1    , t1);
  ObjectSet(nm, OBJPROP_PRICE1   , p1);
  ObjectSet(nm, OBJPROP_ARROWCODE, cd);
  ObjectSet(nm, OBJPROP_COLOR    , cl);
  ObjectSet(nm, OBJPROP_WIDTH    , sz);
}
 
KimIV:

Делай-делай, как я!... Йоу...


А вот и наш спаситель вернулся, с неистощаемым запасом кода на все случаи жизни:)
 
xnsnet:
Profi_R:
все уже давно и не раз смотрено
цикл выполняется пока условие истинно
[quote]Если выражение истинно, то оператор выполняется до тех пор, пока выражение не станет ложным. Если выражение ложно, то управление передается следующему оператору.

while(выражение)

оператор;
[/quote]
ObjectCreate и ObjectSet возвращают истину при успеншном выполнении
[quote]Создание объекта с указанным именем, тип и начальные координаты в указанном подокне графика. Число координат, связываемых с объектом, может быть от 1 до 3 в зависимости от типа. При успешном создании объекта функция возвращает TRUE, иначе FALSE.[/quote]

[quote]Изменение значения указанного свойства объекта. В случае успеха функция возвращает TRUE, иначе FALSE. [/quote]
вот когда все выполняется успешно цикл должен прерваться

Объясните для чего вам все это надо? для индикатора например, он все равно при непосредственной инициализации не всегда может получить дескриптор окна. Или для пользователя, который может удалить этот объект?

в индикаторе объекты наношу
 
xnsnet:
А вот и наш спаситель вернулся, с неистощаемым запасом кода на все случаи жизни:)
эээ... ммм... меня куда-то посылали?
 
а если по каким-то причинам ObjectCreate или ObjectSet возвратят false ?
 
Profi_R:

в индикаторе объекты наношу


Ясно, проблемма я так понимаю решена, на всякий случай можно проверять наличие дескриптора окна WindowHandle( Symbol(), Period() ) > 0, так как с этим может быть связана проблемма отсутствия объектов, насколько я правельно помню:) Мои надежды связывались с тем что эту проблемму когда-нибудь устранят, а до сих пор индикаторы запускаются без объектов и лишь потом дорисовываются, при следующих вызовах, по всей видимости в MQL4 это до конца существования терминала, возможно в MT5 не будет таких проблем.

KimIV Гы гы:)))

 
KimIV Гы гы:)))
вовсе не гы, гы, проблема заключалась в том что была попытка создать уже созданный объект, и потому происходило зацикливание
   if( ObjectFind(o_name)<0 )
   {
      while( !ObjectCreate(o_name,OBJ_ARROW,0,Time[ibar],lprice) )
      {
      }
      while( !ObjectSet(o_name,OBJPROP_TIME1,Time[ibar]) )
      {
      }
      while( !ObjectSet(o_name,OBJPROP_PRICE1,lprice) )
      {
      }
      while( !ObjectSet(o_name,OBJPROP_COLOR,o_color) )
      {
      }
      while( !ObjectSet(o_name,OBJPROP_ARROWCODE,6) )
      {
      }
   }
такой код, и все  пучком :)
 
Profi_R:вовсе не гы, гы

Rustam, мы о своём... извини за оффтоп...

Profi_R:а если по каким-то причинам ObjectCreate или ObjectSet возвратят false ?
За критерий истины, я считаю практику. Так вот на практике у меня ни разу такого не было. Избыточная надёжность ни к чему, я считаю. Всего в меру должно быть.
 
в принципе я тоже не сталкивался, но как-то привык все по полочкам раскладывать
 
KimIV:
Profi_R:вовсе не гы, гы

Rustam, мы о своём... извини за оффтоп...

Profi_R:а если по каким-то причинам ObjectCreate или ObjectSet возвратят false ?
За критерий истины, я считаю практику. Так вот на практике у меня ни разу такого не было. Избыточная надёжность ни к чему, я считаю. Всего в меру должно быть.

Согласен:) Практика, практика и еще раз практика:) Все нормально, ненужное само собой отбросится:)