Una vez más, sobre el multihilo - página 5

 

No soy ni mucho menos un experto, así que pido disculpas por adelantado.

Estoy escribiendo un EA.

La tarea:

1) Utilizar varios indicadores. Un mismo indicador puede ser utilizado con diferentes configuraciones (periodos) - ¿cómo hacer que funcionen en paralelo, para reducir el tiempo de obtención de señales?

2) Paralelamente a la recepción de señales de los indicadores, realizar una comprobación constante y cerrar las posiciones rentables o perdedoras. Además, tenemos muchos puestos vacantes, por lo que este proceso debe paralizarse por partes. Por ejemplo, podemos comprobar 1000 pedidos en 3 o 4 hilos.

3) Paralelamente a los procesos anteriores, utilice las señales recibidas de los indicadores del punto 1 para comprar o vender.


Lo más interesante es cómo paralelizar todas estas tareas para que el probador esté disponible y las optimizaciones en el probador sean posibles.

Señale el camino, preferiblemente con ejemplos. Gracias de antemano.

 
dd:

No soy ni mucho menos un experto, así que pido disculpas por adelantado.

Tarea:

1) Utilizar varios indicadores. Un mismo indicador puede ser utilizado con diferentes configuraciones (períodos) - como hacerlos trabajar en paralelo, para reducir el tiempo de recepción de las señales.

2) Paralelamente a la recepción de señales de los indicadores, realizar una constante comprobación y cierre de posiciones rentables o perdedoras. Además, tenemos muchos puestos vacantes, por lo que este proceso debe paralizarse por partes. Por ejemplo, podemos comprobar 1000 pedidos en 3 o 4 hilos.

3) Paralelamente a los procesos anteriores, utilice las señales recibidas de los indicadores del punto 1 para comprar o vender.


Lo más interesante es cómo paralelizar todas estas tareas para que el probador esté disponible y las optimizaciones en el probador sean posibles.

Señale el camino, preferiblemente con ejemplos. Gracias de antemano.

¿Has abierto alguna vez el terminal? En general, el probador y el optimizador están siempre disponibles en paralelo con la negociación en la cuenta.

Me pregunto cuánto tiempo se tarda en recibir las señales de los indicadores si se plantea la necesidad de ponerlos en paralelo.

 
Dmitry Fedoseev:

¿Has abierto el terminal alguna vez? El probador y el optimizador están siempre disponibles en paralelo con la negociación en la cuenta.

Me pregunto cuánto tiempo se tarda en recibir las señales de los indicadores, si hay alguna duda sobre la necesidad de paralelizarlos.

Lo hice, y obviamente más largo que el tuyo. Un tick es un segundo. Durante este tiempo usted necesita comprobar, digamos, 4 indicadores - construir gráficos. Obtenga señales, compre o venda, cierre 1000 órdenes y demás ... Y como cada milisegundo cuenta... Más concretamente, en las cuentas negativas. El tiempo es oro :)
 
dd:

1) Utilizar varios indicadores. Un mismo indicador puede ser utilizado con diferentes configuraciones (periodos) - ¿cómo hacer que funcionen en paralelo, para reducir el tiempo de obtención de señales?

2) Paralelamente a la recepción de señales de los indicadores, realizar una comprobación constante y cerrar las posiciones rentables o perdedoras. Además, tenemos muchos puestos vacantes, por lo que este proceso debe paralizarse por partes. Por ejemplo, podemos comprobar 1000 pedidos en 3 o 4 hilos.

3) Paralelamente a los procesos anteriores, utilice las señales recibidas de los indicadores del punto 1 para comprar o vender.

Los indicadores lanzados en un símbolo funcionan en un flujo. Pero si se escriben bien, no habrá retraso (se contará en milisegundos).

Pero todas las operaciones de trading pueden paralelizarse utilizando Asesores Expertos / scripts adicionales. Llámelos desde el EA principal si es necesario, o manténgalos en funcionamiento todo el tiempo. Un ejemplo de la aplicación se puede encontrar en este artículo. O utilizar el OrderSend asíncrono, pero en este caso será un poco más difícil de controlar.


dd:

Y lo más interesante = ¿cómo paralelizar todas estas tareas para que el probador y la optimización en el probador estén disponibles?

Todo esto no es necesario para el probador, ya que funciona de forma sincronizada y no se pierden los ticks. Hacer 2 variantes - para el probador y para la línea (si ( IsTesting() ).

Многопоточный асинхронный WebRequest на MQL5 своими руками
Многопоточный асинхронный WebRequest на MQL5 своими руками
  • www.mql5.com
Реализация торговых алгоритмов часто требует анализа информации из различных внешних источников, в частности из Internet. MQL5 предоставляет функцию WebRequest для отправки HTTP-запросов во "внешний мир", но она, к сожалению, обладает одним заметным недостатком. Эта функция является синхронной, а потому блокирует работу эксперта на все время...
 
Andrey Khatimlianskii:

Los indicadores que se ejecutan en la misma herramienta se ejecutan todos en el mismo hilo. Pero si los escribe correctamente, no habrá ningún retraso (se contará en milisegundos).

Pero todas las operaciones de trading pueden paralelizarse utilizando Asesores Expertos / scripts adicionales. Llámelos desde el EA principal si es necesario, o manténgalos en funcionamiento todo el tiempo. Un ejemplo de la aplicación se puede encontrar en este artículo. O bien, puede utilizar OrderSend asíncrono, pero en este caso, el control será un poco más difícil.


Para el probador todo esto es innecesario, funciona de forma sincronizada y no se salta los ticks. Hacer 2 variantes - para el probador y para la línea (si ( IsTesting() ).



Los indicadores lanzados en una herramienta funcionan todos en un hilo. Pero si los escribes bien, no habrá retraso (durarán milisegundos).

--- No lo entiendo. No voy a escribir mis propios indicadores. Estoy utilizando indicadores OEM. Y la cuestión es que quiero utilizarlos en paralelo para reducir el tiempo de respuesta...


No es necesario todo esto para el probador, funciona de forma sincronizada y no se salta los ticks. Hacer 2 variantes - para el probador y para la línea (si ( IsTesting() ).

---- No lo entiendo en absoluto. ¿Quién no lo necesita? Funciona de forma sincrónica --- pero para mí necesita viceversa, para tener en cuenta mi asincronía... ¿Qué demonios son dos variantes? Tengo una variante de mi EA y quiero ejecutarla en el probador, pero quiero paralelizar mis procesos y mostrarla en el probador.

Debido al hecho de que todo se ejecuta de forma secuencial, empiezo a tener detracciones.

Archivos adjuntos:
 
dd:

--- No lo entiendo. No voy a escribir mis propios indicadores. Estoy usando los estándar. Y la cuestión es que quiero utilizarlos en paralelo para reducir el tiempo de respuesta...

¿Ha medido el tiempo de respuesta? Perderás más en el paralelo.


dd:

---- No lo entiendo en absoluto. ¿Quién no lo necesita? Funciona en sincronía --- pero necesito que tenga en cuenta mi asincronía... ¿Cuáles son las dos variantes? Tengo una variante de mi EA y quiero ejecutarla en el probador, pero quiero paralelizar mis procesos y mostrarla en el probador.

Un EA:

if ( IsTesting() )
{
   // работаем нормально
}
else
{
   // распараллеливаем торговые приказы
}

¿Por qué probar la paralelización en el Probador de Estrategias?

 
dd:

Debido a que todo se ejecuta secuencialmente, estoy empezando a tener drawdowns, y estoy teniendo un infierno de drawdowns.

Distribuir el envío de órdenes comerciales o utilizar OrderSendAsync

Si necesitas cerrar un montón de operaciones, puedes abrir una gran ficha, bloquear un beneficio y luego cerrar tranquilamente el OrderCloseBy una sobre otra.
 
Andrey Khatimlianskii:

Distribuir el envío de órdenes comerciales o utilizar OrderSendAsync

así que no se trata sólo del envío de la orden, hay un montón de otras comprobaciones que se hacen. Pero todas se ponen en cola hasta que una función termina, la otra no se ejecuta ....

Ya lo he descrito en el planteamiento del problema. Y es una tarea compleja. DLL o chats o lo que sea - lo que me interesa es el escenario en el que puedo paralelizar estas tareas y así ejecutarlas en el probador para entender qué es qué...

 
dd:

así que no es sólo el envío de la orden, hay un montón de otras comprobaciones que se hacen. Pero todas ellas se ponen en cola hasta que una función termina, la otra no se ejecuta ....

Lo he descrito en los términos del problema. Y es una tarea compleja. DLL o chats o lo que sea - lo que me interesa es el escenario en el que puedo paralelizar estas tareas y seguir ejecutándolas en el probador para ver qué hay...

¿Y cuánto tiempo precioso se pierde y cuáles son las consecuencias? ¿Y cuál sería el beneficio si no hubiera "pérdidas"?

 
Dmitry Fedoseev:

¿Y cuánto tiempo precioso estás perdiendo y cuáles son las consecuencias? ¿Y cuál sería el beneficio si no hubiera "pérdidas"?

Tardo 5 días en ejecutar esta estrategia en el probador con 24 núcleos a mi disposición. Y sólo funciona un núcleo. Por no mencionar el hecho de que el registro, un estúpido registro que nadie necesita durante este tiempo puede hincharse hasta los terabytes o dos. Y todo ello sin optimizaciones. Y este estúpido registro no puede ser desactivado de ninguna manera ...

¿Cómo crees que si acelero el proceso por lo que dicen - 4 horarios, cada uno en su núcleo - un aumento en este punto 4 veces. Más un proceso separado para cerrar 1000 operaciones, digamos, o dividir este proceso en 5 o 10 hilos - un aumento de 10 veces. Además de un proceso separado para la apertura de posiciones por señales ...

Creo que múltiples y tiempos ...

Pero cada milisegundo + retraso al broker + retraso del broker a la bolsa (si no es una cocina) es una pérdida colosal. Es extraño que esto no se entienda en Siberia...
Совершение сделок - Торговые операции - Справка по MetaTrader 5
Совершение сделок - Торговые операции - Справка по MetaTrader 5
  • www.metatrader5.com
Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением текущими позициями путем их модификации или закрытия. Платформа позволяет удобно просматривать торговую историю на счете, настраивать оповещения о событиях на рынке и многое другое. Открытие позиций...
Razón de la queja: