Errores, fallos, preguntas - página 2826

 

Hola. Espero haber elegido la rama correcta.

En el probador visual, la ventana del indicador utilizado por el EA casi nunca se crea, no se muestran errores y todo lo demás funciona.

El indicador aparece y se renderiza sólo si abro Sleep(1) en el inicializador del EA.

¿Cuál puede ser el problema?

No puedo utilizar Sleep() porqueChartWindowFind(0, nombre_corto) del indicador personalizado deja de funcionar en el lado izquierdo del gráfico.

He aquí un ejemplo sencillo con el que tengo un problema:

int MACDHandle=INVALID_HANDLE;
double macd_value[];

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   MACDHandle=iMACD(_Symbol,0,12,26,9,PRICE_CLOSE);
//Sleep(1);
   ArraySetAsSeries(macd_value, true);
//--- Нужно проверить, не были ли возвращены значения Invalid Handle
   if(MACDHandle<0)
     {
      Alert("Ошибка при создании индикатора MACD - номер ошибки: ",GetLastError(),"!!");
      return(-1);
     }
   else
     {
      Print("MACD инициализирован, handle: ", MACDHandle);
      return(INIT_SUCCEEDED);
     }
  }

//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//--- Освобождаем хэндлы индикаторов
   IndicatorRelease(MACDHandle);
  }

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnTick()
  {
   CopyBuffer(MACDHandle, 0, 0, 1, macd_value);
   Print("macd_value: ", macd_value[0]);
  }
//+------------------------------------------------------------------+
mt5 build 2572
 
fxsaber:

Esa es la solución que estaba considerando, gracias. Esa parece ser la única manera.

No sé si ha cambiado algo, pero en el momento de escribir este artículo este código funciona universalmente:

FileOpen(filename, FILE_READ | FILE_TXT | FILE_ANSI, 0, CP_UTF8);
Синтаксический анализ MQL средствами MQL
Синтаксический анализ MQL средствами MQL
  • www.mql5.com
Суть программирования заключается в формализации и автоматизации неких процессов с помощью языков общего или специального назначения. Торговая платформа MetaTrader позволяет применять программирование для решения самых разных задач трейдера, благодаря встроенному языку MQL. И обычно процесс программирования строится на анализе и обработке...
 
¿Puede sugerir una forma de averiguar el número de núcleo en el EA que se está probando? No hay tal cosa en la API MQL, pero creo que alguien hizo un análisis de la ruta del agente - no está claro cómo las carpetas unificadas están en Tester allí.
 
Stanislav Korotky:
¿Puedes sugerir una manera de averiguar el número de núcleo en un EA bajo prueba. No hay tal cosa en la API MQL, pero creo que alguien hizo un análisis de la ruta del agente - no está claro cómo las carpetas unificadas están en Tester allí.

https://www.mql5.com/ru/forum/1111/page2660#comment_15183572

 

Gracias, lo probaré. Sin embargo, el número de puerto también puede tener cinco dígitos (y técnicamente menos de 4 dígitos, aunque se consideran reservados para los servicios estándar), por lo que voy a corregir el método de extracción para mí.

 

¡Buenos días!

Supongamos que ejecuto un EA en modo de depuración mientras lo desarrollo. El valor por defecto de una de las variables de entrada acaba de ser cambiado en el código. Su valor en tiempo de ejecución, sin embargo, se inserta desde el conjunto de entrada del probador de estrategias anterior.

La pregunta es "¿por qué demonios está ocurriendo esto? El infierno con la no sincronización, pero ¿por qué el modo de depuración prioriza el conjunto sobre el código?

Как в MetaTrader 5 быстро разработать и отладить торговую стратегию
Как в MetaTrader 5 быстро разработать и отладить торговую стратегию
  • www.mql5.com
Скальперские автоматические системы по праву считаются вершиной алгоритмического трейдинга, но при этом они же являются и самыми сложными для написания кода. В этой статье мы покажем, как с помощью встроенных средств отладки и визуального тестирования строить стратегии, основанные на анализе поступающих тиков. Для выработки правил входа и...
 
Nikolai Karetnikov:

¡Buenos días!

Supongamos que ejecuto un EA en modo de depuración mientras lo desarrollo. El valor por defecto de una de las variables de entrada acaba de ser cambiado en el código. Su valor en tiempo de ejecución, sin embargo, se inserta desde el conjunto de entrada del probador de estrategias anterior.

La pregunta es "¿por qué demonios está ocurriendo esto? Al diablo con la falta de sincronización, pero ¿por qué el modo de depuración prioriza el conjunto sobre el código?

En resumen, sólo hay que tener en cuenta esta característica.

 

Comparte información, ¿cuáles son los tamaños de los archivos EX5 de los EAs de combate?

Tengo(una lógica de comercio (sin signo)) sin ningún recurso explícito o implícito(arrays estáticos) y sin GUI ~1250Kb (EX4 - 450Kb). Al mismo tiempo, la versión de prueba (sin envoltura del mundo real) es de ~250Kb.

 
fxsaber:

Compartir información, ¿cuál es el tamaño del archivo EX5 de combate EAs de comercio?

150kb sin indicadores

Razón de la queja: