Download MetaTrader 5

Times and Sales

Para adicionar comentários, por favor Conecte-se ou registrar
Evandro Teixeira
700
Evandro Teixeira  
Olá pessoal,

eu comecei a fazer um indicador que puxa que o histórico de negócios, porém eu estou com um problema na hora de mostrar o resultado na tela.

Eu gostaria de saber se é possível filtrar o resultado, mostrando apenas os preços que sofreram agressão na compra ou na venda. 

Por exemplo, o 5º negocio sofreu uma agressão na compra e os 4 primeiros são apenas repetição dele, eu gostaria de mostrar na tela apenas o 5º negocio e ocultar os outros. Eu tentei com if mas fica um buraco na tela e não ordenado corretamente.

Qualquer ajuda será bem vinda.

//+------------------------------------------------------------------+
//|                                                TimesAndSales.mqh |
//|                               Copyright © 2016, Evandro Teixeira |
//|                                   http://www.evandroteixeira.com | 
//+------------------------------------------------------------------+
#property copyright                 "Evandro Teixeira © 2016"
#property link                      "www.evandroteixeira.com"
#property version                   "2.20"
#property description               "Times and Sales"
#property indicator_plots 0
#property indicator_chart_window

//+------------------------------------------------------------------+
//| Includes                                                         |
//+------------------------------------------------------------------+
#include <Comment.mqh>

//+------------------------------------------------------------------+
//| Global parameters                                                |
//+------------------------------------------------------------------+
int                     panelXX     =  5;
int                     panelYY     =  15;

input string                     _INPativo            = "INDQ16";               // Symbol
input color                      _INPbuyLetterTS      = clrForestGreen;        // Buy Color
input color                      _INPsellLetterTS     = clrFireBrick;         // Sell Color
input color                      _INPbetweenTS        = clrCornflowerBlue;   // Between Color
input color                      _INPchangeTickTS     = clrDimGray;         // Bid/Ask Color
input color                      _INPcolorDefaultB    = clrSilver;         // Window Border Color
input color                      _INPcolorDefault     = clrBlack;         // Window Color
input uchar                      _alpha               = 255;             // Window Transparency
input int                        _INPfsize            = 14;             // Font
input int                        _INPticks            = 26;            // Number of Requested Ticks

CComment comment;
color       clrAgr;

//+------------------------------------------------------------------+
//| On Init                                                          |
//+------------------------------------------------------------------+
int OnInit() 
  {
      comment.Create("TimesNSales",panelXX,panelYY);
      //comment.SetAutoColors(true);
      comment.SetColor(_INPcolorDefaultB,_INPcolorDefault,_alpha);
      comment.SetFont("Verdana",_INPfsize,false,1.3);
      comment.SetGraphMode(true);

//--- Define frequência do timer
   EventSetTimer(1);
   return(0);
  }

//+------------------------------------------------------------------+
//| On DeInit                                                        |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//--- Destroy panel
   comment.Destroy();
  }
//+------------------------------------------------------------------+
//| On Calculate                                                     |
//+------------------------------------------------------------------+
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[])
  {
//--- requesting ticks
   MqlTick tick_array[];
   int copied=CopyTicks(_INPativo,tick_array,COPY_TICKS_ALL,0,_INPticks);
   ArraySetAsSeries(tick_array,true);
   string typeTrade;

   if(copied>0)
     {
         for(int i=0;i<_INPticks;i++)
            {
               MqlTick tick=tick_array[i];
               bool buy    = tick.flags == 24 && tick.last >= tick.ask;
               bool sell   = tick.flags == 24 && tick.last <= tick.bid;

               if(buy)
                  {
                     typeTrade = "BUY  "; clrAgr = _INPbuyLetterTS;
                  }
               else if(sell)
                     {
                        typeTrade = "SELL"; clrAgr = _INPsellLetterTS;
                     }
                     else if(tick.flags == 24 && tick.last < tick.ask && tick.last > tick.bid)
                            {
                                 typeTrade = "BTW "; clrAgr = _INPbetweenTS;
                            }else
                       {
                           typeTrade = "        "; clrAgr = _INPchangeTickTS;
                       }

                  comment.SetText(i,TimeToString(tick.time,TIME_MINUTES|TIME_SECONDS)+"    "+
                                     DoubleToString(tick.last,Digits())+"     "+
                                     typeTrade+"      "+
                                     IntegerToString(tick.volume,1,'0'),clrAgr);
            }
            comment.SetText(_INPticks," ",_INPchangeTickTS);
            comment.Show();
     }
   else // report an error that occurred when receiving ticks
     {
         Print("Ticks could not be loaded. GetLastError()=",GetLastError());
     }
//---
      return(rates_total);
  }

//+------------------------------------------------------------------+
//| On Chart Event                                                   |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
  {

   int res=comment.OnChartEvent(id,lparam,dparam,sparam);
//--- move panel event
   if(res==EVENT_MOVE)
      return;
//--- change background color
   if(res==EVENT_CHANGE)
      comment.Show();
  }
//+------------------------------------------------------------------+

 

Abraço.
Rodrigo Malacarne
Moderador
10782
Rodrigo Malacarne  
Evandro Teixeira:
Olá pessoal,

eu comecei a fazer um indicador que puxa que o histórico de negócios, porém eu estou com um problema na hora de mostrar o resultado na tela.

Eu gostaria de saber se é possível filtrar o resultado, mostrando apenas os preços que sofreram agressão na compra ou na venda. 

Por exemplo, o 5º negocio sofreu uma agressão na compra e os 4 primeiros são apenas repetição dele, eu gostaria de mostrar na tela apenas o 5º negocio e ocultar os outros. Eu tentei com if mas fica um buraco na tela e não ordenado corretamente.

Qualquer ajuda será bem vinda. 

Abraço.

Olá Evandro Teixeira,

Não entendi direito quando vocês diz que "os 4 primeiros são apenas repetição dele"  ... não seriam exatamente 5 negócios diferentes, sendo que 4 deles com características semelhantes ao primeiro negócio?

Se puder explicar melhor como esses 4 primeiros são "repetições" do primeiro, acredito que isso no ajudaria a entender melhor a questão.

Abraços,
Malacarne

Evandro Teixeira
700
Evandro Teixeira  
Rodrigo Malacarne:

Olá Evandro Teixeira,

Não entendi direito quando vocês diz que "os 4 primeiros são apenas repetição dele"  ... não seriam exatamente 5 negócios diferentes, sendo que 4 deles com características semelhantes ao primeiro negócio?

Se puder explicar melhor como esses 4 primeiros são "repetições" do primeiro, acredito que isso no ajudaria a entender melhor a questão.

Abraços,
Malacarne

Oi Malacarne,

Em Times & Trades de outras plataformas como Profitchart ou FlashTrader, costumam aparecer apenas o ultimo negocio de compra ou venda enquanto o MT5 alem dessas informações, ele mostra as alterações no preço decorrente a essas negociações.

Segue uma imagem exemplificando o que quero dizer. O destaque em verde e vermelho são os últimos negócios realizados enquanto as linhas cinzas são apenas alterações no Bid/Ask (No Profit essas informações não são relevantes por que é levado em consideração apenas a agressão inicial).

 tns

 

Então eu gostaria de saber se há alguma forma de ocultar essa variação do Bid/Ask deixando apenas o ultimo negocio na tela como no Times & Trades da esquerda.


Abraços.

Rodrigo Malacarne
Moderador
10782
Rodrigo Malacarne  
Evandro Teixeira:

Oi Malacarne,

Em Times & Trades de outras plataformas como Profitchart ou FlashTrader, costumam aparecer apenas o ultimo negocio de compra ou venda enquanto o MT5 alem dessas informações, ele mostra as alterações no preço decorrente a essas negociações.

Segue uma imagem exemplificando o que quero dizer. O destaque em verde e vermelho são os últimos negócios realizados enquanto as linhas cinzas são apenas alterações no Bid/Ask (No Profit essas informações não são relevantes por que é levado em consideração apenas a agressão inicial). 

Então eu gostaria de saber se há alguma forma de ocultar essa variação do Bid/Ask deixando apenas o ultimo negocio na tela como no Times & Trades da esquerda.

Abraços.

Olá Evandro Teixeira,

Documentação da função: https://www.mql5.com/pt/docs/series/copyticks

Experimente utilizar, ao invés de COPY_TICKS_ALL simplesmente COPY_TICKS_TRADE.

Abraços,
Malacarne

Documentação sobre MQL5: Séries Temporais e Acesso a Indicadores / CopyTicks
Documentação sobre MQL5: Séries Temporais e Acesso a Indicadores / CopyTicks
  • www.mql5.com
Séries Temporais e Acesso a Indicadores / CopyTicks - Referência sobre algorítimo/automatização de negociação na linguagem para MetaTrader 5
Evandro Teixeira
700
Evandro Teixeira  
Rodrigo Malacarne:

Olá Evandro Teixeira,

Documentação da função: https://www.mql5.com/pt/docs/series/copyticks

Experimente utilizar, ao invés de COPY_TICKS_ALL simplesmente COPY_TICKS_TRADE.

