Errores, fallos, preguntas - página 606

 
uncleVic:
No está muy claro por qué. Al fin y al cabo, si tu programa ha eliminado un objeto, lo sabe. Pero si el objeto se borra y el programa lo "desconoce", hay que culpar al Terminal en consecuencia.

no es tan sencillo (es una pena que haya desaparecido del servicio técnico, intentaré volver a introducir el problema).

Necesitamos manejar la situación cuando un usuario borra accidentalmente un objeto del gráfico. Pero este objeto no debe ser eliminado. Por ejemplo, es el sustrato de una lista o un menú desplegable.

Así que en el código OnChartEvent necesito manejar este evento y redibujar el control.

Así que tengo que eliminar todos los demás objetos de este control. Creo que no hace falta explicar por qué debo eliminar todos los objetos superiores de este control.

Resulta que al procesar este evento el algoritmo entra en un bucle profundo. El script borrará objetos y obtendrá el evento de que los objetos fueron borrados y significa que este evento debe ser procesado de nuevo - eliminar y renderizar... En definitiva, un lío algorítmico.

No sé cómo arreglarlo dentro del conjunto actual de CHARTEVENT. Por eso sugiero, que el script entienda - de quién fue la remoción - por terminal (por usuario astuto) o por el mismo script (por el mismo programador).

Tendrá que enfrentarse a ello tarde o temprano, cuando empiece a trabajar activamente con los controles.

 
sergeev:

no es tan sencillo (es una pena que haya desaparecido del servicio técnico, intentaré averiguar el problema de nuevo).

No sé cómo resolver esta situación dentro del conjunto actual de CHARTEVENT. Por eso sugiero, que el script debería entender - quién lo ha borrado - por terminal (por usuario astuto) o por el propio script (por el mismo programador).

Te habrás enfrentado a esto tarde o temprano, cuando empieces a trabajar activamente con los controles.

Me lo he encontrado. En una de las primeras versiones de la Biblioteca de Arte (en cuanto a los controles) se implementó este mecanismo, pero por ciertas razones se eliminó (sí planeo restaurarlo más adelante).

No hay nada inteligente en ello. Cada controlador debería ser capaz de restaurarse a sí mismo. El sustrato, cuando se borra, elimina todo lo que hay en él. El restablecimiento se realiza mediante eventos.

 
uncleVic:


No hay nada inteligente en ello. Todo controlador debe ser capaz de repararse a sí mismo. El sustrato, al ser eliminado, borra todo lo que hay en él. Luego la restauración se hace por eventos.

Pues eso es lo que digo, que cuando se recibe un evento de borrado, el control se restaura.

Pero tan pronto como el control se restaure (borre los objetos superiores) comenzará a borrar los eventos de nuevo.

En fin, para qué me voy a molestar en volver a demostrar lo obvio :)) Cuando su empresa necesitó el evento de movimiento del ratón para el desarrollo de la biblioteca estándar, lo añadieron sobre la marcha y sin preguntas innecesarias. La práctica del doble rasero se convierte en ....
Pero creo que si esta misma propuesta fuera enviada por el usuario al Service Desk, lo perseguirían durante un mes más para saber por qué lo necesitan.

Créeme, lo necesitas. Ya he escrito en Service Desk que no tratamos de promocionar MT5 y MQL5, sino que lo hacemos por nuestro propio beneficio.

Pasamos honestamente por todos los caminos para encontrar soluciones rápidas y compactas para nuestras tareas en MQL. Si nos encontramos con un obstáculo, siempre escribimos al Service Desk. Pero no siempre nos encontramos con un entendimiento allí.

Como he escrito más arriba, me alegro mucho de que hagas tú mismo la biblioteca de control. Al menos puedes tener una pequeña visión de todos nuestros problemas que deben ser resueltos sin ninguna comprensión por tu parte.

PS.
Víctor, lo siento, que tan severamente, sólo un dolor en el cuello.
Sólo pediría a su empresa que escuchara las peticiones de los programadores de MQL. Al fin y al cabo, en MQL resolvemos tareas mucho más variadas de lo que pueda imaginar. A veces sólo quiero escuchar la respuesta en el Service Desk: sí, lo haremos en la próxima compilación.

Gracias por su comprensión.

 

sergeev:

... cuando su empresa necesitaba un evento de movimiento del ratón ...

Si supieras lo mucho que me he tenido que romper los puños por los programadores "adultos" para hacerlo...
 
A riesgo de sonar poco original, pero aún así... Señoras y señores, ¿cuándo abrirá el mercado? ¿Alguien sabe al menos un calendario aproximado?
 
uncleVic:
Si supieras lo mucho que me he tenido que romper los puños por los programadores "adultos" para hacerlo...
Víctor, tú y yo estamos en el mismo barco :))estemos juntos.
 

Estoy tratando de abrir una posición larga basada en el script para un símbolo donde se implementa la ejecución de intercambio ( SYMBOL_TRADE_EXECUTION_EXCHANGE, Ejecución de intercambio).

#include <Trade\Trade.mqh>                   
input double InpLots          =0.1;  
input int    InpTakeProfit    =500;
input int    InpSL            =300;
CTrade       myTrade;

void OnStart()
  {   
   double price=SymbolInfoDouble(_Symbol,SYMBOL_ASK);
   double tp=SymbolInfoDouble(_Symbol,SYMBOL_BID)+InpTakeProfit*_Point;
   double sl=SymbolInfoDouble(_Symbol,SYMBOL_BID)-InpSL*_Point;
   myTrade.SetTypeFilling(ORDER_FILLING_IOC);
   myTrade.PositionOpen(_Symbol,ORDER_TYPE_BUY,InpLots,price,0,0,"Test Buy");
   Sleep(500); // интервал задержки
   myTrade.PositionModify(_Symbol,sl,tp);
  }

Me da un error:

  • cambio comprar 0.10 EURUSD.e a 0.00000;
  • falló la compra de intercambio 0.10 EURUSD.e a 0.00000 [paradas inválidas].

Es decir, el terminal no ve el precio al que quiero comprar. He probado con diferentes precios pero sigo recibiendo 0,00000.

Probé un script similar corriendo en MT4 con las mismas condiciones de intercambio, allí funcionó... No en MT5...

Por favor, apunte la nariz al error.

 
denkir:
  • falló la compra de intercambio 0.10 EURUSD.e a 0.00000 [paradas inválidas].

Este es un mensaje del servidor, no del terminal. No tengo nada más que decir sobre este tema.

Envíe una solicitud al Servicio de Atención al Cliente.

Общайтесь с разработчиками через Сервисдеск!
Общайтесь с разработчиками через Сервисдеск!
  • www.mql5.com
Ваше сообщение сразу станет доступно нашим отделам тестирования, технической поддержки и разработчикам торговой платформы.
 
papaklass:

¿Por qué se produce un error de desbordamiento de matriz?

Bueno, normalmente se escribe algo antes de leerlo...
 
papaklass:

¿Por qué se produce un error de desbordamiento de matriz?


¿Y dónde tienes la llamada ArrayResize?
Документация по MQL5: Операции с массивами / ArrayResize
Документация по MQL5: Операции с массивами / ArrayResize
  • www.mql5.com
Операции с массивами / ArrayResize - Документация по MQL5
Razón de la queja: