English Русский 中文 Español Deutsch 日本語
Alert e Comment para Indicadores Externos (Parte II)

Alert e Comment para Indicadores Externos (Parte II)

MetaTrader 4Exemplos | 1 outubro 2015, 10:11
1 033 0
Vladimir
Vladimir

Introdução

O primeiro artigo, "Alert e Comment para indicadores externos", discutiu o método de obtenção de dados de indicadores que utilizam os símbolos Wingdings exibidos num gráfico como fonte de informação.

Aqui, veremos como obter valores dos buffers de indicador e usá-los para informar ao usuário sobre determinados eventos do indicador.

Considerando que existe um grupo de operadores que são usados para obter as características exigidas ao ler os parâmetros de plotagem gráfica, parâmetros dos buffers de indicador somente pode ser definidos, por exemplo, neste caso não poderíamos obter, digamos, a cor. Tudo o que podemos obter são características de preços e horários. Como exemplo, vamos assumir que um indicador baseia-se no princípio da alteração de cor quando visualiza as informação no indicador.
Uma das opções de armazenamento de informação nos buffers de tais indicadores está disposto de modo que dois buffers de indicador são usados para exibir uma linha, a cada um dos buffers é atribuído uma cor estática. A informação é de saída, de tal maneira que apenas um dos dois buffers estará envolvido na exibição das informações, em qualquer ponto do tempo. O buffer ativo tem valores de parâmetro maior do que zero. O valor do parâmetro no buffer inativo é zero.

Assim, temos os valores que podem ser analisados para a informação de saída quanto as alterações no indicador.


Dados de Saída do Buffer do Indicador

Os recursos MQL nos permitem entrada/saída de dados para oito buffers de indicador.
Portanto vamos analisar todos os oito buffers.

As condições que devem ser aplicadas na análise são as seguintes: quando o valor do indicador altera a partir do zero para um valor significativo, incluindo a mudança inversa, então o usuário deve ser notificado. Tomemos o valor do primeiro buffer de indicador alterado e verificamos os valores de todos os buffers, um por um, começando com a primeira barra ou qualquer outra barra especificada pelo usuário na variável externa.

extern int     StartBar=1;       // Start bar

Como exemplo, vamos usar o indicador Trend_mtf Slope que produz as seguintes informações:


Figura 1.

Uma vez detectada, a alteração é registrada pelo indicador e as operações das paradas do indicador.

Existem várias características MQL4 que podem ser utilizadas para os dados de saída:

  • janelas de alerta;
  • comentários na janela do indicador;
  • reprodução de um arquivo de som;

Um subprograma que executa as saídas de dados é o seguinte:

//+------------------------------------------------------------------+
//| AlertSignal_v1 indicator Subfunction                             |
//+------------------------------------------------------------------+
void AlertComment (string text)
   {
      if (SignalAlert   == true)    Alert    (text);
      if (SignalComment == true)    Comment  (text);
      if (SignalPlay    == true)    PlaySound(Signal);
   }

Nós adicionamos as variáveis necessárias a serem controladas a critério do usuário.

Vamos também prever a possibilidade de saída de um comentário especificado pelo usuário.

extern int     StartBar=1;                            // Start bar
extern string  indicator = "Insert Indicator Name";   // Indicador Personalizado
extern bool    VLine = true;                          // Chave de saída da linha Vertical
extern bool    SignalAlert=false;                     // Chave de saída da janela de Alerta
extern bool    SignalComment=true;                    // Chave de saída dos Comentários
extern bool    SignalPlay= false;                     // Chave de reprodução de som
extern string  Signal = "alert.wav";                  // Arquivo de som personalizado
extern string  UserText = "direction changed";        // Comentário do usuário

Onde:

StartBar

A variável que indica o início de cálculo:

indicador 

Aqui, digite o nome do indicador para o qual obteremos os dados.

Seguido por uma série de parâmetros lógicos que podem ser utilizados pelo usuário para manipular a saída dos parâmetros de programa em questão.

VLine 

Indica se deve exibir (true) ou não exibir (false) uma linha vertical no ponto de alteração nos parâmetros do indicador.

SignalAlert

Indica se deve exibir (true) ou não exibir (false) a janela de informação quando há uma alteração nos parâmetros do indicador.

SignalComment

Indica se existe saída (true) ou não existe saída (false) de dados no gráfico quando há uma alteração nos parâmetros do indicador.

SignalPlay

Indica se toca (true) ou não toca (false) um arquivo de som quando há uma mudança nos parâmetros do indicador.

Signal 

Aqui, digite o nome do arquivo de som a ser tocado quando há uma mudança nos parâmetros do indicador.

UserText 

Aqui, digite o texto a ser visto no gráfico quando há uma mudança nos parâmetros do indicador, se não gostar do texto padrão.

Da mesma forma, você pode adicionar um parâmetro para enviar as informações importantes ao seu e-mail.

Agora somente necessita a leitura dos dados do indicador e manipulá-lo usando nossas definições.

A manipulação do código de bloco é a seguinte:

   for(int ii=StartBar;ii<ExtBars;ii++)
      for(int i=0;i<8;i++)
        {
         First =iCustom(NULL,0,indicator,i,ii);
         Second=iCustom(NULL,0,indicator,i,ii+1);
         if((Second==0 && First>0) || (Second>0 && First==0))
           {
            text=StringConcatenate(Str+" -  On ",ii+1," bar ",Symbol()," -  ",indicator," ");
            AlertComment(text+UserText);
            if(VLine==true)
               ObjectCreate(STRING_ID+"VL_"+i,0,0,Time[ii],Bid);
            return;
           }
        }

Após a execução da abordagem específica e definição do parâmetro relevante para exibir a linha vertical, o gráfico ficará da seguinte forma:


Figura 2.


Conclusão

Apesar dos numerosos comentários sobre as imperfeições da MQL4, esta linguagem oferece amplas funcionalidades que podem ser largamente utilizadas em diversos aplicativos de negociação e informação. Além disso, a linguagem MQL4 suporta a aprendizagem intuitiva e lhe dá acesso a uma enorme biblioteca de aplicações prontas para usar.

O código completo do indicador de informação é demonstrado abaixo:

//+------------------------------------------------------------------+
//|                                               AlertSignal_v1.mq4 |
//|                                  Copyright © 2009, WWW.FIBOOK.RU |
//|                                                 http://fibook.ru |
//+------------------------------------------------------------------+
#property copyright  "Copyright © 2009, FIBOOK.RU"
#property link       "http://fibook.ru"
#define Str           "http://fibook.ru"
#define STRING_ID    "AlertSignal_"
#property indicator_chart_window
extern int     StartBar=1;                       // Barra inicial
extern string indicator="Insert Indicator Name"; // Indicador Personalizado
extern bool    VLine=true;                       // Chave de saída da linha Vertical
extern bool    SignalAlert=false;                // Chave de saída da janela de Alerta
extern bool    SignalComment=true;               // Chave de saída dos Comentários
extern bool    SignalPlay=false;                 // Chave de reprodução de som
extern string  Signal="alert.wav";               // Arquivo de som personalizado
extern string  UserText="direction changed";   // Comentário do usuário
IndicatorShortName("AlertSignal_v1 ");
//+------------------------------------------------------------------+
//| Função de desinicialização do indicador AlertSignal_v1           |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   for(int i=0;i<8;i++)
      ObjectDelete(STRING_ID+"VL_"+i);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Função de interação do  indicador AlertSignal_v1                 |
//+------------------------------------------------------------------+
int start()
  {
   string     text;
   int        ExtBars=150;  // Número das últimas barras para cálculo
   double     First;        // Variável Interna
   double     Second;       // Variável Interna
   int        per;          // Variável Interna
   if(indicator=="Insert Indicator Name")
     {
      Alert(indicator);
      return;
     }
   if(per==Time[0]) return; // Ajustar uma vez num período
   per=Time[0];
//----
   for(int ii=StartBar;ii<ExtBars;ii++)
      for(int i=0;i<8;i++)
        {
         First =iCustom(NULL,0,indicator,i,ii);
         Second=iCustom(NULL,0,indicator,i,ii+1);
         if((Second==0 && First>0) || (Second>0 && First==0))
           {
            text=StringConcatenate(Str+" - On ",ii+1," bar ",Symbol()," -  ",indicator," ");
            AlertComment(text+UserText);
            if(VLine==true)
               ObjectCreate(STRING_ID+"VL_"+i,0,0,Time[ii],Bid);
            return;
           }
        }
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Subfunção do indicador AlertSignal_v1                            |
//+------------------------------------------------------------------+

void AlertComment(string text)
  {
   if(SignalAlert==true) Alert(text);
   if(SignalComment==true) Comment(text);
   if(SignalPlay==true) PlaySound(Signal);
  }
//+------------------------------------------------------------------+

Traduzido do russo pela MetaQuotes Ltd.
Artigo original: https://www.mql5.com/ru/articles/1372

Arquivos anexados |
O Quanto é Confiável Negociar à Noite? O Quanto é Confiável Negociar à Noite?
O artigo aborda as peculiaridades da negociação em lateralidade de preço à noite nos pares de moedas cruzadas, explica onde você pode ter expectativa de lucros e porque grandes perdas não são improváveis. O artigo também apresenta um exemplo do Expert Advisor desenvolvido para negociação à noite e fala sobre a aplicação prática desta estratégia.
Alert e Comment para Indicadores Externos. Análise de Multimoedas Através de Varredura Externa Alert e Comment para Indicadores Externos. Análise de Multimoedas Através de Varredura Externa
Alerta para análise de multimoedas e múltiplos timeframes para indicadores externos. O artigo trata de um método para obter informações sobre o evento em relação aos acontecimentos com indicadores externos, sem a necessidade de anexar indicadores a um gráfico ou aos próprios gráficos abertos. Vamos chamá-lo de varredura externa.
Métodos Simples de Previsão das Direções das Velas Japonesas (Candles) Métodos Simples de Previsão das Direções das Velas Japonesas (Candles)
Sabendo a direção do movimento do preço é o suficiente para a obtenção de resultados positivos nas operações de negociação. Algumas informações sobre a possível orientação do preço podem ser obtidas a partir das Velas Japonesas (candles). Este artigo trata de algumas abordagens simples para prever a direção Velas Japonesas (candles).
Controle Gráfico dos Parâmetros Externos dos Indicadores Controle Gráfico dos Parâmetros Externos dos Indicadores
Variáveis externas de indicadores são controladas usando uma janela especial, onde os parâmetros podem ser alterados e então o indicador é executado novamente. O inconveniente óbvio destas manipulações deu origem à necessidade de exibir os parâmetros na tela e controlar o indicador graficamente.