Deseos para MQL5 - página 39

 
ds2:
// Эти свойства задались уже при создании переменной.
// Менять их в программе, в принципе, особого смысла нет.
// Так что можно их (некоторые из них) сделать read-only
AvgType.DataType = int; 
AvgType.Value    = 0;
AvgType.Comment  = "Тип скользящей средней";

¿Tendría sentido hacerlo así?

class ExternParam
{
    <template typename T>
    property T Value ...;
    property String Comment ...;
}
 
SK. писал (а):
ds2:
SK. escribió (a):

También me gustaría dejar de usar if().

No he visto algo así en lenguajes de programación populares...

О. Eso es, justo en el momento justo.

Lo positivo de esta afirmación es que si no está en otros idiomas, es malo, significa que es algo ajeno e innecesario.

En mi opinión, eso no es cierto en absoluto.

Estoy de acuerdo. Pero también hay que ver la situación desde niveles superiores de conveniencia. La prioridad de MQ, y la nuestra también (!) es mejorar MQL como lenguaje de trading automatizado, y desarrollar sus posibilidades comerciales y analíticas. Y MQ aún tiene muchos problemas sin resolver en este sentido.


Y la implementación de estructuras de programación no estándar no relacionadas con el comercio - no es para lo que se creó MQL. Si los desarrolladores hubieran querido dar un giro y destacar entre otros lenguajes, habrían utilizado Prolog, por ejemplo, y no C++. :) (Aunque, personalmente, como fan de Prolog, habría sido interesante verlo. :) )


Creo que por mucho que los programadores de aquí pidan un breakif, es poco probable que MQ pierda el tiempo en ello. Y, en mi opinión, harán lo correcto. Y sugiero a todo el mundo que no moleste a MQ con peticiones que les distraigan de tareas más urgentes de mejora de MQL como lenguaje de comercio automatizado.

SK. escribió (a):

Las construcciones complejas no sólo se forman a base de bucles y listas. También se forman sobre la base de ifs. Por lo tanto, sería útil una transición controlada a un soporte de cierre externo.

Estoy a favor del goto. :)


La lógica de este programa sería más transparente. Después de todo, breakif es una salida anticipada de una construcción if. Como cualquier salida anticipada, debe realizarse mediante alguna condición, es decir, dentro de un if más. Así, estamos hablando de breakif como operador de salida no para uno sino para dos(!) if's, lo que complica la comprensión de la lógica de un programa y además rompe con el concepto general de los breaks(breakfor, breakwhile, etc.) como operadores que salen sólo para una construcción. Quizá por eso los desarrolladores de otros lenguajes todavía no han introducido un operador tan dudoso...

 
ds2 писал (а):
Y sugiero a todo el mundo que no moleste a MQ con peticiones que lo distraigan de tareas más urgentes de mejora de MQL como lenguaje de comercio automatizado.


Estoy a favor. :) La lógica de este programa será más transparente.

Queridos desarrolladores Por favor, no se distraiga "de las tareas más urgentes de mejorar MQL como un lenguaje de comercio automatizado".

No le molestaremos más.

Lo único que te queda por hacer es tener en cuenta la opinión de ds2.

 

Inspirado por el artículo de Skeptic Filozov - ah, introduzca el promedio de ganancias y pérdidas en pips y las operaciones máximas y mínimas también en el informe de la prueba.

 

Solicitudes de sólo lectura


Introducir funciones o permitir que las funciones actuales accedan a todas las subcarpetas del terminal

donde hay material para procesar: por ejemplo, troncos

modo "sólo lectura".


Planificar otra carpeta \Nde los servicios.

Donde todo tipo de información de DM se escribiría de forma centralizada.

Por ejemplo, un archivo de calendario con formato autoactualizado, noticias "en números", etc.


Si necesita aclarar de qué se trata la solicitud, no hay problema. ;)

 

En el gráfico estaría bien tener
1. línea de pelo, ya que las líneas de grosor 1 parecen toscas.

2. estaría bien que las líneas se mostraran con el redondeo Digits+2.

Ahora mismo las líneas están redondeadas a los Dígitos de la herramienta, lo que lleva a un paso.

-En el entorno de los productos gráficos modernos esto es llamativo y ya no es conveniente en la práctica.

 
Debido a que el asesor puede atender el horario del cliente, los "ticks tecnológicos" son muy necesarios
por ejemplo, en forma de
int servis() 
{
return(0);
}

Que también recibe/arranca como Start, pero no desde un servidor, sino desde un temporizador local del terminal.
El período requerido de garrapatas tecnológicas no dañará a nadie: de 1 a 3 segundos.
Este cambio se puede introducir directamente en MQL-4 sin esperar a la 5ª versión. Por así decirlo, por el bien de las pruebas y por el bien del negocio.
 
Korey:

ERROR en METALANG

extern double  Lot=0.2;
int start()
{ double   Lot; }

La iniciación de la variable doble pasa por la compilación sin error ni advertencia.


extern double  Lot=0.2;
double   Lot;   //а так ошибку - дает
int start()
{ }

Una variable local enmascara una variable global. No hay ningún error.

 

Korey, cero precisamente porque la variable externa está enmascarada:

double Lot;

- es una declaración no inicializada de una variable local dentro de la función start(). Por defecto se inicializa a cero. Todas las funciones que son llamadas en start() y tienen el parámetro de entrada Lot reciben el valor de una variable local, no una externa. La única excepción son las funciones dentro de init() que se ejecutan antes de start(). Allí, el parámetro Lot (si no está enmascarado de forma similar) debe obtener el valor de una variable externa, es decir, 0,2.


Has citado el código equivocado o incompleto. ¿Desde dónde llamas a my_funck()?

 
Korey:

Si se trata de un enmascaramiento, ¿por qué las otras funciones obtienen 0 y no 0,2. como se indica en el externo?


Tiene que comprobar las declaraciones usted mismo. He aquí un sencillo guión:

//+------------------------------------------------------------------+
//|                                                CheckVariable.mq4 |
//|                      Copyright © 2008, MetaQuotes Software Corp. |
//|                                       http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2008, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net/"
 
extern double Var = 0.0;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int init()
   {
   Print("Функция init():Внешняя переменная на глобальном уровне Var=",Var);
   }
 
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void MyFunc()
   {
   Var = -100;
   Print("Функция MyFunc(): Переменная Var=",Var);
   }
 
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int deinit()
   {
   Print("Функция deinit():Внешняя переменная на глобальном уровне Var=",Var);
   }
 
//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()
  {
//----
   double Var = 15;
   Print("Локальная переменная на локальном уровне функции start() Var=",Var);
   MyFunc();
   Print("Локальная переменная на локальном уровне после выполнения функции MyFunc() Var=",Var);
 
   Print("Функция start() завершена");
 
//----
   return(0);
  }
//+------------------------------------------------------------------+


y los resultados del guión.