Como utilizar as cores como informações de filtro para o meu robô ?

 
//+------------------------------------------------------------------+
//|                                                     ColorDay.mq5 |
//|                                          Copyright 2016, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, AM2"
#property link      "http://www.forexsystems.biz"
#property version   "1.00"
#property strict
#property indicator_chart_window

#property indicator_buffers 0
#property indicator_plots   0

input int   Days = 11;  //dias para calcular
input color UP = Blue;  //cor do dia de alta 
input color DN = Red;   //cor do dia do BAIXA

datetime tm[];
double op[];
double cl[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   Comment("");
   ArrayResize(tm,Days);
   ArrayResize(op,Days);
   ArrayResize(cl,Days);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   Comment("");
   DeleteObjects();
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void DeleteObjects()
  {
   for(int i=ObjectsTotal(0,0,OBJ_RECTANGLE)-1;i>=0;i--)
     {
      string name=ObjectName(0,i,0,OBJ_RECTANGLE);
      if(StringFind(name,"Rect",0)>=0) ObjectDelete(0,name);
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutRect(string name,datetime t1,double p1,datetime t2,double p2,color clr)
  {
   ObjectDelete(0,name);
//--- создадим прямоугольник по заданным координатам
   ObjectCreate(0,name,OBJ_RECTANGLE,0,t1,p1,t2,p2);
//--- установим цвет прямоугольника
   ObjectSetInteger(0,name,OBJPROP_COLOR,clr);
//--- включим (true) или отключим (false) режим заливки прямоугольника 
   ObjectSetInteger(0,name,OBJPROP_FILL,true);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
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[])
  {
//---
   for(int i=0;i<=Days;i++)
     {
      CopyTime(NULL,PERIOD_D1,0,Days+1,tm);
      CopyOpen(NULL,PERIOD_D1,0,Days+1,op);
      CopyClose(NULL,PERIOD_D1,0,Days+1,cl);

      datetime time0=tm[i];
      datetime time1=time0+3600*24;
      double dopen=op[i];
      double dclose=cl[i];

      if(dclose<dopen) PutRect("Rect"+(string)dopen,time0,dopen,time1,dclose,DN);
      if(dclose>dopen) PutRect("Rect"+(string)dopen,time0,dopen,time1,dclose,UP);
     }

//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+

queria utilizar as cores que esse indicador me informa poderia me orientar , como pegar essa informação nesse caso?

 
felipe ramos:

queria utilizar as cores que esse indicador me informa poderia me orientar , como pegar essa informação nesse caso?

Boa tarde Felipe. Esse indicador não utiliza buffers, ele plota objetos na tela (no caso ele plota um retângulo).

Você pode, através da função objectgetinteger pegar a cor do objeto...

Mas... Como ele não usa buffers e o cálculo não parece ser complicado, vc pode colocar o cálculo dentro do seu EA e gerar o sinal internamente.as funções de objeto no mt5, no meu ponto de vista, são lentas e podem atrapalhar a execução. Na documentação consta que elas vão para o fim da fila de execução... 


 

Olá. O link da documentação é:

https://www.mql5.com/pt/docs/objects/objectgetinteger


Vc vai usar a propriedade: OBJPROP_COLOR


long  ObjectGetInteger(
   long                             chart_id,          // identificador Gráfico
   string                           name,              // nome objeto
   ENUM_OBJECT_PROPERTY_INTEGER     prop_id,           // identificador propriedade
   int                              prop_modifier=0    // modificador de propriedade, se requerida
   );
Documentação sobre MQL5: Funções de Objeto / ObjectGetInteger
Documentação sobre MQL5: Funções de Objeto / ObjectGetInteger
  • www.mql5.com
ObjectGetInteger - Funções de Objeto - Referência MQL5 - Referência sobre algorítimo/automatização de negociação na linguagem para MetaTrader 5
 
felipe ramos:

queria utilizar as cores que esse indicador me informa poderia me orientar , como pegar essa informação nesse caso?

Você tem que ler os objetos do gráfico, com ObjectFind() por exemplo... Porém, esqueça backtest, não funcionará.

Você está tentando fazer um Santos via Baurú...

Por quê você não usa os dados de Time, Open e Close no EA??

 
Flavio Jarabeck #:

Você tem que ler os objetos do gráfico, com ObjectFind() por exemplo... Porém, esqueça backtest, não funcionará.

Você está tentando fazer um Santos via Baurú...

Por quê você não usa os dados de Time, Open e Close no EA??

 e só uma duvida se era possível mesmo, mais vou utilizar essa opção  antes que eu exploda minha cabeça com coisas fúteis 

 
Ricardo Branco #:

Olá. O link da documentação é:

https://www.mql5.com/pt/docs/objects/objectgetinteger


Vc vai usar a propriedade: OBJPROP_COLOR


agradeço por utilizar seu tempo por ajudar a minha pessoa. GRATO.

 
Ricardo Branco #:
Boa tarde Felipe. Esse indicador não utiliza buffers, ele plota objetos na tela (no caso ele plota um retângulo).

Você pode, através da função objectgetinteger pegar a cor do objeto...

Mas... Como ele não usa buffers e o cálculo não parece ser complicado, vc pode colocar o cálculo dentro do seu EA e gerar o sinal internamente.as funções de objeto no mt5, no meu ponto de vista, são lentas e podem atrapalhar a execução. Na documentação consta que elas vão para o fim da fila de execução... 


Não estou conseguindo entra na minha conta no aplicativo 
Razão: