Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 1473

 
Alexey Viktorov:

He puesto un fractal como ejemplo. Y la forma de definir el mínimo (en su caso) es probablemente un secreto militar... o un completo malentendido de lo que se pide.

Mi código consta de varias cadenas y se puede ver a simple vista cómo se define el mínimo

El mínimo se define en las líneas amarillas

void OnTick()//484
{
if (Bid<LoU)
LoU=Bid;
//**************************************************************||TimeCurrent()==1262568096
if (Bid-LoU>=0.0030&&Pr!=LoU)
{
OrderSend(Symbol(),OP_SELL,0.1,Bid, 3,0,0,"300",0);
Print("---------------------КАЖДЫЙ ТИК ------Tick---------=     "    ,   Tick);
Pr=LoU;
LoU=Bid;
}
}
 
MakarFX:

no es necesario contar barras

Después de abrir la orden, asigna a la variable el valor Low[0] (mínimo de la barra actual), y después de cerrar la barra, si el valor Low[1] es inferior a la variable, le asigna un nuevo valor,

si no, se mantiene el valor antiguo, es decir, el mínimo.

Este algoritmo lo he entendido y utilizado durante mucho tiempo.... es decir, comprobar los mínimos no en el tick, sino en la vela. Pero creo que hay un algoritmo mucho más económico, concretamente el que he descrito la última vez, cuando se comprueba los mínimos no antes, sino después. Pero no sé cómo contar rápida y económicamente el número de velas desde BIDA hasta la quincuagésima vela. Sí, hasta la quincuagésima vela sé contar el número de velas. Cómo contar el número de velas hasta la vela con el LOU más bajo . Es decir, de BIDA a esta vela

 
ANDREY:

Mi código consta de varias líneas y muestra cómo se define el mínimo a simple vista

El mínimo está definido en las líneas amarillas.

Entonces, ¿cuál es el problema? Lo que importa aquí es cómo se declara la variable LoU. Si es a nivel global, bien. Si es una variable local, debe ser estática. Y comprobando en cada tick la diferencia del precio actual con el precio en esta variable, el coste del microsegundo será tan insignificante que no tiene sentido hablar de él.

 
ANDREY:

Este es un algoritmo que entiendo y utilizo desde hace tiempo.... es decir, comprobar los mínimos no en el tick, sino en la vela. Pero creo que hay un algoritmo mucho más económico, concretamente el que describí la última vez, cuando no se comprueba antes del mínimo, sino después de que aparezca. Pero no sé cómo contar rápida y económicamente el número de velas desde BIDA hasta la quincuagésima vela. Sí, hasta la quincuagésima vela sé contar el número de velas. Cómo contar el número de velas hasta la vela con el LOU más bajo . Es decir, de BIDA a esta vela .

Hay una lógica anormal en ello... ¿Por qué contar unos 50 compases? ¿Y si no son 50?

 
ANDREY:

Este es un algoritmo que entiendo y utilizo desde hace tiempo.... es decir, comprobar los mínimos no en el tick, sino en la vela. Pero creo que hay un algoritmo mucho más económico, concretamente el que describí la última vez, cuando no se comprueba antes del mínimo, sino después de que aparezca. Pero no sé cómo contar rápida y económicamente el número de velas desde BIDA hasta la quincuagésima vela.

Sea cual sea la idea, la comprobación se realizará en cada tick - es una característica de la función OnTick().

 
MakarFX:

Cualquiera que sea la comprobación que se haga, se hará en cada tick - es una característica de la función OnTick().

Una cosa es comprobar y otra encontrar el mínimo...

 
Alexey Viktorov:

¿Cuál es el problema? Lo principal aquí es cómo se declara la variable LoU. Si es a nivel global, está bien. Si es una variable local, debe ser estática. Y comprobando en cada tick la diferencia del precio actual con el precio en esta variable será tan insignificante que no tiene sentido hablar de ello.

Gracias por la nueva y valiosa información para mí..... no lo sabía.

 
Alexey Viktorov:

Hay una lógica anormal en esto... ¿Por qué contar 50 barras cualquiera? ¿Y si no son 50?

50 es para el caso abstracto. Puede ser 20 o 150 o 3 o 1. Lo que se quiere decir es cómo saber cuántas barras hay entre la BIDE actual y el mínimo local .... en caso de que haya 30 puntos entre esta BIDE y el mínimo local necesario para abrir la orden. Para abrir una orden si ( Bid - Low[ 50] >= 30 pips)- para abrir una orden.

 
MakarFX:

Cualquiera que sea la comprobación que se haga, se hará en cada tick - es una característica de la función OnTick().

Gracias. Si supiera que .... quizás no me hubiera molestado tanto.

Así, si compruebo LOW no en cada tick, sino en cada vela, el programa seguirá gastando tiempo para procesar cada tick, y se verá igual que si se comprueba en cada tick.

¿No hay forma de evitar esta característica en su código? Se debe realizar no en cada tick, sino por ejemplo en cada LOU de una vela de minuto.

 
ANDREY:

Gracias. Si supiera que .... Tal vez no me hubiera molestado tanto.

Entonces, si compruebo LOW no en cada tick, sino en cada vela, el programa seguirá gastando tiempo en procesar cada tick, y el tiempo será el mismo que cuando lo compruebe en cada tick?

¿No hay forma de evitar esta característica en su código? Se debe realizar no en cada tick, sino por ejemplo en cada LOU de una vela de minuto.

void()