Indicadores: Cambiar el color de las velas

 

Cambiar el color de las velas:

El indicador que permite modificar el color de las velas.

Autor: Kourosh Davallou

 
Hola kourosh1347, ¿en qué se parece tu código al del foro(https://www.mql5.com/en/forum/9142#comment_382841) que pertenece al usuario TIMisthebest?
 
phi.nuts:
Hola kourosh1347, ¿en qué se parece tu código al del foro(https://www.mql5.com/en/forum/9142#comment_382841) que pertenece al usuario TIMisthebest?

Hola;

no; kourosh1347 escribir la primera versión de la misma ;

cuando le pregunté sobre ;

 TIMisthebest 2012.12.04 13:37 #

thank you.

i correct it but ; still has a problem;

//+------------------------------------------------------------------+
//|Z4_ColorCandles_Daily_Hours.mq5
//| Copyright 2012, MetaQuotes Software Corp. |
//| http://www.mql5.com
//+------------------------------------------------------------------+
#property copyright "Copyright 2012, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"
#property indicator_chart_window

int Day_End=4;
int Hour_Start=6;
int Minute_Start=0;
int Hour_End=23;
int Minute_End=59;

input color Color_Chart_Line_0=Magenta;
input color Color_Candle_Bull_0=SkyBlue;
input color Color_Candle_Bear_0=LightPink;
input color Color_Bar_Up_0=PowderBlue;
input color Color_Bar_Down_0=Bisque;
//---
input color Color_Chart_Line_1=Red;
input color Color_Candle_Bull_1=Red;
input color Color_Candle_Bear_1=Red;
input color Color_Bar_Up_1=Red;
input color Color_Bar_Down_1=Red;
//------------------------------------------------------------------------------ color para gráfico de líneas y velas Doji 
    color  GetColorChartLine() { return((color)ChartGetInteger(0,CHART_COLOR_CHART_LINE)); }
    void  SetColorChartLine(color Color_Chart_Line) { ChartSetInteger(0,CHART_COLOR_CHART_LINE,Color_Chart_Line); } 
//-------------------------------------------------------------------------------------- color del cuerpo de la vela toro 
    color  GetColorCandleBull() { return((color)ChartGetInteger(0,CHART_COLOR_CHART_UP)); }
    void  SetColorCandleBull(color Color_Candle_Bull) { ChartSetInteger(0,CHART_COLOR_CHART_UP,Color_Candle_Bull); }
//-------------------------------------------------------------------------------------- color del cuerpo de la vela del oso 
    color  GetColorCandleBear() { return((color)ChartGetInteger(0,CHART_COLOR_CHART_DOWN)); }
    void  SetColorCandleBear(color Color_Candle_Bear) { ChartSetInteger(0,CHART_COLOR_CHART_DOWN,Color_Candle_Bear); }   
//----------------------------------------------------------------------------------- Color del cuerpo de una vela alcista 
    color  GetColorBarUp() { return((color)ChartGetInteger(0,CHART_COLOR_CANDLE_BULL)); }
    void  SetColorBarUp(color Color_Bar_Up) { ChartSetInteger(0,CHART_COLOR_CANDLE_BULL,Color_Bar_Up); }     
//----------------------------------------------------------------------------------- Color del cuerpo de una vela alcista 
    color  GetColorBarDown() { return((color)ChartGetInteger(0,CHART_COLOR_CANDLE_BEAR)); }
    void  SetColorBarDown(color Color_Bar_Down) { ChartSetInteger(0,CHART_COLOR_CANDLE_BEAR,Color_Bar_Down); }      
//+------------------------------------------------------------------+
//| Función de inicialización del indicador personalizada |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- asignación de búferes indicadores
   
//---
   return(0);
  }
//+------------------------------------------------------------------+
//| Función de iteración del indicador personalizada|
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
   ChartSetInteger(0,CHART_COLOR_CHART_LINE,Color_Chart_Line_0);
   ChartSetInteger(0,CHART_COLOR_CHART_UP,Color_Candle_Bull_0);   
   ChartSetInteger(0,CHART_COLOR_CHART_DOWN,Color_Candle_Bear_0);   
   ChartSetInteger(0,CHART_COLOR_CANDLE_BULL,Color_Bar_Up_0);  
   ChartSetInteger(0,CHART_COLOR_CANDLE_BEAR,Color_Bar_Down_0);
   
   MqlDateTime time_now;
   datetime candle_time=TimeTradeServer(time_now);
   

   if( time_now.day_of_week==Day_End && time_now.hour>=Hour_End &&  time_now.min>=Minute_End ) 
   {
   ChartSetInteger(0,CHART_COLOR_CHART_LINE,Color_Chart_Line_1);
   ChartSetInteger(0,CHART_COLOR_CHART_UP,Color_Candle_Bull_1);   
   ChartSetInteger(0,CHART_COLOR_CHART_DOWN,Color_Candle_Bear_1);   
   ChartSetInteger(0,CHART_COLOR_CANDLE_BULL,Color_Bar_Up_1);  
   ChartSetInteger(0,CHART_COLOR_CANDLE_BEAR,Color_Bar_Down_1);
   }
//+------------------------------------------------------------------+ 
   Comment(
           "\ntime_now=",candle_time
           ,"\ntime_now_year=",time_now.year,"   time_now_mon=",time_now.mon    
           ,"\ntime_now_day=",time_now.day,"   time_now_hour=",time_now.hour,"   time_now_min=",time_now.min
           ,"   time_now_sec=",time_now.sec);
//--- valor de retorno de prev_calculado para la siguiente llamada
   return(rates_total);
  }
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Función personalizada de desinicialización del indicador ||
//+------------------------------------------------------------------+ 
void OnDeinit(const int reason)
  {
   Comment("");
//----
//----
  }
