Alerta no indicador. Como inserir o alerta e a seta em seu indicador?

Trabalhando com o Telegram no MetaTrader. Canal e bots do Telegram
Meus segredos da Autolot. Lote dinâmico ou Autolot.
Trabalhando com o Telegram no MetaTrader. Canal e bots do Telegram
Meus segredos da Autolot. Lote dinâmico ou Autolot.

Descrição

Alerta: As consultas mais frequentes nos motores de busca e os tópicos populares nos fóruns geralmente incluem as seguintes frases.

Um alerta sobre esses tópicos pode ajudá-lo a manter-se atualizado com as últimas tendências.

  • Indicador de Alerta
  • Como adicionar um sinal sonoro ao indicador?
  • Ajude-me a inserir um sinal sonoro no indicador
  • Como inserir Alertas e Setas
  • Como enviar uma mensagem para email ou telefone quando o sinal vem de um indicador?

Neste artigo, descreverei em detalhes uma maneira fácil de adicionar Alerta, Email, Push e Seta notificações a qualquer indicador usando código adicional disponível em Expforex.

  

Prefácio 

Para instalar corretamente Alertas no seu indicador, você deve possuir o código-fonte aberto do seu indicador. 

O código decompilado é indesejável porque, para iniciantes, o código decompilado fornece informações mínimas. É difícil de entender. 

Você também pode encontrar problemas com a compilação após a edição. 

xCustomEA

Se você está procurando uma maneira mais fácil de automatizar sua estratégia de negociação sem mergulhar em programação personalizada complexa, considere xCustomEA.

Este assessor especialista da Expforex foi projetado para funcionar perfeitamente com indicadores que geram sinais de seta. Com o xCustomEA, você pode facilmente automatizar qualquer indicador que mostre setas de compra ou venda, permitindo criar uma poderosa estratégia automatizada sem o incômodo de desenvolver código personalizado.

xCustomEA torna a automação de estratégias baseadas em sinais de indicadores incrivelmente acessível. Ele permite que os traders se concentrem na otimização de suas negociações, em vez de gastar tempo e recursos em programação personalizada. Este assessor especialista serve como uma excelente alternativa à contratação de um programador, proporcionando uma solução direta para transformar sinais de indicadores em negociações.

Para mais informações, visite a página do xCustomEA ou explore os outros assessores especialistas da Expforex.

Início do Trabalho para inserir Alerta

   Primeiro, você precisa determinar quais buffers do indicador fornecem sinais específicos, o propósito de criar um alerta e as condições para determinar o sinal no indicador. 

Importante: Apenas buffers externos definidos no início do código das variáveis podem ser exibidos nos indicadores: 

#property indicator_buffers 1

No entanto, o indicador também pode conter buffers ocultos, que são definidos na função init() e declarados como variáveis:

IndicatorBuffers(7): Nós só precisamos dos primeiros buffers. 

Se, por exemplo, você tem 1 buffer externo, então olhe para a variável: 

SetIndexBuffer(0, SarBuffer);
  • 0 é o primeiro buffer
  • 1 é o segundo buffer

Esses buffers ou seus nomes podem ser identificados ao passar o mouse sobre uma linha específica do indicador no gráfico.

Value1 – Este é o primeiro buffer ou 0 no sistema de indexação do código.  

SetIndexBuffer(0, SarBuffer); // O nome do buffer que precisamos  

Se este for SarBuffer, então nós o utilizaremos.

Além disso, é uma questão técnica determinar como o sinal será acionado;

Por exemplo, se esta for a interseção da linha 0 de cima (de baixo) movendo-se para baixo (para cima), ficará assim:

SarBuffer[shift+1] >= 0 && SarBuffer[shift] < 0

Indicador cruzando o preço atual ou uma barra, uma quebra de barra pelo indicador, e assim por diante:

SarBuffer[shift+1] >= Close[shift] && SarBuffer[shift] < Close[shift]

Se esta for a interseção de níveis únicos, indicadores como estocásticos:

SarBuffer[shift+1] <= 75 && SarBuffer[shift] > 75;

SarBuffer[shift+1] >= 25 && SarBuffer[shift] < 25;

Se já existem setas no seu indicador, então o seguinte tipo de sinal também é possível:

DnTrend[1] != EMPTY_VALUE && DnTrend[1] != 0 && UpTrend[2] != EMPTY_VALUE

Em qualquer caso, você precisa aplicar lógica e criatividade para registrar o sinal corretamente. Se você encontrar alguma dificuldade, escreva neste tópico, anexe o indicador, mostre as linhas no gráfico e descreva detalhadamente o que você não consegue fazer. Enviar uma mensagem como “você precisa inserir um alerta no indicador” sem explicar onde e o que fazer, e sem fornecer o próprio indicador, não é útil. 

Código “Alertas e setas da www.expforex.com”

O próximo passo para adicionar nosso alerta ao seu indicador consiste em vários pontos:

ETAPA 1

Insira o seguinte código no início do Assessor Especialista antes da função OnCalculate ()  (início):

//+==+//+ www.expforex.com editar AlertArrow +//+==+
extern string Alerts="Alertas e setas da www.expforex.com";
extern bool AlerT=true; // Emitir um alerta na tela
extern bool Mail=true; // Enviar mensagem
extern bool Push=true; // Enviar PUSH para o telefone
extern bool Arrow=true; // Colocar setas nos sinais
extern int shift=1; // Em qual barra contar o sinal 0 - na atual, 1 - na fechada
int timeee;
// Variável interna
string nameInd;
void SetArrow(int cd, color cl, string nm="", datetime t1=0, double p1=0, int sz=3)
{
  if(nm=="")
    nm=DoubleToStr(Time[0], 0);
  if(t1 <= 0)
    t1=Time[0];
  if(p1 <= 0)
    p1=Bid;
  nameInd=WindowExpertName();
  int wind=WindowFind(nameInd);
  wind=0;
  if(ObjectFind(nm) < 0)
    ObjectCreate(nm, OBJ_ARROW, wind, 0, 0);
  ObjectSet(nm, OBJPROP_TIME1, t1);
  ObjectSet(nm, OBJPROP_PRICE1, p1);
  ObjectSet(nm, OBJPROP_ARROWCODE, cd);
  ObjectSet(nm, OBJPROP_COLOR, cl);
  ObjectSet(nm, OBJPROP_WIDTH, sz);
}

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void Expforex_AlertArrow(string text="", int arrowdir=0, bool history=false, int i=0)
{
  nameInd=WindowExpertName();
  int wind=WindowFind(nameInd);
  if(wind==-1)
    wind=0;
  ObjectCreate("Originalalert", OBJ_LABEL, wind, 0, 0);
  ObjectSetText("Originalalert", "Modificação AlertArrow www.expforex.com", 10, "Arial Bold", Red);
  ObjectSet("Originalalert", OBJPROP_CORNER, 2);
  ObjectSet("Originalalert", OBJPROP_XDISTANCE, 200);
  ObjectSet("Originalalert", OBJPROP_YDISTANCE, 10);
  if(!history)
  {
    if(AlerT)
      Alert(text);
    if(Arrow)
      if(arrowdir==1)
        SetArrow(241, Blue, nameInd + DoubleToStr(Time[shift], 0), Time[shift], Low[shift]);
    if(Arrow)
      if(arrowdir==2)
        SetArrow(242, Red, nameInd + DoubleToStr(Time[shift], 0), Time[shift], High[shift]);
    if(!IsTesting())
      if(Mail)
        SendMail(text, text);
    if(!IsTesting())
      if(Push)
        SendNotification(text);
  }
  if(history)
  {
    if(Arrow)
      if(arrowdir==1)
        SetArrow(241, Blue, nameInd + DoubleToStr(Time[shift + i2], 0), Time[shift + i2], Low[shift + i2]);
    if(Arrow)
      if(arrowdir==2)
        SetArrow(242, Red, nameInd + DoubleToStr(Time[shift + i2], 0), Time[shift + i2], High[shift + i2]);
  }
}//+==+//+ www.expforex.com editar AlertArrow +//+==+

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
  for(int i=ObjectsTotal(); i>=0; i--)
  {
    if(StringFind(ObjectName(i), nameInd)!=-1)
      ObjectDelete(ObjectName(i));
  }
}
//+------------------------------------------------------------------+

ETAPA 2

 Antes de fechar a função OnCalculate () insira o seguinte código:

return(rates_total); }

Cole o seguinte código:

//+==+//+ www.expforex.com editar AlertArrow +//+==+

nameInd=WindowExpertName();

if(timeee != Time[0] && SarBuffer[shift+1] <= 75 && SarBuffer[shift] > 75)
{
  Expforex_AlertArrow(Symbol() + " " + Period() + nameInd + " UP", 1);
  timeee=Time[0];
}
if(timeee != Time[0] && SarBuffer[shift+1] >= 25 && SarBuffer[shift] < 25)
{
  Expforex_AlertArrow(Symbol() + " " + Period() + nameInd + " DN", 2);
  timeee=Time[0];
}//+==+//+ www.expforex.com editar AlertArrow +//+==+

ETAPA 3

Este código servirá como nosso sinal.

Naturalmente, você precisa substituir algum código pelo seu próprio. 

O seguinte código serve como um sinal para um alerta:

1. Interseção da linha 0 de cima (de baixo) movendo-se para baixo (para cima), ficará assim:

SarBuffer[shift+1] >= 0 && SarBuffer[shift] < 0

2. Indicador cruzando o preço atual ou uma barra, uma quebra de barra pelo indicador, e assim por diante:

SarBuffer[shift+1] >= Close[shift] && SarBuffer[shift] < Close[shift]

3. Se esta for a interseção de níveis únicos, indicadores como estocásticos:

SarBuffer[shift+1] <= 75 && SarBuffer[shift] > 75;

SarBuffer[shift+1] >= 25 && SarBuffer[shift] < 25;

Após o Uso

Para adicionar um sinal sonoro ao indicador, siga estes passos:

  • 1. Abra as configurações do indicador.
  • 2. Procure a seção “Alerta” ou “Setas“.
  • 3. Selecione a opção para adicionar um alerta sonoro.
  • 4. Escolha o arquivo de som que deseja usar como alerta.
  • 5. Salve as alterações.

Ao inserir um sinal sonoro no indicador, você pode receber uma notificação audível quando certas condições forem atendidas, o que pode ajudá-lo a tomar melhores decisões de negociação.

Se Você Precisa de Setas no Histórico, Então Você Precisa Fazer Isso:

Após o código acima, adicione o seguinte:

//+==+//+ www.expforex.com editar AlertArrow +//+==+

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
if(counted_bars > 0)
   counted_bars--;
int limit2 = Bars - counted_bars;
for(int i2 = 0; i2 < limit2; i2++) {
    nameInd = WindowExpertName();
    if(SarBuffer[shift+1+i2] <= 75 && SarBuffer[shift+i2] > 75)
    {
        Expforex_AlertArrow(Symbol() + " " + Period() + nameInd + " UP" + i2, 1, true, i2);
    }
    if(SarBuffer[shift+1+i2] >= 25 && SarBuffer[shift+i2] < 25)
    {
        Expforex_AlertArrow(Symbol() + " " + Period() + nameInd + " DN" + i2, 2, true, i2);
    }
}
//+==+//+ www.expforex.com editar AlertArrow +//+==+

Exemplos

Estes exemplos são retirados da seção correspondente do nosso fórum. Eu modifiquei os indicadores de acordo com os princípios descritos acima. 

Conclusões

Neste artigo, expliquei o processo de criação de sinais para o indicador da maneira mais detalhada e compreensível.

O código acima pode ser usado sem restrições em qualquer indicador. É importante não alterar o nome do autor ao adicionar código ao indicador. 

Se você gostou deste artigo e achou útil este método de inserção de sinais, por favor, deixe seus comentários e avalie os tópicos. 

Barra de Sinal: Isso É Importante Saber

Perguntas?

Se você tiver alguma pergunta, por favor, faça-a. Nós não vendemos gato por lebre.

Além disso, cada um de nossos produtos pode ser testado antes da compra.

Agradecemos seu interesse e apoio aos nossos produtos e nos esforçamos para manter padrões de alta qualidade.

Obrigado por estar conosco!

Você tem uma pergunta?

Leave a Reply

Your email address will not be published. Required fields are marked *

This post is also available in: English Українська Portuguese Español Deutsch Chinese Русский Français Italiano Türkçe 日本語 한국어


     

    Aviso de risco:


    O desempenho comercial passado não garante resultados futuros.

    A negociação de divisas com margem comporta um elevado grau de risco e pode não ser adequada para todos os investidores.

    Tem em atenção que a utilização de robôs de negociação envolve um risco substancial e que podes perder mais do que o teu investimento inicial.

    Procede com cautela, avalia cuidadosamente a tua situação financeira e considera a possibilidade de procurar aconselhamento junto de um profissional qualificado.

    Isenção de responsabilidade

    Este site utiliza cookies para melhorar sua experiência. Ao usar este site, você concorda com nossa Política de Proteção de Dados e Aviso Legal.
    Leia mais