una estrategia de negociación basada en la teoría de las ondas de Elliott - página 67

 
Probablemente en tiempo real esas cifras son aceptables (aunque no hay límite a la perfección :), pero con las pruebas de historia, por lo que tengo entendido, la situación es bastante difícil, incluso con una muestra corta. Espero que no sospeche que me opongo al uso de cálculos informáticos. :). Justo después de leer el hilo me dio la impresión de que sería deseable acelerar el algoritmo considerablemente.

Por supuesto, no hay duda de que nos gustaría conseguir un algoritmo más rápido para los cálculos, especialmente para las pruebas de la historia, pero por otro lado esta metodología no requiere un multimillón de carreras en el probador, ya que se requiere para el ajuste tradicional en los datos históricos, que la mayoría de los usuarios de MT4 gusta de usar asiduamente atacar a los creadores de este producto (Dar más píldoras codiciosos!!); o). Es necesario darse cuenta de que una carrera de Asesor de Expertos, creado por esta metodología en términos de aplicabilidad de los resultados será a sabiendas superior a optimizado por 10000000000 carreras EA, los resultados de los cuales su autor es capaz de esperar para siempre en esta vida;o))). Lo digo basándome en mi experiencia de crear un sistema de adivinación aleatorio descrito anteriormente en este hilo al principio. La optimización de un Asesor Experto basada en métodos de matestadística consiste principalmente en una mejora lógica del algoritmo con un mínimo de parámetros a ajustar (cada parámetro tiene un área limitada de variación también), pero no en la búsqueda de algunos valores "óptimos" de diferentes osciladores y media móvil y algunos ratios encontrados en el máximo global en el espacio n-dimensional como se requiere para el ajuste de la historia estándar. El resultado actual que se muestra en los posts anteriores se obtuvo realizando probablemente no más de cincuenta ejecuciones completas del algoritmo en el historial disponible. Después de cada ejecución, el algoritmo se perfeccionó y mejoró. Y en este momento sigo haciendo lo mismo. Hago 2 ó 3 pasadas al día, analizo los resultados y mejoro el algoritmo. Todavía no he terminado del todo, pero ya he lanzado la primera versión, más o menos funcional, en la cuenta real. Todavía no he hecho tratos con él. El Asesor Experto está esperando que el euro baje.
 
solandr, para acelerar/optimizar el tiempo de prueba - ¿ha utilizado un indicador personalizado o matrices que contengan X,X^2, etc.?
 
No utilizo los indicadores personalizados, ya que escribí que cada llamada de la misma es perforada en el registro del probador. He introducido un indicador de niveles de Murray en el propio Asesor Experto. Todavía no he inventado matrices que aceler en específicamente los cálculos del Asesor Experto. Francamente, no sé qué se puede inventar. La información sobre el cálculo de las barras anteriores (bordes del canal) se almacena naturalmente en matrices y no se recalcula en una nueva barra. Creo que prácticamente he agotado todo mi algoritmo en términos de velocidad y no podré acelerarlo más. Pero no tengo muy claro lo de las matrices que contienen X,X^2. ¿En qué medida puede reducirse el tiempo de cálculo (elevar al cuadrado) al encontrar valores sobre una gran matriz de X,X^2? ¿Tiene datos de comparación computacional? Sería interesante echarles un vistazo.
 
¿Esto es para Y=A*X+B en cada nueva barra para cada nuevo canal?

Ahora miré y entendí - es posible optimizar el EA. La ganancia debe ser (N+1)/2 , donde N es la longitud máxima del canal (su versión actual utiliza 300 - por lo que la ganancia debe ser 150 veces).
 
Por lo que entiendo estás proponiendo organizar una matriz cúbica, cada fila de la cual será unos millones y en ella buscar respuestas listas Y con 3 parámetros diferentes A,X,B? ¿O es que no he entendido bien la idea?
 
No, sólo propongo hacer el cálculo en cada barra una sola vez, y luego usar ese valor N veces (se forma un array, sin duda :))
 
¿Cómo es esto posible, si tenemos canales en cada barra que se mueven ligeramente, cambiando sus límites?
 
No puedo reemplazar el algoritmo por completo (todavía tengo que hacer un trabajo serio), pero puedo pegar un poco de un algoritmo optimizado en uno regular. Significa que todos los cálculos preliminares para el algoritmo optimizado se realizan pero el canal se calcula de la forma habitual. Aquí está el registro:
2006.07.04 23:04:37 ChannelStDev3 GBPCHF,M15: Ejecutar deinit()<br / translate="no"> 2006.07.04 23:04:37 ChannelStDev3 GBPCHF,M15: Tiempo normal del script+optimización579 ms
2006.07.04 23:04:36 ChannelStDev3 GBPCHF,M15: a=-0.0001 b=2.2628 lastBar1 firstBar=105 StDev=0.001
2006.07.04 23:04:36 ChannelStDev3 GBPCHF,M15: Se han encontrado 140 canales que cumplen el criterio en 1000 barras
2006.07.04 23:04:36 ChannelStDev3 GBPCHF,M15: Están en 1 serie
2006.07.04 23:04:36 ChannelStDev3 GBPCHF,M15: inicializado
2006.07.04 23:04:35 ChannelStDev3 GBPCHF,M15: cargado con éxito
2006.07.04 23:04:28 ChannelStDev GBPCHF,M15: eliminado
2006.07.04 23:04:28 ChannelStDev GBPCHF,M15: deinitialized
2006.07.04 23:04:28 ChannelStDev GBPCHF,M15: ejecutando deinit()
2006.07.04 23:04:28 ChannelStDev GBPCHF,M15: Tiempo de escritura normal 547 ms
2006.07.04 23:04:27 ChannelStDev GBPCHF,M15: a=-0.0001 b=2.2628 lastBar1 firstBar=105 StDev=0.001
2006.07.04 23:04:27 ChannelStDev GBPCHF,M15: Se han encontrado 140 canales que cumplen el criterio a lo largo de 1000 barras


