![MQL5 - Lenguaje de estrategias comerciales para el terminal de cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Resultado:
O bien estoy haciendo algo mal (por favor, corrige), o MetaDriver cometió un error en la teoría (al diseñar el algoritmo).
:)
Bueno, teniendo en cuenta que el "diseño" del algoritmo me llevó unos 3 minutos (y 7 minutos de implementación), lo hice bastante bien :) El objetivo era mostrar la idea de trabajo y aclarar el planteamiento del problema.
Y todo esto resultó ser útil - los desarrolladores tuvieron una oportunidad real de mejorar la función MathFloor() - obviamente no está implementada de forma totalmente limpia.
Al final tuvieron que retocarlo. Fue divertido. He conseguido una función estable (me refiero a CountSignedDigits(double x)) sólo después de casi una hora de experimentos.
Y aún ahora no estoy seguro de que funcione correctamente con todos los valores de entrada. No he desarrollado una prueba de estrés automatizada, he hecho una manual. Por favor, pruébala.
Espero un funcionamiento estable hasta 10 decimales después de la coma flotante.
Prueba de estrés adjunta. // No he eliminado algunas realizaciones intermedias del código. Lo he dejado en los comentarios para que lo pruebes/pienses. Incluyendo a los desarrolladores.1. no es necesario definir la excavación para un lote, sólo hay que normalizarla al paso correcto:
2. incluso si hay alguna basura en la variable de lote al enviar una solicitud de operación (en el lugar decimal), debería ser descartada por el propio terminal.
Al menos, yo no he tenido ningún problema durante varios años de uso de dicha construcción.
4. Si quieres asegurar, puedes normalizarlo a 8 decimales (con un margen) - si hay basura después de la normalización "correcta", estará mucho más lejos.
La primera idea es correcta, las otras son sospechosas. :)
La aplicación es viable para la práctica, pero para las condiciones artificiales definidas por el "problema-inicio" (c) es inexacta. Para los pasos discretos genera no relativo a lot_min, sino relativo a cero. :)
Sin embargo, se puede arreglar fácilmente si lo notas.
// Por favor, no te tomes todas estas perlas demasiado en serio. Las aclaraciones son puramente teóricas, para el entrenamiento del cerebro, porque en la práctica nunca he visto lot_step igual a, por ejemplo, 0,0231....
;)
es correcta. Se ha contabilizado correctamente por lot_min como en mi NL().
Mi variante también está disponible. Tenga en cuenta que para algunos instrumentos el paso de cambio de precio es mayor que el punto.
Si tomamos como axioma que los pasos "van" no desde cero, sino desde el lote mínimo, el algoritmo correcto es el siguiente:
En la versión Composter, los pasos "van" desde cero. Lo cual no me parece correcto.
En la variante MetaDriver, el código omite un valor negativo. =Р
...
En la variante MetaDriver, el código omite un valor negativo. =Р
:)) ..... ¡Ah, sí! ¡No trabajarás en absoluto! ;-R ;-b ;-R
En todo caso, la variante más corta y al mismo tiempo "más o menos precisa" es ésta:
Y eso sin comprobar la nulidad y negatividad de lot_step, lot_min y lot_max!!......
:))))
Uh... que tocó un nervio. :)) La última línea fue corregida a mano en un mensaje del foro, así que perdóname. =)
Por cierto, tu código tampoco compiló (olvidé poner un paréntesis de cierre en la última línea). :-Р
Además es 2-3 veces más lento (ahora lo he comprobado en el script), pero la calidad de la comprobación es la misma. :-Р
De todos modos, mientras no haya un código adecuado para determinar el número entero significativo, seguiré el consejo de Composter: normalizar el volumen a 8 decimales.
Esperemos que no haya trampas.
Gracias a todos por su ayuda.
veo que sois graciosos.
en tu primer post diste a NL() lo que sólo llegaste a dos páginas después ;)
Hay otra pregunta para los gurús. Cuando pruebo la multidivisa, me salen errores (se adjunta captura de pantalla).
Intento hacer una operación comercial, pero recibo una respuesta: No hay precio. Según el probador se puede ver que las cotizaciones para este par comienzan a llegar en 2011.01.0301:00:00, mientras que el EURUSD también se cotiza desde 2011.01.0300:00:00 ¿Hay alguna forma de averiguar la hora de inicio de las cotizaciones para evitar este error?
Hay otra pregunta para los gurús. Cuando pruebo la multidivisa, me salen errores (se adjunta captura de pantalla).
Intento hacer una operación comercial, pero recibo una respuesta: No hay precio. Según el probador se puede ver que las cotizaciones para este par comienzan a llegar en 2011.01.0301:00:00, mientras que el EURUSD también se cotiza desde 2011.01.0300:00:00¿Hay alguna forma de averiguar la hora de inicio de las cotizaciones para evitar este error?