Errores, fallos, preguntas - página 2449

 
Alexey Navoykov:

Alguien aquí aconsejó calcular el hash a partir de las fuentes. Así que para esto necesitas conocer todas las fuentes (includniki) utilizadas por el programa, lo que significa que necesitas pars el código duro. No necesariamente se especifican explícitamente (#include <fichero.mqh>), pero se pueden especificar como macros.

Bueno, si algo depende de las macros, entonces para cambiar el resultado hay que cambiar las macros, es decir, la fuente. He dado lectura a todas las dependencias de include-ums en el artículo. Allí, por cierto, se quitan los comentarios, por lo que se deja el código desnudo.

#property script_show_inputs

input string SourceFile = "filename.txt";
input string IncludesFolder = "";
input bool LoadIncludes = false;

void OnStart()
{
  Preprocessor loader(SourceFile, IncludesFolder, LoadIncludes);
  
  if(!loader.run())
  {
    Print("Loader failed");
    return;
  }

  // output entire data as it is assembled from one or many files
  int handle = FileOpen("dump.txt", FILE_WRITE | FILE_TXT | FILE_ANSI, 0, CP_UTF8);
  FileWriteString(handle, loader.text().get());
  FileClose(handle);
}
Pero estoy de acuerdo en que es más cómodo tener todo en el propio editor que de forma manual.
 
Stanislav Korotky:

Bueno, si algo depende de las macros, entonces las macros, es decir, el código fuente, debe cambiar para cambiar el resultado. He dado todas las dependencias por include-ums en el artículo. Ahí, por cierto, se quitan los comentarios, así que queda el código desnudo.

Gracias, incluso yo no estaba al tanto de eso. Es cierto, lo que escribiste allí sobre los tropiezos con las macros. Sin embargo, lo revisaremos cuidadosamente.

El desarrollo de este proyecto todavía tiene un enorme potencial, especialmente en lo que se refiere a la mejora del lenguaje internamente, porque muchas cosas en MQL no han sido implementadas todavía y muchas cosas funcionan mal (bugs) y los desarrolladores, hasta donde yo sé, no tienen planes de mejorar nada en el lenguaje mismo.

 
En la clase CCanvas, los métodos FontGet, TextWidth, TextHeight y TextSize están declarados como no constantes por alguna razón, aunque no hacen ningún cambio en la clase. Funcionan únicamente para obtener datos.
 

No entiendo, ¿es imposible establecer una propiedad como Enabled=false para el elemento gráfico "Button" de manera que el botón no esté disponible para ser pulsado?

Es decir, el usuario pulsa inicialmente el botón, se inicia algún tipo de proceso, y el botón debe permanecer en la posición pulsada sin responder a nuevas pulsaciones ¿Es posible hacer esto?

p.d. Lo encontré. Establece la prioridad del objeto en negativo.
 

¿Cómo se pueden recuperar datos (texto) de esta lista?

 
fxsaber:

¿Pueden decirme cómo recuperar los datos (texto) de esta lista?

https://www.mql5.com/ru/docs/convert/enumtostring

Документация по MQL5: Преобразование данных / EnumToString
Документация по MQL5: Преобразование данных / EnumToString
  • www.mql5.com
//| Script program start function                                    |
 

Necesito una lista de todos los enum del tooltip.

He probado varios programas de ventanas. No funciona ya que la lista desaparece cuando el foco se va.
Программы для работы с окнами приложений | Темная сторона Силы | Blog. Just Blog
  • ManHunter / PCL
  • www.manhunter.ru
В процессе разработки программ, а также их исследования, очень часто приходится работать с окнами приложений на уровне системы. То есть просматривать или менять стили окон, передавать или отслеживать сообщения и уведомления, обрабатывать другие параметры окон. У меня накопилась небольшая подборка программ, значительно облегчающих выполнение...
 

Ayúdame con OnTradeTransaction(). ¿Es normal el comportamiento descrito a continuación? Lo he comprobado en el probador - es así :( ¿Y en una cuenta "real"?

OnTick() tiene un bucle que cierra las posiciones en orden.

La función OnTradeTrancaction() calcula el número de posiciones abiertas.

El Asesor Experto lo hace así: primero cierra el bucle hasta el final, luego va a OnTradeTransaction y realiza los cálculos en el mismo orden.

En otras palabras, no

закрытие тикета #1 -> подсчёт с учетом закрытия тикета #1 -> закрытие тикета #2 -> подсчёт с учетом закрытия тикета #2 -> ...

а

закрытие тикета #1 -> закрытие тикета #2 -> ... -> подсчёт с учетом закрытия тикета #1 -> подсчёт с учетом закрытия тикета #2 -> ...

es decir, funciona de forma secuencial en lugar de en paralelo.

Si lo descrito anteriormente es normal, resulta que OnTradeTransaction() puede ser utilizado con seguridad sólo en Asesores Expertos que abren/cierran una sola orden. Si hay una cuadrícula o una cuadrícula multisímbolo (o una cuadrícula multisímbolo, que es donde se encuentra :) ) - el algoritmo se rompe.

 
Igor Zakharov:

Ayúdame con OnTradeTransaction(). ¿Es normal el comportamiento descrito a continuación? Lo he comprobado en el probador - es así :( ¿Y en una cuenta "real"?

Todo es siempre más complicado en una cuenta real que en una demo y en el tester.

El concepto de OnTradeTransaction está mal planteado, pero se escucha constantemente la opinión de que "no se sabe cómo cocinarlos".


Escribir sin datos de la transacción, u obtenerlos desde el exterior en cualquier parte del programa sin esperar a que entre OnTradeTransaction.

La asincronía es buena para la red de multisímbolos. Por lo tanto, yo elegiría la segunda opción.
 
¿Es terminal64.exe o metatester64.exe donde se encuentra el probador? Hay que averiguar qué archivo hay que cambiar para evitar el fallo.