![MQL5 - Lenguaje de estrategias comerciales para el terminal de cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Permítanme recordarles que el resultado se obtuvo con un simple Asesor Experto, que prácticamente no dedica tiempo a ningún análisis y no utiliza indicadores, es decir, los resultados habrían sido aún más tristes con un EA en funcionamiento.
Permítanme recordarles que el resultado se obtuvo con un simple Asesor Experto, que prácticamente no dedica tiempo a ningún análisis y no utiliza indicadores, es decir, los resultados habrían sido aún más tristes con un EA en funcionamiento.
Para comparar:
Ejecutar esta prueba con 10000 operaciones en una máquina Windows 7, Intel Pentium Dual-Core E5400 @ 2.70 GHz, 2038 MB (PR111) tomó 472866ms.
A la luz de lo anterior, existe cierta probabilidad de que algunos de los candidatos al Campeonato 2010 hayan sido injustamente descalificados debido a la barrera de los 15 minutos y a las peculiaridades del probador (si hubiera muchos tratos).
** - Hubo varias veces en las que el probador no pudo mostrar el gráfico de símbolos con las operaciones mostradas al final de la prueba.
No fui capaz de escribir un "simple EA" que mostrara tales resultados. Aquí está mi código:
Aquí están los resultados de la optimización, con la columna Resultado mostrando el tiempo de ejecución en milisegundos.
No he sido capaz de escribir un "simple EA" que muestre estos resultados. Aquí está mi código:
Aquí están los resultados de la optimización, la columna Resultado muestra el tiempo de ejecución en milisegundos.
Interesante...
Código EA, por favor, publique el código.
El Asesor Experto se basa en la plantilla del artículo Cómo escribir rápidamente un Asesor Experto para el Campeonato de Comercio Automatizado 2010.
La clase CExpertAdvisor se utiliza sin ningún cambio. ¿Tal vez sea un efecto secundario del uso de las clases? Los resultados de la prueba dan la impresión de que la ralentización comienza tras superar algún umbral. ¿Tal vez se trate de una tabla de transacciones de tamaño limitado, después de la cual la reasignación de memoria/recolección de basura comienza a surtir efecto?
PS. Una vez más me gustaría recordarles que el Asesor Experto utiliza la característica de la cuenta Alpari-Demo (margen cero), de lo contrario el número de operaciones puede cambiar.
No he sido capaz de escribir un "simple EA" que muestre estos resultados. Aquí está mi código:
Aquí están los resultados de la optimización, la columna Resultado muestra el tiempo de ejecución en milisegundos.
¿Tampoco hay problemas con la salida a XLSX?
No he sido capaz de escribir un "simple EA" que muestre estos resultados. Aquí está mi código:
Aquí están los resultados de la optimización, la columna Resultado muestra el tiempo de ejecución en milisegundos.
Tabla - Resultado del optimizador: ¿Registro OFF? ¿Un efecto secundario de la tala de árboles?
Un EA basado en la plantilla del artículo Cómo escribir un EA rápido para el Campeonato de Comercio Automatizado 2010.
La clase CExpertAdvisor se utiliza sin ningún cambio. ¿Tal vez sea un efecto secundario del uso de las clases? Los resultados de la prueba dan la impresión de que la ralentización comienza tras superar algún umbral. ¿Tal vez se trate de una tabla de transacciones de tamaño limitado, después de la cual la reasignación de memoria/recolección de basura comienza a surtir efecto?
PS. Una vez más me gustaría recordarles que el Asesor Experto utiliza una característica de la cuenta Alpari-Demo (margen cero), de lo contrario el número de operaciones puede cambiar.
Esta clase contiene el método GetDealByOrder(ulong order)
que se llama en cada operación. En consecuencia, cada vez se revisa todo el historial de operaciones y se produce una ralentización del tiempo de prueba que es proporcional al cuadrado del número de operaciones.
Es mejor no utilizar estas cosas en un Asesor Experto que necesita ser optimizado o probado, porque las pérdidas de tiempo son inevitables. Para estos casos es mejor sustituir estas llamadas de forma algorítmica.
Esta clase contiene el método GetDealByOrder(ulong order)
que se llama en cada transacción. En consecuencia, cada vez se busca en todo el historial de operaciones y se produce una ralentización del tiempo de prueba, proporcional al cuadrado del número de operaciones.
Es mejor que no use esas cosas en el Asesor Experto que necesita ser optimizado o probado, porque inevitablemente perderá tiempo. Para estos casos es mejor sustituir estas llamadas de forma algorítmica.
Es decir, todos los que utilizaron la plantilla del Asesor Experto están "afectados"...
¿Qué pasa con XLSX? No tiene nada que ver con el código del Asesor Experto, ¿verdad?
Esta clase contiene el método GetDealByOrder(ulong order)
ulong CExpertAdvisor::GetDealByOrder(ulong order) // получение тикета сделки по тикету ордера
{
PositionSelect(m_smb);
HistorySelectByPosition(PositionGetInteger(POSITION_IDENTIFIER));
uint total=HistoryDealsTotal();
for(uint i=0; i<total; i++)
{
ulong deal=HistoryDealGetTicket(i);
if(order==HistoryDealGetInteger(deal,DEAL_ORDER))
return(deal); // запомнили тикет сделки
}
return(0);
}
que se llama en cada transacción. Por lo tanto, en este Asesor Experto, bajo estas condiciones especificadas, se busca todo el historial de transacciones cada vez, y el tiempo de prueba que es proporcional al cuadrado del número de transacciones, se ralentiza.
Es mejor no utilizar estas cosas en un Asesor Experto que necesita ser optimizado o probado, porque las pérdidas de tiempo son inevitables. Para estos casos es mejor sustituir estas llamadas de forma algorítmica.
HistorySelectByPosition(PositionGetInteger(POSITION_IDENTIFIER));
¿Este método busca en todo el historial, y no sólo en la parte del historial que está asociada a una posición abierta? Si no tengo más de 5 operaciones conectadas con una posición abierta, creo que es mejor usar HistorySelectByPosition que buscar en todo el historial HistorySelect(0,TimeCurrent());
P.D. CExpertAdvisor no miró
HistorySelectByPosition(PositionGetInteger(POSITION_IDENTIFIER));
¿Este método busca en toda la historia? ¿Y no sólo en la parte de la historia que está relacionada con una posición abierta? Si no tengo más de 5 operaciones conectadas con una posición abierta, creo que es mejor usar HistorySelectByPosition que buscar en todo el historial HistorySelect(0,TimeCurrent());
P.D. CExpertAdvisor no miró
En este caso, tenemos miles de ofertas en una posición, y todas tienen el mismo identificador de posición POSITION_IDENTIFIER. Por lo tanto, la llamada de HistorySelectByPosition en este caso es equivalente a la llamada de HistorySelect(0,TimeCurrent()), la enumeración de estos tratos lleva a una búsqueda de todos los tratos del historial.
Digamos que se hizo un ejemplo desafortunado de uso del patrón del artículo. Es como en la historia de los hombres siberianos y la motosierra japonesa.
¿Qué pasa con XLSX? ¿No tiene nada que ver con el código EA?