[ARCHIVO] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 3. - página 261

 

Chicos, ¿qué significa un número entero inválido como parámetro 10 para la función OrderSend y cómo solucionarlo?

 
Pyxlik2009:

Chicos, ¿qué significa un número entero inválido como parámetro 10 para la función OrderSend y cómo solucionarlo?

Por favor, dame una línea de código donde ocurra

 
Pyxlik2009:

Chicos, ¿qué significa un número entero inválido como parámetro 10 para la función OrderSend y cómo solucionarlo?


El tiempo de expiración debe ser un número entero.
 
Roll:

El tiempo de caducidad debe ser un número entero.
Ni siquiera tengo nada fraccionado en la configuración
 
sergey_r:
Sí, pero mi orden se coloca al cierre de la barra y necesito el precio actual. Si el precio actual es inferior al mínimo de la barra anterior... Si el precio actual ha caído por debajo del anterior, la orden se coloca

prueba esto

if (Bid<iLow(NULL, 0, 1)


 
Pyxlik2009:
Ni siquiera tengo nada fraccionado en la configuración

Consulte el décimo parámetro de la función anterior. Ponlo a 0.
 
paukas:
El guión existe. Cuando sea necesario, sólo hay que ejecutarlo.


No se trata de realizar la acción una vez. La cuestión es que al ejecutar este script, leerá la hora de su configuración pero no la hora de activación.

Por lo tanto, la hora misma de la activación de la orden pendiente no se guarda en ninguna parte del terminal. Sólo necesito saber este tiempo y sería ideal utilizar la función incorporada en MQL4 PendingOrderFilledTime(), si existe. En este caso la propia MT4 monitorizaría las órdenes pendientes y me proporcionaría el resultado listo.

Por lo tanto, no puedo ver ninguna otra solución que no sea el uso de un Asesor Experto o un script en bucle en un gráfico. ¿Por qué pregunto aquí? Tal vez alguien haya tenido un problema similar y lo haya resuelto elegantemente, sin un Asesor Experto o un script, utilizando sólo los medios de MQ4.


LazarevDenis:

No entiendo por qué no estás satisfecho con el EA, parece que no vas a construir un complejo sistema de trading de redes neuronales con auto-optimización, sólo tienes que comprobar cada tick si el péndulo está funcionando y cuando se dispara recibirías un mensaje de texto en la pantalla o de audio uno o ambos, la calculadora puede manejar esta tarea, no te preocupes por los ordenadores o simplemente tienes problemas de escritura?

No tengo ningún problema para escribirlo. No quiero usar una herramienta improvisada para recibir información de la terminal. Un Asesor Experto es una solución a un problema de frente.

Si todas las tareas, para las que no existe una función estándar de MQ4, fueran resueltas por un Asesor Experto, el terminal las tendría. Y no es bueno crear más eslabones débiles en la cadena. Cuando tienes muchos terminales abiertos y cada uno de ellos necesita un EA y comprobar si está o no, estás de acuerdo en que es incómodo y poco recomendable. Escribir una comprobación para el archivo adjunto del EA y forzarlo a que se ejecute allí es lo mismo, así que ¿por qué complicar el asunto, si tal vez alguien ya ha resuelto este problema utilizando la combinación de funciones existentes de MQL4?

 
Starting:
...tal vez alguien ya haya resuelto un problema similar con una combinación de funciones existentes en MQL4.
Lo he leído y no entiendo la lógica. Supongamos que la función que necesitas está disponible, ¿cómo la utilizarías? De todos modos, tendrá que insertarlo en un Asesor Experto o en un script.
Por lo tanto, la cuestión no es la ausencia de una función especial (y no se puede agradecer cada estornudo), sino la complejidad de escribir un código que cumpla con sus requisitos.
 
granit77:
Lo he leído y no entiendo la lógica. Bien, digamos que hay una función que necesitas, ¿cómo la vas a utilizar? De todos modos, tendrá que insertarlo en el Asesor Experto o en un script.
Así que la pregunta no es sobre la falta de una función especial (y no se puede agradecer cada estornudo), sino sobre la dificultad de escribir un código que cumpla sus requisitos.

El uso es sencillo: ejecuto un script que escribe los datos de la última operación cerrada con la hora de apertura más temprana. Los colgantes activados por el script causan confusión en las filas de los pedidos cerrados. En el momento en que el script se inicia, no tiene de dónde sacar los datos sobre las órdenes pendientes de activación, ya que su fecha de activación está fijada en el historial, no la fecha de su finalización.


Un ejemplo sencillo.

La orden pendiente 1 se fijó el 01.01.2011.

02.01.2011 se abrió una orden de mercado 2.

El 03.01.2011 la orden pendiente 1 se activó y se convirtió en la orden de mercado 1 cuya OrderOpenTime() mostrará el 01.01.2011, aunque en realidad se convirtió en orden de mercado el 03.01.2011.

04.01.2011 la orden de mercado 2 fue cerrada.

05.01.2011 la orden de mercado 1 fue cerrada.

En el historial, la fecha del 02.01.2011 de la orden de mercado 2 se dará como la fecha de apertura de la última orden cerrada con la última fecha de apertura.

En realidad, la fecha de apertura más reciente (activada) de la última orden pendiente cerrada 1 es el 03.01.2011.

Esa es la pregunta, ¿es posible obtener la fecha real de activación de la orden para ordenar correctamente las órdenes cerradas por su fecha de apertura sin que un Asesor Experto supervise la cuenta?


Imagina que estás operando, tienes órdenes pendientes, establecidas hace mucho tiempo. Y ahora se ve que algunos de ellos se activaron, y luego se cerraron después de algún tiempo. Pero se tendrán en cuenta por su tiempo de colocación "peluda", aunque se hayan colocado hace un año, pero se hayan activado y cerrado sólo hoy. Se quiere ver lo que realmente se abrió o activó en el mercado en último lugar, por lo que se daría en último lugar, y no todo lo que fue una vez mezclado con los del mercado que se abrió realmente recientemente. Gracias por su atención a mi pregunta.

 

Señores, ¿pueden decirme dónde me he equivocado al insertar esta función de sincronización en mi código de EA?

int init()
  {
  
bool isTradeTimeInt (int hb=05,int mb=50,int he=23,int me=00) 
    {
  datetime db, de;           // Время начала и окончания работы
  int      hc;               // Часы текущего времени торгового сервера

  db=StrToTime(TimeToStr(TimeCurrent(), TIME_MINUTES)+" "+hb+":"+mb);
  de=StrToTime(TimeToStr(TimeCurrent(), TIME_MINUTES)+" "+he+":"+me);
  hc=TimeHour(TimeCurrent());
  if (db>=de) {
    if (hc>=he) de+=24*60*60; else db-=24*60*60;
  

  if (TimeCurrent()>=db && TimeCurrent()<=de) return(True);
  else return(False);
}
   return(0);
  }

El compilador me inundó de errores.

Razón de la queja: