Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Sí... en principio es lo mismo...
La nueva construcción ha dejado de copiar estructuras simples en el bucle. Aquí hay un script de prueba:
Resultado:
2011.11.13 09:30:44 Test_Copy_Struct (EURUSD,M15) Violación de acceso leída a 0x00000000209FFFAC en 'E:\NArchivos de Programa\NCampeonato_2011\MQL5\Scripts\NTest_Copy_Struct.ex5'
2011.11.13 09:30:44 Test_Copy_Struct (EURUSD,M15) i=0
2011.11.13 09:30:44 Test_Copy_Struct (EURUSD,M15) LossToReverse=3000.00 MAPeriod=100 MA_use=1 Lots=0.10 takeprofit=1000
2011.11.13 09:30:44 Test_Copy_Struct (EURUSD,M15) Setting reopened=110 overpos=130 TrailingStop=200 WithoutlossLevel=1300 WithoutlossProfit=1500
2011.11.13 09:30:44 Test_Copy_Struct (EURUSD,M15) ------------------------------
2011.11.13 09:30:44 Test_Copy_Struct (EURUSD,M15) LossToReverse=1000.00 MAPeriod=85 MA_use=0 Lots=0.15 takeprofit=1700
2011.11.13 09:30:44 Test_Copy_Struct (EURUSD, M15) Setting reopened=110 overpos=140 TrailingStop=200 WithoutlossLevel=600 WithoutlossProfit=800
2011.11.13 09:30:44 Test_Copy_Struct (EURUSD,M15) ------------------------------
2011.11.13 09:30:44 Test_Copy_Struct (EURUSD,M15) LossToReverse=2000.00 MAPeriod=105 MA_use=1 Lots=0.13 takeprofit=2700
2011.11.13 09:30:44 Test_Copy_Struct (EURUSD,M15) Setting reopened=60 overpos=90 TrailingStop=1000 WithoutlossLevel=100 WithoutlossProfit=900
2011.11.13 09:30:44 Test_Copy_Struct (EURUSD,M15) ------------------------------
2011.11.13 09:30:44 Test_Copy_Struct (EURUSD,M15) LossToReverse=0.00 MAPeriod=0 MA_use=0 Lots=0.00 takeprofit=0
2011.11.13 09:30:44 Test_Copy_Struct (EURUSD,M15) Setting reopened=0 overpos=0 TrailingStop=0 WithoutlossLevel=0 WithoutlossProfit=0
https://www.mql5.com/ru/docs/basis/function/events dice al final:"Para una mejor comprensión será útil ejecutar el indicador cuyo código se adjunta a continuación. "
Ejecuta el código. Durante el fin de semana. No ha habido una mejor comprensión: estaba bien como estaba, creo, pero se han añadido las peores impresiones. No hay ticks en el fin de semana, por lo que prev_calculated = 0 en este momento siempre, cuando se pasa de timeframe a timeframe:
Sin embargo, en un momento dado aparece este valor (¡no hay reconexión, sinceramente noble!):
y líneas divertidas en el gráfico:
O la mitad de divertido, como esto:
Incluso había líneas al principio de la historia en forma de ZigZag (por desgracia, olvidé hacer una captura de pantalla y no pude reproducirla).
Las líneas también aparecen en otras TF, pero de forma más dispersa. Puedes comprobarlo fácilmente por ti mismo.
¿Era exactamente lo que los autores querían decir?
¿Por qué el resultado de prev_calculado es al menos desigual en ausencia de ticks, si no es extraño? ¿Funciona algo mal al saltar de TF a TF?
¿Deberían haber aparecido estas líneas (o cualquier otra) fuera de las garrapatas?
En casos raros, ¿puede el salto relativamente frecuente de TF a TF generar algún tipo de pseudotick que inicie el cálculo de los valores de las barras en el historial, etc.?
¿Debo esperar que se elimine el comportamiento errático del terminal? ¿O debo aprender las matemáticas?
¿Quizás estoy intentando hacer algo que no debería hacer? En ese caso, justifique su punto de vista.
Tengo muchas preguntas... pero esto es sólo el principio...
Continúa...
Hay una frase en el mismo enlace:"Nota: si la función OnCalculate devuelve un valor nulo, no se muestran los valores del indicador en la DataWindow del terminal cliente. "
Esta es la cuestión... Si es necesario, aceptaré con gusto cualquier crecimiento del brazo y correré inmediatamente a enderezarlo si es necesario. Pero. En los indicadores de complejidad simple y media se puede salir de alguna manera de algunas situaciones de tropiezo. Pero a medida que el código se vuelve más complejo, cualquier función de Copy... () (tanto tomando como argumento el mango de otro indicador como sin él) comienza a complicar la situación, como personalmente pienso, tratando con la programación MQL hace una semana. Entonces llega un momento límite en el que no se sabe qué más se puede cambiar en el código, porque todo lo que se puede cambiar se ha cambiado, y el resto, según me parece, no se debe cambiar, porque no tiene nada que ver con el problema. O bien, se produce un pensamiento absolutamente desarmante: cambiar todo el algoritmo, porque no se han tenido en cuenta las peculiaridades y caprichos del terminal. Al fin y al cabo, mientras se estudia el MQL a través de la documentación, hay que lidiar con los matices, que los desarrolladores han callado, muy probablemente de forma inadvertida. Y el programador de MQL nunca aprende muchas cosas después de estudiar completamente la documentación... Y lo que es más decepcionante, usando MQL, o bien no puedes corregir muchos de los caprichos del terminal en absoluto, o bien puedes usar muletas dudosas y un día estrellarte dolorosamente...
Bueno... Hoy me he vuelto un poco loco. Es el fin de semana.
Y esto es lo que quería decirte esta mañana...
https://www.mql5.com/ru/forum/1111/page570#comment_117425 - He resuelto completamente el problema principal de cómo el indicador no se renderiza en el arranque inicial del terminal (espero que nadie discuta que nada debe impedir que un indicador fractal se renderice correctamente en todo el historial aunque no haya ticks...)
Lo fue:
sustituido por:
Admito mi falta de atención y el consiguiente formalismo pernicioso.
Pero. Ayudó en el caso más sencillo (simplifiqué a propósito el indicador inicial). En un indicador más complejo estas operaciones no fueron útiles - en un momento dado los cambios no mostraron ninguna diferencia, especialmente ahora que hay muchas funciones de copia. Y me gustaría mucho recibir una instrucción sensata sobre cómo y dónde ir a continuación. Al fin y al cabo, se invierte mucho tiempo en algo que funciona desde el principio. Hasta ahora, ni siquiera sé si es culpa mía o del terminal. Y no estoy seguro de que sea sólo una falta de si yvuelve... Parece sospechoso aquí y allá, como por ejemplo...
Enviaré el código a los desarrolladores en mi personal si es necesario; al mismo tiempo puedo adjuntar un código similar, pero implementado de una manera diferente y que funciona sin problemas de inmediato (aunque, no se ajusta a las tareas y objetivos que estoy explorando).
Hay una fuerte sospecha de que el terminal se está metiendo con la caché (estoy casi fuera de onda, así que...). Peor - incluso MetaEditor afecta de alguna manera el manejo de lo que está pasando en el terminal en ese momento.
Más de una vez me he encontrado con un problema, cuando he modificado el código del programa MQL (que imprime los datos de depuración en el registro de la pestaña Expert Advisor), lo he vuelto a compilar, he ido a la ventana del Terminal y he visto que se repetían los resultados anteriores, aunque puedo decir con seguridad que no se trata de algún tipo de reelaboración retardada de la ejecución del programa anterior no completado. Así, parece que estoy compilando el código actualizado en MetaEditor con F7 y enviándolo a ejecutar, y mientras tanto se le ordena al terminal que reproduzca el código antiguo (desde la caché, o algo así como "amañar" las páginas de memoria por el SO). Curiosamente, es posible deshacer/descargar la versión anterior de .ex5-code "atascada en los dientes" no sólo descargando completamente el proceso de terminal.exe, sino en algunos casos raros - simplemente cerrando el MetaEditor. Entiéndelo como quieras, sólo he contado lo que he observado personalmente.
Recientemente, hubo una situación en la que el diseño:
El gráfico muestra sólo el valor del primer Print, pero era inútil esperar la salida de los elementos del array. Después de la eliminación de la primera impresión y la recompilación, la salida cíclica de los elementos de la matriz comenzó al instante. ¿Es una conspiración secreta de Prints contra la Comunidad MQL5 o soy el único que tiene tan mala suerte?Además, quiero señalar que estos extraños casos de comportamiento del terminal se observaron no en una instancia de MT5 sobrecargada con ventanas de gráficos, objetos gráficos y programas MQL, sino con una sola ventana de gráfico limpia (sin contar el contorno de un indicador en ejecución).
1. El código ArrayInitialize no funciona, si descomento el bucle, todo va bien.
Y cuando se declaran variables en la clase y el indicador en el nivel global con el mismo nombre - aparece la advertencia.
1. El PlotIndexSetDouble(z,EMPTY_VALUE) se utiliza para los buffers de los indicadores en el inite.
2. Aparece. Entonces hay que hacer algo al respecto, se recomienda marcar los miembros de la clase con el prefijo "m_".