Скачать MetaTrader 5

Борюсь с объектом Fibo

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Поиск в документации доступен через MetaTrader 5. Ищи и изучай!
Forex Trader
114255
Forex Trader 2006.07.11 10:00 
Проблема следующая:

В программе создаю объект

ObjectCreate("fibo1", OBJ_FIBO, 0, x1, y1, x1, y2);

Некоторые свойства нового объекта удается установить сразу

ObjectSet("fibo1",OBJPROP_COLOR,CLR_NONE); // без цвета
ObjectSet("fibo1",OBJPROP_LEVELCOLOR,col); // цвет уровней
ObjectSet("fibo1",OBJPROP_RAY,0); // без луча

Некоторые, например описатели уровней , только со второго прогона

ObjectSetFiboDescription("fibo1",i,""); // без описания

А некоторые вообще не работают, например попытка установить количество уровней

ObjectSet("fibo1",OBJPROP_FIBOLEVELS,i);

приводит к тому,что объект Fibo вообще сворачивается в один нулевой уровень...

Прошу разработчиков добавить в описание,как правильно употреблять эти свойства или
исправить, если это ошибки...
MetaQuotes Software Corp.
Модератор
181151
MetaQuotes Software Corp. 2006.07.11 10:19  
Укажите полный код создания объекта, пожалуйста.
Forex Trader
114255
Forex Trader 2006.07.11 11:38  
Укажите полный код создания объекта, пожалуйста.


вот простой пример

//+------------------------------------------------------------------+
//| Custom Moving Average.mq4 |
//| Copyright © 2005, MetaQuotes Software Corp. |
//| http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2005, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net/"

#property indicator_chart_window

int i,s,x1;
double y1,y2;
color col=Black;


//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
//---------------------------------------------------------
int init()
{

fibo();

return(0);
}
//---------------------------------------------------------
int deinit()
{
ObjectDelete("fibo1");
return(0);
}
//---------------------------------------------------------
int start()

{

fibo();

return(0);
}
//+------------------------------------------------------------------+

int fibo()

{
x1=Time[0];
y1=Open[0];
y2=Open[30];

ObjectCreate("fibo1", OBJ_FIBO, 0, x1, y1, x1, y2);
ObjectSet("fibo1",OBJPROP_COLOR,CLR_NONE); // без цвета
ObjectSet("fibo1",OBJPROP_LEVELCOLOR,col); // цвет уровней
ObjectSet("fibo1",OBJPROP_RAY,0); // без луча
//ObjectSet("fibo1",OBJPROP_FIBOLEVELS,6); это не работает?!
s=ObjectGet("fibo1",OBJPROP_FIBOLEVELS);
for (i=0;i<=s;i++)
{
ObjectSetFiboDescription("fibo1",i,""); // это работает со второго прогона?!
}

return(0);
}
Forex Trader
114255
Forex Trader 2006.07.11 12:46  


Спасибо...
с описанием уровней теперь понятно...
еще бы вот с количеством уровней разобраться...
Forex Trader
114255
Forex Trader 2006.07.11 13:26  
еще бы вот с количеством уровней разобраться...

10 дней назад обсуждали здесь: "Выложен исправленный билд 194 от 23 июня"
===
Объект FIBO создаётся с нулевым количеством уровней. То есть, объект "сырой" и требует установок.

Если Вы сразу после создания этого объекта вызовите функцию ObjectsRedraw, то при перерисовке у объекта с нулевым количеством уровней будут созданы уровни по умолчанию.

Либо установите свойство OBJPROP_FIBOLEVELS. И уже после этого устанавливайте нужные значения уровней
===
Forex Trader
114255
Forex Trader 2006.07.11 13:57  
еще бы вот с количеством уровней разобраться...

10 дней назад обсуждали здесь: "Выложен исправленный билд 194 от 23 июня"
===
Объект FIBO создаётся с нулевым количеством уровней. То есть, объект "сырой" и требует установок.

Если Вы сразу после создания этого объекта вызовите функцию ObjectsRedraw, то при перерисовке у объекта с нулевым количеством уровней будут созданы уровни по умолчанию.

Либо установите свойство OBJPROP_FIBOLEVELS. И уже после этого устанавливайте нужные значения уровней
===

ObjectSet("fibo1",OBJPROP_FIBOLEVELS,6); //это не работает ?! ?????? !!!!!!!!!!

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

Forex Trader
114255
Forex Trader 2006.07.11 14:14  
Какие дальнейшие действия? Я не вижу ни одной строчки, задающей значение для хотя бы одного уровня.
Например:
ObjectSet("fibo1", OBJPROP_FIRSTLEVEL+2,161.8);
Forex Trader
114255
Forex Trader 2006.07.11 16:05  
Какие дальнейшие действия? Я не вижу ни одной строчки, задающей значение для хотя бы одного уровня.
Например:
ObjectSet("fibo1", OBJPROP_FIRSTLEVEL+2,161.8);




//+------------------------------------------------------------------+
//| Custom Moving Average.mq4 |
//| Copyright © 2005, MetaQuotes Software Corp. |
//| http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2005, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net/"

#property indicator_chart_window

int i,s,z,x1;
double y1,y2;
color col=Black;


//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
//---------------------------------------------------------
int init()
{

fibo();

return(0);
}
//---------------------------------------------------------
int deinit()
{
ObjectDelete("fibo1");
return(0);
}
//---------------------------------------------------------
int start()

{

fibo();

return(0);
}
//+------------------------------------------------------------------+

int fibo()

{
x1=Time[0];
y1=Open[0];
y2=Open[30];

ObjectCreate("fibo1", OBJ_FIBO, 0, x1, y1, x1, y2);
ObjectSet("fibo1",OBJPROP_COLOR,CLR_NONE); // без цвета
ObjectSet("fibo1",OBJPROP_LEVELCOLOR,col); // цвет уровней
ObjectSet("fibo1",OBJPROP_RAY,0); // без луча
ObjectSet("fibo1",OBJPROP_FIBOLEVELS,6); //это не работает?!

ObjectSet("fibo1",OBJPROP_FIRSTLEVEL+0,0.0);
ObjectSetFiboDescription("fibo1",z,"0");
ObjectSet("fibo1",OBJPROP_FIRSTLEVEL+1,23.6);
ObjectSetFiboDescription("fibo1",z,"1");
ObjectSet("fibo1",OBJPROP_FIRSTLEVEL+2,38.2);
ObjectSetFiboDescription("fibo1",z,"2");
ObjectSet("fibo1",OBJPROP_FIRSTLEVEL+3,50.0);
ObjectSetFiboDescription("fibo1",z,"3");
ObjectSet("fibo1",OBJPROP_FIRSTLEVEL+4,61.8);
ObjectSetFiboDescription("fibo1",z,"4");
ObjectSet("fibo1",OBJPROP_FIRSTLEVEL+5,76.4);
ObjectSetFiboDescription("fibo1",z,"5");
ObjectSet("fibo1",OBJPROP_FIRSTLEVEL+6,100.0);
ObjectSetFiboDescription("fibo1",z,"6");

return(0);
}

Что не так?
Forex Trader
114255
Forex Trader 2006.07.11 16:54  
Несколько вещей не так.

Во-первых, оформляйте исходный код в тегах code
Во-вторых, уровней у Вас 7, а не 6.
В-третьих, вместо z вставляйте порядковый номер уровня от 0 до 6.

При чёрно-белой схеме всё нормально. (цвет уровней - чёрный)
Forex Trader
114255
Forex Trader 2006.07.11 17:25  
Кстати, обнаружили интересный эффект. При перекомпиляции пользовательского индикатора и последующим запуском инициализации в функции init оказываются недоступны текущие таймсерии.
12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий