Что изменить в коде индикатора,что-бы линия меняла цвет в зависимости от направления движения?

 
Индикатор Osma только в виде линии,помогите сделать так что-бы линия меняла цвет при изменении направления движения?Например вверх идёт "зелёная",вниз "красная"...
 
hjlujghglu:
Индикатор Osma только в виде линии,помогите сделать так что-бы линия меняла цвет при изменении направления движения?Например вверх идёт "зелёная",вниз "красная"...
Вы что не умеете поиском пользоваться. Для вас https://www.mql5.com/ru/articles/1451
 

Надо (скорее всего) задействовать еще один буфер.

Вот посмотрите образец:

https://www.mql5.com/ru/code/9547 

 

 
Один буфер разбить на два, обычно так это делают.
 
yuripk:
Один буфер разбить на два, обычно так это делают.


Могли-бы в коде osma показать?
 
#property indicator_buffers 2

double TrendUp[];
double TrendDown[];

// ------- В блоке инициализации ----------------------


   SetIndexBuffer(0, TrendUp);

   SetIndexBuffer(1, TrendDown);
Это не из этого индикатора, но из подобного и это работает.
 
drknn:
Это не из этого индикатора, но из подобного и это работает.


А где линия и её раскраска?
 
yuripk:
Один буфер разбить на два, обычно так это делают.


В коде osma можете изобразить?
 
hjlujghglu:


В коде osma можете изобразить?


А где взять этот код? Ссылка, которую Вы указали - там индикатор NonLagMA_v5.mq4

#property indicator_buffers 3
#property indicator_color1 Orange
#property indicator_width1 2
#property indicator_color2 Blue
#property indicator_width2 2
#property indicator_color3 Red
#property indicator_width3 2

//---- indicator buffers
double MABuffer[];
double UpBuffer[];
double DnBuffer[];
double trend[];


int init()
  {
   IndicatorBuffers(4);
   SetIndexStyle(0, DRAW_LINE);
   SetIndexBuffer(0, MABuffer);
   SetIndexStyle(1, DRAW_LINE);
   SetIndexBuffer(1, UpBuffer);
   SetIndexStyle(2, DRAW_LINE);
   SetIndexBuffer(2, DnBuffer);
   SetIndexBuffer(3, trend);
   string short_name;
//---- name for DataWindow and indicator subwindow label
   short_name = "NonLagMA(" + Length + ")";
   IndicatorShortName(short_name);
   SetIndexLabel(0, "NonLagMA");
   SetIndexLabel(1, "Up");
   SetIndexLabel(2, "Dn");
//----
   SetIndexShift(0, Displace);
   SetIndexShift(1, Displace);
   SetIndexShift(2, Displace);
//----   
   SetIndexEmptyValue(0, EMPTY_VALUE);
   SetIndexEmptyValue(1, EMPTY_VALUE);
   SetIndexEmptyValue(2, EMPTY_VALUE);
//----   
   SetIndexDrawBegin(0, Length*Cycle + Length);
   SetIndexDrawBegin(1, Length*Cycle + Length);
   SetIndexDrawBegin(2, Length*Cycle + Length);
//---- 
 и так далее...
 
drknn:


А где взять этот код? Ссылка, которую Вы указали - там индикатор NonLagMA_v5.mq4



Вот код:

//+------------------------------------------------------------------+
//| OsMaLine.mq4 |
//| Copyright © 2007, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2004, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net/"
//---- indicator settings
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Yellow
#property indicator_width1 1
//---- indicator parameters
extern string strName = "OsMaLine";
extern int pTF=0;
extern int FastEMA=12;
extern int SlowEMA=26;
extern int SignalSMA=9;
extern int pPrice=0;
//---- indicator buffers
double aOsMaLine[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- drawing settings
SetIndexStyle(0,DRAW_LINE);
IndicatorDigits(Digits+1);
//---- indicator buffers mapping
SetIndexBuffer(0,aOsMaLine);
//---- name for DataWindow and indicator subwindow label
IndicatorShortName(strName);
SetIndexLabel(0,strName);
//---- initialization done
return(0);
}
//+------------------------------------------------------------------+
//| Moving Averages Convergence/Divergence |
//+------------------------------------------------------------------+
int start()
{
int limit;
int counted_bars=IndicatorCounted();
//double pOsmaClose = 0.0;
//---- last counted bar will be recounted
if(counted_bars>0) counted_bars--;
limit=Bars-counted_bars;
//---- macd counted in the 1-st buffer
for(int i=0; i<limit; i++)
{
aOsMaLine[i] = iOsMA(NULL,pTF,FastEMA,SlowEMA,SignalSMA,pPrice,i);
}
//---- done
return(0);
}
//+------------------------------------------------------------------+

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