Abraços,
Malacarne

Funcionou perfeito, Malacarne!

Muito obrigado =) 

Rogerio Figurelli
Moderador
46530
Rogerio Figurelli  
Evandro Teixeira:
Olá pessoal,

eu comecei a fazer um indicador que puxa que o histórico de negócios, porém eu estou com um problema na hora de mostrar o resultado na tela.

Eu gostaria de saber se é possível filtrar o resultado, mostrando apenas os preços que sofreram agressão na compra ou na venda. 

Por exemplo, o 5º negocio sofreu uma agressão na compra e os 4 primeiros são apenas repetição dele, eu gostaria de mostrar na tela apenas o 5º negocio e ocultar os outros. Eu tentei com if mas fica um buraco na tela e não ordenado corretamente.

Qualquer ajuda será bem vinda.

 

Abraço.


Olá Evandro, parabéns pela iniciativa de desenvolvimento do painel com o histórico de negócios, como em outras plataformas, além da excelente análise gráfica comparativa apresentada.

Sua ferramenta me lembrou da pergunta do tópico abaixo.

Fórum de negociação, sistemas de negociação automatizados e testes de estratégias de negociação

Ferramenta similar a Times & Trades

SurferXP, 2014.05.23 20:26

Olá,

Alguem saberia me informar se o Metatrader 5 tem uma ferramenta que registra as ordens executadas no mercado e mostra em uma janela, para que possamos identificar fluxo de negociação em algum ativo especifico. Ferramenta similar ao Times & Trades?

Obrigado,

 SurferXP 


Melhores cumprimentos,

Rogério Figurelli 

Rogerio Figurelli
Moderador
46530
Rogerio Figurelli  

Olá Evandro,

Fiz uma comparação dos resultados do teu algoritmo com os da plataforma, segue abaixo.

Me parece que esse é um bom ponto de partida para comparação com outras plataformas e teu sistema. 

 

Melhores cumprimentos,

Rogério Figurelli 

Evandro Teixeira
700
Evandro Teixeira  
Rogerio Figurelli:

Olá Evandro,

Fiz uma comparação dos resultados do teu algoritmo com os da plataforma, segue abaixo.

Me parece que esse é um bom ponto de partida para comparação com outras plataformas e teu sistema. 

 

Melhores cumprimentos,

Rogério Figurelli 

Olá Rogério,

segue em anexo a versão final da ferramenta.

Uma dúvida em relação à esta imagem que você postou. Qual versão você está usando do MT5? Esse simbolo entre os botões 'Show Tick Chart' e 'Show Extended Book' é o histórico de negócios? Tem como ativar ele na versão 1340?

 

Abraços!

Arquivos anexados:
Otavio Konmin Clemente
263
Otavio Konmin Clemente  
Evandro Teixeira:

Olá Rogério,

segue em anexo a versão final da ferramenta.

Uma dúvida em relação à esta imagem que você postou. Qual versão você está usando do MT5? Esse simbolo entre os botões 'Show Tick Chart' e 'Show Extended Book' é o histórico de negócios? Tem como ativar ele na versão 1340?

 

Abraços!

Evandro, parabéns pela iniciativa!
Rogerio Figurelli
Moderador
46530
Rogerio Figurelli  
Evandro Teixeira:

Olá Rogério,

segue em anexo a versão final da ferramenta.

Uma dúvida em relação à esta imagem que você postou. Qual versão você está usando do MT5? Esse simbolo entre os botões 'Show Tick Chart' e 'Show Extended Book' é o histórico de negócios? Tem como ativar ele na versão 1340?

 

Abraços!

Olá Evandro,

Perfeitamente, estou com a última build (1352), dá uma atualizada que você pega esses dados também.

Obs: obrigado, atualizei a última versão, sugiro colocar como opcional (em um parâmetro) o flag do tipo de ticks (COPY_TICKS_ALL, COPY_TICKS_TRADE ou COPY_TICKS_INFO), para manter o diferencial em relação a outras plataformas de mercado.

Abraço! 

Charles Almeida
7
Charles Almeida  
Rogerio Figurelli:

Olá Evandro,

Perfeitamente, estou com a última build (1352), dá uma atualizada que você pega esses dados também.

Obs: obrigado, atualizei a última versão, sugiro colocar como opcional (em um parâmetro) o flag do tipo de ticks (COPY_TICKS_ALL, COPY_TICKS_TRADE ou COPY_TICKS_INFO), para manter o diferencial em relação a outras plataformas de mercado.

Abraço! 

Boa tarde Rogerio,

 Onde acho essa build? 

Para adicionar comentários, por favor Conecte-se ou registrar