Errores, fallos, preguntas - página 409

 
T-G:

Por favor, aconsejar cómo utilizar el siguiente código en mql5 no entiendo

en frecuencia ¿cómo obtener la hora actual?
Aquí tienes
//+------------------------------------------------------------------+
//|                                                       пример.mq5 |
//+------------------------------------------------------------------+
#property copyright ""
#property link      ""
#property version   "1.00"

input int HourOpen=4;

MqlDateTime str;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

//---
   return(0);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   TimeToStruct(TimeCurrent(),str);

   if(str.hour==HourOpen)
     {
      // действие
     }
  }
//+------------------------------------------------------------------+
 
sergey1294:
Ver
TimeCurrent() tiene una sobrecarga, por lo que puede tomar el tiempo directamente (saltándose TimeToStruct()), aunque su versión también es correcta.
 

stringo:

Entonces, ¿los graves problemas se deben a la aplicación de esta opción?

void OnTrade(
             const string symbol,//символ, от которого (по которому) пришло торговое событие
             const uchar type,   //тип торгового события (изменения в ордерах, позициях или сделках)
             const ulong ticket  //тикет ордера или сделки, либо идентификатор позиции (в зависимости от второго параметра)
             );

Exactamente. La cuestión es que el comercio y la cola de mensajes no están sincronizados de ninguna manera. Un mismo billete puede recibir un montón de mensajes.

Además, cuando recibe el primer mensaje de este montón, no sabe nada de la disponibilidad de otros mensajes en el mismo billete. Usted se apresuró a procesar una modificación del ticket, pero el ticket ya existe, ya está en el historial de posiciones cerradas. ¿Qué hacer? Desconocido.

Ahora, cuando se produce un evento comercial impersonal, puede conocer inmediatamente el estado actual de las posiciones abiertas y el historial de operaciones. No tiene un número de billete y no tiene nada de referencia más que el estado actual.

He estado fuera de contacto durante un par de días.

Tal vez, hay diferentes variantes de utilizar los posibles parámetros de la funciónOnTrade(), pero mi objetivo es esta variante:

1. Pedidos. Al recibir el siguiente mensaje "del montón", averiguo en el ticket de la orden si ésta se encuentra en la lista de órdenes abiertas(OrderSelect) o en la lista de órdenes históricas(HistoryOrderSelect). Es decir, obtengo la información más actualizada sobre la ubicación actual de un determinado pedido, en relación con las listas de pedidos.

2. Puestos. Al recibir el siguiente mensaje "del montón", averiguo el estado de posición de este símbolo por su nombre (PositionSelect). Es decir, también obtengo la información más precisa sobre el estado actual del puesto.

Luego trabajo con las propiedades de un símbolo específico, según sea necesario.

Por ello, intento evitar el uso excesivo de comprobaciones cíclicas.

 
Urain y sergey1294 gracias por la pronta respuesta, ahora entiendo
 
AlexSTAL:
¿Qué dice? ¿Cuáles son los síntomas?

Nada, estoy intentando abrir una cuenta demo (he probado con diferentes DCs)

vuelve

y luego no puede crear una cuenta

 
papaklass:
Si es un operador de demostración, sólo necesita saber si se activa un stop loss o un take profit y en qué instrumento. El resto de eventos comerciales son exóticos y tienen poco que ver con el comercio. EN MI OPINIÓN. Por lo tanto, si hubiera un símbolo en la función OnTrade(), sería posible determinar (por ejemplo, comparando el saldo actual con el anterior) lo que provocó sl o tp.
Estoy de acuerdo. Como mínimo, necesitas un símbolo, y luego averiguaremos qué era.
zorros:

Intentando abrir una cuenta demo (he probado con diferentes empresas de corretaje)

surge

He probado con diferentes empresas de corretaje y después no puedo abrir una cuenta.

¿Cuándo descargaste el terminal y dónde? Es deseable una captura de pantalla de la siguiente ventana, ya que ésta no es informativa.
 

A los desarrolladores de

¿Es Win 2003 SP2 (en modo terminal) perder constantemente la información sobre mi cuenta de operaciones es un error o fue diseñado para mejorar la seguridad?

Más concretamente, si utilizo alternativamente la misma copia del programa en modo normal y en modo terminal con diferentes cuentas, los datos de la cuenta desaparecen de vez en cuando. Aparentemente, si sólo trabajas en modo terminal con diferentes cuentas, la situación será similar (aún no lo he comprobado).

 
papaklass:
La mayoría de los operadores necesitan saber si se ha activado un stop loss o un take profit y en qué instrumento. El resto de eventos comerciales son exóticos y tienen poco que ver con el comercio. EN MI OPINIÓN. Por lo tanto, si hubiera un símbolo en la función OnTrade(), entonces comparando, por ejemplo, el valor del saldo actual con el anterior, se podría determinar si fue sl o tp lo que se activó.
En la "protección del billete" :) Prefiero trabajar con pedidos pendientes y seguir su destino desde el nacimiento hasta la jubilación. ¿Qué tipo de "exotismo con poca relación con el comercio" es? Por el contrario, es una exigencia de tiempo para seguir el destino de los pedidos por medio de su billete. - Es necesario evitar colocar una segunda orden pendiente o sobrepasar la activación de una orden ya colocada. Si tenemos los parámetros descritos anteriormente, podemos trasladar el bloque de seguimiento del punto de la orden a la función OnTrade().
 
papaklass:
La mayoría de los operadores necesitan saber si se ha activado un stop loss o un take profit y en qué instrumento. El resto de eventos comerciales son exóticos y tienen poco que ver con el comercio. EN MI OPINIÓN. Por lo tanto, si hubiera un símbolo en la función OnTrade(), se podría determinar (por ejemplo, comparando el saldo actual con el anterior) lo que desencadenó sl o tp.
Lo repetiré una vez más. El asunto no está cerrado. Se ha pospuesto hasta que encontremos una solución aceptable. Las tareas más importantes aún no se han resuelto.
 
Yedelkin:
En defensa del billete :) Prefiero trabajar con pedidos pendientes y seguir su destino desde el nacimiento hasta la jubilación. ¿Qué clase de "exotismo poco relevante para el comercio" es ese? Por el contrario, es una exigencia de tiempo para seguir el destino de los pedidos por medio de su billete. - Es necesario evitar colocar una segunda orden pendiente o sobrepasar la activación de una orden ya colocada. Si tenemos los parámetros descritos anteriormente, podemos trasladar el bloque de seguimiento del punto de la orden a la función OnTrade().
Tal vez, dar información sobre cuántos eventos comerciales están todavía en la cola simplifique las cosas.