Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 1179
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
Cuando hago una consulta como esta:
Obtengo este resultado:
2020.06.17 13:49:53.270 2020.01.02 06:50:00 Símbolo EURUSD_i Dígitos 5 Punto 1e-05
Cuando hago una petición como esta:
Obtengo este resultado:
2020.06.17 13:51:58.787 2020.01.02 06:45:00 Símbolo EURUSD_i Dígitos 0 Punto 0.0
Al mismo tiempo quiero hacer notar que si no inserto la función Print, no me da ningún error, la orden ni siquiera intenta modificarse. Es como si CTrade no viera mi orden.
La comprobación del símbolo y del número mágico no funciona:
Resultado:
2020.06.17 14:37:38.147 2020.01.02 06:50:00 Symbol Magic 0 Ticket 2
El número mágico debe ser 12345, el símbolo es el euro-dólar.
¿Por qué no puedo obtener el símbolo y el medgic?
Si cambias la cadena:
se cambia a
y eliminar la validación por número mágico, entonces tenemos problemas con los precios
2020.06.17 01:38:24.136 2020.01.02 07:40:00 fallida modificar orden #2 comprar stop 0.1 EURUSD_i a 1.12086 sl: 1.12023 tp: 1.12275 -> 1.00000, sl: 1.00000 tp: 1.00000 [Precio inválido].
2020.06.17 01:38:24.136 2020.01.02 07:40:00 CTrade::OrderSend: modificar #2 a 1.00000 (sl: 1.00000 tp: 1.00000) [precio no válido]
2020.06.17 01:38:24.136 2020.01.02 07:40:00 ¡BUY STOP modificación fallida! Resultado Retcode: 10015, descripción del Retcode: precio no válido
Ya me he devanado los sesos, mientras este mismo código funciona bien en otro Asesor Experto.
¿Qué estoy haciendo mal?
Objeto incorrectamente inicializado (o no) de la clase CSymbolInfo.
Si no tienes esta cadena asymbol.Name(Symbol()) entonces añádela.
Si tienes uno, depura en la función Name(string symbol) lo que ocurre.
Rellenar los campos m_digits etc con Refresh().
s.s. A juzgar por lo que has añadido, definitivamente tienes asymbol sin inicializar.
Hasta que no llega la nueva garrapata, no se mueven los botones. Eso es lo que puedo ver con mis ojos. En cuanto el precio cambia, los botones se mueven.
Aunque hoy, incluso en el nuevo tick, los botones han dejado de redibujarse, aunque no he cambiado nada. Sólo se mueve el fondo.Para aclarar - como usted dice que cambiar las coordenadas en OnTick, y afirmar que, de hecho, los botones se mueven en el siguiente tick. ¿La siguiente garrapata de qué? ¿La que cambió las coordenadas o la de navidad?
Su objeto de clase CSymbolInfo se inicializa incorrectamente (o no se inicializa).
Si no tiene dicha cadena asymbol.Name(Symbol()) entonces añádala.
Si tienes uno, depura en la función Name(string symbol) lo que ocurre.
Rellenar los campos m_digits etc con Refresh().
s.s. A juzgar por lo que has añadido, tu asymbol está definitivamente sin inicializar.
¿Es una inicialización? Al compilar obtengo la siguiente información
'Trade.mq5 panel' Trade.mq5 panel 1 1
'Trade.mqh' Trade.mqh 1 1
'Object.mqh' Object.mqh 1 1
'StdLibErr.mqh' StdLibErr.mqh 1 1
'OrderInfo.mqh' OrderInfo.mqh 1 1
'HistoryOrderInfo.mqh' HistoryOrderInfo.mqh 1 1
'PositionInfo.mqh' PositionInfo.mqh 1 1
'DealInfo.mqh' DealInfo.mqh 1 1
'SymbolInfo.mqh' SymbolInfo.mqh 1 1
código generado 1 1
0 errores, 0 avisos, 3192 mseg transcurridos 1 1
Después de abrir una orden Buy Stop recalculo todas las órdenes, selecciono una orden abierta y compruebo si el símbolo y el número mqh coinciden:
No ocurre nada en esta etapa, como escribí anteriormente asymbol.Name() no devuelve el símbolo de la orden abierta por alguna razón, aorder.Magic() devuelve el valor 0 (aunque mi número mágico es 121345), asymbol.TickSize() devuelve el valor 0. En otras palabras, la comprobación falla y, por lo tanto, se detiene el trabajo sobre la orden. Por favor, aclare"depurar en la función Nombre(símbolo de cadena) lo que está pasando", no entiendo bien esta frase. ¿Qué debo añadir y dónde?
Para aclarar - como usted dice que cambiar las coordenadas en OnTick, y afirmar que, de hecho, los botones se mueven en el siguiente tick. ¿La siguiente garrapata de qué? ¿La que cambió las coordenadas o la de navidad?
En esta etapa, no pasa nada, porque como ya he escrito arriba, la función asymbol.Name() por alguna razón no devuelve el símbolo de la orden abierta, la función aorder.Magic() devuelve el valor 0 (aunque mi Magic es 121345), la función asymbol.TickSize() devuelve el valor 0. En otras palabras, la comprobación falla y, por tanto, se detiene el trabajo sobre la orden. Por favor, aclare"depurar en la función Nombre(símbolo de cadena) lo que está pasando", no entiendo bien esta frase. ¿Qué debo añadir y dónde?
El error en el índice de orden / ticket puede ser un error a juzgar por la magia 0. En el momento de acceder a la estructura de orden, se escriben allí datos del orden equivocado. En el bucle de selección, puede ocurrir que el siguiente número se coloque en el último conjunto de órdenes, y no el que necesita. Los datos de la última selección de pedidos se devuelven de la estructura de pedidos.
en la parte superior de mi código hay líneas
¿Se trata de una inicialización? Al compilar, obtengo la siguiente información
'Trade panel.mq5' Trade panel.mq5 1 1
'Trade.mqh' Trade.mqh 1 1
'Object.mqh' Object.mqh 1 1
'StdLibErr.mqh' StdLibErr.mqh 1 1
'OrderInfo.mqh' OrderInfo.mqh 1 1
'HistoryOrderInfo.mqh' HistoryOrderInfo.mqh 1 1
'PositionInfo.mqh' PositionInfo.mqh 1 1
'DealInfo.mqh' DealInfo.mqh 1 1
'SymbolInfo.mqh' SymbolInfo.mqh 1 1
código generado 1 1
0 errores, 0 avisos, 3192 mseg transcurridos 1 1
Después de abrir una orden Buy Stop recalculo todas las órdenes, selecciono una orden abierta y compruebo si el símbolo y el número Majdic coinciden:
No ocurre nada en esta etapa, como escribí anteriormente asymbol.Name() no devuelve el símbolo de la orden abierta por alguna razón, aorder.Magic() devuelve el valor 0 (aunque mi número mágico es 121345), asymbol.TickSize() devuelve el valor 0. En otras palabras, la comprobación falla y, por lo tanto, se detiene el trabajo sobre la orden. Por favor, aclare"depurar en la función Nombre(símbolo de cadena) lo que está pasando", no entiendo bien esta frase. ¿Qué debo añadir y dónde?
Caramba, por qué usas algo que no entiendes (que si es una maleta yadda yadda )) )
Y ni siquiera te molestas en leer lo que está escrito
Si no tienes asymbol.Name(Symbol()) entonces añádelo.
s.w. Quería explicar más sobre la inicialización, pero supongo que también sería inútilPuede haber un error en el índice del pedido / ticket según la magia 0. En el momento de acceder a la estructura del pedido se almacenan allí los datos del pedido equivocado. En el ciclo de selección puede ocurrir que el siguiente número vaya al último conjunto de órdenes pero no al que usted necesita. Los datos de la última selección de pedidos se devuelven desde la estructura de pedidos.
¡Buenas tardes!
Ayúdame a resolver un problema sencillo.
Contador de huecos. Quiero contar los huecos de más de 10 puntos.
La variable "gap" se pone a cero. No entiendo por qué. Ya lo he intentado todo. He probado los bucles y la estática, pero no funciona. Sospecho que escribí mal los bucles.
¡Buenas tardes!
Ayúdame a resolver un problema sencillo.
Contador de huecos. Quiero contar los huecos de más de 10 puntos.
La variable "gap" se pone a cero. No entiendo por qué. Ya lo he intentado todo. He probado los bucles y la estática, pero no funciona. Sospecho que escribí mal los bucles.
La variable gap está en el ámbito de la función start - y con cada nuevo tick se reinicializa con cero
¡Buenas tardes!
Ayúdame a resolver un problema sencillo.
Contador de huecos. Quiero contar los huecos de más de 10 puntos.
La variable "gap" se pone a cero. No entiendo por qué. Ya lo he intentado todo. He probado los bucles y la estática, pero no funciona. Sospecho que escribí mal los bucles.