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.
- Freelance: Programação Personalizada no MetaTrader e MQL!
- Indicador de barra de sinal. De qual barra você deve pegar um sinal? Desenhando indicadores.
- CrossObjectALert Indicador de alerta ao cruzar com objetos para terminais mt4 e mt5
- Trabalhando com email e push no MetaTrader
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?
This post is also available in: English Українська Portuguese Español Deutsch Chinese Русский Français Italiano Türkçe 日本語 한국어
Leave a Reply