Errores, fallos, preguntas - página 1380
![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
La aplicación se ha creado, pero nadie la ha mirado en más de tres días.
¿Cuál es el número de solicitud?
El eterno tema de los doblajes =)
Pido a los desarrolladores que añadan dos características estándar.
Sugiero la siguiente especificación:
====
Rp
La función devuelve el valor que debe alinearse con el paso de precio del instrumento.
doble Rp(
stringsymbol_name, // nombre del símbolo
doblevalor// precio a alinear
);
Parámetros
nombre_símbolo
[en] Símbolo.
valor
[en] Número positivo.
Valor devuelto
Número más cercano redondeado al paso de precio del instrumento de negociación.
...
Ejemplo:
Valores de entrada:
nombre_símbolo = ES-...
valor = 2000.55
producción = 2000,50
(paso de precio por instrumento ES = 0,25)Valores de entrada:
nombre_símbolo = SPX
valor = 2000.55
producción = 2000,63
(en el SPX el paso de precio también es 0,25, como en el ES, pero hay un desplazamiento de base y la cotización sólo puede tener las siguientes partes fraccionarias -- 13,38,63,88)
Valores de entrada:
nombre_símbolo = RTS
valor = 82055,55
salida = 82060
(paso de precio por instrumento RTS = 10)
...y así sucesivamente.
La segunda función, que me interesa aún más:
====
Rv
La función devuelve un valor que estará alineado con el paso de volumen del instrumento y estará en el rango de SYMBOL_VOLUME_MIN a SYMBOL_VOLUME_MAX.
doble Rv(
stringsymbol_name, // nombre del símbolo
doblevalor// lote a alinear
);
Parámetros
nombre_símbolo
[en] Símbolo.
valor
[en] Número positivo.
Valor devuelto
Número más cercano redondeado al paso de volumen delinstrumento de negociación. El número no será mayor que SYMBOL_VOLUME_MAXni menor que SYMBOL_VOLUME_MIN.
...
======
La principal propiedad que espero de estas funciones es que sean válidas para TODOS LOS INSTRUMENTOS DE COMERCIO DEL MUNDO y PARA CUALQUIER INTRODUCCIÓN.
Si alguien tiene una solución lista, por favor, compártala mientras los desarrolladores lo hagan.
Es extraño que todavía no haya tal =/
Resolviendo el problema a partir de tu comentario hice una función más tonta y torpe, pero incluso falla para muchos valores de entrada.
Código de función:
La cuestión es que, estúpidamente, he trasladado toda la molestia de determinar la parte significativa del número fraccionario al método que inserta el compilador en lugar del operador =(cadena).
Pero resulta que de esta manera el código formatea la cadena casi como el tipo g de printf(), es decir, para fracciones largas la cadena se imprime en un formato científico.
¿Cómo puedo obtener la salida a una cadena para cualquier n sin formato exponencial y sin dígitos extra a la derecha, y sin molestias =)?
Y otra pregunta: ¿es siempre una fracción decimal separada por un punto o por defecto desde la configuración del sistema puede ser una coma u otra cosa?
Resolviendo el problema a partir de tu comentario hice una función más tonta y torpe, pero incluso falla para muchos valores de entrada.
Código de función:
La cuestión es que, estúpidamente, he trasladado toda la molestia de determinar la parte significativa del número fraccionario al método que inserta el compilador en lugar del operador =(cadena).
Pero resulta que de esta manera el código formatea la cadena casi como el tipo g de printf(), es decir, para fracciones largas la cadena se imprime en un formato científico.
¿Cómo puedo obtener la salida a una cadena para cualquier n sin formato exponencial y sin dígitos extra a la derecha, y sin molestias =)?
Y otra pregunta: ¿es siempre una fracción decimal separada por un punto o por defecto desde la configuración del sistema puede ser una coma u otra cosa?
¿Y qué es lo que no te gusta de Point(), Digits?
Al menos tiene DigitsLot(), que devolverá la precisión del paso de volumen.
Tal vez no entendí tu indirecta. ¿Hay alguna forma sensata de obtener lo que se busca mediante Point() o Digits()?
Aún así, realmente se necesitan esas dos funciones que describí anteriormente (ecualizadores válidos para el precio y para el lote).
Entiendo que en las cocinas de forex el volumen se acepta la mayoría de las veces en incrementos de 0,01, y a nadie le importa lo que vaya a pasar mañana, pero el terminal se está desarrollando.
Cada vez hay más herramientas. Todos los dispositivos caseros que no permiten el incremento del lote completo ya no funcionan. ¿Quién dice que no habrá el lote mínimo, digamos, un cuarto? No hay muchas variantes.
Esta solución debe ser absoluta (para todos los valores) o no se puede confiar en ella.
Y sobre la cita. Cuando envías una solicitud, el servidor acepta precios que no son pares, aunque sólo sea para normalizarlos (cortarlos en caracteres), pero hay otras tareas.
Está de acuerdo en que deberíamos poder obtener una cotización real posible para cualquier símbolo, pero no una recortada.
Resolviendo el problema a partir de tu comentario hice una función más tonta y torpe, pero incluso falla para muchos valores de entrada.
Código de función:
...No creas que soy tan tonto, que me obstino en hacer una cadena de un número por un problema puramente matemático.
Al principio traté de hacerlo a través del logaritmo, pero resultó glitchy al punto de no retorno =(
Me corrijo. Este parece funcionar:
No creas que soy tan estúpido como para hacer una cadena con un número para un problema puramente matemático.
Al principio, honestamente, traté de hacerlo a través de logaritmo, pero resultó glitchy como el infierno =(
Por si acaso, ¿por qué no te gusta NormalizarDoble()_Punto _Dígitos ?????????
¿Por qué haces una bicicleta?
Por si acaso, ¿qué pasa con NormalizeDouble() _Point _Digits ?????????
¿Por qué creas una bicicleta?
Responderé a esto una vez más por si acaso. Por favor, explíqueme cómo averiguar la precisión de SYMBOL_VOLUME_STEP utilizando "NormalizeDouble() _Point _Digits".
¿O cómo obtener un valor múltiplo de SYMBOL_VOLUME_STEP a partir de cualquier número positivo?
Cómo obtener el siguiente resultado:
2000,55 (símbolo ES) -----> 2000,50
2000,55 (símbolo SPX) -----> 2000,63
1055.5555 (símbolo RTS) ------> 1060
para cualquier símbolo del mundo que esté disponible en el terminal MT5 hoy (y preferiblemente mañana)
"????????"
Los desarrolladores sólo pueden añadir 2 funciones y modificarlas a medida que se desarrolla el terminal, y no conozco todas las peculiaridades de los diferentes instrumentos de negociación. ¿Dónde puedo encontrar las cotizaciones que existen? Y necesito una cita, no el resultado de NormalizeDouble().
Si esta moto ya está por ahí - picar en una aplicación específica, lo agradecería. Lo que me encontré ya no funciona en algunos símbolos en este momento.
...
2000,55 (símbolo ES) -----> 2000,50
2000,55 (símbolo SPX) -----> 2000,63
1055.5555 (símbolo RTS) ------> 1060
...