VelocidadeNegocios

Author: Marco Aurelio Almeida
2 Views
0 Downloads
0 Favorites
VelocidadeNegocios
ÿþ//+------------------------------------------------------------------+

//|                                           VelocidadeNegocios.mq5 |

//|                                  Copyright 2022, MetaQuotes Ltd. |

//|                                             https://www.mql5.com |

//+------------------------------------------------------------------+

#property copyright "Marco Aurelio Almeida"

#property link      "https://www.mql5.com/pt/market/product/29611?source=Site+Profile+Seller"

#property version   "1.00"

#property indicator_separate_window

#property indicator_buffers 3

#property indicator_plots   1

//--- plot Contratos

#property indicator_label1  "Contratos"

#property indicator_type1   DRAW_COLOR_LINE

#property indicator_color1  clrRed,clrWhite

#property indicator_style1  STYLE_SOLID

#property indicator_width1  3



//--- plot FrequenciaContratos

#property indicator_label2  "FrequenciaContratos"

#property indicator_type2   DRAW_LINE

#property indicator_color2  clrRed,clrWhite

#property indicator_style2  STYLE_SOLID

#property indicator_width2  2



//--- input parameters

input int      Periodo=17;           //Período para Calculo da Media;

input int      VezesMedia=2;         //Numero de vezes que o valor de contratos/ponto deverá ser maior que a media;



//--- indicator buffers

double         ContratosBuffer[];

double         ContratosColors[];

double         FrequenciaContratos[];



//+------------------------------------------------------------------+

//| Custom indicator initialization function                         |

//+------------------------------------------------------------------+

int OnInit()

  {

   int Candles =0;

   Candles = iBars(_Symbol,PERIOD_CURRENT);

   if(Candles < Periodo)

     {

      Print("Numeros de Barras: (",Candles,")  Numero de Barras Insuficientes. Mude para um timefrime Menor");

      return INIT_FAILED;

     }



//--- indicator buffers mapping

   SetIndexBuffer(0,ContratosBuffer,INDICATOR_DATA);

   SetIndexBuffer(1,ContratosColors,INDICATOR_COLOR_INDEX);

   SetIndexBuffer(2,FrequenciaContratos,INDICATOR_CALCULATIONS);

   IndicatorSetInteger(INDICATOR_DIGITS,0);

//---

   return(INIT_SUCCEEDED);

  }

//+------------------------------------------------------------------+

//| 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[])

  {

//---



   int Start;

   if(prev_calculated ==0)

     {

      Start=Periodo-1;

     }

   else

     {

      Start=prev_calculated-(Periodo-1);

     }



   for(int i=Start; i<rates_total; i++)



     {

      long VolumeTotal=0;

      double Frequencia =0;

      double Contratos_Por_Ponto=0;



      Frequencia = high[i]-low[i];

      VolumeTotal = volume[i];

      Contratos_Por_Ponto = VolumeTotal/Frequencia;



      //+------------------------------------------------------------------+

      //|      Calculo da Media                                            |

      //+------------------------------------------------------------------+

      if(Frequencia >0 && VolumeTotal >0)

        {

         double Media=0;

         FrequenciaContratos[i] = Contratos_Por_Ponto;



         for(int j=0; j<Periodo; j++)

           {

            Media = Media + FrequenciaContratos[i-j]/Periodo;

            ContratosBuffer[i] = Media;



            if(FrequenciaContratos[i] > ContratosBuffer[i]*VezesMedia) //Checagem para mudança de cor do histograma;

              {

               ContratosColors[i] = 0;

              }

            else

              {

               ContratosColors[i] = 1;

              }

           }

        }

     }

//--- return value of prev_calculated for next call

   return(rates_total);

  }

//+------------------------------------------------------------------+

Comments