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

 
Fduch писал(а) >>

Por cierto, OrdersTotal() devuelve un número de tipo int. Y los int pueden tomar valores:

Es decir, el número máximo teórico de oders: 2147483647

¡¡¡Gracias por su respuesta imparcial!!!

 

Por favor, ayuda, no puedo entender, está escrito en el libro que este código funciona:

//--------------------------------------------------------------------
// Libro_experto_33.mq4
// Pensado como ejemplo en el tutorial de MQL4.
//--------------------------------------------------------------------
int Count=0; // Variable global.
//--------------------------------------------------------------------
int init() // Special init()
{
Alert ("La función init() ha funcionado al inicio"); // Mensaje
return; // Salir de init()
}
} //--------------------------------------------------------------------
int start() // Special init()
{
double Price=Bid; // Variable local.
Count++; // Contador de ticks
Alert("Nuevo tick ",Count," Precio = ",Precio);// Mensaje
return; // Salir de start()
}
//--------------------------------------------------------------------
int deinit() // Función especial deinit()
{
Alert ("Deinit() activado durante la carga"); // Mensaje
return; // Salir deinit()
}
//--------------------------------------------------------------------

No escribo los precios para los nuevos ticks, la función se dispara al iniciar y descargar.



 
Por favor, aconseje a los no programadores dónde y cómo insertar Sleep(1200000) para tener un retraso de 10 minutos después del cierre de la orden.
Archivos adjuntos:
1_1.rar  26 kb
 
v43 писал(а) >>
Por favor, aconsejen a un no-programador dónde y cómo insertar Sleep(1200000) para tener un retraso de 10 minutos después del cierre de la orden, realmente lo necesito.

Por favor - ponga el código a través del bouton SRC - es imposible de leer de esta manera.

Para un intervalo tan largo es mejor no hacerlo a través de Sleep, sino esperar a tal tick cuando este tiempo haya pasado - como:

   static datetime DontCloseBefore = 0;
   //....
   
   OrderSend(....);
   DontCloseBefore = TimeCurrent() + 10*60; //10 minutes
   //....
   
   if( DontCloseBefore!=0)
   {
      if(TimeCurrent()> DontCloseBefore) && ( some other conditions - like existing order))
      {
         DontCloseBefore = 0; //important - reset the state engine
         OrderClose(...);
      }
   }
Si DontCloseBefore == 0 entonces nada, si hay un retraso, entonces hay que esperar hasta que el tiempo actual sea más largo que lo prescrito en DontCloseBefore, poner a cero DontCloseBefore y cerrar
 

¿Alguien sabe si existe un comando para saber si un determinado indicador está abierto en la ventana, por ejemplo, MA(20)?

Gracias.

 
chief2000 >> :

¿Alguien sabe si existe un comando para saber si un determinado indicador está abierto en la ventana, por ejemplo, MA(20)?

Gracias.



int WindowFind( nombre de cadena)
Devuelve el número de la subventana del gráfico que contiene el indicador con el nombre especificado, si se encuentra, de lo contrario se devuelve -1.
WindowFind() devuelve -1 si el indicador personalizado se busca a sí mismo durante init().
 
 
keekkenen >> :


int WindowFind( nombre de cadena)
Devuelve el número de la subventana del gráfico que contiene el indicador con el nombre especificado, si se encuentra, de lo contrario devuelve -1.
WindowFind() devuelve -1 si el indicador personalizado se busca a sí mismo durante init ().

Veo que es necesario hacer algunas aclaraciones:

mi objetivo es comprobar si MA se está ejecutando, si es así, averiguar con qué período. Como resultado necesito obtener "20" si hay MA(20).

Para ello, podemos utilizar WindowFind() con un ciclo for, pero no quiero malgastar recursos del ordenador ya que

esta comprobación sólo debería hacerse una vez al principio (WindowFind() en init() no funciona...).

 

Por favor. Que alguien escriba un simple EA:

- Compra abierta.

- Take=20, Stop Loss=20;

- Cuando se activa el cierre, abrimos de nuevo una posición de compra con exactamente los mismos parámetros (take=20; stop=20).

-Si el Stop Loss se dispara, abrimos una Venta con exactamente los mismos parámetros (take=20; stop=20), y así sucesivamente.

Se puede hacer lo mismo, pero primero abrimos una posición de venta en lugar de una posición de compra.

Como remuneración simbólica por el trabajo puedo pasar una cuenta de 5grn. (Si los operadores ucranianos).

 

¿Por qué la ejecución de MA(20) en la ventana principal

 WindowFind("MA(20)")

devuelve "-1" ?