O WeightOscillator é um indicador de tendência que traz uma novidade super legal: alertas! Ele pode enviar notificações por e-mail e push para o seu celular, o que é uma mão na roda para quem não quer perder oportunidades no mercado.
Para implementar esses alertas, algumas mudanças foram feitas no código do indicador. Vamos dar uma olhada nas principais alterações:
- Nova Enumeração para Sinais: Foram adicionadas opções para geração de sinais no escopo global antes das variáveis de entrada serem declaradas.//+----------------------------------------------------+
//| Enumeração para opções de geração de sinais |
//+----------------------------------------------------+
enum ENUM_SIGNAL_MODE
{
MODE_SIGNAL, // Sinais de ruptura
MODE_TREND // Sinais de ruptura e tendência
}; - Novo Parâmetro de Entrada: Foram introduzidos novos parâmetros de entrada para os alertas.//---- Variáveis de entrada para alertas
input ENUM_SIGNAL_MODE SignMode=MODE_SIGNAL; // Modo de geração de sinal
input uint NumberofBar=1; // Número da barra para gerar um sinal
input bool SoundON=true; // Ativar alertas sonoros
input uint NumberofAlerts=2; // Número de alertas
input bool EMailON=false; // Habilitar envio de e-mail com o sinal
input bool PushON=false; // Habilitar envio de sinal para dispositivos móveis - Funções para Sinais de Compra e Venda: Foram adicionadas funções para geração de sinais de compra e venda ao final do código do indicador: BuySignal() e SellSignal().//+------------------------------------------------------------------+
//| Função de sinal de compra |
//+------------------------------------------------------------------+
void BuySignal(string SignalSirname,// texto do nome do indicador para e-mails e mensagens push
double &ColorArray[],// buffer de índice de cor
int ColorIndex,// índice de cor no buffer de índice de cor para gerar um sinal
const int Rates_total, // o número atual de barras
const int Prev_calculated, // o número de barras na tick anterior
const double &Close[], // preço de fechamento
const int &Spread[]) // spread
{
//---
static uint counter=0;
if(Rates_total!=Prev_calculated) counter=0;
bool BuySignal=false;
bool SeriesTest=ArrayGetAsSeries(ColorArray);
int index,index1;
if(SeriesTest)
{
index=int(NumberofBar);
index1=index+1;
}
else
{
index=Rates_total-int(NumberofBar)-1;
index1=index-1;
}
... - Chamada das Funções de Sinal: As funções BuySignal() e SellSignal() foram chamadas após os ciclos de cálculo do indicador no bloco OnCalculate().//---
BuySignal("WeightOscillator_Alert",ColorBuffer,0,rates_total,prev_calculated,close,spread);
SellSignal("WeightOscillator_Alert",ColorBuffer,4,rates_total,prev_calculated,close,spread);
//---
O ColorBuffer é o nome do buffer de índice de cores para armazenar as cores do indicador. Os valores 0 e 4 correspondem às áreas de sobrecompra e sobrevenda, respectivamente.
Vale lembrar que a chamada das funções BuySignal() e SellSignal() deve ser única dentro do bloco OnCalculate() do código do indicador.
O indicador utiliza as classes da biblioteca SmoothAlgorithms.mqh (não esqueça de copiar para <terminal_data_folder>\MQL5\Include). O uso dessas classes é detalhado no artigo "Média de Séries Preço para Cálculos Intermediários sem Usar Buffers Adicionais".

Fig1. O indicador WeightOscillator_Alert no gráfico

Fig.2. O indicador WeightOscillator_Alert. Gerando alerta para sinal de ruptura

Fig.3. O indicador WeightOscillator_Alert. Gerando alerta para sinal de tendência
Publicações relacionadas
- iMFISignAlert: O Indicador para MetaTrader 5 que Gera Alertas
- Buffers Horários para Coleta de Dados no MetaTrader 5
- Índice de Preferência do Investidor: Um Guia Prático para Traders
- EquiPeak Drawdown Tracker: Controle Eficiente para Seus EAs no MetaTrader 5
- Como Copiar e Colar Objetos Gráficos no MetaTrader 5 com o ChartObjectsCopyPaste