"Each such class has a common parent, the CNode class, which performs only one function, i.e. stores the type of the basic primitive.
Its only protected constructor requires type specification during element creation."
La clase CNode no almacena el tipo de la primitiva básica. CEIChart lo hace mediante el miembro m_obj_type.
En las nuevas builds del terminal (aproximadamente desde la versión 2170) apareció un problema con las fuentes del artículo ("Escribiendo el cristal de un scalper"). En particular, el archivo principal"MarketBook.mq5" genera errores críticos durante la compilación:
' Evento' - token inesperado, probablemente falta el tipo MBookBtn.mqh 57 12
Evento ' - función ya definida y tiene un tipo diferente MBookBtn.mqh 57 12
¿Podría decirme qué está mal y cómo solucionarlo?
PD: ahora comprobado"MarketBook.mq5" de un viejo artículo de 2015. Resultó que el mismo tipo de errores se producen con ese proyecto:
' Mostrar' - token inesperado, probablemente falta el tipoMBookFon.mqh 47 11 'Mostrar' - función ya definida y tiene un tipo diferente MBookFon.mqh 47 11
En las nuevas builds del terminal (aproximadamente desde la versión 2170) apareció un problema con las fuentes del artículo ("Escribiendo el cristal de un scalper"). En particular, el archivo principal"MarketBook.mq5" genera errores críticos durante la compilación:
' Evento' - token inesperado, probablemente falta el tipo MBookBtn.mqh 57 12
Evento ' - función ya definida y tiene un tipo diferente MBookBtn.mqh 57 12
¿Podría decirme qué está mal y cómo solucionarlo?
El lenguaje está evolucionando y los requisitos son cada vez más estrictos.
Veamos el archivo "MBookBtn.mqh", la declaración de la clase CMBookBtn - la función Evento se declara como void
//+------------------------------------------------------------------+//|| La clase representa el botón en la parte superior del gráfico, que, cuando se hace clic en ||.//| Se muestra un panel con un gráfico de tick y una tabla de órdenes. |||//| Pulsando de nuevo el botón se oculta el panel.//+------------------------------------------------------------------+class CMBookBtn : public CElButton
{
private:
CMBookArea m_book_area;
bool m_showed_book;
public:
CMBookBtn();
void SetMarketBookSymbol(string symbol);
void Refresh();
void Event(int id,long lparam,double dparam,string sparam);void Clear(void);
virtualvoid OnShow(void);
};
y ahora miramos la propia función en la clase:
el segundo error dice "'Event' - function already defined and has different type MBookBtn.mqh 57 12" - es decir, la función fue declarada con tipo void y aquí está sin especificar el tipo.
Cura:
//+------------------------------------------------------------------+//|| Interceptar el clic del ratón sobre nuestro botón. Si el botón después de |//| clic en el estado pulsado - mostrar el panel. Si en el estado ||//| empujar hacia abajo - ocultar el panel|//+------------------------------------------------------------------+void CMBookBtn::Event(int id,long lparam,double dparam,string sparam)
{
- simplemente añade void antes de la función en el cuerpo de la clase.
Ahora compile el ... Indicadores\MarketBookArticle\MarketBook.mq5 - no hay errores y ejecutarlo: el vaso funciona.
Hola Vasiliy, gracias por su hermoso artículo. Soy nuevo en el mundo MQL5 y me enfrento a un reto con el fin de tratar de ejecutar el código localmente. Creo que es un problema muy tonto, pero no estoy siendo capaz de resolverlo
Cuando intento compilar tu código desde MarketBook.mq5 obtengo el error que puedes ver a continuación.
¿Pueden decirme si es posible fijar - recordar la hora del índice encontrado en la clase MarketBook.mqh?
void Calculation(void)
{
// PARA EL LADO ASKint begin = (int)m_book.InfoGetInteger(MBOOK_LAST_ASK_INDEX);
int end = (int)m_book.InfoGetInteger(MBOOK_BEST_ASK_INDEX);
//m_ask_best_indexfor(int i = begin; i <= end && begin !=-1; i++)
{
if(m_book.MarketBook[i].volume > m_max_ask_volume)
{
m_max_ask_index = i;
m_max_ask_volume = m_book.MarketBook[i].volume;
}
m_sum_ask_volume += m_book.MarketBook[i].volume;
}
// PARA EL LADO DE LA OFERTA
begin = (int)m_book.InfoGetInteger(MBOOK_BEST_BID_INDEX);
end = (int)m_book.InfoGetInteger(MBOOK_LAST_BID_INDEX);
for(int i = begin; i <= end && begin != -1; i++)
{
if(m_book.MarketBook[i].volume > m_max_bid_volume)
{
m_max_bid_index = i;
m_max_bid_volume = m_book.MarketBook[i].volume;
}
m_sum_bid_volume += m_book.MarketBook[i].volume;
}
m_calculation = true;
}
En este método encontramos el índice de precios en el que se encuentra el volumen máximo en los lados Ask y Bid.
También quiero saber a qué hora terminal obtuvimos este índice.
La estructura de la pila
structMqlBookInfo
{
ENUM_BOOK_TYPE type; // tipo de solicitud de la enumeración ENUM_BOOK_TYPE double price; // precio long volume; // volumen double volume_real; // volumen con mayor precisión
};
nos da 4 parámetros, pero no hay tiempo en ella.
¿Quién puede guiarme cómo recordar el tiempo del índice encontrado?
¿Podría decirme, por favor, es posible fijar - recordar la hora del índice encontrado en la clase MarketBook.mqh ?
En este método encontramos el índice de precios en el que se encuentra el volumen máximo en el lado Ask y Bid.
También quiero saber a qué hora terminal obtuvimos este índice.
La estructura del vaso
nos da 4 parámetros, pero no hay tiempo en ella.
¿Quién nos puede apuntar en la dirección de cómo recordar el tiempo del índice encontrado
No hay tiempo, porque la hora de llegada de la cotización en MQL5 no se puede aprender. Lo máximo que se puede hacer es recordar la hora en el momento de llegada del evento OnBookEvent, así que recuérdalo. Recordar la hora de encontrar los máximos de la pila tampoco tiene sentido, necesitas la hora de llegada de la pila de precios, no la hora de encontrar su índice máximo.
La clase CNode no almacena el tipo de la primitiva básica. CEIChart lo hace mediante el miembro m_obj_type.
Gracias Vasiliy
En las nuevas builds del terminal (aproximadamente desde la versión 2170) apareció un problema con las fuentes del artículo ("Escribiendo el cristal de un scalper").
' Evento' - token inesperado, probablemente falta el tipo MBookBtn.mqh 57 12En particular, el archivo principal"MarketBook.mq5" genera errores críticos durante la compilación:
Evento ' - función ya definida y tiene un tipo diferente MBookBtn.mqh 57 12
¿Podría decirme qué está mal y cómo solucionarlo?PD: ahora comprobado"MarketBook.mq5" de un viejo artículo de 2015. Resultó que el mismo tipo de errores se producen con ese proyecto:
' Mostrar' - token inesperado, probablemente falta el tipoMBookFon.mqh 47 11
'Mostrar' - función ya definida y tiene un tipo diferente MBookFon.mqh 47 11
En las nuevas builds del terminal (aproximadamente desde la versión 2170) apareció un problema con las fuentes del artículo ("Escribiendo el cristal de un scalper").
' Evento' - token inesperado, probablemente falta el tipo MBookBtn.mqh 57 12En particular, el archivo principal"MarketBook.mq5" genera errores críticos durante la compilación:
Evento ' - función ya definida y tiene un tipo diferente MBookBtn.mqh 57 12
¿Podría decirme qué está mal y cómo solucionarlo?El lenguaje está evolucionando y los requisitos son cada vez más estrictos.
Veamos el archivo "MBookBtn.mqh", la declaración de la clase CMBookBtn - la función Evento se declara como void
y ahora miramos la propia función en la clase:
el segundo error dice "'Event' - function already defined and has different type MBookBtn.mqh 57 12" - es decir, la función fue declarada con tipo void y aquí está sin especificar el tipo.
Cura:
- simplemente añade void antes de la función en el cuerpo de la clase.
Ahora compile el ... Indicadores\MarketBookArticle\MarketBook.mq5 - no hay errores y ejecutarlo: el vaso funciona.
Todo el código, cuando lo copio y pego para compilar, da error al compilar. ¿Alguien sabe alguna solución?
Lucas, si el error está relacionado con un token inesperado en la clase CMBookBtn, la llamada a la función CMBookBtn::Event debe ir precedida de void.
Eso es lo que teníamos por el momento.
Hola Vasiliy, gracias por su hermoso artículo. Soy nuevo en el mundo MQL5 y me enfrento a un reto con el fin de tratar de ejecutar el código localmente. Creo que es un problema muy tonto, pero no estoy siendo capaz de resolverlo
Cuando intento compilar tu código desde MarketBook.mq5 obtengo el error que puedes ver a continuación.
¿Puede ayudarme a resolver este problema?
Hola.
¿Pueden decirme si es posible fijar - recordar la hora del índice encontrado en la clase MarketBook.mqh?
En este método encontramos el índice de precios en el que se encuentra el volumen máximo en los lados Ask y Bid.
También quiero saber a qué hora terminal obtuvimos este índice.
La estructura de la pila
nos da 4 parámetros, pero no hay tiempo en ella.
¿Quién puede guiarme cómo recordar el tiempo del índice encontrado?
Hola.
¿Podría decirme, por favor, es posible fijar - recordar la hora del índice encontrado en la clase MarketBook.mqh ?
En este método encontramos el índice de precios en el que se encuentra el volumen máximo en el lado Ask y Bid.
También quiero saber a qué hora terminal obtuvimos este índice.
La estructura del vaso
nos da 4 parámetros, pero no tiene tiempo.
¿Alguien puede indicarme cómo recordar la hora del índice encontrado?
heredar la estructura y añadirle un campo adicional al que se le añadirá la hora del tick al rellenarlo
Hola.
¿Podría decirme, por favor, es posible fijar - recordar la hora del índice encontrado en la clase MarketBook.mqh ?
En este método encontramos el índice de precios en el que se encuentra el volumen máximo en el lado Ask y Bid.
También quiero saber a qué hora terminal obtuvimos este índice.
La estructura del vaso
nos da 4 parámetros, pero no hay tiempo en ella.
¿Quién nos puede apuntar en la dirección de cómo recordar el tiempo del índice encontrado
No hay tiempo, porque la hora de llegada de la cotización en MQL5 no se puede aprender. Lo máximo que se puede hacer es recordar la hora en el momento de llegada del evento OnBookEvent, así que recuérdalo. Recordar la hora de encontrar los máximos de la pila tampoco tiene sentido, necesitas la hora de llegada de la pila de precios, no la hora de encontrar su índice máximo.