75.000 opciones: ¿4 GB de RAM y 4 GB de caché de disco no son suficientes? - página 5

 
No tenemos una visualización, no la hemos necesitado todavía.
Pero probablemente lo haremos en la próxima versión.

Te mostraré lo que puedo.
Es imposible transferir el Asesor Experto al 100%,
Voy a hacer una aproximación, no se trata del Asesor Experto, se trata de las capacidades del optimizador,
Se trata de las capacidades del optimizador, ¿no?
 
Mak:
No tenemos una visualización, no la hemos necesitado todavía.
Pero probablemente lo haremos en la próxima versión.

Te mostraré lo que puedo.
Es imposible transferir el Asesor Experto al 100%,
Voy a hacer una aproximación, no se trata del Asesor Experto, ¿verdad?
Se trata de las capacidades del optimizador, ¿no?
En absoluto. Todo el complejo de la cartografía y la usabilidad es su esencia, lo que conlleva un gran gasto de recursos.

Una cosa es hacer que los programadores dediquen todo su código a integrar la comunicación con un optimizador externo, y luego ejecutar el optimizador que calcula algo allí. Y todo ello con un coste. Y otra cosa es marcar la casilla de "Optimización genética" de cualquier experto, seleccionar un rango normal (no decenas de miles de millones), obtener los resultados y mirar inmediatamente los resultados mientras el optimizador trabaja, sin ningún programa adicional. Y es gratis.

Siempre hacemos que nuestros sistemas sean lo más sencillos, cómodos e integrales posible. Alguien afirma que "mi probador es 10-100 veces más rápido", pero no lo demuestra. Alguien habla de tareas ficticias con "un caballo en un vacío esférico". Mientras que nosotros hacemos sistemas de trabajo que funcionan masivamente para cientos de miles de comerciantes que utilizan MetaTrader. Y estamos muy por delante de cualquier competidor, también por nuestra ideología de los sistemas de construcción.

ps: Por cierto, ¿por qué el paquete de distribución de su optimizador genético es mayor que el de MetaTrader? ¿No es económico escribirlo?
 
Bueno, aquí hay una carrera.

No tengo monedas en Omega, corrí en lo que está en la distribución
- IBM (D1) durante 31 años (> 11 mil barras).

1000 ejecuciones tomaron ~10 min en Athlon XP 1500+

Amplié los rangos de los parámetros, porque la volatilidad es mayor en las acciones

TakeProfit = (10, 10000, 1)
TralingStop = (10, 10000, 1)
Lots = (1, 1000, 1) - mi número de acciones es
MACDOpenLevel = (1, 100, 1)
MACDCloseLevel = (1, 100, 1)
MATrendPeriod = (2, 100, 1)

El espacio total de parámetros es ~ 10^14 estados.

A continuación se muestra el código en EasyLanguage y ScreenShot.
También adjunto el código de la señal y los informes de Omega en el archivo Zip.

(pegar el código no funcionó)
========================================================================
Entradas: Gen(1);
Vars: TakeProfit(50),
TralingStop(30),
Lots(0.1),
MACDOpenLevel(3),
MACDCloseLevel(2),
MATrendPeriod(26);

Vars: R(0),K(0);
If CurrentBar = 1 Then Begin
R = TS.GO.Start("MACD");
If Gen = 1 Then Begin
R = TS.GO.Mode(0);
R = TS.GO.Popul(100);
R = TS.GO.Var("Gen");
R = TS.GO.Var("Trades");

R = TS.GO.Method(1);
R = TS.GO.Criterion("NetProfit",1);
R = TS.GO.Criterion("MaxDD",1);
R = TS.GO.Criterion("PF",1);

K = TS.GO.Chrom("Stops");
R = TS.GO.Gen("TakeProfit", K, 10, 10000, 1);
R = TS.GO.Gen("TralingStop", K, 10, 10000, 1);

K = TS.GO.Chrom("Lots");
R = TS.GO.Gen("Lots", K, 1, 1000, 1);

K = TS.GO.Chrom("MACD");
R = TS.GO.Gen("MACDOpenLevel", K, 1, 100, 1);
R = TS.GO.Gen("MACDCloseLevel", K, 1, 100, 1);
R = TS.GO.Gen("MATrendPeriod", K, 2, 100, 1);
End;

R = TS.GO.Next(Gen);
R = TS.GO.Set("Gen",Gen);
R = TS.GO.ShowViewer;

