Вопрос к знатокам MQL - страница 4

 
Абалдеть... Влез в "Вопрос к знатокам MQL"... Извиняйте, если что, из меня программер, как из д.... пуля :) но всегда объективен !  :)
 
leonid553:

Понял вроде. Имя обьекта я задаю в функции.

ObjectCreate(name+ WindowExpertName(), OBJ_LABEL, WindowFind(WindowExpertName()), 0, 0);


дело не в объектах..

в init() пишется

IndicatorShortName("CC-STOKS ");

а в функции отрисовки используете WindowExpertName() в качестве имени индикатора..

вы уж определитесь, батенька (извините за фамильярность), либо индикатор у вас называется "CC-STOKS " (суть псевдоним), либо по имени эксперта..

 

А я о своем...

Ну не вижу проверку на наличие объекта.

 

Удалил строку IndicatorShortName("CC-STOKS ");

Вроде бы работает теперь. 

//------------------------------------------ 

Проверку сделал.

 string info =ObjectFind("Symbol1+WindowExpertName()");
     IndicatorShortName(info);     

Коммент возвращает "-1"

Причем, - вне зависимости от того, если ли "псевдоним" или он удален. 

 

Да, всё норм. работает...

Благодарю всех, кто помогал и отвечал на вопросы!

 

 

 

я слегка пивца выпил, но вы мне мозг выносите..

сделайте для определенности происходящего так..


либо

1. нет шортнейма и

static int WINDOW = -1;

int start(){
   if (WINDOW == -1) WINDOW = WindowFind( WindowExpertName() );
}

ваш init() как есть

либо задаем шортнейм в вашем int()

string short = "CC-STOKS";

int init(){
   IndicatorShortName( short );
   // остальное прочее
}

int start(){
   if (WINDOW == -1) WINDOW = WindowFind( short );
}

и далее при отрисовке объектов используем WINDOW в качестве номера подокна

ObjectCreate(name + WindowExpertName(), OBJ_LABEL, WINDOWS, 0, 0);

в общем функцию object лучше оформить в таком виде

void object(string name, int window, string text, color col, int corner,
            int x, int y, bool back = false, int fontsize = 9, 
            string fontname = "Tahoma") {
   if (ObjectFind(name)==-1)      
      ObjectCreate(name, OBJ_LABEL, window, 0, 0);
   ObjectSetText(name, text, fontsize, fontname, col);
   ObjectSet(name, OBJPROP_CORNER, corner);
   ObjectSet(name, OBJPROP_BACK,back);
   ObjectSet(name, OBJPROP_XDISTANCE, x);
   ObjectSet(name, OBJPROP_YDISTANCE, y);     
}

так все ключевые атрибуты передаются в качестве параметров, и кстати имя объекта имеет смысл формировать вне функции..

 
Ок. Вникаю в ваши указания ...
 

Добрый день. Пож. подскажите.

Можно ли в окне индикатора отрисовать треугольник? Если можно, то как задать координаты?

В справке mql не смогла  найти способа задания координат треугольника для окна индикатора. 

 
Rita:

Добрый день. Пож. подскажите.

Можно ли в окне индикатора отрисовать треугольник? Если можно, то как задать координаты?

В справке mql не смогла найти способа задания координат треугольника для окна индикатора.


ObjectCreate(имя_объекта, OBJ_TRIANGLE, 0, вершина1_время, вершина1_цена, вершина2_время, вершина2_цена, вершина3_времявершина3_цена);
Если нужно не в главном подокне, то вместо 0 использовать номер соответствующего подокна: https://docs.mql4.com/ru/windows/WindowFind
 


 

ObjectCreate(name, OBJ_TRIANGLE,  WindowFind(WindowExpertName(),  Time[-1],вершина1_цена,

                                                                                                         Time[-5],вершина2_цена,

                                                                                                          Time[-7],вершина3_цена,     );

//--------------------------------------------------------------------------------------------------------------------------  

Координаты вершин треугольника по времени я задала (к  примеру - по времени  откр. будущих баров). Дальше мне не совсем понятно. На шкале окна индикатора отображается не цена. А градация значений индикатора. 

Мне же нужно "поставить" треугольник с жестко закрепленными вершинами, вне зависимости от цены. 

И желательно,  жестко закрепить его в правом (или пр.нижнем) углу. 

И мне не понятно как задать  координаты его вершин - по вертикальной оси шкалы индикатора :

 


      

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