Errores, fallos, preguntas - página 2101
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
Hola, he empezado a estudiar MQL5 desdehttps://www.mql5.com/ru/articles/100. He lanzado el código y me ha dado el error 4756. He mirado en la documentación y no ha mejorado. He pensado en empezar con algo sencillo (Alerta/Impresión...). Una de las funciones más importantes es OrderSend. Empecé a buscar en el foro/documentación sobre cómo utilizar OrderSend. Encontré este artículohttps://www.mql5.com/ru/docs/constants/tradingconstants/enum_trade_request_actions y encontré el código para abrir una posición de compra. Tengo el error 4756 y el retcódigo 10030. He entendido que 10030 - es la propiedad OrderSend, pero no he entendido cómo se debe utilizar esta propiedad (he mirado el código de otra persona) y para qué se utiliza principalmente. Entonces abríhttps://www.mql5.com/ru/docs/trading/ordersend, copié el código, lo ejecuté y funcionó bien.
Pero sigo sin entender por qué aparece el error 4756 y cómo deshacerse de él, así como del 10030.
Miré el código entre
y esta otra.
Me parecen casi idénticos, no veo dónde aparecen esos errores (4756 y 10030). Señala el dedo y explica por favor
Ejecución instantánea
Una orden de negociación para abrir una posición en el modo de ejecución instantánea (el modo de negociación a precios de streaming). 9 campos son obligatorios:
También puede especificar campos mágicos y de comentarios.
Ejecución del mercado
Una orden de apertura de una posición en el modo de ejecución de mercado. Requiere que se especifiquen 5 campos:
También puede especificar campos mágicos y de comentarios.
¿qué actualización ha llegado, 1736, qué contiene, dónde puedo leerla?
Propongo dar una oportunidad para determinar programáticamente qué búfer de indicador está dibujando en el gráfico.
Supongamos que un operador pone en marcha sus propios indicadores, no sabemos cuántos buffers se utilizan para el cálculo y cuántos se utilizan para dibujar el indicador en el gráfico.
Abordar los indicadores personalizados a través de
intChartIndicatorGet(
longchart_id,// identificador del gráfico
intsub_window// número de la subventana
const string nombre_del_indicador // nombre corto del indicador
);
También podemos solicitar el array de buffers de dibujo
intChartIndicatorGet(
longchart_id,// identificador del gráfico
intsub_window//número de ventana
const string nombre_del_indicador // nombre corto del indicador
int & IndicatorVisualBuffer[] // números del buffer de dibujo... );
Esto ampliará la posibilidad de trabajar con indicadores desconocidos instalados en el gráfico...
Propongo dar una oportunidad para determinar programáticamente qué búfer de indicador está dibujando en el gráfico.
Supongamos que un operador pone en marcha sus indicadores, no sabemos cuántos buffers se utilizan para calcular y cuántos se utilizan para dibujar el indicador en el gráfico.
Dirigirse al indicador a través de
intChartIndicatorGet(
longchart_id,// ID del gráfico
intsub_window// número de la subventana
const string nombre_del_indicador // nombre corto del indicador
);
También podemos solicitar la matriz de buffers de dibujo
intChartIndicatorGet(
longchart_id,// identificador del gráfico
intsub_window//número de ventana
const string nombre_del_indicador // nombre corto del indicador
int & IndicatorVisualBuffer[] // números del buffer de dibujo... );
Esto aumentará la posibilidad de trabajar con indicadores desconocidos instalados en el gráfico...
¿Qué devuelve?
¿y de qué servirá añadirlo? Quieres añadir un parámetro de entrada y recibir el mismo indicador en respuesta...
Y si no le importa, ¿para qué se necesita? No estoy siendo irónico. Al fin y al cabo, si se sugiere algo, debería, en mi opinión, dar un argumento convincente de la necesidad de lo sugerido.
¿Qué es lo que devuelve?
¿y de qué serviría añadirlo? Usted propone añadir un parámetro de entrada y obtener el mismo indicador en respuesta...
Y si no es difícil, ¿con qué fines apareció tal necesidad? La pregunta carece de ironía. Al fin y al cabo, si se ofrece algo, es necesario, en mi opinión, dar argumentos convincentes en necesidad de lo ofrecido.
El usuario pone cualquier indicador.
El Asesor Experto lo encuentra automáticamente y utiliza los datos del buffer para recibir la señal.
Ahora tenemos que utilizar iCustom y si podemos escribir la lista de parámetros, aquí está el problema con buffers....
Es posible contar la cantidad de buffers a través de Copy, pero para entender cuál es imposible ...
El usuario coloca cualquier indicador.
El Asesor Experto lo encuentra automáticamente y utiliza los datos del buffer para obtener la señal.
Ahora tenemos que utilizar iCustom y si podemos escribir la lista de parámetros, aquí está el problema con buffers....
Es posible contar la cantidad de búferes usando Copy programáticamente, pero es imposible entender cuál de ellos está dibujando ...
¿Por qué es imposible? ¿Se puede sacar el buffer INDICATOR_CALCULATIONS a través de iCustom()?
La pregunta es interesante, pero no está en este hilo para discutirla. Personalmente, tengo dudas de que pueda mejorar o simplificar de algún modo el trabajo del programador. Los indicadores son demasiado diferentes y las condiciones de su aplicación también. Entonces tendremos que pedir poder determinar el tipo de trazado gráfico y algunas otras cosas, y nuestras peticiones internas se convertirán en una bola de nieve.
¿Por qué no es posible? ¿Se puede acceder al buffer INDICATOR_CALCULATIONS a través de iCustom()?
La pregunta es interesante, pero no está en este hilo para discutirla. Personalmente tengo dudas de que pueda mejorar o facilitar de alguna manera el trabajo del programador. Hay demasiados indicadores diferentes y condiciones muy distintas para su aplicación. Entonces tendremos que pedir poder determinar el tipo de trazado gráfico y algunas otras cosas, y nuestras peticiones internas se convertirán en una bola de nieve.
Teóricamente, lo que está escrito en el indicador por defecto, no hablo del código del programador, debería estar disponible desde fuera ... Los búferes su número, el tipo de trazado, el color, y otros estándares ...
Este es el problema que he encontrado:
He decidido utilizar como magia el resto de la división de ChartID por 1000 o 10000, realmente no importa.
Pero por alguna razón con diferentes ChartID() el resto de la división es de repente la misma. Pregunta: ¿por qué?
Escritura de comprobación
Resultado
Esperaba ver 74907 y 74908 respectivamente, porque el resto de la división debería ser la misma.
También estoy esperando una respuesta a esta pregunta.
Foro sobre comercio, sistemas de comercio automatizados y pruebas de estrategias
Bichos, errores, preguntas
Alexey Viktorov, 2018.01.09 14:21
En el probador de MT5 el objeto "Campo de entrada" OBJ_EDIT no permite editar el valor en él. ¿Es así como está diseñado o es un error?
En los terminales y en el probador de MT4 es editable, pero en el probador de MT5 no quiere, el valor introducido en él programáticamente al crear el objeto desaparece por completo.
Pero por alguna razón diferentes ChartID() de repente produce el mismo residuo de la división. Pregunta: ¿por qué?
Porque el fmod de entrada es doble. Double no puede almacenar un gran número de enteros. Por ejemplo, este es su caso:
Haz esto.
Utilizando el ejemplo de float, se puede entender rápidamente la peculiaridad de double
Resultado
El doble SZY no pierde la información de todo el rango interior, no así con el largo.
Porque el fmod de entrada es doble. Double no puede almacenar un gran número de enteros. Por ejemplo, su caso:
Haz esto.
Por supuesto, voy a comprobar esta muestra ahora, pero también tenía un código de comprobación como este
el resultado es
Indica que no debe haber truncamiento de valores.
Pero aquí comprobé esta variante y cambié ligeramente la propuesta
y obtuve la variante esperada.
Aparece otra pregunta,
Si MathMod así como fmoddevuelve el resto real después de la división de dos números. Y % según la documentación
El resto de minutos = tiempo % 60;
¿por qué hay diferencia?