Errores, fallos, preguntas - página 432

 
gumgum:

290 en total y... sobre)

La exageración total hace 290.

¿Supongo que no hay pase (carrera real) sino que se arregla (si hay partidos)?

Como ha elegido el algoritmo genético, éste construye su propio plan de cruce y la salida de la población. El algoritmo optimizador genético se describe en el artículo correspondiente.

No es razonable correr la genética con tan pocos (290) pases. El algoritmo genético debe utilizarse con una enumeración inicial de al menos decenas de miles, preferiblemente millones/millones/trillones, de variantes.

Генетические алгоритмы - это просто!
Генетические алгоритмы - это просто!
  • 2010.05.25
  • Andrey Dik
  • www.mql5.com
В статье автор расскажет об эволюционных вычислениях с использованием генетического алгоритма собственной реализации. Будет показано на примерах функционирование алгоритма, даны практические рекомендации по его использованию.
 

Manual de referencia de MQL5 - Biblioteca estándar - Clases para organizar datos - CArrayObj (en la página web y en la ayuda):

2. El mecanismo de gestión de la memoria está desactivado.

En este caso, CArrayObj no es responsable de la liberación de memoria

Документация по MQL5: Стандартная библиотека
Документация по MQL5: Стандартная библиотека
  • www.mql5.com
Стандартная библиотека - Документация по MQL5
 
Renat:

Sí, no es necesario realizar la prueba hasta la fecha más reciente existente.

Elija una fecha de finalización fija razonable en forma de 00:00 del día laborable anterior, o incluso el final de la semana laboral anterior. Si se utiliza el último día todo el tiempo, el final de la programación flotará periódicamente, especialmente si el proceso de prueba es largo utilizando agentes remotos o claud.


He utilizado el domingo como fecha de finalización. ¿Dónde más es sensato? El domingo no se comercia. ¿Qué podría flotar allí?
 
MoneyJinn:
He utilizado el domingo como fecha de finalización. ¿Dónde más podría tener sentido? El domingo no se comercia. ¿Qué podría flotar allí?

Entonces quizás el problema esté en el otro extremo de la historia. ¿Qué duración de la historia necesita para que los indicadores funcionen? Al inicio de las pruebas se garantiza, según tengo entendido, un centenar de barras precedentes.

Si necesita más, debe omitir una parte de la historia después del inicio del Asesor Experto con una longitud mayor que[número_necesario_de_barras - 100]. Esto resolvió mis problemas con la correlación de los resultados del probador y el optimizador.

 
MetaDriver:

Entonces quizás el problema esté en el otro extremo de la historia. ¿Qué duración de la historia necesita para que los indicadores funcionen? Al inicio de las pruebas se garantiza, según tengo entendido, un centenar de barras precedentes.

Si necesita más, omita un trozo de historia después del inicio del Asesor Experto con una longitud mayor que[número_necesario_de_barras - 100]. Esto solucionó mis problemas con la coincidencia de los resultados del probador y del optimizador.

Gracias, pero en las capturas de pantalla podemos ver que el historial del viernes (24.06.11) se pierde al optimizar a través de la red

 

No es una pregunta crucial, pero aún así. Concatenación de cadenas. La documentación describe dos funciones StringAdd y StringConcatenate.

La primera dice: "La función StringAdd() es más rápida y económica en memoria que la concatenación de cadenas mediante operaciones de suma.

La segunda dice:"La función StringConcatenate() funciona deforma más rápida y económica que la unión de cadenas mediante operaciones de adición debido a que no se utilizan variables temporales de tipo cadena.

void OnStart() {
  string string1 = "sdfdsfjssdfads";
  string string2 = "bsadfasdfaaa";
  string string3 = "ssdfsdgasgsaggsda";
  string result;
  uint i, start, stop, length = 10000000;

  start = GetTickCount();
  for(i = 0; i < length; i++)
    result = string1 + string2 + string3;
  stop = GetTickCount();
  Print("№1 ", (stop-start), " milliseconds, i = ", i);
 
  start = GetTickCount();
  for(i = 0; i < length; i++) {
    StringAdd(result, string1);
    StringAdd(result, string2);
    StringAdd(result, string3);
  }
  stop = GetTickCount();
  Print("№2 ", (stop-start), " milliseconds, i = ", i);

  start = GetTickCount();
  for(i = 0; i < length; i++)
    StringConcatenate(result, string1, string2, string3);
  stop = GetTickCount();
  Print("№3 ", (stop-start), " milliseconds, i = ", i);
}

Resultado:

2011.06.26 19:10:55 test (EURUSD,H1)№1 2012 milisegundos, i = 10000000
2011.06.26 19:11:04 test (EURUSD,H1)#2 8269 milisegundos, i = 10000000
2011.06.26 19:11:10 test (EURUSD,H1)#3 6661 milisegundos, i = 10000000

Pero resulta que la suma habitual es más rápida.

Документация по MQL5: Строковые функции / StringConcatenate
Документация по MQL5: Строковые функции / StringConcatenate
  • www.mql5.com
Строковые функции / StringConcatenate - Документация по MQL5
 
voix_kas:

Pero resulta que la suma normal es más rápida.

La pregunta ya se ha planteado: https://www.mql5.com/ru/forum/58/page13#comment_59630 Echa un vistazo a la discusión más adelante en el texto. Para los desarrolladores: la conclusión que hay que sacar es que hay una falta de cobertura de este tema en los materiales de referencia.
Изучаем и пишем вместе на MQL5
Изучаем и пишем вместе на MQL5
  • www.mql5.com
2) вывод всей возможной информации по инструментам, ордерам и др.
 
MoneyJinn:
He utilizado el domingo como fecha límite. ¿Dónde más es sensato? El domingo no hay Torg. ¿Qué podría estar flotando por ahí?

Como este tipo de pregunta necesita detalles, por favor crea un ticket en el Service Desk con descripciones adicionales - intentaremos resolverlo.

El problema, por supuesto, es la historia y su sincronización.

 
voix_kas:

No es una pregunta crucial, pero aún así. Concatenación de cadenas. La documentación describe dos funciones StringAdd y StringConcatenate.

La primera dice: "La función StringAdd() es más rápida y económica en memoria que la concatenación de cadenas mediante operaciones de suma.

La segunda dice:"La función StringConcatenate() funciona deforma más rápida y económica que la unión de cadenas mediante operaciones de adición debido a que no se utilizan variables temporales de tipo cadena.

Resultado:

2011.06.26 19:10:55 test (EURUSD,H1)№1 2012 milisegundos, i = 10000000
2011.06.26 19:11:04 test (EURUSD,H1)#2 8269 milisegundos, i = 10000000
2011.06.26 19:11:10 test (EURUSD,H1)#3 6661 milisegundos, i = 10000000

Pero resulta que la suma normal es más rápida.

Esto parece ser una optimización de la concatenación de cadenas con +.

El compilador está sufriendo algunas modificaciones importantes en lo que respecta a la inclusión de los modos de optimización previstos desde hace tiempo. Dentro de un rato mostraremos los resultados.

 
Renat:

Parece que lo que funciona es la optimización de la concatenación de cadenas con +.

Ahora estamos cambiando seriamente el compilador en términos de habilitar los tan esperados modos de optimización. Te mostraremos los resultados dentro de un rato.

Ya veo. Bueno, si es posible lo describirás explícitamente en el foro (intento seguir todos los hilos).

Hasta ahora en el algoritmo he dejado el trabajo "+".