Preguntas de un "tonto" - página 54

 
Urain:
Corregir los errores del hombre con el apodo de Experto... eso debería ir en el hilo de humor.
¿Qué parte de tu post es trolling en una escala de 10? =)
 
Expert:
En cuanto a tu post se relaciona con el trolling en una escala de 10? =)

Al principio pensé que era Andrei quien hacía esas preguntas, pero luego recordé que su apodo es TheXpert, al que corresponde.

Como te has acercado tanto, prepárate para que se te exija el doble.

Mejor cámbialo, no es tarde para 3 post, ya hay bastante experto en este foro.

 
tol64:

Por favor, indique cómo implementar correctamente la nueva comprobación de barras en el EA multidivisa en el esquema presentado.

He añadido un array estático para almacenar la hora de apertura de una nueva barra para cada símbolo:

void OnTick()
{ 
 // Объявление массивов переменных для торговых сигналов
 static datetime New_Bar[2];  
 static bool UpSignal[2], DnSignal[2];

 // Получение торговых сигналов
 TradeSignalCounter(0, остальные параметры);
 TradeSignalCounter(1, остальные параметры);

 // Совершение торговых операций
 TradePerformer(0, остальные параметры);
 TradePerformer(1, остальные параметры);
}

Función modificada isNewBar(string Symbol_, ENUM_TIMEFRAMES Timeframe); Ahora funciona con el arrayNew_Bar[].

bool isNewBar(int Number,string Symbol_,ENUM_TIMEFRAMES Timeframe,datetime &New_Bar[])
{
 // Текущее время
 datetime lastbar_time = (ENUM_SERIES_INFO_INTEGER)SeriesInfoInteger(Symbol_,Timeframe,SERIES_LASTBAR_DATE);

 // Если это первый вызов функции
 if(New_Bar[Number] == 0)
   {
    // Установим время и выйдем 
    New_Bar[Number] = lastbar_time;
    return(false);
   }

 // Если время отличается
 if(New_Bar[Number] != lastbar_time)
   {
    // Запомним время и вернем true
    New_Bar[Number] = lastbar_time;
    return(true);
   }
 // Дошли до этого места - значит бар не новый, вернем false
 return(false);
}
Los resultados siguen siendo diferentes para distintas herramientas con parámetros invariables. ¿Puede decirme en qué me equivoco?
 
Urain:

Al principio pensé que era Andrei quien hacía esas preguntas, pero luego recordé que su apodo es TheXpert, al que corresponde.

Al estar tan cerca, prepárate para que seas doblemente solicitado.

Mejor cámbialo, 3 puestos no es demasiado tarde, el foro un experto es suficiente.

Al principio pensé que Andrew está haciendo este tipo de preguntas (en el contexto entender el estúpido) pide, pero luego me acordé de que él apodadoTheXpert, que coincide (oops, insulto oculto TheXpert) =)

P.D. Me estoy sentando a pensar en un nuevo apodo.

 
papaklass:
Los resultados serán diferentes porque la función OnTick() se dispara cuando llega un nuevo tick para el símbolo, en el gráfico en el que trabaja el Asesor Experto. Los ticks de los distintos símbolos no se producen al mismo tiempo. Esto conduce a la divergencia de los resultados finales. Si configura su EA para que trabaje con la divisa más líquida, con los ticks más altos del día (eurusd), no se preocupe.

La razón por la que los resultados son diferentes está clara para mí. Ya se ha discutido en varios hilos muchas veces. En mi caso, no es posible que se me empañe). Hay un problema que hay que resolver para obtener resultados correctos en las pruebas. Esquema propuesto por Nicholas Kositsin para mí en este momento el más comprensible y bastante adecuado. No hay manera de resolver el problema expresado anteriormente.

Konstantin Gruzdev propuso en su artículo un interesante método con "espías" y "agentes". )) Pero su "agente" exSpy Control panel MCM no parece funcionar para mí.

¿Ha intentado alguien resolver el problema anterior con la ayuda de los "agentes" de Konstantin Gruzdev?

 
tol64:

¿Ha intentado alguien resolver el problema anterior con los "agentes" de Konstantin Gruzdev?

No creo que esta técnica funcione en el probador.

// Trabajar por temporizador. ¿Qué es lo que no le gusta?

 
MetaDriver:
Creo que esta tecnología no funcionará en el probador.

El propio Konstantin comentó en el hilo de discusión del artículo lo siguiente

OnChartEvent() aún no funciona en el probador. Los desarrolladores prometieron hacerlo. He probado, si se puede llamar prueba, la metodología con la llamada de "espías" directamente desde el Asesor Experto en el probador, sustituyendo la transferencia de eventos a través de variables globales - funciona.

Esa es la manera de probarlo.

Tengo algunas variantes más en la cabeza, pero me parecen bastante complicadas. En cualquier caso, tendré que resolver este problema. Estoy cansado de equivocarme en los resultados. Empecé a estudiar MQL5 exclusivamente por la posibilidad de probar sistemas de trading multidivisa. Antes de eso, subía los resultados de las pruebas a Excel y realizaba los cálculos allí. Pero necesito ver los resultados directamente en el probador de estrategias.

Vladimir, ¿cómo has resuelto esta cuestión?

MetaDriver:

// Trabajar por temporizador. ¿Qué es lo que no le gusta?

Ah, ya contestado)). Sí, algunos "tiburones" del foro ya han sugerido esta opción también, pero aún no he visto cómo se puede implementar. Intentaré concentrarme ahora y hacer por fin esta función necesaria. Si tienes una solución preparada, te agradecería profundamente al menos un simple ejemplo, si no te importa)).

 
MetaDriver:

// Trabaja con un temporizador. ¿Qué es lo que no le gusta?

He intentado probarlo en el temporizador. Todo me parecía más complicado, pero aquí resulta que es suficiente con mover el código de la función OnTick() a OnTimer(). Los resultados son idénticos. Para ser preciso, tendrás que ajustar el temporizador, por ejemplo, cada 10 segundos. Sin embargo, tarda mucho más en probarse, que es lo único que puede no gustar a primera vista.
Документация по MQL5: Работа с событиями / EventSetTimer
Документация по MQL5: Работа с событиями / EventSetTimer
  • www.mql5.com
Работа с событиями / EventSetTimer - Документация по MQL5
 
tol64:
He intentado probarlo en un temporizador. Me parecía todo más complicado, pero aquí resulta que sólo tengo que traducir el código de la función OnTick() a OnTimer(). Los resultados son idénticos. Para ser preciso, tendrás que ajustar el temporizador, por ejemplo, cada 10 segundos. Es cierto que las pruebas llevan mucho más tiempo; es lo único que puede resultar desagradable a primera vista.

Depende del periodo del temporizador. Puedes hacerlo durante 10 días (60*60*24*10), será más rápido. :))

También hay sutilezas. Por ejemplo, no tiene que marcar los fines de semana. ;)

 
tol64:
Pero se necesita mucho más tiempo para probarlo

Si el "ticking" es necesario sólo para captar una nueva barra, es suficiente con establecer un temporizador para el tiempo de aparición de la barra (00 minutos 00 segundos para H1) y hacer un ticking cada 1 segundo durante un par de minutos hasta que la barra aparezca en todos los TFs necesarios. Será más preciso y económico.

Pero una solución con eventos personalizados es, por supuesto, mucho más elegante.

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Типы событий графика
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Типы событий графика
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы графиков / Типы событий графика - Документация по MQL5