Изменение цвета отдельной свечки (как?)

 

Доброго всем.


Подскажите, пожалуйста, каким образом средствами MQL4 можно изменить цвет произвольной свечки на графике? Существует ли такая возможность вообще? Курю-курю мануалы и доки, но ничего не нахожу. Или может быть есть возможность нарисовать свечку поверх графика? Пытался делать прямоугольниками - ничего не получилось - перекрывает рядомстоящие свечки. Может уже кто-то делал - ткните носом, а? Не то уже мозг наизнанку.

 

вот этих настроек вам недостаточно ?

 
Да, к сожалению, не достаточно. Это настройки для всего графика. И они статичны :-( Мне же надо программно изменить цвет любой свечки на отличный от заданных для всего графика.
 
тогда програмно рисовать по верх свечи линию. Покопайтесь в код байс там обязательно есть примеры
 

для рисования одного отрезкка линии на основном окне нужно юзать два буфера со стилем DRAW_HISTOGRAM

порядковые номера буферов должны быть соседними, например 

  SetIndexStyle(0,DRAW_HISTOGRAM);
  SetIndexBuffer(0,BufferHight);

  SetIndexStyle(1,DRAW_HISTOGRAM);
  SetIndexBuffer(1,BufferLow);

 
sabluk >>:

для рисования одного отрезкка линии на основном окне нужно юзать два буфера со стилем DRAW_HISTOGRAM

порядковые номера буферов должны быть соседними, например 

  SetIndexStyle(0,DRAW_HISTOGRAM);
  SetIndexBuffer(0,BufferHight);

  SetIndexStyle(1,DRAW_HISTOGRAM);
  SetIndexBuffer(1,BufferLow);

Но тогда, если я не ошибаюсь, созданный рисунок таким методом будет "статичным". Или нет?

 
tim21701 >>:

Но тогда, если я не ошибаюсь, созданный рисунок таким методом будет "статичным". Или нет?

почему статичный?

как любой индикатор по тику будет обновление текущего бара

если нада менять не текущий бар то укажите номер бара

 
tim21701 писал(а) >>

Но тогда, если я не ошибаюсь, созданный рисунок таким методом будет "статичным". Или нет?

Динамический. Ну это поверх свечи будет рисовать кусок гистограммы, который уже свечи по ширине.

Прикольно получилось ;)

//---- indicator settings
#property indicator_chart_window
#property  indicator_buffers 2
#property  indicator_color1  Aqua
#property  indicator_color2  Red
#property  indicator_width1  5
#property  indicator_width2  5

//---- indicator parameters
//extern int MAPeriod=4;
//extern int MAgicL=26;

//---- indicator buffers
double     BufferHight[];
double     BufferLow[];


//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
//---- drawing settings
   SetIndexStyle(0,DRAW_HISTOGRAM);
   SetIndexStyle(1,DRAW_HISTOGRAM);
   
   IndicatorDigits(Digits+1);

//---- indicator buffers mapping
   SetIndexBuffer(0,BufferHight);
   SetIndexBuffer(1,BufferLow);

//---- name for DataWindow and indicator subwindow label
   IndicatorShortName("CAndle");
//---- initialization done


//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int    counted_bars=IndicatorCounted();
//----
int i=0;
      BufferHight[i+1]=EMPTY_VALUE; // стираем окраску
      BufferLow[i+1]=EMPTY_VALUE;// стираем окраску

      BufferHight[i]=Open[i];
      BufferLow[i]=Close[i];
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
 
sabluk писал(а) >>

для рисования одного отрезкка линии на основном окне нужно юзать два буфера со стилем DRAW_HISTOGRAM

порядковые номера буферов должны быть соседними, например

SetIndexStyle(0,DRAW_HISTOGRAM);
SetIndexBuffer(0,BufferHight);

SetIndexStyle(1,DRAW_HISTOGRAM);
SetIndexBuffer(1,BufferLow);

Почему так получается?

Это где-то описано в документации?

 
diakin >>:

Прикольно получилось ;)

ну я этим давно еще баловался

например таким способом можно любой осцилятор разместить не в отдельном подокне а поверх свечей

за нулевую ось можно взять ( WindowPriceMin()+WindowPriceMax() ) / 2

только придется каждый тик перерисовывать все видимые бары т к  ценовая шкала вверх/вниз ходит

 
diakin >>:

Почему так получается?

Это где-то описано в документации?

это вроде нигде не описано

я сам обнаружил случайно

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