Así, el tiempo del algoritmo optimizado debería ser aproximadamente (579-547)=32 milisegundos. Aproximadamente, la ganancia es de 547/32=17 veces. Ciertamente no se trata de 500 veces como suponía, pero hay que comprobarlo. Tal vez no haya tenido en cuenta los procedimientos incompresibles que llevan más tiempo del que pensaba. Intentaré comprobarlo mañana.
 
Medir los dos bloques de cálculos por separado.
2006.07.05 14:34:17 ChannelStDev3 EURJPY,M15: deinitialized<br/ translate="no"> 2006.07.05 14:34:17 ChannelStDev3 EURJPY,M15: Execute deinit()
2006.07.05 14:34:17 ChannelStDev3 EURJPY,M15: a=0.0071 b=146.7474 lastBar1 firstBar=50 StDev=0.1056
2006.07.05 14:34:17 ChannelStDev3 EURJPY,M15: Se han encontrado 820 canales que cumplen el criterio de más de 1000 barras
2006.07.05 14:34:17 ChannelStDev3 EURJPY,M15: Están en 8 series
2006.07.05 14:34:17 ChannelStDev3 EURJPY,M15: Tiempo del algoritmo convencional390 ms
2006.07.05 14:34:17 ChannelStDev3 EURJPY,M15: Tiempo del algoritmo optimizado0 ms
2006.07.05 14:34:17 ChannelStDev3 EURJPY,M15: inicializado
2006.07.05 14:34:15 ChannelStDev3 EURJPY,M15: cargado con éxito


Queda por ver si el bloque optimizado calculará correctamente. Al mismo tiempo, descubrí que el trabajo con los objetos requiere un tiempo considerable (casi un tercio de la variante no optimizada) - el dibujo en el backtest no es deseable. Aunque
 
Lo volví a hacer, con Print
<br/ translate="no"> 14:54:04 ChannelStDev3 EURJPY,M15: k=64 a=0.002 b=146.8379 sigma=-1370529.6008
14:54:04 ChannelStDev3 EURJPY,M15: k=63 a=0.0025 b=146.829 sigma=-1348950.2071
14:54:04 ChannelStDev3 EURJPY,M15: k=62 a=0.0029 b=146.8197 sigma=-1327370.2369
14:54:04 ChannelStDev3 EURJPY,M15: k=61 a=0.0033 b=146.8105 sigma=-1305795.8008
14:54:04 ChannelStDev3 EURJPY,M15: k=60 a=0.0038 b=146.8016 sigma=-1284233.323
14:54:04 ChannelStDev3 EURJPY,M15: k=59 a=0.0042 b=146.7921 sigma=-1262664.9732
14:54:04 ChannelStDev3 EURJPY,M15: k=58 a=0.0046 b=146.7844 sigma=-1241133.5221
14:54:04 ChannelStDev3 EURJPY,M15: k=57 a=0.005 b=146.7769 sigma=-1219610.1431
14:54:04 ChannelStDev3 EURJPY,M15: k=56 a=0.0055 b=146.7678 sigma=-1198064.4492
14:54:04 ChannelStDev3 EURJPY,M15: k=55 a=0.0058 b=146.7611 sigma=-1176563.0841
14:54:04 ChannelStDev3 EURJPY,M15: k=54 a=0.0062 b=146.754 sigma=-1155059.1345
14:54:04 ChannelStDev3 EURJPY,M15: k=53 a=0.0066 b=146.7469 sigma=-1133558.635
14:54:04 ChannelStDev3 EURJPY,M15: k=52 a=0.007 b=146.7398 sigma=-1112061.7881
14:54:04 ChannelStDev3 EURJPY,M15: k=51 a=0.0073 b=146.7342 sigma=-1090593.6002
14:54:04 ChannelStDev3 EURJPY,M15: k=50 a=0.0074 b=146.7327 sigma=-1069186.857
14:54:04 ChannelStDev3 EURJPY,M15: k=49 a=0.0074 b=146.733 sigma=-1047808.1245
14:54:04 ChannelStDev3 EURJPY,M15: k=48 a=0.0073 b=146.7346 sigma=-1026446.748
14:54:04 ChannelStDev3 EURJPY,M15: k=47 a=0.0069 b=146.7404 sigma=-1005141.2611
14:54:04 ChannelStDev3 EURJPY,M15: k=46 a=0.0064 b=146.7494 sigma=-983876.6836
14:54:04 ChannelStDev3 EURJPY,M15: Tiempo del algoritmo optimizado 31 ms
14:54:05 ChannelStDev3 EURJPY,M15: Tiempo del algoritmo ordinario 875 ms
14:54:05 ChannelStDev3 EURJPY,M15: Están en 6 series
14:54:05 ChannelStDev3 EURJPY,M15: Encontrados 824 canales que cumplen los criterios, más de 1000 barras
14:54:05 ChannelStDev3 EURJPY,M15: a=0.0064 b=146.7494 lastBar1 firstBar=46 StDev=0.1044
14:54:05 ChannelStDev3 EURJPY,M15: Execute deinit()
14:54:05 ChannelStDev3 EURJPY,M15: deinitialized
14:54:05 ChannelStDev3 EURJPY,M15: removed


Sin embargo, el problema con sigma :)