//+----------------------------------

el escribio esto:

//+------------------------------------------------------------------------------+
//|color de la vela
//+------------------------------------------------------------------------------+              
#property indicator_chart_window              
#property  version "1.0"                                   
#property indicator_buffers 6
#property indicator_label1 "Open;High;Low;Close"
#property indicator_plots 1                     
#property indicator_type1 DRAW_COLOR_CANDLES   
#property indicator_width1 3                    
input int Day_Start=1;
input int Hour_Start=22;
input int Minute_Start=30;
input int Day_End=1;
input int Hour_End=23;
input int Minute_End=30;
input color Color_Bar_Up_1=Magenta;
input color Color_Bar_Down_1=Blue; 
input color Color_Bar_Up_0=Green;
input color Color_Bar_Down_0=Red;                                                
double buffer_open[],buffer_high[],buffer_low[],buffer_close[]; 
double buffer_color_line[]; 
double buffer_tmp[1];       

int OnInit()
  {
   SetIndexBuffer(0,buffer_open,INDICATOR_DATA);
   SetIndexBuffer(1,buffer_high,INDICATOR_DATA);
   SetIndexBuffer(2,buffer_low,INDICATOR_DATA);
   SetIndexBuffer(3,buffer_close,INDICATOR_DATA);
   SetIndexBuffer(4,buffer_color_line,INDICATOR_COLOR_INDEX);

   PlotIndexSetInteger(0,PLOT_COLOR_INDEXES,4);
   
   PlotIndexSetInteger(0,PLOT_LINE_COLOR,0,Color_Bar_Up_0);  
   PlotIndexSetInteger(0,PLOT_LINE_COLOR,1,Color_Bar_Down_0); 
   PlotIndexSetInteger(0,PLOT_LINE_COLOR,2,Color_Bar_Up_1);
 PlotIndexSetInteger(0,PLOT_LINE_COLOR,3,Color_Bar_Down_1);               
   return(0);
  }

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
  MqlDateTime time_now;
   for(int i=prev_calculated;i<=rates_total-1;i++)
     {
      buffer_open[i]=open[i]; 
      buffer_high[i]=high[i];  
      buffer_low[i]=low[i];   
      buffer_close[i]=close[i];
   datetime candle_time=time[i];
       TimeToStruct(time[i],time_now);
       if( (time_now.day_of_week==Day_Start && time_now.hour>=Hour_Start && time_now.min>=Minute_Start)
     &&( time_now.day_of_week==Day_End && time_now.hour<=Hour_End  && time_now.min<=Minute_End )   )
        { 
        if ( open[i]>= close[i])
            buffer_color_line[i]=3;
        else
           buffer_color_line[i]=2;
           }
    else
     { 
      if ( open[i]>= close[i])
            buffer_color_line[i]=1;
        else
           buffer_color_line[i]=0;
           }         
     }
   return(rates_total-1); 
  }
//+------------------------------------------------------------------+

y me lo envio;

y no era lo que yo esperaba;

asi que cuando hable de esto con " kourosh1347 " por telefono ;

después de eso lo comparto, para modificarlo:( ¿cómo puede ayudar? )

y no tiene nombre;

de : ( hola; una pregunta sobre time define en mql5 .

in this code:

but still has problem ; can you please check it

//+------------------------------------------------------------------------------+ 
#property indicator_chart_window              
#property  version "1.0"                                   

y le dije ( en messsage):

esto tiene problema cuando : (

Day_Start=6;  and  Day_End=6

( mi broker trabajaba en dia=6 de 22:00 a 24:00 )

y

Indicadores: Cambiar el color de las velas

pertenece a " kourosh1347 ".

antes de escribir esto envie mensaje a " kourosh1347 " :

leer :

hola; una pregunta sobre el tiempo definir en mql5 .

&

Indicadores: Cambiar el color de las velas

&

también envío sms a su teléfono móvil

 

¿Cómo puedo hacer que sólo la última vela cambie de color? ¿Y que el resto de las velas permanezcan del mismo color?
Archivos adjuntos: