Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 863

 

Igor Makanu: Fuera de tema, por supuesto. He aquí una pequeña idea relativa a su código. Si utiliza una matriz, puede establecer un número ilimitado de intervalos.

CWork *Work[];

int OnInit()
  {
   if(ArrayResize(Work,3) != 3)
      ExpertRemove();
   Work[0] = new CWorkTime(StartHour_0,StartMinute_0,StopHour_0,StopMinute_0);
   Work[1] = new CWorkTime(StartHour_1,StartMinute_1,StopHour_1,StopMinute_1);
   Work[2] = new CWorkTime(StartHour_2,StartMinute_2,StopHour_2,StopMinute_2);

   return(INIT_SUCCEEDED);
  }
void OnDeinit(const int reason)
  {
   for(int i=0; i<ArraySize(Work)); i++)
      if(Work[i] != NULL)
         delete Work[i];
   ZeroMemory(Work);
  }

void OnTick()
  {
   for(int i=0; i<ArraySize(Work)); i++)
      if(Work[i].Disable())
        {
         Comment("Не торговое время!!!");
         return;
        }
/* work */
  }
 
Konstantin Nikitin:

Igor Makanu: Fuera de tema, por supuesto. He aquí una pequeña idea relativa a su código. Si utiliza una matriz, puede definir un número ilimitado de intervalos.

¿Por qué es off-topic? - El tema es técnico, siempre apoyaré cualquier debate sobre cuestiones técnicas.


Por supuesto, usted puede utilizar una matriz de la clase ex. He comprobado mi clase un par de veces - todo parece funcionar correctamente, puede establecer un intervalo para cada minuto y el comercio por cualquier TS ;)


La idea de crear esta forma de analizar el tiempo de comercio a mí más como cadena a datetime, y el significado de mi código - una vez al día para contar el inicio y el final del comercio como un datetime, hasta que un nuevo día no tiene sentido para volver a calcular estos intervalos, llegó un nuevo día - volver a calcular todo de nuevo en datetime, y la comparación entre datetime, debe ocurrir muy rápidamente, es decir, no se carga el terminal (probador)


Seric29:

¿Por qué no funciona este código?

Tal vez una clase debe ser descrita a través de dos puntos ::? La idea de crear un puntero que apuntará a otro puntero.

Tienes errores de sintaxis, debería ser así:

#include <Object.mqh>
class CArray : public CObject
  {
public:
   double            m_Array[100];
  };

void OnStart()
  {
   CArray *arr=new CArray;
   arr.m_Array[22]=1.23456;
  }
 
novichok2018:

¡Hola!

Gracias de nuevo aAlexey Viktorov por el consejo sobre las citas: todo funciona. Este lunes nos encontramos con una situación: los alemanes han negociado, mientras que los ingleses tienen un día libre. Resultó que en la condición para la apertura de la posición del euro se utilizaron los valores antiguos de la libra. De ahí la petición: ¿podríais aconsejar cómo establecer la comprobación en el código de que ambos símbolos se negocian en este día?

Gracias.

Lo siento, hoy me da pereza leer la documentación. Y los chips de memoria hace tiempo que se quemaron casi todos, sólo queda la esclerosis. y el marasmo.

 
Alexey Viktorov:

Lo siento, hoy me da pereza leer la documentación. Y los chips de memoria hace tiempo que se quemaron casi todos, sólo queda la esclerosis.

Bueno, todavía no me da pereza, aunque ya tengo bastante con mi propia idiotez. Pero, ¿dónde leer? No pude encontrarlo. Mis ojos se han estropeado con el ordenador.

 
novichok2018:

Bueno, todavía no me da pereza, aunque ya tengo bastante con mi propia idiotez. Pero, ¿dónde leer? No pude encontrarlo. He estropeado mis ojos en el ordenador.

De la documentación

AccountInfoInteger(ACCOUNT_TRADE_ALLOWED) puede devolver false en los siguientes casos

  • no hay conexión con el servidor de comercio. Puede comprobarlo con TerminalInfoInteger(TERMINAL_CONNECTED));
  • la cuenta de operaciones se ha cambiado al modo de sólo lectura (se ha enviado al archivo);
  • el comercio en la cuenta ha sido prohibido en el lado del servidor de comercio;
  • la conexión a la cuenta de operaciones se ha realizado en modo inversor.

Y si no es exactamente así, busca otras opciones.

 
Alexey Viktorov:

De la documentación.

Y si no es así, busca otras opciones.

Por desgracia, no es eso. El comercio no está prohibido en la cuenta - negociamos con euros, pero no con la libra. Por lo tanto, tenemos que comprobar el comercio en un símbolo específico. Quizá alguien se haya encontrado con algo así o sepa cómo resolver el problema. Todavía no lo encuentro en los foros ni en google.

 
novichok2018:

Por desgracia, no lo es. El comercio no está prohibido en la cuenta - negociamos con euros, pero no con la libra. En consecuencia, necesito comprobar la negociación de un símbolo concreto. Quizá alguien se haya encontrado con algo así o sepa cómo resolver el problema. Todavía no lo he encontrado en los foros o en Google.

Hay otras funciones en la documentación

IsTradeAllowed(symbol,TimeCurrent()
TerminalInfoInteger(TERMINAL_TRADE_ALLOWED)
 

Por la tarde.

En MT4, el texto especificado en la configuración del objeto TrendLine en el campo "Descripción" se muestra en el lado izquierdo de la tendencia (en el extremo izquierdo). ¿Tal vez alguien tiene una solución lista para mostrar el texto en el extremo derecho?

 
Taras Slobodyanik:

hay otras funciones en la documentación

Lo he probado.

bool uk = IsTradeAllowed("GPBUSD",TimeCurrent());
bool de = IsTradeAllowed("EURUSD",TimeCurrent());

      if(de && uk) Alert("uk == true");

Tambiénes cierto que el lunes 27 era festivo en Inglaterra.

 
novichok2018:

Lo he probado.

Dice quees verdad el lunes 27, aunque era un día festivo en Inglaterra.

Entonces, ¿es necesario identificar unas vacaciones o una prohibición de comerciar?
El comercio se permitió el día 27.

Si es un fin de semana, se necesita un analizador de noticias para identificar los días festivos y los fines de semana.

Razón de la queja: