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

 
Valeriy Yastremskiy:

No entiendo, tal vez estoy hablando de la ventana equivocada. Me refiero a la ventana del gráfico donde están las barras. Estos se mueven. También hay ventanas de diálogo cuando se cargan los indicadores de EA, ventanas de alerta, ventanas de mensajes, pero todas se mueven. ¿De qué ventana estamos hablando? El cuadro de diálogo no tiene nada que ver. Tampoco tengo bibliotecas en 4

Aquí está la ventana del búho.


Quiero moverlo en el gráfico cuando lo necesite.

 
MakarFX:

Aquí está la ventana del búho


Eso es lo que quiero mover en la agenda cuando lo necesite.

No es una ventana, es un panel. Puedes moverlo, ni siquiera puedo decirte el código. Necesito el código y volver a dibujarlo en general. Necesito encontrar el lugar donde se dibuja el panel y se especifican las coordenadas - entonces, usando eventos, hago clic para moverlo, borrarlo y dibujar uno nuevo. Así. Pero no soy un dibujante en absoluto.

 
Valeriy Yastremskiy:

Al borrar en un EA, no es necesario limpiar el comentario, pero en un indicador sí. ¿Está diseñado así?

Un programador adecuado escribiría al menos

void OnDeinit(const int reason)
{
     Comment( "" );
}
Si se han utilizado comentarios, los limpiará después. Y muchos principiantes no prestan atención a esto. Ese es el secreto.
 
Hola.
¿Pueden decirme (fórmula) cómo calcular el precio para un determinado nivel (teniendo en cuenta las posiciones abiertas)? Para calcular a qué precio se producirá un margin call y un stop out.
 
Konstantin Nikitin:

Un programador adecuado escribiría al menos

Si se han utilizado comentarios, los limpiará después. Y muchos principiantes no prestan atención a esto. Ese es el secreto.

Lo hizo, y escribió sobre ello más arriba). La pregunta era por qué el comportamiento diferente en los EA y los indicadores. ¿Hay un significado oculto o se ha desarrollado históricamente a partir de diferentes equipos de redacción)

 
Konstantin Nikitin:

Un programador adecuado escribirá al menos

Si se han utilizado comentarios, los limpiará después. Y muchos principiantes no prestan atención a esto. Ese es todo el secreto.
En realidad, no hay requisitos generales evidentes al respecto.
 
Andrey Sokolov:
En realidad, no hay requisitos generales explícitos al respecto.

¿He hablado del requisito? Sólo he dicho que algunos tienen en cuenta este punto y otros no.

 
Konstantin Nikitin:

¿He hablado del requisito? Sólo he dicho que algunos tienen en cuenta este punto y otros no.

No es así.

 

La libreríaEASY AND FAST https://www.mql5.com/ru/articles/3527 implementa la posibilidad de iniciar una ventana del programa en una subventana del indicador cargando el archivo "SubWindow.mq5", en mql5 todo funciona, en mql4 también se compila el contenido sin errores, pero la subventana no se abre, ¿qué se puede hacer?


//+------------------------------------------------------------------+
//|                                                    SubWindow.mq5 |
//|                        Copyright 2016, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "2016, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property indicator_separate_window
#property indicator_plots   0
#property indicator_buffers 0
#property indicator_minimum 0.0
#property indicator_maximum 0.0
//--- Имя программы
#define  PROGRAM_NAME ::MQLInfoString(MQL_PROGRAM_NAME)
//--- Идентификатор события для изменения высоты подокна эксперта
#define  ON_SUBWINDOW_CHANGE_HEIGHT (38)
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit(void)
  {
//--- Короткое имя индикатора
   ::IndicatorSetString(INDICATOR_SHORTNAME,PROGRAM_NAME);
//--- Инициализация прошла успешно
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Деинициализация                                                  |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int    rates_total,
                const int    prev_calculated,
                const int    begin,
                const double &price[])
  {
//--- Если инициализация прошла успешно
   if(prev_calculated<1)
      //--- Отправим сообщение эксперту, чтобы получить от него размер для подокна
      ::EventChartCustom(0,ON_SUBWINDOW_CHANGE_HEIGHT,0,0.0,PROGRAM_NAME);
//---
   return(rates_total);
  }
//+------------------------------------------------------------------+
//| ChartEvent function                                              |
//+------------------------------------------------------------------+
void OnChartEvent(const int    id,
                  const long   &lparam,
                  const double &dparam,
                  const string &sparam)
  {
//--- Обработка события изменения высоты подокна эксперта
   if(id==CHARTEVENT_CUSTOM+ON_SUBWINDOW_CHANGE_HEIGHT)
     {
      //--- Принимать сообщения только от имени эксперта
      if(sparam==PROGRAM_NAME)
         return;
      //--- Изменить высоту подокна
      ::IndicatorSetInteger(INDICATOR_HEIGHT,(int)lparam);
      //--- Обновить график
      ::ChartRedraw();
     }
  }
//+------------------------------------------------------------------+
 

Hola a todos.

¡Estoy tratando de adjuntar un cheque de cuenta a (cualquier) indicador!

bool VerifityToSchet()
  {
   if(AccountNumber() != account)
     {
      Print("На данном счете индикатор работать не будет, вы его приобрели незаконным путем!!!");   
     }else
     {
     Print("На данном счете индикатор авторизован");
     }
   return(false);
  } 

¡Lo habilité en init() y start() por supuesto, pero cuando reinicio la terminal, dice que la cuenta no es válida!

¿Qué estoy haciendo mal?

Razón de la queja: