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

 
Koldun Zloy #:

Nadie puede usarlo. Hay errores graves en su código. Y no tiene sentido corregirlos.

Ni siquiera te molestas en aprender lo básico del idioma, y tratas de escribir algo.

O te lo tomas en serio o lo dejas.

Por favor, explique cuáles son sus errores. En resumen, en pocas palabras, a lo que debe prestar atención. Y si el código funciona, ¿cuáles son sus "errores"?

 
Ivan Butko #:

Por favor, explique cuáles son sus errores. ¿Puede resumir brevemente a qué hay que prestar atención? Y, si el código funciona, ¿cuáles serían sus "errores"?

//+------------------------------------------------------------------+
//| Функция IsMainPendingOrder (установлен отложенный ордер):        |
//| возвращает истину, если в советнике не установлен отложенный     |
//| ордер, в противном случае возвращает ложь.                       |
//| Применим для функции тип данных bool, чтобы хранить              |
//| логические значения true (истина) или false (ложь).              |
//+------------------------------------------------------------------+
bool IsMainPendingOrder()
  {
   int orders_total=OrdersTotal(); // количество установленных отложенных ордеров
//--- перебираем все установленные отложенные ордера
   for(int i=orders_total-1; i>=0; i--)
     {
      ulong  order_ticket=OrderGetTicket(i); // тикет ордера
      /* если отложенного ордера нет, значит и у нашего советника отложенного ордера нет */
      if(OrderSelect(i)==false)
         return true; // поэтому возвращаем значение истина
      else // в противном случае
         return false; // возвращаем значение ложь
     }
   /* если отложенный ордер уже есть и его мэджик совпадает с мэджиком нашего советника */
   if(OrderGetInteger(ORDER_MAGIC)==Magic_Number)
      return true;  // то возвращаем истину
   /* в противном случае, если отложенный ордер уже есть, но его мэджик не совпадает с мэджиком нашего советника */
   else
      return false; // значит это чужой ордер, поэтому возвращаем значение ложь

Según la documentación... la bandeja de entrada debería tener un ticket, no un índice

bool  OrderSelect( 
   ulong   ticket      // тикет ордера 
   );

Si hay varios pedidos para diferentes símbolos y el que buscamos es el segundo de la lista, no lo encontraremos. O sólo hay un magik, pero necesitamos encontrarlo por otro símbolo, obtendremos una respuesta incorrecta de la función...

 
Alexey Viktorov #:

de la documentación... la bandeja de entrada debería tener un ticket, no un índice

Gracias Alexey por el consejo. Me influye mucho estar sentado frente al ordenador por la noche. Pensaba que ayer había empezado con el ticket de pedido y ya había escrito una línea en el código:

ulong  order_ticket=OrderGetTicket(i); // тикет ордера

y luego se "movió" de ella.

Alexey, ¿puede ser aceptable esta variante de código?

//+------------------------------------------------------------------+
//| Функция IsMainPendingOrder (установлен отложенный ордер):        |
//| возвращает истину, если установлен отложенный ордер,             |
//| в противном случае возвращает ложь.                              |
//| Применим для функции тип данных bool, чтобы хранить              |
//| логические значения true (истина) или false (ложь).              |
//+------------------------------------------------------------------+
bool IsMainPendingOrder()
  {
   int orders_total=OrdersTotal(); // количество установленных отложенных ордеров
//--- перебираем все установленные отложенные ордера
   for(int i=orders_total-1; i>=0; i--)
     {
      ulong order_ticket=OrderGetTicket(i); // тикет ордера
      /* если отложенного ордера нет, значит и у нашего советника отложенного ордера нет */
      if(order_ticket==0)
         return false; // поэтому возвращаем значение ложь
      else // в противном случае
         return true; // возвращаем значение истина
     }
   /* если отложенный ордер уже есть и его мэджик совпадает с мэджиком нашего советника */
   if(OrderGetInteger(ORDER_MAGIC)==Magic_Number)
      return true;  // то возвращаем истину
   /* в противном случае, если отложенный ордер уже есть, но его мэджик не совпадает с мэджиком нашего советника */
   else
      return false; // значит это чужой ордер, поэтому возвращаем значение ложь
  }

Todavía no he tocado Magic porque el código está pensado para un EA de un solo carácter.

Saludos, Vladimir.

 
MrBrooklin #:

Gracias, Alexei, por el consejo. Me influye mucho estar sentado frente al ordenador por la noche. Pensé que ayer había empezado con el ticket de pedido y ya había escrito una línea en el código:

y luego se "movió" de ella.

Alexey, ¿puede ser aceptable esta variante de código?

Todavía no he tocado Magic porque el código está pensado para un EA de un solo carácter.

Atentamente, Vladimir.

Este enfoque no es aceptable para mí. Añade una comprobación de Magik y un símbolo, dos líneas de código y obtendrás a cambio un enfoque normal para resolver una tarea. Y si se ignoran mis principios, el código no es del todo correcto.

Esto es más lógico.

//+------------------------------------------------------------------+
//| Функция  IsMainPendingOrder (установлен отложенный ордер):        |
//| возвращает истину, если установлен отложенный ордер,             |
//| в противном случае возвращает ложь.                              |
//| Применим для функции тип данных bool, чтобы хранить              |
//| логические значения true (истина) или false (ложь).              |
//+------------------------------------------------------------------+
bool IsMainPendingOrder()
  {
   int orders_total=OrdersTotal(); // количество установленных отложенных ордеров
//--- перебираем все установленные отложенные ордера
   for(int i=orders_total-1; i>=0; i--)
     {
      ulong order_ticket=OrderGetTicket(i); // тикет ордера
      /* если отложенный ордер есть */
      if(order_ticket > 0)
         return true; // поэтому возвращаем истину
     }
      return false; // если нет открытого отложенного ордера…
  }

Y en este código, todo lo que tienes que hacer es reemplazar el cheque en blanco

      if(order_ticket > 0)

para comprobar si hay un mago y un personaje

      if(OrderGetString(ORDER_SYMBOL) == _Symbol && OrderGetInteger(ORDER_MAGIC) == Magic_Number)

y ya es una función más universal...

 
Alexey Viktorov #:

de la documentación... la bandeja de entrada debería tener un ticket, no un índice

Si tenemos varios pedidos para diferentes símbolos y el que buscamos es el segundo de la lista, no lo encontraremos. O sólo hay un magik, pero tenemos que encontrarlo por otro símbolo, la respuesta será errónea de nuevo...

Gracias

 
Alexey Viktorov #:

Este enfoque es inaceptable para mí. Añade un mago y una comprobación de símbolos, dos líneas de código, y a cambio un enfoque normal para resolver el problema. Y si se ignoran mis principios, el código no es del todo correcto.

Esto es más lógico.

Y en este código, todo lo que tienes que hacer es reemplazar el cheque en blanco

para comprobar si hay un mago y un personaje

y ya es una función más versátil...

¡Buenos días a todos y buen humor!

Un GRAN AGRADECIMIENTO, Alexey, por tu paciencia y tu clara explicación de mis errores.

Saludos, Vladimir.

 
Ivan Butko #:

Por favor, explique cuáles son sus errores. ¿Puede resumir brevemente a qué hay que prestar atención? Y, si el código funciona, ¿cuáles son sus "errores"?

Los errores están en la incomprensión de las cosas elementales.

Si no los ves tú mismo, también: ¡Aprende, aprende y aprende!

 
Koldun Zloy #:

Errores al no entender las cosas elementales.

Si no los ves, tú también: ¡Aprende, aprende y aprende!

Para. Este es un hilo con preguntas de los novatos. Así que o respondes a las preguntas planteadas en el hilo o pasas de largo sin tu moralina.

¿Para qué te has mostrado? La gente quiere ver respuestas a las preguntas, no una cara bonita en una foto.

 
Artyom Trishkin #:

Para. Este es un hilo con preguntas de los recién llegados. Así que o respondes a las preguntas planteadas en el hilo o pasas de largo sin tu moralina.

¿Para qué te has mostrado? La gente quiere ver respuestas a las preguntas, no al hombre guapo de la foto.

Sólo quería saber si la persona quería aprender algo, entonces podría ayudar.

 
Koldun Zloy #:

Sólo quería saber si la persona quería aprender algo, entonces podría ayudar.

Bien. La propia forma de averiguar el deseo parecía extraña: "no sabes hacer nada, necesitas aprender y aprender".

Pero, que así sea...