Pon "Me gusta" y sigue las noticias
Deje un enlace a él, ¡qué los demás también lo valoren!
Evalúe su trabajo en el terminal MetaTrader 5
- Visualizaciones:
- 786
- Ranking:
- Publicado:
- 2017.04.27 16:45
-
¿Necesita un robot o indicador basado en este código? Solicítelo en la bolsa freelance Pasar a la bolsa
Clase que permite determinar con facilidad (a partir sus programas MQL5) cambios en la ventana "Observación del Mercado" (cambio de clasificación de los símbolos, adición, eliminación de un símbolo o conjunto de símbolos), la apertura y cierre de nuevos gráficos, así como la presencia/ausencia del panel comercial en el gráfico en el que funciona el programa. La clase funciona según el principio de envío de eventos de usuario al programa de control.
En el programa están disponibles los métodos públicos:
Método | Descripción | Valor devuelto |
---|---|---|
Métodos de trabajo con los gráficos | ||
bool IsChartOneClick(void) | Retorna la bandera de presencia del comercio OneClick en el gráfico | bool true/false |
uchar GetChartNumbers(void) | Retorna el número de gráficos abiertos del terminal | uchar Número de gráficos abiertos |
long GetOpenedChartID(void) | Retorna el indicador del gráfico recién abierto | long ChartID() |
string GetOpenedSymbol(void) | Retorna el nombre del símbolo del gráfico recién abierto | string ChartSymbol() |
ENUM_TIMEFRAMES GetOpenedTimeframe(void) | Retorna el marco temporal del gráfico recién abierto | ENUM_TIMEFRAMES ChartPeriod() |
long GetClosedChartID(void) | Retorna el identificador del gráfico recién cerrado | long ChartID() |
string GetClosedSymbol(void) | Retorna el nombre del símbolo del gráfico recién cerrado | string ChartSymbol() |
ENUM_TIMEFRAMES GetClosedTimeframe(void) | Retorna el marco temporal del gráfico recién cerrado | ENUM_TIMEFRAMES ChartPeriod() |
bool IsOpenedIsObject(void) | Retorna el signo de que el gráfico abierto es un objeto | bool true/false |
bool IsClosedIsObject(void) | Retorna el signo de que el gráfico cerrado era un objeto | bool true/false |
bool CheckOpenChart(string symbol_name); | Comprueba si está abierto el gráfico del símbolo | bool true/false |
bool CheckOpenChart(string symbol_name,ENUM_TIMEFRAMES timeframe) | Comprueba si está abierto el gráfico del símbolo con el marco temporal indcado | bool true/false |
long OpenChart(string symbol_name,ENUM_TIMEFRAMES timeframe) | Abre el gráfico del símbolo | long ChartID() |
bool IsOpenedAllCharts(void) | Retorna la bandera sobre la presencia de gráficos abiertos de todos los símbolos en la observación del mercado | bool true/false |
Métodos de trabajo con la ventana "Observación del mercado" | ||
bool PutSymbolToMarketWatch(string symbol_name) | Ubica un símbolo en la observación del mercado | bool true/false |
bool IsExistSymbolInMW(string symbol_name, bool select=false) | Retorna la bandera sobre la presencia de un símbolo en la observación del mercado/en el servidor | bool true/false |
int GetNumSymbolsInMW(void) | Retorna el número de símbolos en la observación del mercado | int Número de símbolos en la Observación del mercado |
int GetNumAllSymbols(void) | Retorna el número de todos los símbolos disponibles | int Número de símbolos en el servidor |
void ClearMarketWatch(void) | Borra todos los símbolos posibles de la Observación del mercado | void |
Identificador | Valor | Descripción |
---|---|---|
CHARTEVENT_CHART_OPEN | 32 | Evento de apertura de un nuevo gráfico |
CHARTEVENT_CHART_CLOSE | 33 | Evento de cierre del gráfico |
CHARTEVENT_MW_SYMBOL_ADD | 34 | Evento de adición de un símbolo a la observación de mercado |
CHARTEVENT_MW_FEW_SYMBOL_ADD | 35 | Evento de adición de varios símbolos a la observación de mercado |
CHARTEVENT_MW_SYMBOL_DEL | 36 | Evento de eliminación de un símbolo de la observación de mercado |
CHARTEVENT_MW_FEW_SYMBOL_DEL | 37 | Evento de eliminación de varios símbolos de la observación de mercado |
CHARTEVENT_MW_CHANGE_SORT | 38 | Evento de cambio de clasificación de los símbolos en la observación del mercado |
CHARTEVENT_CHART_CHANGE_ONE_CLICK | 39 | Evento de apertura/cierre del panel OneClick |
He hecho que los valores de los identificadores estén relacionados con los identificadores de la biblioteca gráfica de Anatoli (Anatoli Kazharski), aunque, claro, podrá establecerlos de la forma que prefiera usted.
Valores transmitidos junto con el evento al programa de control:
Identificador | lparam | dparam | sparam |
---|---|---|---|
CHARTEVENT_CHART_OPEN | long ChartID del gráfico abierto | ENUM_TIMEFRAMES Periodo del gráfico abierto | string Símbolo del gráfico abierto |
CHARTEVENT_CHART_CLOSE | long ChartID del gráfico cerrado | ENUM_TIMEFRAMES Periodo del gráfico cerrado | string Símbolo del gráfico cerrado |
CHARTEVENT_MW_SYMBOL_ADD | int Número actual de símbolos | int Número anterior de símbolos | string Símbolo añadido |
CHARTEVENT_MW_FEW_SYMBOL_ADD | int Número actual de símbolos | int Número anterior de símbolos | string Último símbolo utilizado |
CHARTEVENT_MW_SYMBOL_DEL | int Número actual de símbolos | int Número anterior de símbolos | string Símbolo eliminado |
CHARTEVENT_MW_FEW_SYMBOL_DEL | int Número actual de símbolos | int Número anterior de símbolos | string Último símbolo utilizado |
CHARTEVENT_MW_CHANGE_SORT | int Número actual de símbolos | int Número actual de símbolos | string Último símbolo utilizado |
CHARTEVENT_CHART_CHANGE_ONE_CLICK | int coordenada X del límite derecho del panel | int coordenada Y del límite inferior del panel | string Descripción del estado del panel: "CHART_IS_ONE_CLICK_ON" - hay panel "CHART_IS_ONE_CLICK_OFF" - no hay panel |
Para conectar la clase al programa, es necesario conectar a la zona global el archivo y crear un ejemplar de la clase:
CChartsMW mw;
Después, en OnTimer() del programa, se conecta el temporizador de la clase:
//| Timer function |
//+------------------------------------------------------------------+
void OnTimer()
{
//--- Activación del temporizador de la clase
mw.OnTimerEvent();
}
//+------------------------------------------------------------------+
Y en OnChartEvent() se conecta el procesador de eventos de clase:
//| ChartEvent function |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
const long &lparam,
const double &dparam,
const string &sparam)
{
//--- Conexión del procesador de eventos de clase
mw.OnEvent(id,lparam,dparam,sparam);
}
//+------------------------------------------------------------------+
Ahora en OnChartEvent() del programa se pueden recibir y procesar los eventos retornado por la clase.
Se muestra un ejemplo de la recepción de eventos de clase en el experto anexo exTestChartsMWClass.mq5
Traducción del ruso realizada por MetaQuotes Ltd
Artículo original: https://www.mql5.com/ru/code/17448
![SilverTrend v3](https://c.mql5.com/i/code/expert.png)
SilverTrend v3 - comercio basado en el análisis de los precios High, Low y Close de las barras.
![New Martin](https://c.mql5.com/i/code/expert.png)
New Martin - asesor que abre dos posiciones opuestas al iniciarse. Procesamiento de OnTradeTransaction. Al activarse el Take Profit se abre una posición (UNA) en la misma dirección. El cruce de dos indicadores МА será la señal de apertura de la posición con un lote aumentado.
![Alpha Trend Spotter Price Action](https://c.mql5.com/i/code/indicator.png)
Indicador de señal de semáforo según la estrategia de movimiento de precio para encontrar la tendencia intradía más fuerte, con posibilidad de enviar alertas y mensajes Push y de correo sobre el cambio de tendencia.
![Exp_TDI-2_ReOpen](https://c.mql5.com/i/code/expert.png)
Sistema comercial Exp_TDI-2_ReOpen basado en el cruce de las líneas del indicador TDI-2 con rellando según tendencia