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

 
ANDREY:
Pr es una variable para que sólo se abra una orden después de 30 pips. Sin esta variable se abren en cada tick
if(OrderSend(Symbol(),OP_SELL,0.1,Bid, 3,0,0,"300",0))
{LoU=Bid;}

Así que no necesitas esta variable... y ya hay menos carga)

 
MakarFX:
Peor aún... todavía necesito saber el número de barras


He ajustado...pruebe con

Lo hice. Es lo mismo.
Su código.

double LoU,Pr;
int OnInit()
  {
   LoU=Low[0];
  }
//+------------------------------------------------------------------+
void OnTick()
  {
   if(Low[1]<LoU) {LoU=Low[1];}
   if ((Bid-30*Point)>=LoU)
     {
      if(OrderSend(Symbol(),OP_SELL,0.1,Bid, 3,0,0,"300",0)) LoU=Low[0];
     }
  }


 
MakarFX:

Así que no necesitas esta variable... y ya la carga es menor)

Tal vez no lo necesite. Pero no es el que me cuesta .....

 
ANDREY:

Probablemente no sea necesario. Pero no es el que me cuesta .....

1) Si tienes problemas de velocidad, cualquier optimización de código es una ventaja.

2) La diferencia de resultados por no tener la inicialización de LoU en el arranque no es nada... VACÍO

 
MakarFX:
Peor aún... todavía necesito saber el número de barras


He ajustado...pruebe con

Si Bid - Low[ ] >= 30 pips, abrir una orden. Pero, ¿cómo podemos saber el número de esteLow[ ] después de que el Bid se sitúe por encima de este Low[ ] en 30 pips?
 
ANDREY:
Alternativamente, si Bid - Low[? ] >= 30 p. deberíamos abrir una orden. Pero, ¿cómo sabemos el número de Low[ ] después de que la oferta sea mayor que el Low[ ] en 30 puntos?

Y si Bid baja, eso significa un nuevo mínimo... ¿y a partir de qué mínimo hay que hacer el cálculo?

 
MakarFX:

1) Si tienes problemas de velocidad, cualquier optimización de código es una ventaja.

2) La diferencia de resultados por no tener la inicialización de LoU en el arranque no equivale a nada... VACÍO

Entonces, si asigno un valor a LoU cuando lo declaro, el código se ejecutará mucho más rápido ?

Le he asignado el precio de apertura de la primera barra del 04.01.2010.

double LoU = 1.6121,Pr;
void OnTick()//531
{
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);
Pr=LoU;
LoU=Bid;

}
}
 
MakarFX:

Y si Bid baja, significa un nuevo mínimo... ¿y cuál es el mínimo a partir del cual hay que calcular?

Que baje, lo principal es que la orden se abra en 30 pips. Y después de abrirlo, deja que el precio baje hasta encontrar el nuevo mínimo. Imaginemos que tenemos la Oferta actual y está a 30 puntos del Mínimo[ 50] y podemos abrir una orden. Si ( Oferta - Mínimo[ 50] > 30 puntos ) - abrir una orden, ¿cómo sabremos que es el mínimo de la vela 50? Por lo tanto, en este caso debemos comprobar no lo que había antes del mínimo local, sino lo que había después.
Y en este caso no importará cuánto bajará el precio después de la apertura de la orden.

 
ANDREY:

No creo que el indicador fractal sea adecuado para mí. Se perderán muchos pedidos.

La orden abierta por mi código con la comprobación del precio en cada tick está resaltada en azul. Me parece que un fractal no me dice nada necesario en este caso.

He puesto un fractal como ejemplo. Y cómo se determina el mínimo (en su caso) es un secreto militar... o no entiende lo que le pregunto.

 
ANDREY:

Déjalo caer, lo principal es que la orden se abra en 30 pips. Y después de abrirlo, dejar que el precio baje hasta encontrar un nuevo mínimo. Imaginemos que tenemos la Oferta actual y que está a 30 puntos del Mínimo[ 50] y podemos abrir una orden. si ( Oferta - Mínimo[ 50] > 30 puntos ) - abrir una orden. Pero, ¿cómo comprobar si es el mínimo de la vela 50? Por lo tanto, en este caso debemos comprobar no lo que había antes del mínimo local, sino lo que había después.

no es necesario contar las barras

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

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