Discusión sobre el artículo "Creación de un Expert Advisor que opera con varios instrumentos" - página 2

 
gisip:
Todo funciona bien en MQL4 sin temporizador.
Su declaración no es del todo aceptable, estamos hablando de pruebas multidivisa. No hay temporizador en MT4, pero no hay probador multidivisa tampoco. Cuando se trabaja en MT4, el Asesor Experto en cualquier caso depende de la intensidad del flujo de cotizaciones del instrumento en el que trabaja. Imagínese una situación así: digamos que tiene un Asesor Experto multidivisa en EURUSD, y si en algún momento no hay ticks en este par, ¿cómo va a seguir la llegada de nuevos ticks en otros instrumentos?
 
Interesting:

Bueno, no existe en MQL4, también las estructuras y clases no existen allí, ¿propones abandonarlas aquí?


IMHO

Usar o no la librería estándar es cuestión de gustos de cada uno (en el peor de los casos, puedes usar sólo tu propio código), pero renunciar a todas las ventajas sólo porque no están disponibles en MT4 no es muy razonable.....

Yo no escribí sobre eso en absoluto.

Escribí que MQL5 tiene fallos y produce datos erróneos en ciertas combinaciones de instrumentos.

Por ejemplo: Si EURJPY o EURGBP se superpone en el gráfico EURUSD, todo está bien.

Pero si se superpone EURCAD, los datos en el gráfico es un error, mientras que en MQL4 no había tal error.

 
gisip:

Yo no escribí sobre eso en absoluto.

Escribí que MQL5 glitches y produce datos erróneos con ciertas combinaciones de instrumentos.

Por ejemplo: Si se superpone EURJPY o EURGBP en el gráfico EURUSD, todo es normal.

Pero si se superpone EURCAD, los datos en el gráfico con un error, mientras que en MQL4 este no era el caso, no hay ningún error.

Entendí que, pero Kos tiene razón (especialmente agradable post de 2010.07.02 14:57). No puedo entender por qué todos los desarrolladores (incluyendo MQ ) ignoran persistentemente el temporizador. Si tenemos en cuenta que no hay ejemplos oficiales de operadores multidivisa, entonces todo está claro con MQ en este asunto, pero por qué otros ignoran persistentemente OnTimer() para mí personalmente sigue siendo un GRAN misterio....
 
gisip:

Yo no escribí sobre eso en absoluto.

Escribí que MQL5 glitches y produce datos erróneos con ciertas combinaciones de instrumentos.

Por ejemplo: Si se superpone EURJPY o EURGBP en el gráfico EURUSD, todo es normal.

Pero si se superpone EURCAD, los datos en el gráfico con un error, mientras que en MQL4 este no era el caso, no hay ningún error.

Por favor, proporcione un ejemplo con un error.
 
Renat:
Por favor, dame un ejemplo con un error.
Bueno, no voy a escribir todo aquí, parece lo suficientemente claro.
//--------- Opción con MQL4 ---------
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Aqua

extern string InstrumentName = "EURCAD";
double Buffer[];
SetIndexBuffer(0,Buffer); // Asignar array al buffer
SetIndexStyle (0,DRAW_LINE,STYLE_SOLID,2);// Estilo de línea

while(i >= 0){//-- Moverse de derecha a izquierda (es decir, de la barra más alta a la barra 0 que todavía se está formando) --
Buffer[i] = (iHigh(InstrumentName,0,i) + iClose(InstrumentName,0,i) + iLow(InstrumentName,0,i)) / 3;
i--;//-- next Bar
}//next (while)



//----------- Ahora casi la misma variante en MQL5 --------
#property indicator_separate_window // Indic. se dibuja en una ventana separada
#property indicator_buffers 1

#property indicator_plots 1
#property indicator_type1 DRAW_LINE
#property indicator_color1 Aqua

input string InstrumentName = "EURCAD";
double Buffer[];
int handle1;

