[ARCHIVO]Cualquier pregunta de novato, para no saturar el foro. Profesionales, no lo dejéis pasar. No puedo ir a ningún sitio sin ti - 5. - página 405

 
hoz:
1. ¿Por qué iba a ocurrir de repente? Sólo tenemos que añadir otra cosa, que la función devuelve algún valor más, lo que significaría, "Sin precio". Parece lógico. Cuando estaba lanzando la función, estaba pensando más en la lógica previa, entonces no me fijé en su final. Y por qué la función 0 devolverá 0 por sí misma no entiendo algo...

2. ¿Para qué necesito Ask (si hablamos específicamente del precio de compra), si siempre puedo utilizar MarketInfo(fs_symbol, MODE_ASK)? Al fin y al cabo, si lo miras así, remitiéndote a Ask, no puedes estar seguro de que sea preciso en un momento dado...

1. Simple. La función se declara como doble, por lo que cuando se llama, devolverá doble independientemente de si llama a return o no. Si añadimos algo más... pero aún no tenemos esto más.

2. Si te da igual pulsar 3 teclas o 30, no necesitas estos Bid y Ask. Si el Asesor Experto no hace cálculos largos, no pasa nada, es conveniente utilizar el Bid y el Ask. Si realiza cálculos largos, puede utilizar RefreshRates(). Hay varias formas de hacerlo.

 
hoz:


A mi entender, esto no es lo que necesitamos. Y necesitamos los últimos precios del servidor Ask y Bid, no los del terminal local. ¿Verdad?

Por eso inicié la discusión aquí, para entender de una vez por todas cómo organizarlo de forma más lógica y correcta. Pues en teoría esto es correcto, pero en la práctica...

El servidor está en algún lugar, y se nos da un terminal para contactar con el servidor. Si hay conexión, el último precio en el terminal corresponderá al último precio en el servidor. Si no hay conexión, entonces no importa en absoluto los precios.

 
Después de ejecutar la primera o segunda sentencia if, necesito interrumpir las siguientes sentencias if y transferir el control a un bloque con otros criterios de negociación. Los bucles tienen una interrupción con la sentencia continue, pero necesito interrumpir la ejecución de una serie de sentencias. ¿Cómo lo hago? ¿Puedes darme una pista?
 
¿Has intentado un descanso; has intentado un descanso?
 
Buenas tardes. Actualmente estoy trabajando en un diploma sobre robots de trading. No necesito reinventar nada muy grandioso, porque soy economista, no programador. Pero se me ocurrió una idea, aunque creo que se le ha ocurrido a mucha gente, conectar el sar parabólico y (ya que el sar no es muy bueno en plano) las bandas de bollinger. Básicamente con la configuración estándar, y comprar, cuando la vela toca la parte inferior de la BB (y el parabólico se mueve por debajo), y la siguiente cierra por encima de la anterior (y el parabólico se mueve más lejos del precio por la aceleración y muestra la tendencia). Lo mismo en la parte superior al vender. Sería interesante utilizar el trailing stop, cuyos ajustes podrían establecerse manualmente... ¿alguien tiene una idea similar ya en mql? o si alguien puede ayudar, porque me gustaría realmente probarlo... gracias de antemano
 
Integer:

1. Simple. La función está declarada como doble, por lo que devolverá doble cuando sea llamada, independientemente de que se haya llamado a return en ella. Si se añade algo más... ...pero que aún no está ahí.

2. Si te da igual pulsar 3 teclas o 30, no necesitas estos Bid y Ask. Si el Asesor Experto no hace cálculos largos, no pasa nada, es conveniente utilizar el Bid y el Ask. Si realiza cálculos largos, puede utilizar RefreshRates(). Todo puede hacerse de varias maneras.

1. Sí, es que estoy saturado de trabajo, así que habré escrito una tontería...

2. Largo es un término relativo. ¿Sugiere que midamos la velocidad del cálculo medio?

Entero:

El servidor está ahí fuera, en algún lugar, y se nos da un terminal para contactar con el servidor. Si hay conexión, el último precio en el terminal corresponderá al último precio en el servidor. Si no hay conexión, no importa el precio que haya en el servidor.

Si asumimos, como has escrito, que el último valor de los datos variables del mercado (en nuestro caso, el precio ) corresponde al último valor del servidor, entonces significa que el terminal actualiza las variables del entorno del mercado si tiene conexión con el servidor. Pero no es así, porque esta función existe y significa que los precios no se actualizan todo el tiempo, ¿verdad?

No estoy discutiendo, estoy preguntando, argumentando mi punto de vista. Tenga en cuenta que...

 
hoz:

Si asumimos, como has escrito, que el terminal tiene el último valor de la variable de datos de mercado, en nuestro caso el precio, correspondiente al último valor del servidor, entonces significa que el terminal actualiza las variables de entorno de mercado por sí mismo si hay una conexión con el servidor, lo que significa que la función RefreshRates() no es necesaria. Pero no es así, porque esta función existe y significa que los precios no se actualizan todo el tiempo, ¿verdad?

No estoy discutiendo, estoy preguntando, argumentando mi punto de vista. Tenga en cuenta que...


Si llegan nuevos ticks durante los cálculos en el EA (cuando se ejecuta la función start()), el EA no los conocerá (ticks). RefreshRates() permite utilizar los últimos precios actualizados, pero esta función no accede al servidor. Actualiza el entorno de mercado que conoce el terminal. Ninguna de las funciones, excepto la de comercio, accede al servidor
 
Vinin:

Si llegan nuevos ticks durante los cálculos en el EA (cuando se ejecuta la función start()), el EA no los conocerá (ticks). RefreshRates() permite utilizar los últimos precios actualizados, pero esta función no accede al servidor. Actualiza el entorno de mercado que conoce el terminal. Ninguna de las funciones, excepto las de comercio, accede al servidor.

Por lo tanto, si la solicitud es local y no al servidor, esta función debería funcionar al instante. Como ya se ha dicho, la función RefreshRates() puede no tener tiempo de actualizar los datos del entorno del mercado...
 
hoz:

Por lo tanto, si la solicitud es local y no al servidor, esta función debería funcionar al instante. Y arriba se dijo que la función RefreshRates() puede no tener tiempo para refrescar los datos del entorno del mercado...

Sí funciona. Y lo refresca si hay algo que refrescar. Pero si no hay ninguna garrapata nueva, no hay nada que actualizar.
 
Vinin:

Y se solucionará. Y lo refresca si hay algo que refrescar. Pero si no hay una nueva garrapata, no hay nada que actualizar.


Así que si no hay un nuevo tick, el precio no cambiará... y por supuesto los precios anteriores seguirán siendo válidos. Así que no hay necesidad de complicar las cosas.

Y Vadim escribió en la parte superior que era necesario comprobar este punto. Pero no había lógica en sus palabras, ni tampoco argumentación. Es extraño... Entonces, inserto RefreshRates() en todas partes y en ese momento los últimos datos conocidos del terminal pasan a ser utilizables en lugar de los anteriores y todo va como debería. Siempre queRefreshRates() devuelva TRU. Si es Falso, significa que los datos no han cambiado y funciona con los precios anteriores... ¿Estoy razonando correctamente?

Así que no hace falta que me moleste. Basta con llamar aRefreshRates() y funcionará con datos reales...