Preguntas de los principiantes MQL4 MT4 MetaTrader 4 - página 237

 
Sergey Likho:

El indicador de MT5 dibuja una línea en dos colores.

Los valores de la línea están en el mismo buffer.

¿Hay alguna forma de identificar el color de la línea cuando se solicitan valores del indicador?

Puedes hacerlo. El color de la línea se almacena en el buffer de color. Si sólo hay una línea, el búfer de valor es 0 y el de color es 1. En consecuencia, en CopyBuffer se pone el segundo parámetro como 1.
 
Ventura:

Si no es posible mostrar la ventana de parámetros de forma programada, por favor, indique si los parámetros se pueden inicializar de alguna manera

input double BuyStop=100;
double MyBuyStop=BuyStop;


.........
if(something) MyBuyStop=200;
 
Евгений:

¿Qué recomienda?

Primero hay que cribar las órdenes por símbolo y mago. Te quedan dos órdenes. Selecciona el que quieres eliminar en tu condición. Se elimina uno y se cambia el stop loss.

 
Aleksei Stepanenko
input double BuyStop=100;
double MyBuyStop=BuyStop;


.........
if(something) MyBuyStop=200;

Alexey, he pedido una sugerencia sobre cómo llamar a la función de cálculo de parámetros ANTES de que aparezca la ventana de parámetros, no después.

La pregunta está abierta: ¿es posible llamar a la ventana de parámetros de forma programada? Si no es así, ¿es posible inicializar los parámetros de una función ANTES de que aparezca la ventana de parámetros?

Me gustaría hacer algo así

input double BuyStop = GetMyBuyStop();

Pero me da un error diciendo que sólo puede haber constantes en el lado derecho (

 
Ventura:

Alexey, he pedido una sugerencia sobre cómo llamar a la función de cálculo de parámetros ANTES de que aparezca la ventana de parámetros, no después.

La pregunta está abierta: ¿es posible llamar a la ventana de parámetros de forma programada? Si no es así, ¿es posible inicializar los parámetros de una función ANTES de que aparezca la ventana de parámetros?

Me gustaría hacer algo así

input double BuyStop = GetMyBuyStop();

Pero se produce un error que sólo puede haber una constante a la derecha (

No hay nada antes de que aparezca la ventana de parámetros, todo comienza sólo después, cuando la ventana ya está cargada

 

Exactamente lo que dijo Vitaly.

Crear un panel en el gráfico, gestionar las variables desde allí.

 
Vitaly Muzichenko:

No hay nada antes de que aparezca la ventana de parámetros, sólo se inicia después, cuando la ventana ya está cargada

Lo sé, por eso estoy esperando el consejo de un profesional. Tal vez se pueda hacer por medios no estándar, a través de Win API o alguna otra cosa.

¿Realmente no hay forma de mostrar la ventana programáticamente, desde el código?

 
Ventura:

Lo sé, por eso estoy esperando el consejo de un profesional. Tal vez se pueda hacer por medios no estándar, a través de Win API o alguna otra cosa.

¿No hay forma de mostrar la ventana programáticamente, desde el código?

Antes de la inicialización del EA (y los parámetros se introducen antes de la inicialización), el EA no está disponible, no funciona... Antes de la inicialización del Asesor Experto, la ventana de sus parámetros está disponible para usted. Pero no te conviene. Por lo tanto, utilice otra entrada de los valores que necesita - después de la inicialización del EA. Tiene acceso a la ventana MessageBox(). Pero no le servirá de mucho: no hay campos de entrada de valores, sólo botones de aceptación/desacuerdo/cancelación.

Por lo tanto, es necesario utilizar su propia ventana. Puedes crearlo tú mismo a partir de objetos. Búscalo en ObjectCreate(). O bien, utilice el lienzo. Pero el kanvas no es para simples manualidades.

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

El EA no está disponible antes de ser inicializado (y los parámetros se introducen antes de la inicialización), no funciona... Antes de que se inicialice el EA, su ventana de parámetros está disponible para usted. Pero no te conviene. Por lo tanto, utilice otra entrada de los valores que necesita - después de la inicialización del EA. Tiene acceso a la ventana MessageBox(). Pero no le servirá de mucho: no hay campos de entrada de valores, sólo botones de aceptación/desacuerdo/cancelación.

Por lo tanto, es necesario utilizar su propia ventana. Puedes crearlo tú mismo a partir de objetos. Búscalo en ObjectCreate(). O bien, utilice el lienzo. Pero el kanvas no es para simples manualidades.

Artem, gracias, estaba esperando tu consejo. Mientras esperaba, yo mismo buscaba posibles soluciones. Esta mañana he descubierto cómo mostrar la ventana de configuración mediante programación.

He descubierto que la ventana se llama pulsando F7. Una búsqueda en Internet me ha mostrado que puedo hacer una pantalla de teclas programables utilizando MQL.

El resto es una cuestión de técnica. Pego aquí el código para compartirlo con vosotros por si a alguien le puede ser útil:

extern double BuyStop, SellStop;

...

void SetParams()
  {
   BuyStop = CalcBuyStop();
   SellStop = CalcSellStop();
   int handle = WindowHandle(Symbol(), 0);
   PostMessageA(handle,WM_KEYDOWN,VK_F7,0);
  } 
 

Pero me alegré demasiado pronto. He conseguido abrir la ventana de parámetros mediante programación, pero los valores que he asignado a los parámetros en el procedimiento no se han guardado (((

Es decir, cuando abro la ventana de parámetros, veo los valores especificados durante la inicialización, en mi caso ceros.

¿Hay alguna manera de hacer que los valores calculados se transfieran al formulario de parámetros?