Un asesor sin indicador, ¿es posible? - página 3

 
Алексей Тарабанов:

Un peligroso error.

¿Cuál es la idea errónea?
Si necesitas una matriz de historia, hazlo. Si no lo necesitas, no lo hagas.
Personalmente, la mayoría de las veces hago una matriz, ya que a menudo utilizo pruebas internas, etc. Pero mi matriz rara vez es igual al número de barras del gráfico. A veces menos, a veces más.
Por ejemplo, un zigzag común. Hay menos del 10% de los elementos del array informativo y el resto están vacíos, pero todo el array está enumerado. ¿Y? ¿Es eficiente? Obviamente, es más correcto utilizar una matriz más corta de estructuras con valor e índice.
 

Pero mi matriz rara vez es igual al número de barras del gráfico. A veces menos, a veces más.

Lo que me preocupa es que podría ser mayor.

 
Nikolai Semko:
En primer lugar, quién le impide tener un array de datos interno, igual que el buffer de indicadores, y llenarlo de la misma manera.
En segundo lugar, ¿por qué iba a necesitar un asesor todo el historial? Por regla general, el último y quizá el penúltimo valor. Y no necesitamos todas estas cosas de los indicadores.

¿Y qué es más razonable en términos de recursos, calcular en el indicador o en el Asesor Experto, que es más rápido?

 
Алексей Тарабанов:

Pero mi matriz rara vez es igual al número de barras del gráfico. A veces menos, a veces más.

Lo que me preocupa es que pueda ser mayor.

Te preocupas en vano, Alexey.
Puede haber situaciones en las que esto sea necesario, gugilen.
Por ejemplo.
Principalmente utilizo datos de barras de minutos o ticks, independientemente del TF.
Es muy erróneo y derrochador que su Asesor Experto tenga que recalcular todos los indicadores del buffer cada vez que cambia de TF. A mí no me pasa eso.
Por lo tanto, si estoy en un marco de tiempo semanal, mi matriz será obviamente mucho más grande que el número de barras en el gráfico.
Y ni siquiera estoy hablando de las garrapatas.
Por regla general, tengo varias matrices de estructuras y matrices de índices para aumentar la productividad y ahorrar memoria. Sus dimensiones pueden ser diferentes.
En general, cuando se utilizan indicadores a través de iCustom, se está muy limitado en muchas cosas.
Se está rígidamente limitado al tamaño de la matriz igual al número de barras en el gráfico. ¿Qué pasa si tienes un número ilimitado de personas de pie allí?
Sólo está vinculado a un tipo de doble. Y ni siquiera puedes soñar con tener un conjunto de estructuras.
Es incluso ridículo con los indicadores de color. 8 bytes por barra es obviamente demasiado.
Los búferes de los indicadores son muy derrochadores en términos de consumo de memoria.
Además, usted tiene acceso a los búferes sólo a través de CopyBuffer, incluso si usted necesita sólo una última barra. En cualquier caso, esta operación es mucho más lenta que el simple acceso a los elementos de la matriz.

Por supuesto, si está utilizando indicadores estándar incorporados como iMA, no tiene que molestarse. Pero, sin embargo, creo que estamos hablando de indicadores personalizados. No creo que los profesionales utilicen los indicadores incorporados para el comercio real.


 
VVT:

¿Y qué es más conveniente en términos de ahorro de recursos, contar en un indicador o contar lo mismo en un EA, que es más rápido?

He respondido parcialmente en el post anterior.
Esta es una pregunta muy larga y es mejor preguntar a los desarrolladores, especialmente a los responsables del multithreading.

