muzzletop: Por la tarde. Tengo un EA, funciona bien en el probador de estrategias (abre órdenes y todo). Pero cuando lo pongo en un gráfico, no pasa nada. El EA no funciona. También noté una cruz junto al nombre del EA en el gráfico. ¿Cómo solucionarlo?
Cuando pones el EA en el gráfico se abre una ventana con parámetros, hay diferentes pestañas - en la primera "General" tienes que poner un tick delante de "Permitir al EA operar".
Si el EA ya está en el gráfico y se muestra con una cruz - en la barra de herramientas, haga clic en el botón "EAs" (cubo amarillo en un sombrero con un círculo rojo y un cuadrado blanco dentro del círculo).
Buenas tardes. Ayúdame a tratar un problema extraño.
La cuestión es: estoy escribiendo un indicador multitiempo, es decir, un indicador que, estando abierto en cualquier momento, calculará y dará señales para todos los demás momentos también.
La base del indicador es el RSI.
En init() cuando se cambia el marco de tiempo, se pone un array separado en correspondencia de la línea del indicador. Para cada uno de ellos se muestra la línea, cuando se está en tal o cual momento, pero los cálculos para otros momentos no van (función iRSI es estúpidamente persiguiendo ceros en el cálculo). Es decir, se calcula la hora actual, pero no se calculan otras horas.
Lo que es interesante, si dejamos sólo un array para la línea indicadora y calculamos sólo W1 en cualquier momento, todo se calcula y dibuja correctamente en cualquier(!) momento. ¿Cuál es el truco? ¿Es imposible tomar diferentes matrices para la línea del indicador durante la inicialización, dependiendo del tiempo?
Buenas tardes. Ayúdame a tratar un problema extraño.
La cuestión es: estoy escribiendo un indicador multitiempo, es decir, un indicador que, estando abierto en cualquier momento, calculará y dará señales para todos los demás momentos también.
La base del indicador es el RSI.
En init() cuando se cambia el marco de tiempo, se pone un array separado en correspondencia de la línea del indicador. Para cada uno de ellos se muestra la línea, cuando se está en tal o cual momento, pero los cálculos para otros momentos no van (función iRSI es estúpidamente persiguiendo ceros en el cálculo). Es decir, se calcula la hora actual, pero no se calculan otras horas.
Pego el código:
Lo que es interesante, si dejamos sólo un array para la línea indicadora y calculamos sólo W1 en cualquier momento, todo se calcula y dibuja correctamente en cualquier(!) momento. ¿Cuál es el truco? ¿Es imposible tomar diferentes matrices para la línea del indicador durante la inicialización, dependiendo del tiempo?
Sólo se leen W1 y D1. ¿Qué quieres? Acaba con los demás.
borilunad: Sólo se leen W1 y D1. ¿Qué quieres? Acaba con los demás.
Esa no es la cuestión. He dado los cálculos sólo para D1 y W1, para que el código no sea demasiado largo. Nota: en cada tick de cada marco temporal se imprimen los valores calculados de W1. Así, si se abre cualquier hora excepto W1, se imprimen ceros. Si funciona para el W1, funcionará para los demás.
No se trata de eso. He dado los cálculos sólo para D1 y W1, para no hacer el código demasiado largo. Tenga en cuenta: en cada tic en cualquier marco temporal se imprimen los valores calculados de W1. Así, si se abre cualquier hora excepto W1, se imprimen ceros. Si funciona para W1, funcionará para todos los demás.
¡Correcto! Tenemos que abrir el gráfico semanal para mostrarlo en otros gráficos.
borilunad: ¡Correcto! Para que se vea en otros gráficos, hay que abrir también el gráfico semanal.
Para ser sincero, no he entendido esta afirmación. Y no es necesario mostrar nada más. Si ejecuta el código, verá que ya muestra lo que quiero: en D1 muestra el gráfico RSI D1 y en W1 - el gráfico RSI W1, pero al mismo tiempo, si D1 está abierto, entonces los RSI para W1 son todos cero, y si W1 está abierto, entonces los cálculos para D1 son cero. La pregunta es por qué ocurre esto y cómo solucionarlo.
El problema es que el array de índices se inicializa y redimensiona al tamaño adecuado. Así que cuando abro D1 - RSI_D1[] se convierte en un índice, y todo está bien con él, pero otros arrays permanecen en estado embrionario. Lo probé así: declaré todos los arrays de esta manera:
El problema es que el array de índices se inicializa y redimensiona al tamaño adecuado. Así que cuando abro D1 - RSI_D1[] se convierte en indexado, y todo está bien con él, pero otros arrays permanecen en estado embrionario. Lo intenté de esta manera: declaré todos los arrays de esta manera:
He cambiado el interruptor en init() así:
Sin embargo, en ArrayResize GetLastError da un error:
EURUSD,Diario: no se puede redimensionar la matriz
EURUSD,Daily: algún error de matriz
De todos modos, ¿quién puede decirme cómo resolver este problema?
Si el array es dinámico, asegúrate de que cuando escribas valores en él, aumentas el tamaño del array para acomodar los nuevos datos. ArrayResize()
artmedia70: Si la matriz es dinámica, asegúrese de aumentar el tamaño de la matriz para acomodar los nuevos datos al escribir valores en ella. ArrayResize()
Lo escribí arriba: Pero ArrayResize GetLastError da un error:
satorifx: Esto es lo que he escrito más arriba: Sin embargo en ArrayResize GetLastError da un error:
EURUSD,Diario: no se puede redimensionar la matriz
EURUSD,Diario: algún error de matriz
satorifx:
Para ser sincero, no entendí esa afirmación. Y no es necesario mostrar nada más. Si ejecuta mi código, verá que ya muestra todo lo necesario: el RSI D1 muestra el gráfico en D1 y el RSI W1 en W1, pero al mismo tiempo, si D1 está abierto, entonces el RSI para W1 son todos cero, y si W1 está abierto, entonces el RSI para D1 son todos cero. La pregunta es por qué ocurre esto y cómo solucionarlo.
¡Porque el buffer está solo y se muestra uno a uno en su llamada!
#property indicator_buffers1
¿De verdad crees que no tengo nada mejor que hacer que descargar tus "códigos" y probarlos? Te estoy ayudando con consejos. Y si algo va mal, ¡está todo ahí arriba para ti! ¡¿O es que la pereza nació antes que tú?!
Por la tarde. Tengo un EA, funciona bien en el probador de estrategias (abre órdenes y todo). Pero cuando lo pongo en un gráfico, no pasa nada. El EA no funciona. También noté una cruz junto al nombre del EA en el gráfico. ¿Cómo solucionarlo?
Cuando pones el EA en el gráfico se abre una ventana con parámetros, hay diferentes pestañas - en la primera "General" tienes que poner un tick delante de "Permitir al EA operar".
Si el EA ya está en el gráfico y se muestra con una cruz - en la barra de herramientas, haga clic en el botón "EAs" (cubo amarillo en un sombrero con un círculo rojo y un cuadrado blanco dentro del círculo).
Buenas tardes. Ayúdame a tratar un problema extraño.
La cuestión es: estoy escribiendo un indicador multitiempo, es decir, un indicador que, estando abierto en cualquier momento, calculará y dará señales para todos los demás momentos también.
La base del indicador es el RSI.
En init() cuando se cambia el marco de tiempo, se pone un array separado en correspondencia de la línea del indicador. Para cada uno de ellos se muestra la línea, cuando se está en tal o cual momento, pero los cálculos para otros momentos no van (función iRSI es estúpidamente persiguiendo ceros en el cálculo). Es decir, se calcula la hora actual, pero no se calculan otras horas.
Pego el código:
Lo que es interesante, si dejamos sólo un array para la línea indicadora y calculamos sólo W1 en cualquier momento, todo se calcula y dibuja correctamente en cualquier(!) momento.
¿Cuál es el truco? ¿Es imposible tomar diferentes matrices para la línea del indicador durante la inicialización, dependiendo del tiempo?
Buenas tardes. Ayúdame a tratar un problema extraño.
La cuestión es: estoy escribiendo un indicador multitiempo, es decir, un indicador que, estando abierto en cualquier momento, calculará y dará señales para todos los demás momentos también.
La base del indicador es el RSI.
En init() cuando se cambia el marco de tiempo, se pone un array separado en correspondencia de la línea del indicador. Para cada uno de ellos se muestra la línea, cuando se está en tal o cual momento, pero los cálculos para otros momentos no van (función iRSI es estúpidamente persiguiendo ceros en el cálculo). Es decir, se calcula la hora actual, pero no se calculan otras horas.
Pego el código:
Lo que es interesante, si dejamos sólo un array para la línea indicadora y calculamos sólo W1 en cualquier momento, todo se calcula y dibuja correctamente en cualquier(!) momento.
¿Cuál es el truco? ¿Es imposible tomar diferentes matrices para la línea del indicador durante la inicialización, dependiendo del tiempo?
Sólo se leen W1 y D1. ¿Qué quieres? Acaba con los demás.
Esa no es la cuestión. He dado los cálculos sólo para D1 y W1, para que el código no sea demasiado largo. Nota: en cada tick de cada marco temporal se imprimen los valores calculados de W1. Así, si se abre cualquier hora excepto W1, se imprimen ceros. Si funciona para el W1, funcionará para los demás.
No se trata de eso. He dado los cálculos sólo para D1 y W1, para no hacer el código demasiado largo. Tenga en cuenta: en cada tic en cualquier marco temporal se imprimen los valores calculados de W1. Así, si se abre cualquier hora excepto W1, se imprimen ceros. Si funciona para W1, funcionará para todos los demás.
¡Correcto! Para que se vea en otros gráficos, hay que abrir también el gráfico semanal.
Para ser sincero, no he entendido esta afirmación.
Y no es necesario mostrar nada más. Si ejecuta el código, verá que ya muestra lo que quiero: en D1 muestra el gráfico RSI D1 y en W1 - el gráfico RSI W1, pero al mismo tiempo, si D1 está abierto, entonces los RSI para W1 son todos cero, y si W1 está abierto, entonces los cálculos para D1 son cero. La pregunta es por qué ocurre esto y cómo solucionarlo.
El problema es que el array de índices se inicializa y redimensiona al tamaño adecuado.
He cambiado el interruptor en init() así:Así que cuando abro D1 - RSI_D1[] se convierte en un índice, y todo está bien con él, pero otros arrays permanecen en estado embrionario.
Lo probé así: declaré todos los arrays de esta manera:
Sin embargo, en ArrayResize GetLastError da un error:
EURUSD,Diario: no se puede redimensionar la matriz
EURUSD,Daily: algún error de matriz
De todos modos, ¿quién puede decirme cómo resolver este problema?
El problema es que el array de índices se inicializa y redimensiona al tamaño adecuado.
He cambiado el interruptor en init() así:Así que cuando abro D1 - RSI_D1[] se convierte en indexado, y todo está bien con él, pero otros arrays permanecen en estado embrionario.
Lo intenté de esta manera: declaré todos los arrays de esta manera:
Sin embargo, en ArrayResize GetLastError da un error:
EURUSD,Diario: no se puede redimensionar la matriz
EURUSD,Daily: algún error de matriz
De todos modos, ¿quién puede decirme cómo resolver este problema?
Si la matriz es dinámica, asegúrese de aumentar el tamaño de la matriz para acomodar los nuevos datos al escribir valores en ella. ArrayResize()
Pero ArrayResize GetLastError da un error:
EURUSD,Daily: no se puede redimensionar el array
EURUSD,Daily: algún error de array
Esto es lo que he escrito más arriba:
Sin embargo en ArrayResize GetLastError da un error:
EURUSD,Diario: no se puede redimensionar la matriz
EURUSD,Diario: algún error de matriz
Para ser sincero, no entendí esa afirmación.
Y no es necesario mostrar nada más. Si ejecuta mi código, verá que ya muestra todo lo necesario: el RSI D1 muestra el gráfico en D1 y el RSI W1 en W1, pero al mismo tiempo, si D1 está abierto, entonces el RSI para W1 son todos cero, y si W1 está abierto, entonces el RSI para D1 son todos cero. La pregunta es por qué ocurre esto y cómo solucionarlo.
¡Porque el buffer está solo y se muestra uno a uno en su llamada!