TakeProfit = TS.GO.Get("TakeProfit", 0);
TralingStop = TS.GO.Get("TralingStop", 0);
Lots = TS.GO. Get("Lots", 0);
MACDOpenLevel = TS.GO.Get("MACDOpenLevel",0);
MACDCloseLevel = TS.GO.Get("MACDCloseLevel",0);
MATrendPeriod = TS.GO.Get("MATrendPeriod",0);
End;

Vars: MacdCurrent(0), MacdPrevious(0), SignalCurrent(0),
SignalPrevious(0), MaCurrent(0), MaPrevious(0);

MacdCurrent = MACD(Close,12,26);
MacdPrevious = MACD(Close,12,26)[1];
SignalCurrent = XAverage(MacdCurrent,9);
SignalPrevious = XAverage(MacdCurrent,9)[1];
MaCurrent = XAverage(Close,MATrendPeriod);
MaPrevious = XAverage(Close,MATrendPeriod)[1];

Vars: StopLoss(0);
If MarketPosition = 0 Then Begin
If MacdCurrent < 0
and MacdCurrent > SignalCurrent
and MacdPrevious < SignalPrevious
and AbsValue(MacdCurrent) > (MACDOpenLevel Point)
and MaCurrent > MaPrevious
Then Begin
Comprar lotes de acciones en esta barra al cierre;
end;

If MacdCurrent > 0
and MacdCurrent < SignalCurrent
and MacdPrevious > SignalPrevious
and AbsValue(MacdCurrent) > (MACDOpenLevel Point)
and MaCurrent < MaPrevious
Then Begin
Sell Lots shares this bar on close;
end;
end;

If MarketPosition > 0 Then Begin
If MacdCurrent > 0
and MacdCurrent < SignalCurrent
and MacdPrevious > SignalPrevious
and AbsValue(MacdCurrent) > (MACDCloseLevel Point)
Then Begin
ExitLong ("CloseLong") esta barra al cierre;
end;

Si StopLoss = 0 Entonces StopLoss = EntryPrice - TralingStop Points;
StopLoss = MaxList(StopLoss,High - TralingStop Points);

ExitLong ("TakeLong") Next Bar at EntryPrice + TakeProfit Points Limit;
ExitLong ("StopLong") Next Bar at StopLoss Stop;
end;

If MarketPosition < 0 Then Begin
If MacdCurrent < 0
and MacdCurrent > SignalCurrent
and MacdPrevious < SignalPrevious
and AbsValue(MacdCurrent) > (MACDCloseLevel Point)
Then Begin
ExitShort ("CloseShort") esta barra al cierre;
end;

If StopLoss = 0 Then StopLoss = EntryPrice + TralingStop Points;
StopLoss = MinList(StopLoss,Low + TralingStop Points);

ExitLong ("TakeShort") Next Bar at EntryPrice - TakeProfit Points Limit;
ExitLong ("StopShort") Next Bar at StopLoss Stop;
end;


IF LastBarOnChart Then Begin
R = TS.GO.Set("Trades",TotalTrades);
R = TS.GO.Set("NetProfit",NetProfit);
R = TS.GO.Set("MaxDD",MaxIDDrawDown);
R = TS.GO.Set("PF",GrossProfit/(0.001-GrossLoss));
R = TS.GO.Fitness(0);
End;
========================================================================


Archivos adjuntos:
macd_test.zip  32 kb
 
Renat:
Mak:
No tenemos una visualización, no la hemos necesitado todavía.
Pero probablemente lo haremos en la próxima versión.

Te mostraré lo que puedo.
Es imposible transferir el Asesor Experto al 100%,
Voy a hacer algo aproximado, no se trata del Asesor Experto, se trata de las capacidades del optimizador...
Se trata de las capacidades del optimizador, ¿no?
No, en absoluto. La cuestión está en todo el complejo de la cartografía y la usabilidad, que conlleva un gran gasto de recursos.

Una cosa es hacer que los programadores dediquen todo su código a integrar la comunicación con un optimizador externo, y luego ejecutar el optimizador que calcula algo allí. Y todo ello con un coste. Y otra cosa es marcar la casilla de "Optimización genética" de cualquier experto, seleccionar un rango normal (no decenas de miles de millones), obtener los resultados y mirar inmediatamente los resultados mientras el optimizador trabaja, sin ningún programa adicional. Y es gratis.