No soy un especialista en esta cuestión. Pero puedo compartir mis pensamientos. Si me equivoco en algo, por favor corrígeme si lo sabes correctamente.
Como usted sabe, cada Asesor Experto trabaja en un hilo separado, mientras que todos los indicadores de un símbolo (incluso en diferentes gráficos) trabajan en un hilo común.
Por lo tanto, podemos asumir que si el símbolo no está sobrecargado con indicadores, el trabajo del Asesor Experto y el cálculo del buffer del indicador se ejecutarán en paralelo e incluso en diferentes núcleos de la CPU, si el planificador del sistema operativo tiene la suerte de encontrar un núcleo de procesador separado para su hilo de indicador. Es muy posible que obtenga resultados más eficientes en dicho esquema. No sé cuál es la probabilidad de obtener un núcleo separado para un hilo indicador, pero creo que no es muy alta.
Pero hay nociones como la velocidad de cambio de contexto de los hilos y muchas otras sutilezas de la interacción de múltiples hilos. Sé que la velocidad de cambio de contexto de los hilos es muy alta en comparación con la de los procesos, pero no es gratuita.
Además, como dije antes el acceso al elemento del buffer indicador a través de CopyBuffer será más caro que el acceso a un elemento del array por su índice.
También la capacidad de optimizar loscálculos innecesarios, el tamaño de las matrices internas y su indexacióndentro del Asesor Experto proporciona un gran potencial para reducir el consumo de recursos.
Por supuesto, necesitará experimentos y pruebas adecuadas para dar una respuesta completa a su pregunta. Pero todavía me inclino más a creer que el rendimiento medio es mejor, todo en un hilo de Expert Advisor.

 
Dmitry Fedoseev:

¿Y correr cada vez en un ciclo? La EMA sería aún más interesante.

Utilizar el algoritmo de paso único para calcular la media ponderadaexponencialmente

ma = (1 - a) * precio + a * ma

 
Dmitry Fedoseev:

Un indicador normal cuenta todas las barras sólo al principio, y después cuenta 1 barra. En el indicador es fácil de hacer SMA de tal manera, que incluso en el cálculo de 1 bar no hay necesidad de ciclo a través de todo el período de MA.

Por supuesto, podemos crear buffers de matriz en el Asesor Experto. ¿Pero para qué, si hay un elemento especialmente diseñado - indicadores?

¿Cuál es el problema? Apareció un nuevo bar - lo consideramos.

 
anim:
Quiero que el Asesor Experto no esté ligado a un indicador.Calcularía las barras y tomaría señales de compra/venta internamente. ¿Es posible?
¡Por supuesto que es posible, si se implementa la fórmula del indicador en el Asesor Experto!
 
Vladimir Mikhailov:

Utilizar el algoritmo de una sola pasada para calcular una media ponderadaexponencialmente

ma = (1 - a) * precio + a * ma

Esto no es correcto.

Lo correcto es:

ma[i] = (1 - a) * precio + a * ma[i+1]

es decir, necesitamos un array cuya profundidad necesaria depende del parámetro a.

De lo contrario, será un total despropósito, al menos mientras dure el proceso de transición, que puede durar bastante tiempo, dependiendo del parámetro a.

Es fácil comprobar todo esto comparando las lecturas del indicador con los cálculos correspondientes en el EA.
 
Dmitry Fedoseev:

Por supuesto, también es posible hacer buffers de un array en el Expert Advisor... Pero, ¿por qué, cuando hay un elemento especialmente diseñado - indicadores?

Tengo un problema con la omisión de señales de un indicador, nadie dio una recomendación

https://www.mql5.com/ru/forum/365021

las impresiones muestran que el evento viene del indicador, comprueba si hay una nueva barra, y están los datos de la barra anterior, no la nueva

He probado en 3 terminales a la vez, los dos saltos fueron en uno de los tres terminales, puede ser que sea aleatorio

В моих ТС пропуск сигнала
В моих ТС пропуск сигнала
  • 2021.03.16
  • www.mql5.com
Не люблю создавать новые темы, Небольшие исходные данные: Советник работает в OnChatEvent, 7 символов, циклов нет, прямая передача номера за минусо...
Razón de la queja: