Pequeño indicador de gestión del dinero arruinado por el nuevo MQL4 - página 3

 
mar:

angevoyageur, creo que no has visto este post mío:

mar 2014.04.02 08:16 #

Tienes razón... No puedo evitarlo :-)

"Lo que quería decir es que si puedo esperar a que se complete la actualización para seguir con el cálculo del SL. El problema es que no puedo darle a SL un valor aleatorio porque entonces todo el indicador es inútil. Así que me gustaría comprobar el error 4066 y si se produce, me gustaría esperar de alguna manera y comprobar de nuevo antes de continuar."

Ahí puedes ver que describió que no puedo seguir el consejo y porque llegué a esa solución también puedes ver que definitivamente comprobé lo que me aconsejó qjol.

No es así, qjol escribió :

así que tienes que comprobar si una de las variables es igual a 0.... en caso de evitar la división por cero

Y reportas un error de división por cero después de eso. Pero es como tu quieres.

 
mar:

Otro ejemplo:

Si abre el MetaTrader, el resultado será cero. Y se queda en cero hasta que cambies el marco temporal o el par. Creo que este es exactamente el problema del error de división por cero. ¿No crees tú también?

¿Probó esto durante el fin de semana, cuando no había ticks entrantes? Esa es la única razón que se me ocurre para que el comentario no se actualice.
 
GumRai:

¿Intentaste esto durante el fin de semana, cuando no había ticks entrantes? Esa es la única razón que se me ocurre para que el comentario no se actualice.

Lo mismo ocurre aquí. Si no hay garrapatas no se actualiza.
 

No, lo he probado hoy. Entraron muchos ticks, pero no se actualizó el AccountBalance. Esperé casi un minuto pero AccountBalance seguía en cero.


La cosa es que este problema nunca ocurrió en los últimos años. Desde que el nuevo MetaTrader se puso en marcha este problema existe. Así que no creo que tenga nada que ver con el código. Debe haber cambios internos dentro de la propia Plataforma que hace que este código falle. Y este indicador es sólo una línea de comentario y falla. Así que debe ser un problema de Plataforma/Datos.

 
mar:

No, lo he probado hoy. Entraron muchos ticks, pero no se actualizó el AccountBalance. Esperé casi un minuto pero AccountBalance seguía en cero.


La cosa es que este problema nunca ocurrió en los últimos años. Desde que el nuevo MetaTrader se puso en marcha este problema existe. Así que no creo que tenga nada que ver con el código. Debe haber cambios internos dentro de la propia Plataforma que hace que este código falle. Y este indicador es sólo una línea de comentario y falla. Así que debe ser un problema de Plataforma/Datos.


¿Estás seguro de que el indicador es exactamente el mismo que el código que has publicado?

Parece que estás comprobando un indicador que tiene el código de una línea en init y no en start

 

ya he respondido a todas tus preguntas (incluida la futura pregunta sobre este tema) pero quizás no las has leído con atención, entonces déjame hacerlo de nuevo


qjol:

obviamente no puedes evitar la actualización ;-) pero tienes que evitar una situación de "zero divide"

así que tienes que comprobar si una de las variables es igual a 0.... en caso de evitar la división por cero

y como no puedes parar un indicador tienes que averiguar algo


mar:


¿puedo esperar a que la actualización termine antes de seguir con el cálculo del SL?

no, no puedes (ya está escrito arriba)

qjol:
y como no se puede parar un indicador hay que averiguar algo


mar:


El problema es que no puedo dar a SL un valor aleatorio porque entonces todo el indicador es inútil.


Ya te he dado una solución

SL = MathFloor((iATR(NULL, PERIOD_D1, 7, 0)*MathPow(10,Digits-exp)+1)*0.1);
if (SL == 0) // because error 4066 (for example)
   {
   SL = Someting;
   }
lots=MoneyRisk/SL/(MarketInfo(Symbol(), MODE_TICKVALUE)*multi);


es aleatorio sólo hasta que la actualización ha terminado (no más de 2-3 segundos más o menos) (IMHO es mejor que conseguir un mensaje de error y que el indicador no funcionará en absoluto)

si tienes otra solución siéntete libre de usarla, no necesitas mi permiso ;-)


mar:


Cambia al marco temporal que quieras, excepto D1. Luego arrastra el indicador a tu gráfico. El resultado será un error como el de arriba. Me parece que el ATR(5) del gráfico diario no es correcto porque faltan DATOS DIARIOS. Abrir un gráfico "fresco" en el marco temporal D1 no causa ningún problema. Y cuando se cambia a otro marco temporal también está bien porque el ATR(5) es correcto. Me he dado cuenta de que puedo cambiar a cualquier par siempre que me quede en el gráfico D1. Pero el cambio a otros pares en otros marcos de tiempo que D1 causa problemas, siempre y cuando MetaTrader no ha recibido los datos diarios. Así, mi pregunta es ahora, ¿cómo puedo obtener los datos diarios que mi ATR-cálculo es correcto cuando abro un nuevo gráfico en un marco de tiempo que no es D1?


porque usas iATR .. PERIOD_D1 y de nuevo ... tienes que esperar a que el par diario termine la actualización (2-3 seg. a menos que uses una conexión dial up)

 

qjol, ¡siento tantos malentendidos! Ahora entiendo que me dijiste que alimentara el indicador con algunos datos aleatorios sólo porque así desaparece la división por cero. Tampoco pensé en el hecho de que después de una actualización de datos el indicador utiliza el valor correcto. Lo siento por ser estúpido... :D

Pero sin embargo la pregunta sigue abierta: ¿por qué demonios funcionaba antes? ¿Qué pasa con el nuevo MetaTrader?

 
mar:


Pero sin embargo la pregunta sigue abierta: ¿por qué demonios funcionaba antes? ¿Qué pasa con el nuevo MetaTrader?


no se relaciona con el viejo o nuevo MT4 se relaciona con la forma en que los indicadores de trabajo y ejecutado
ya que los indicadores "no pueden esperar" y se han ejecutado inmediatamente
pero, en este momento no tiene datos para iATR ... PERIOD_D1 así que. es igual a 0
es por eso que usted consigue cero dividir
 
Eso está absolutamente claro para mí. Pero yo uso este indicador por un tiempo bastante largo y nunca tuve problemas con los datos que faltan o cosas por el estilo. Así que me pregunto por qué esto sucedió la primera vez que uso la versión build-625 de MT4.
 
mar:

No, lo he probado hoy. Entraron muchos ticks, pero no se actualizó el AccountBalance. Esperé casi un minuto pero AccountBalance seguía en cero.


La cosa es que este problema nunca ocurrió en los últimos años. Desde que el nuevo MetaTrader se puso en marcha este problema existe. Así que no creo que tenga nada que ver con el código. Debe haber cambios internos dentro de la propia Plataforma que hace que este código falle. Y este indicador es sólo una línea de comentario y falla. Así que debe ser un problema de Plataforma/Datos.

¿Estás seguro de que el indicador es exactamente el mismo que el código que has publicado?

Parece que estás comprobando un indicador que tiene el código de una línea en init y no en start