[ARCHIVO]Cualquier pregunta de novato, para no saturar el foro. Profesionales, no lo dejéis pasar. No puedo ir a ningún sitio sin ti - 5. - página 398

 
solnce600:

Creo que he hecho todo bien .... Sigue sin abrirse (en el probador)

Tampoco hay información sobre el error en el cuaderno de bitácora http://clip2net.com/s/5aLodh

No puedo entender - ¿qué pasa?

Tenemos que normalizar a Price.

double Price=NormalizeDouble(0.9022, Digits);
 
PapaYozh:

Tenemos que normalizar a Price.

¡Papá! Muchas gracias..... y una pequeña pregunta más....

Quiero abrir una orden sólo si

1. La distancia entre el precio de apertura de la vela N 30 y el máximo de la vela N 1 es superior a 150 p.


2. La hora de apertura de una velaN 30 es igual a - CUALQUIER HORA, CUALQUIER FECHA, pero el valor de los minutos debe ser igual a 15 (es decir, 0:15;1:15;....23:15)

si ((High[1]-Open[30])> 1500*Point) && (??????????????????)

//orden abierta

Quería crear la segunda condición utilizando la función Tiempo [30], pero esta función devuelve valores no sólo en minutos sino también en horas, días y años.

para la vela que necesito. La función Minute( ) tampoco me sirve, porque devuelve el valor de los minutos sólo para la vela cero.

Por favor, aconséjeme la mejor manera de codificar este punto.



 
solnce600:

¡Papá! Muchas gracias..... y una pequeña pregunta más....

Quiero abrir una orden sólo si

1. La distancia entre el precio de apertura de la vela N 30 y el máximo de la vela N 1 es superior a 150 p.


2. La hora de apertura de la vela N 30 es igual a - CUALQUIER HORA, CUALQUIER FECHA, pero el valor de los minutos debe ser igual a 15 (es decir, 0:15;1:15;....23:15)

si ((High[1]-Open[30])> 1500*Point) && (??????????????????)

//orden abierta

Quería crear la segunda condición utilizando la función Tiempo [30], pero esta función devuelve valores no sólo en minutos sino también en horas, días y años.

para la vela que necesito. La función Minute( ) tampoco me sirve, porque devuelve el valor de los minutos sólo para la vela cero.

Por favor, aconseja cómo codificarlo mejor.

https://docs.mql4.com/ru/dateandtime/TimeMinute

 
PapaYozh:

Tenemos que normalizar a Price.

Normalizado. Sigue sin abrirse...

Aunque el otro código se abre sin normalizar....

int start()
 {
 double Price=NormalizeDouble(0.9022, Digits); 
 if  ((iTime( NULL,0, 0) )== D'14.08.2000 14 00')
 if (Bid == Price)
if(NormalizeDouble (MathAbs (Bid - Price ), Digits) <= 0.0005)  
 int Ticket= OrderSend(Symbol(),OP_SELL,0.1,Bid,1,Ask+1490*Point,Ask-110*Point,"jfh",123 );
}
return(0);
 
 
solnce600:

Normalizado. Sigue sin abrirse...

Aunque otros códigos se abren sin normalizar....

Utilice Print() y vea qué condición falla.
 
Buenas tardes a todos. Por favor, eche un vistazo a este indicador. ¿Es posible hacer que funcione correctamente?
Cuando el precio se mueve a la baja ya hay una línea azul además de la roja (las rojas se añaden, ver archivos adjuntos). Luego la tendencia cambia, y aquí todo es correcto - sólo el azul.

gracias de antemano


/* Descompilado eliminado /*


 
solnce600:

¡Papá! Muchas gracias..... y una pequeña pregunta más....

Quiero abrir una orden sólo si

1. La distancia entre el precio de apertura de la vela N 30 y el máximo de la vela N 1 es superior a 150 p.


2. La hora de apertura de una vela N 30 es igual a - CUALQUIER HORA, CUALQUIER FECHA, pero el valor de los minutos debe ser igual a 15 (es decir, 0:15;1:15;....23:15)

si ((High[1]-Open[30])> 1500*Point) && (??????????????????)

//orden abierta

Quería crear la segunda condición utilizando la función Tiempo [30], pero esta función devuelve valores no sólo en minutos sino también en horas, días y años.

para la vela que necesito. La función Minuto( ) tampoco me sirve, porque devuelve el valor de los minutos sólo para la vela cero.

Por favor, díganme la mejor manera de codificar este punto.

Para fijar (incluir en los cálculos) el tiempo desde el inicio (de CUALQUIER vela), es conveniente utilizar iBarShift (Symbol(), 1, punto de oscilación). Y el punto de oscilación es el comienzo de la barra del período que se está siguiendo. En su caso:

    if (iBarShift (Symbol(), 1, iOpen (Symbol(), PERIOD_M30, 0)) == 15) //что-то делаем

Habiendo echado un vistazo a un trozo de tu código, puedo decir que no piensas en absoluto en lo que escribes. Intenta pensar en ello (extracto):

if((Minute( ) ==45)&&(Minute( ) <50))

...

 
TarasBY:


Después de haber echado un vistazo a un trozo de tu código, puedo decir que no piensas en absoluto en lo que escribes. Intenta pensar en ello (fragmento):

...


Gracias por su respuesta, perdón por enviar su código sin comentarios.

Lo que crees que no tiene sentido, tiene sentido, y funciona

if(Oferta==Precio) // si la hora es igual a la hora de apertura de la vela.se forma una nueva vela

if((Minuto( ) ==45)&&(Minuto( ) <50)) // si el valor del minuto en la apertura de una nueva vela está entre 45 y 50(la cosa es que algunas velas abren a 45 min, y no exactamente a 45 min. pero con un retraso. Así que uso &&(Minuto( ) <50) para evitar que se pierdan las velas que se abren a 45 min. pero que en realidad se abren 1,2,3,4 min. más tarde)

int Ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,1,Bid-1500*Point,Bid+150*Point, "jfh",123 );

}

volver;

Así que la orden se abre al comienzo de cada vela de 15 o 5 o 1 minuto, que técnicamente se abrió a los 45 minutos (+ no más de 4 minutos, es decir, con un retraso).
 
solnce600:

Estoy tratando de hacerte entender un pequeño punto. ¡Un punto muy IMPORTANTE: "lo que querías prescribir" y "lo que prescribiste" son cosas completamente DIFERENTES! Si en la condición:

if((Minute( ) ==45)&&(Minute( ) <50))

¡¡¡Minute() == 46, entonces la condición GENERAL NO FUNCIONA!!! ¿Qué te parece esto?

if ((Minute() >= 45) && (Minute() < 50))

??? :-[

Razón de la queja: