[¡Archivo!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. No puedo ir a ningún sitio sin ti - 4. - página 603

 

leer aquí https://forum.mql4.com/ru/38949/page2#434212


La función ExistPosByPrice().

Esta función devuelve un indicador de la existencia de una posición a un precio abierto determinado.

¿Qué esuna bandera Exist?

 
hoz:

Así que pregunta si escribiste correctamente la función que estás mostrando, de lo contrario estás preguntando por una cosa y mostrando otra.
 
lottamer:

leer aquí https://forum.mql4.com/ru/38949/page2#434212


La función ExistPosByPrice().

Esta función devuelve un indicador de la existencia de una posición a un precio abierto determinado.

¿Qué esla "bandera Exist"?


Una bandera es una variable, normalmente de tipo bool, que se pone en un estado que depende de la veracidad de la condición que se comprueba (aquí - hay una posición con un precio de apertura determinado).
 
sergeev:

no para que este tiempo para el signo == sólo exista durante 1 segundo.

es correcto poner el signo >=

o pasar por el control de dos variables temporales - actual y anterior.

Pero por otro lado tienes un error lógico. Estás intentando vincular un segundo a un resultado positivo de una operación lógica de una condición de apertura de orden.

Esto no es correcto. La orden puede fallar al abrirse, lo que significa que no intentará abrirse en el siguiente tick - ya que la función de tiempo devolverá false


Tengo la idea general. Esto es lo que salió:

bool GetTimeToInput()

{

  if(TimeCurrent() >= iTime(Symbol(),1440,0) && TimeCurrent() <= iTime(Symbol(),1440,0) + N)

  {

    return(true);

  }

  else

    

  return(false);

} 

N es el número de minutos después de la apertura de la barra diaria. Hasta ahora no he averiguado cómo conseguirlo, así que he escrito una variable pura. Parece que es correcto.

sargazo:

Hay que vincular la memorización de la operación con éxito al tiempo.

pensar.

Pero me gustaría aclarar lo que quiere decir con "ahorro vinculante de la operación exitosa al tiempo". No lo entendí del todo.

 
hoz:


Tengo la idea general. Esto es lo que salió:

N es el número de minutos transcurridos desde la apertura de la barra diaria. Hasta ahora no entendía cómo conseguirlo, así que escribí puramente una variable. Parece que es correcto.

Sergeev:

Pero quiero explicar más claramente, cómo conectar la memorización de la operación exitosa con el tiempo. No lo entiendo bien.


Lo importante no es el tiempo en sí, sino si algo se ha hecho en un determinado periodo de tiempo: esto es lo que debes comprobar.

P.D. Y no es necesario determinar N, sólo hacer su comprobaciónif(TimeCurrent() >= iTime(Symbol(),1440,0) ) hasta que se realicen las acciones que necesita (instalar una orden).

 
rigonich:

Una bandera es una variable, normalmente de tipo bool, que se pone en un estado dependiendo de si la condición es verdadera o no (aquí - si hay una posición con un precio abierto dado).

Ya veo, ¿qué es la posición INDEX? no es un ticker, y no es un tipo....
 
lottamer:

Lo tengo, ¿qué es un índice de orden? no es un ticker, y no es tipo....


Es el índice que define la posición de la orden en el array donde se almacenan los datos de las órdenes presentes en el terminal.

En otras palabras,está subrayado (bajo SELECT_BY_POS) boolOrderSelect(int index, int select, int pool=MODE_TRADES)

 
rigonich:


Es el índice que define la posición de la orden en el array donde se almacenan los datos de las órdenes presentes en el terminal.

Es decir,lo que está subrayado( con SELECT_BY_POS) bool OrderSelect(int index, int select, int pool=MODE_TRADES)



pero ¿cómo se aplica esto en la práctica si se necesita codificar la condición "si las dos últimas operaciones fueron pérdidas....."? ??
 
lottamer:

pero ¿cómo se utiliza esto en la práctica si se necesita codificar una condición "si las dos últimas operaciones fueron perdedoras....."? ??


En la práctica se utiliza en todas las operaciones que trabajan con órdenes. Primero hay que seleccionar la orden y luego hacer algo con ella (ver la información de la orden, enviar una orden de negociación al servidor para modificarla o cerrarla) Hay dos formas de seleccionar las órdenes en el terminal, por el ticket, que es el número asignado a la orden en el servidor que no cambia para una orden concreta, o por el número de orden (índice) con el que se almacena la orden en el terminal. Este número puede cambiar en cada tic, dependiendo de qué y cuántas órdenes se abran, fijen, cierren o eliminen.

Hay ciclos de pedidos para trabajar con los pedidos.

 
rigonich:


No es el tiempo en sí lo que importa, sino si se ha hecho algo en un determinado periodo de tiempo, eso es lo que debes comprobar.

P.D. Y no es necesario definir N, simplemente haga su comprobaciónif(TimeCurrent() >= iTime(Symbol(),1440,0) ) hasta que se realice la acción que desea (establecer una orden).


Pero si lo pones así:

if(TimeCurrent() >= iTime(Symbol(),1440,0)

De esta manera la señal será válida todo el tiempo después de la apertura de la barra y . Hasta el infinito. ¿Por qué lo necesito? Lo principal es abrir una orden en la apertura de un bar, no un paquete.