Siempre hacemos que nuestros sistemas sean lo más sencillos, cómodos e integrales posible. Alguien afirma que "mi probador es 10-100 veces más rápido", pero no lo demuestra. Alguien habla de tareas ficticias con "un caballo en un vacío esférico". Mientras que nosotros hacemos sistemas de trabajo que funcionan masivamente para cientos de miles de comerciantes que utilizan MetaTrader. Y estamos muy por delante de cualquier competidor, también por nuestra ideología de los sistemas de construcción.

ps: Por cierto, ¿por qué el paquete de distribución de su optimizador genético es mayor que el de MetaTrader? ¿No es económico escribirlo?

Renat, tú mismo me exigiste que te mostrara esto.
Te he preguntado repetidamente qué es esto ....
Si hubieras escrito un post anterior cuando te pregunté al respecto,
la conversación habría sido diferente, y no habría necesitado reescribir este MACD para Omega.
Tuve que dejar de lado otras cosas para ocuparme de demostrar que "no soy un camello".

El resultado final.
Dices que lo que has hecho es bueno y gratis ...
¿Estaba discutiendo contigo sobre eso (no estaba discutiendo contigo sobre nada en absoluto)?

Sólo he señalado que tu optimizador consume demasiada memoria.
Creo que esto es una herencia de una versión antigua de su optimizador, cuando aún no tenía CS.
Esto es fácil de arreglar y hará que su optimizador sea aún mejor.

Ojo, no es una crítica por mi parte.
Sólo quería ayudarte.
 
Es muy diferente cuando defiendes tu posición con detalles. De verdad, ¿por qué sólo hay 1.000 sobrepasos en un espacio tan grande? Es una forma muy burda de verlo. Corrí este EA en MT4 sobre 1.5 B de valores y resultó en 4400 rebotes netos dentro de 4 minutos en 18000 barras de la historia del EURUSD H1.

Esta tarea es, por supuesto, el reino del caballo esférico en el vacío y nosotros en MT4 estamos, de hecho, tratando de reservar incorrectamente una cierta cantidad de memoria debido a la enorme área de valores posibles (el legado de los mecanismos de ataque de fuerza bruta). Este punto será corregido.

Gracias por su persistencia, nos ha obligado a profundizar en el probador.
 
Renat писал (а):

.... Pero, ¿por qué sólo hay 1000 rebotes en un espacio tan grande? Es muy burdo. Ejecuté este Asesor Experto en MT4 sobre un área de 1.500 millones de valores y obtuve 4400 sobrepasos netos en 4 minutos en 18000 barras H1 de EURUSD de la historia. ....
La velocidad de búsqueda en genética es independiente del tamaño del espacio de parámetros.
Depende de la calidad de la función objetivo (fitness).

Además, utilizamos el algoritmo original que es un orden de magnitud más rápido que otros algoritmos conocidos.
1000 ejecuciones es demasiado, yo suelo utilizar 100-200 ejecuciones (para cualquier número de parámetros) para evaluar una solución.
 
Renat писал (а):
Sí, de hecho este EA en la prueba consume demasiada memoria y se cae. Lo investigaremos.
Gracias por el código proporcionado.


Renat, ¿todavía no hay noticias?
 

cuerdo, hay noticias. Encontraron una fuga de memoria. El compilador no insertó el comando de liberación de línea en el lugar correcto.

 
stringo писал (а):

cuerdo, hay noticias. Encontraron una fuga de memoria. El compilador no insertó el comando de liberación de línea en el lugar correcto.


Bien, estamos esperando la nueva construcción.
 
sane:
estrangulamiento:

cuerdo, hay noticias. Encontraron una fuga de memoria. El compilador no insertó el comando de liberación de línea en el lugar correcto.


ok, a la espera de la nueva construcción.

He ejecutado tu ejemplo en la nueva versión de 198 EA:







Se acabó el consumo excesivo de memoria, con la optimización genética activada hubo 1088 búsquedas de 21600 y el cálculo duró 8 minutos y 31 segundos.

Sobre el Asesor Experto en sí mismo - no debería ser utilizado de ninguna manera debido a errores graves:
  • Niveles de parada incorrectos y todos los registros están inundados de mensajes al respecto
  • para la función SetOrder puede obtener de su corredor una severa prohibición de operar con Asesores Expertos

    Esta función intenta operar con precios desactualizados cinco veces, el autor del Asesor Experto no entiende lo que está haciendo (intenta usar RefreshRates, pero sigue dando un precio desactualizado). Y no hay ningún tipo de manejo de errores significativo.