[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 314

 
Не совсем понял? Когда рисую индикатор Kon в окне, он отлично работает. Поясните...
 
kon12 >>:
Не совсем понял? Когда рисую индикатор Kon в окне, он отлично работает. Поясните...

когда вы рисуете в окне, у вас отображаются столбики гистограммы либо оливкового, либо зеленого цвета. при этом первый соответствует буферу up, а второй dn. если на 0 баре нарисован только dn, а вы обращаетесь к индикатору iCustom(0,0,"Kon",10,0,0), т.е. параметр mode равен 0 (посмотрите у вас 0 - это буфер up - SetIndexBuffer(0,up);), то результат вызова функции будет скорее всего EMPTY_VALUE.


Так понятнее?

 

Пробовал менять номер буфера и на 1 и 2 - не помогает

 

проверьте, совпадает ли строка "Kon" в вызове иКастом с именем файла mq4, в том числе регистр символов

а какое вообще значение выводит функция?

 

Вопрос совсем простой. Пытаюсь обратиться к индикатору OsMA, который есть в стандартном наборе пользовательских индикаторов. Хочу в окне индикаторов просто нарисовать линию этого индикатора. Индикатор OsMA имеет параметры 12,26,9 и рисуется по буферу 0. Что не правильно в коде? В окне индикатора рисуется линия 0 и все.

#property indicator_separate_window
#property indicator_buffers 1
#property indicator_level1 0.0
#property indicator_color1 Olive

double z;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   SetIndexBuffer(0,z);
   SetIndexStyle(0,DRAW_HISTOGRAM);
    return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  { z= iCustom(NULL,0,"OsMA",12,26,9,0,0); 
  //----
   return(0);
  }
 
kon12 >>:

Вопрос совсем простой. Пытаюсь обратиться к функции OsMA, которая есть в стандартном наборе пользовательских индикаторов. Хочу в окне индикаторов просто нарисовать линию этого индикатора. Индикатор OsMA имеет параметры 12,26,9 и рисуется по буферу 0. Что не правильно в коде? В окне индикатора рисуется линия 0 и все.

не, так не пойдет.

z - это массив и записывать в него данные надо поэлементно, делается это как правило в цикле. Например:

for(i=100;i>=0;i--)

{

z[i]= iCustom(NULL,0,"OsMA",12,26,9,0,i);

}

 
Ура, получилось! Спасибо за помощь, первые шаги самые трудные...
 

Еще вопрос по моей теме. Допустим я рисую на графике кривую, например МА. Затем использую пользовательский индикатор, в котором задействована эта МА через функцию iCustom. Можно ли связать их так, чтобы при изменении периода МА на графике автоматически изменялся период МА в пользовательском индикаторе?

 

Подскажите, я работаю на графике дней.

И хочу обратится к данным по минуткам. Они у меня обновляются или там старые данные?

 

Вопрос - как это работает (оптимизация Индикаторов):


if(MA_Fast[i+1]>MA_Slow[i+1]) {
   string RectangleSell = StringConcatenate("RECTANGLE_", StartBoxTime);
   ObjectDelete(RectangleSell);
   ObjectCreate(RectangleSell, OBJ_RECTANGLE, 0,  StartBoxTime,BoxLow,  EndBoxTime,BoxHigh);
   ObjectSet(RectangleSell, OBJPROP_STYLE, STYLE_SOLID);
   ObjectSet(RectangleSell, OBJPROP_RAY, False);
   ObjectSet(RectangleSell, OBJPROP_WIDTH, 1);
   ObjectSet(RectangleSell, OBJPROP_BACK , True);
   ObjectSet(RectangleSell, OBJPROP_COLOR, ColorSell);
}


Правильно ли я понимаю что с каждым новым тиком тот же самый прямоугольник

(одни и те же размеры при равном количестве баров) будет удаляться и перерисовываться?

СтОит ли в таком случае добавить проверку на количество баров (если баров стало больше, то только тогда и перерисовываем)

чтобы разгрузить CPU компьютера или выигрыш будет минимальный и не стоит с этим возиться?