Participe de nossa página de fãs
Coloque um link para ele, e permita que outras pessoas também o avaliem
Avalie seu funcionamento no terminal MetaTrader 5
- Visualizações:
- 1055
- Avaliação:
- Publicado:
- 2017.02.13 12:43
-
Precisa de um robô ou indicador baseado nesse código? Solicite-o no Freelance Ir para Freelance
Classe que permite definir facilmente - a partir de seus programas MQL5 - as alterações na janela "Observação do mercado" (alteração da classificação dos símbolos, adição, exclusão de símbolo ou conjunto de símbolo), abertura e fechamento de novos gráficos, bem como presença/ausência do painel de negociação num clique, no gráfico, onde o programa está em execução. A classe trabalha com o princípio de envio de eventos personalizados para o programa de controle.
O programa inclui métodos públicos:
Método | Descrição | Valor de retorno |
---|---|---|
Métodos de trabalho com gráficos | ||
bool IsChartOneClick(void) | Retorna o sinalizador de presença de painel de negociação OneClick, no gráfico | bool true/false |
uchar GetChartNumbers(void) | Retorna o número de gráficos abertos do terminal | uchar Número de gráficos abertos |
long GetOpenedChartID(void) | Retorna o identificador do gráfico recém-aberto | long ChartID() |
string GetOpenedSymbol(void) | Retorna o nome do símbolo do gráfico recém-aberto | string ChartSymbol() |
ENUM_TIMEFRAMES GetOpenedTimeframe(void) | Retorna o timeframe do gráfico recém-aberto | ENUM_TIMEFRAMES ChartPeriod() |
long GetClosedChartID(void) | Retorna o identificador do gráfico recém-fechado | long ChartID() |
string GetClosedSymbol(void) | Retorna o nome do símbolo do gráfico recém-fechado | string ChartSymbol() |
ENUM_TIMEFRAMES GetClosedTimeframe(void) | Retorna o timeframe do gráfico recém-fechado | ENUM_TIMEFRAMES ChartPeriod() |
bool IsOpenedIsObject(void) | Retorna uma indicação de que o gráfico aberto é um objeto | bool true/false |
bool IsClosedIsObject(void) | Retorna uma indicação de que o gráfico fechado era um objeto | bool true/false |
bool CheckOpenChart(string symbol_name); | Verifica se o gráfico do síbolo está aberto | bool true/false |
bool CheckOpenChart(string symbol_name,ENUM_TIMEFRAMES timeframe) | Verifica se o gráfico do símbolo está aberto com o timeframe especificado | bool true/false |
long OpenChart(string symbol_name,ENUM_TIMEFRAMES timeframe) | Abre o gráfico do símbolo | long ChartID() |
bool IsOpenedAllCharts(void) | Retorna o sinalizador de presença de gráficos abertos de todos os símbolos na Observação do mercado | bool true/false |
Métodos de trabalho com a janela "Observação do mercado" | ||
bool PutSymbolToMarketWatch(string symbol_name) | Coloca o símbolo na Observação do mercado | bool true/false |
bool IsExistSymbolInMW(string symbol_name, bool select=false) | Retorna o sinalizador de presença do símbolo na Observação do mercado/no servidor | bool true/false |
int GetNumSymbolsInMW(void) | Retorna o número de símbolos na Observação do mercado | int Número de símbolos na Observação do mercado |
int GetNumAllSymbols(void) | Retorna o número de símbolos disponíveis | int Número de símbolos no servidor |
void ClearMarketWatch(void) | Remove todos os possíveis símbolos da Observação do mercado | void |
Identificador | Valor | Descrição |
---|---|---|
CHARTEVENT_CHART_OPEN | 32 | Evento de abertura de um novo gráfico |
CHARTEVENT_CHART_CLOSE | 33 | Evento de fechamento do gráfico |
CHARTEVENT_MW_SYMBOL_ADD | 34 | Evento de adição de símbolo na Observação do mercado |
CHARTEVENT_MW_FEW_SYMBOL_ADD | 35 | Evento de adição de alguns símbolos na Observação do mercado |
CHARTEVENT_MW_SYMBOL_DEL | 36 | Evento de exclusão de símbolo da Observação do mercado |
CHARTEVENT_MW_FEW_SYMBOL_DEL | 37 | Evento de exclusão de alguns símbolos da Observação do mercado |
CHARTEVENT_MW_CHANGE_SORT | 38 | Evento de alteração da classificação de símbolos na Observação do mercado |
CHARTEVENT_CHART_CHANGE_ONE_CLICK | 39 | Evento de abertura/fechamento do painel OneClick |
Eu fiz que os valores dos identificadores fossem chamados com os indicadores da biblioteca gráfica de Anatoli Kazharski, embora seja possível defini-los da maneira mais adequada para você.
Os valores a serem enviados em conjunto com o evento para o programa de controle:
Identificador | lparam | dparam | sparam |
---|---|---|---|
CHARTEVENT_CHART_OPEN | long ChartID do gráfico aberto | ENUM_TIMEFRAMES Período do gráfico aberto | string Símbolo do gráfico aberto |
CHARTEVENT_CHART_CLOSE | long ChartID do gráfico fechado | ENUM_TIMEFRAMES Período do gráfico fechado | string Símbolo do gráfico fechado |
CHARTEVENT_MW_SYMBOL_ADD | int Número atual de símbolos | int Número passado de símbolos | string Símbolo adicionado |
CHARTEVENT_MW_FEW_SYMBOL_ADD | int Número atual de símbolos | int Número passado de símbolos | string Último símbolo a ser utilizado |
CHARTEVENT_MW_SYMBOL_DEL | int Número atual de símbolos | int Número passado de símbolos | string Símbolo excluído |
CHARTEVENT_MW_FEW_SYMBOL_DEL | int Número atual de símbolos | int Número passado de símbolos | string Último símbolo a ser utilizado |
CHARTEVENT_MW_CHANGE_SORT | int Número atual de símbolos | int Número atual de símbolos | string Último símbolo a ser utilizado |
CHARTEVENT_CHART_CHANGE_ONE_CLICK | int Coordenada X da borda direita do painel | int Coordenada Y da borda inferior do painel | string Descrição do estado do painel: "CHART_IS_ONE_CLICK_ON" - há um painel "CHART_IS_ONE_CLICK_OFF" - mão há nenhum painel |
Para conectar a classe ao programa, é necessário, no escopo global, conectar o arquivo e criar uma instância de classe:
CChartsMW mw;
Além disso, deve ser ligado, na OnTimer() do programa, o temporizador de classe:
//| Timer function |
//+------------------------------------------------------------------+
void OnTimer()
{
//--- Conexão do temporizador de classe
mw.OnTimerEvent();
}
//+------------------------------------------------------------------+
E, por sua vez, na OnChartEvent(), conectar o manipulador de evento de classe:
//| ChartEvent function |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
const long &lparam,
const double &dparam,
const string &sparam)
{
//--- Conexão do manipulador de eventos de classe
mw.OnEvent(id,lparam,dparam,sparam);
}
//+------------------------------------------------------------------+
Agora, na OnChartEvent() do programa, é possível receber e processar eventos a serem retornados pela classe.
Exemplo, obter eventos a partir da classe mostrada na Expert Advisor exTestChartsMWClass.mq5 anexado
Traduzido do russo pela MetaQuotes Ltd.
Publicação original: https://www.mql5.com/ru/code/17448
![Alpha Trend Spotter Price Action](https://c.mql5.com/i/code/indicator.png)
Indicador de sinal semáforo de acordo com a estratégia de movimento de preço para encontrar a tendência mais forte, com emissão de alertas, envio de e-mails e mensagens push sobre a alteração da tendência.
![Exp_TDI-2_ReOpen](https://c.mql5.com/i/code/expert.png)
Sistema de negociação Exp_TDI-2_ReOpen com base na interseção da linha do indicador TDI-2 com recarregamentos (aliás, aberturas adicionais de ordens na direção da posição já existente)
![SilverTrend v3](https://c.mql5.com/i/code/expert.png)
SilverTrend v3 - negociação com base na análise de High, Low e Close dos preços das barras.
![New Martin](https://c.mql5.com/i/code/expert.png)
New Martin - Expert Advisor que, no início, abre duas posições opostas. Processamento OnTradeTransaction. Assim que o Take Profit se executar, ele abrirá (UMA) posição na mesma direção. A interseção de dois indicadores MA é um sinal para abertura da posição com um lote maior.