Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 743

 

Hola a todos. Pregunta sobre MQL5.

Me gustaría insertar comentarios en la función de cerrar una posición en un ticket.

Hasta ahora he utilizado la clase CTrade, pero no ofrece esta posibilidad.

Entonces, tengo que usar OrderSend, ¿verdad?

Aquí no entiendo: https://www.mql5.com/ru/docs/constants/tradingconstants/enum_trade_request_actions#trade_action_deal en el ejemplo se escribe la función OnStart. ¿O puedo escribir todo en una función personalizada y llamarla cuando sea necesario?

¿Es necesario añadir algo a OnInit?

¿Y no habrá conflictos si escribo el cierre a través de OrderSend y dejo la apertura y las modificaciones en base a la clase CTrade?

Gracias.

Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Artyom Trishkin:

A grandes rasgos, lee atentamente lo que te he escrito y elimina el bucle infinito de tu código.

¿Estás seguro de que poner el Asesor Experto en un bucle infinito es la solución correcta?

En primer lugar, esto no es una solución, sino un ejemplo para demostrar la esencia de lo que estoy hablando.

En segundo lugar, no es un bucle infinito, terminará correctamente y con seguridad cuando el programa termine.

Y en tercer lugar, me escribes para resolver una cosa totalmente distinta, para la que se me ocurren un millón de maneras.

¿Así que consideras que mi bucle es un obstáculo para mi situación? ¿De verdad?

De todos modos, lo entiendo. Tuve un mal viaje en este hilo...

¡Pero gracias de todos modos!

 
Marat Sultanov:

En primer lugar, esto no es una solución, sino un ejemplo para mostrar la esencia de lo que estoy hablando.

En segundo lugar, no es un bucle infinito, terminará correctamente y con seguridad cuando el programa termine.

Y en tercer lugar, me escribes para resolver una cosa completamente distinta, para la que se me ocurren un millón de maneras.

¿Así que consideras que mi bucle es un obstáculo para mi situación? ¿De verdad?

De todos modos, lo entiendo. Tuve un mal viaje en este hilo...

¡Pero gracias de todos modos!

Al final del programa, sí, lo hará.

Entonces, haz un cálculo muy pesado y trata de interrumpirlo cuando se llame a la ventana de configuración.

He mirado cómo funciona tu código - no responde a un cambio de variable en la configuración - lo impide un bucle infinito, que sólo se puede interrumpir eliminando el EA, y no volverá a empezar - lo has eliminado del gráfico...

Intenta llevar un control del cálculo pesado mediante un temporizador. Aunque no estoy seguro de si se llamará al temporizador en el momento del cálculo.

Pero en cualquier caso, hacer un bucle para emular un cálculo largo no es una buena solución.

 
Hola. ¿Podríais decirme cómo poner un array en los parámetros de entrada de una función?
double test[];


double Test(.....)
{

}
 
Fresto:
Hola. ¿Pueden decirme cómo establecer un array en los parámetros de entrada de una función?

¿Pasar una matriz a una función?

Es algo así:

//+------------------------------------------------------------------+
double test[];
ArrayResize(test,2);
ArrayInitialize(test,256);

Print(Test(test));
//+------------------------------------------------------------------+
double Test(double &array[])
{
   if(ArraySize(array)==0) return(WRONG_VALUE);
   array[0]+=array[1];
   return(array[0]);
}
//+------------------------------------------------------------------+

Bueno... variaciones sobre el tema ...

 
Artyom Trishkin:

Cuando termines el programa, sí, lo hará.

A continuación, haga algún cálculo realmente pesado e intente interrumpirlo cuando se llame a la ventana de configuración.

He mirado cómo funciona su código - no reacciona a los cambios de variables en la configuración - no se le permite hacerlo por el bucle infinito, que sólo puede ser interrumpido por la eliminación de la EA, y no se iniciará de nuevo - lo borró de la tabla ...

Intenta seguir un cálculo pesado con un temporizador. Sin embargo, no estoy seguro de si el temporizador será llamado en el momento del cálculo.

Pero en cualquier caso, hacer un bucle para emular un cálculo largo no es una buena solución.

Gracias.

Entendido. Pero desgraciadamente hay una necesidad razonable.

Pero en cualquier caso, hacer un bucle para emular un cálculo largo no es una buena solución.

Hay situaciones en las que, por ejemplo, es necesario escribir en un archivo grande o leer de un archivo grande o todo junto. Si te pones creativo, es una gran locura, y el dolor se cuadra con la implementación :)

Me parece extraño, que la posibilidad de rastrear una interrupción con _StopFlag está ahí, pero no hay cambio de parámetros de entrada :(

 
hola, pregunta: ¿es posible cambiar el ángulo en el que se muestra el comentario en la gráfica?????
 
Dmitry Melnichenko:
hola, tengo una pregunta. ¿es posible cambiar el ángulo del comentario en el gráfico?????

No.

A menos que usted mismo cree una etiqueta gráfica OBJ_LABEL y cambie su propiedad

OBJPROP_ANGLE


utilizando la función:ObjectSetDouble
 
Chicos, ayuda con el indicador
Archivos adjuntos:
llassiff.mq5  17 kb
 
Rafael Sahibgareev:
Chicos, ayúdenme a descubrir el indicador
Hay un trozo de código que no entiendo. Tienes que corregirlo tú mismo.
Archivos adjuntos:
llassiff.mq5  18 kb