Discusión sobre el artículo "LifeHack para tráders: preparando "comida rápida" a partir de indicadores" - página 3
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
...empieza a hacer llamadas con diferentes parámetros, multiplica los indicadores, pierde todas las asas, y luego se pregunta sobre los frenos y el consumo de memoria.
Para ser honesto, no he entendido cómo se puede perder una manija, si se almacena detrás de las escenas de MetaTrader.
p.s. En general, que el autor del artículo se una a la discusión y explique algunos puntos sobre su visión de trabajar con handles de indicadores en MT5.
Para ser honesto, nunca entendí cómo se puede perder un mango si se memoriza detrás de las escenas de MetaTrader.
Con este enfoque de la calidad del código, no tengo más preguntas.
No está claro a qué te refieres con lo que has dicho. Por lo que tengo entendido, los hendles no se cierran en ninguna parte( no hayllamadas a IndicatorRelease ). Hay una llamada constante a funciones estándar de creación de hendles, como iMACD:
Obviamente, todo el juego aquí se basa en el hecho de que iMACD y funciones similares caché dentro de sí mismos la manija devuelta anteriormente, por lo que no debería haber ninguna recreación del indicador.
Sí, tenía una idea inicial para demostrar que en MQL5 se debe trabajar con indicadores de una manera elegante: se debe crear un handle en OnInit(), y el acceso a los datos del indicador se debe obtener a través de funciones CopyXXXX, y si se utiliza la recreación de handles al estilo MQL4, está muy mal y será un desastre: se comerá la memoria. Pero en el proceso resultó que el kernel de MQL5 es tan inteligente (obviamente hay caché interna de handles idénticos) que no permite recrear handles.
El efecto secundario es que el kernel MQL5 esta tan bien diseñado que permite que MQL5 funcione de una manera que no esta de moda.
No he visto ninguna similitud.
Ambos artículos ofrecen lo mismo - escribir la variante más simple del estilo MQL4 en MQL5. Compare esto
Foro sobre Trading, Sistemas Automatizados de Trading y Prueba de Estrategias de Trading
Discusión del artículo "LifeHack para trader: cocinar comida rápida a partir de indicadores"
Vasiliy Sokolov, 2018.01.25 16:05
y esto
De hecho, es la misma cosa.
Deben estar presentes? Creo que el título del artículo (o más bien su descripción) dice claramente sólo acerca de los indicadores?
No deberían, a juzgar por el título. Pero el artículo toca el tema del trabajo con series temporales al estilo de MQL4. Y sin ella, obtenemos una solución incompleta. Casi todo el mundo utiliza "High[i]" en MQL4. Además, su implementación es fácil de encontrar.
Por desgracia, MQL no soporta funciones con un número arbitrario de parámetros, por lo que iCustom no es posible implementar "al igual que en MT4"
No creo que sea posible escribir un motor completo emulando completamente el estilo de MT4 en un solo artículo. El tema estaba claramente establecido: trabajar con indicadores en estilo MQL4 (es una pena que el título del artículo no refleje el tema, lo cual es confuso).
El estilo MQL4 sigue siendo un concepto, pero no una adhesión clara a la sintaxis.
Si se usa la recreación de handles al estilo de MQL4, es muy incorrecto y causará problemas: se consumirá memoria.
Por eso surge la pregunta, ¿por qué implementaron un trabajo incorrecto cuando podría hacerse correctamente y al estilo de MQL4?
MQL5 no es inteligente, sólo tiene una protección infalible. De lo contrario, cualquier error accidental llevaría a consecuencias desafortunadas. Pero la protección a prueba de tontos, como muestran las mediciones de rendimiento, está diseñada de tal manera que hay un fallo en el rendimiento. Por eso es necesario trasladar la "re-creación del handle" al wrapper de MQL5, ocultándolo (una pequeña parte de las capacidades OOP) a los ojos del usuario.
... Pero también la prueba de tontos, como las mediciones de rendimiento muestran, se hace de tal manera que hay una caída en el rendimiento ...
Sí, eso es interesante. Voy a medir la velocidad y publicar mis conclusiones aquí.
Medido en el más simple de los espacios en blanco.
La sobrecarga es de aproximadamente tres veces. Así que, sí, MetaTrader 5 toma mucho tiempo para encontrar un mango en caché.
Tuve una idea para probar esto: un EA similar a"MACD MQL4 estilo EA corto", sólo que en ella se puede abordar no dos, sino tres, cuatro, cinco indicadores .... En este contexto, "indicador" significa (usando MACD como ejemplo) un indicador con diferentes parámetros pero un símbolo cada uno.
He borrado mi post anterior porque me di cuenta de que MACD MQL4 estilo EA, además, accede al subsistema de gráficos:
Es decir, la prueba realizada se realizó incorrectamente. Después de comentar la función Comment, el rendimiento es casi igual:
Conclusiones: MetaTrader 5 sigue encontrando eficazmente la caché creada anteriormente y es posible utilizar el codestyle propuesto.
Pero la protección infalible, como muestran las mediciones de rendimiento, está hecha de tal manera que se produce un fallo de rendimiento. Por eso es necesario trasladar la "re-creación del handle" al wrapper MQL5, ocultándolo (una pequeña parte de las características OOP) a los ojos del usuario.
MetaTrader 5 requiere bastante tiempo para encontrar un mango en caché.
No hay certeza de que un usuario pueda acelerar este proceso de forma general. Obviamente, la sobrecarga se gasta en el cálculo de la función hash.
Una variante de tal función hash indicadora en una forma general fue publicada aquí
No me importaba el rendimiento allí, pero estaba claro que cualquier entrada de función hash debe ser un array de MqlParam-values. Y esto no puede funcionar rápido teniendo en cuenta el hecho de que hay un campo de cadena lenta.
Por lo tanto, escribir un indicador universal rápido función hash mucho más rápido que lo que está incorporado en MT5 es una tarea abierta. Pero estoy categóricamente en contra de llamar a los indicadores de alguna parte. Es por eso que ni siquiera quiero entender la cuestión.
Hay otro pensamiento sobre smart MQL5. Hay un montón de Asesores Expertos, donde el mismo indicador se llama en cada barra, pero con diferentes parámetros de entrada. MQL5 "dispara" manijas innecesarias en el tiempo. Pero esta es una solución universal. Y en un Asesor Experto, el autor puede tomar esta responsabilidad sobre sí mismo, matando a las manijas por sí mismo. Es obvio que es super-despilfarro en términos de recursos computacionales y de memoria para llevar el equipaje de un centenar de asas a través de un centenar de bares. Pero no he visto EAs en el mismo kodobase que clavaran un asa de esta manera. Todo se da a la "astucia de MQL5", obligando así a los autores a no ser nada astutos.
Pero repito, los indicadores y las barras son malvados.
No hay certeza de que un usuario pueda acelerar este proceso de forma general. Obviamente, la sobrecarga se gasta en calcular la función hash.
Una variante de dicha función hash indicadora de forma general se publicó aquí
Bueno, querías volcar mucha información al lector en un solo artículo. Pero en cuanto a tu método - es una solución de cabeza, ¿has probado otros? ¿Y comparado el rendimiento?