copied=CopyClose(InstrumentName,0,0,CountBars,Buffer);

//--Ahora lanzamos en EURUSD.

//--No importa en que instrumento coloquemos el indicador, el gráfico no debe cambiar.
 
Por favor, pegue el código correctamente, así es más fácil de entender.
MQL5.community - Памятка пользователя
MQL5.community - Памятка пользователя
  • 2010.02.23
  • MetaQuotes Software Corp.
  • www.mql5.com
Вы недавно зарегистрировались и у вас возникли вопросы: Как вставить картинку в сообщение на форуме, как красиво оформить исходный код MQL5, где находятся ваши Личные сообщения? В этой статье мы подготовили для вас несколько практических советов, которые помогут быстрее освоиться на сайте MQL5.community и позволят в полной мере воспользоваться доступными функциональными возможностями.
 
Rosh:
Por favor, inserte el código correctamente, hace que sea más fácil de entender.

//--------- Opción con MQL4 ---------
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Aqua

extern string InstrumentName = "EURCAD";
double Buffer[];
int init()
{
SetIndexBuffer(0,Buffer); // Asignar matriz a buffer
SetIndexStyle (0,DRAW_LINE,STYLE_SOLID,2);// Estilo de línea
}
int start()
{
while(i >= 0){
Buffer[i] = (iHigh(NombreInstrumento,0,i) + iClose(NombreInstrumento,0,i) + iLow(NombreInstrumento,0,i)) / 3;
i--;//-- next Bar
}//next (while)
}


//----------- Ahora casi la misma variante en MQL5 --------
#property indicator_separate_window // Indic. se dibuja en una ventana separada
#property indicator_buffers 1

#property indicator_plots 1
#property indicator_type1 DRAW_LINE
#property indicator_color1 Aqua

input string InstrumentName = "EURCAD";
double Buffer[];
int OnInit()
{
{ IndicatorSetString(INDICATOR_SHORTNAME,InstrumentName);
SetIndexBuffer(0,Buffer,INDICATOR_DATA);
}

int OnCalculate(....)
{
copied=CopyClose(InstrumentName,0,0,0,CountBars,Buffer);
}
//--Ahora lo lanzamos sobre EURUSD.

//--No importa en qué instrumento coloquemos el indicador, el gráfico no debe cambiar.
 
Gisip, deberías usar la inserción de código usando el botón "SRC"...
 

Por favor, haz un ejemplo reproducible. Es decir, necesitas un código listo que puedas compilar, lanzar en un gráfico y obtener resultados.

Sin esto, poca gente entenderá de qué estamos hablando.
 

Voy a ayudar a los que están privados de conciencia.

//----------- Ahora casi la misma variante en MQL5 --------
#property  indicator_separate_window    // El indicador se dibuja en una ventana independiente
#property indicator_buffers 1

#property indicator_plots   1
#property indicator_type1   DRAW_LINE
#property indicator_color1  Aqua

input string InstrumentName = "EURCAD";
double Buffer[]; 
int OnInit() 
{
   IndicatorSetString(INDICATOR_SHORTNAME,InstrumentName);
   SetIndexBuffer(0,Buffer,INDICATOR_DATA);
return(0);
}

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime& time[],
                const double& open[],
                const double& high[],
                const double& low[],
                const double& close[],
                const long& tick_volume[],
                const long& volume[],
                const int& spread[])
{
int copied;
int CountBars=rates_total;
  copied=CopyClose(InstrumentName,0,0,CountBars,Buffer);
  return(copied);
}
//--Ahora lánzalo a EURUSD.

//--No importa en qué instrumento coloquemos el indicador, el gráfico no debe cambiar.

Idealmente no debería, pero lo tengo chirriando con algoritmos apareció sólo en 1 TF en los demás categóricamente mostró el vacío .....

incluso después de una hora de pruebas.....

e intentos de subir historial