Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 1001

 

¿Puede decirme, por favor, por qué estoy recibiendo errores

2019.02.17 06:13:28.974 Test_4G_CB (Si Splice,H1)       1 Тут ошибка 4202 Графический объект не найден
2019.02.17 06:13:28.983 Test_4G_CB (Si Splice,H1)       2 Тут ошибка 4202 Графический объект не найден

en este código

      if(ObjectFind(chart,name)<0)
        {
         Print("1 Тут ошибка ",GetLastError()," ",cLng::CodeDescription(GetLastError()));
         ResetLastError();
         graphic.Create(chart,name,0,0,0,pix_X,pix_Y);//Создает графический ресурс, привязанный к объекту чарта 
         Print("2 Тут ошибка ",GetLastError()," ",cLng::CodeDescription(GetLastError()));
         ResetLastError();
        }

Si el primer error sigue siendo comprensible - no se encuentra un objeto, pero la implementación de la búsqueda de un objeto que falta sin un error no está clara, el segundo error no está claro, mientras que el objeto se crea claramente - el gráfico se forma y la razón del error no está clara.

¿Cómo deshacerse de los errores?

 
Aleksey Vyazmikin:

¿Puede decirme, por favor, por qué estoy recibiendo errores

en este código

Si el primer error sigue siendo comprensible - no se encuentra un objeto, pero la implementación de la búsqueda de un objeto que falta sin un error no está clara, el segundo error no está claro, mientras que el objeto se crea claramente - el gráfico se forma y la razón del error no está clara.

¿Cómo eliminar el error?

ResetLastError() debe hacerse antes de llamar a la función. ¿Qué es esto?

graphic.Create()

no está claro. Si se trata de CCanvas, el método Create() crea un recurso gráfico sin referencia al objeto gráfico. Y devuelve verdadero o falso:

Crear

Crea un recurso gráfico sin vincularlo a un objeto gráfico.

virtual bool  Create(
   const string       name,                                 // имя
   const int          width,                                // ширина
   const int          height,                               // высота
   ENUM_COLOR_FORMAT  clrfmt=COLOR_FORMAT_XRGB_NOALPHA      // формат
   );

Parámetros

nombre

[in] Base para el nombre del recurso gráfico. El nombre del recurso se forma durante la creación añadiendo una cadena pseudo-aleatoria.

anchura

Ancho [in] Ancho (tamaño X) en píxeles.

altura

[in] Altura (tamaño del eje Y) en píxeles.

clrfmt=COLOR_FORMAT_XRGB_NOALPHA

[en] Método de tratamiento del color. Consulte la descripción de la función ResourceCreate() para obtener más detalles sobre los métodos de gestión del color.

El valor de retorno es

true - si tiene éxito, de lo contrario false


En general, es difícil de entender por lo que has mostrado.

Pero puedes intentarlo de esta manera:

//+------------------------------------------------------------------+
ResetLastError();
if(ObjectFind(chart,name)<0)
  {
   Print("1 Тут ошибка потому, что объекта нет ещё",GetLastError()," ",cLng::CodeDescription(GetLastError()));
   ResetLastError();
   if(!graphic.Create(chart,name,0,0,0,pix_X,pix_Y))
      Print("2 Тут ошибка ",GetLastError()," ",cLng::CodeDescription(GetLastError()));
  }
//+------------------------------------------------------------------+

Si tienes CGraphic ahí, tienes que meterte en el código de Create() para entender lo que devuelve, ya que no hay nada al respecto en la ayuda:

Документация по MQL5: Стандартная библиотека / Научные графики / CGraphic / Create
Документация по MQL5: Стандартная библиотека / Научные графики / CGraphic / Create
  • www.mql5.com
Стандартная библиотека / Научные графики / CGraphic / Create - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Artyom Trishkin:

ResetLastError() debe realizarse antes de llamar a la función. Lo que hay aquí:

no está claro. Si es CCanvas, el método Create() crea un recurso gráfico sin referencia a un objeto gráfico. Y devuelve verdadero o falso:

Crear

Crea un recurso gráfico sin vincularlo a un objeto gráfico.

Parámetros

nombre

[in] Base para el nombre del recurso gráfico. El nombre del recurso se forma durante la creación añadiendo una cadena pseudo-aleatoria.

anchura

Ancho [in] Ancho (tamaño X) en píxeles.

altura

[in] Altura (tamaño del eje Y) en píxeles.

clrfmt=COLOR_FORMAT_XRGB_NOALPHA

[en] Método de tratamiento del color. Consulte la descripción de la función ResourceCreate() para obtener más detalles sobre los métodos de gestión del color.

El valor de retorno es

true - si tiene éxito, de lo contrario false


En general, es difícil de entender por lo que has mostrado.

Pero puedes intentarlo de esta manera:

Si tienes CGraphic ahí, tienes que meterte en el código de Create() para entender lo que devuelve, ya que no hay ni una palabra al respecto en la ayuda:

Ya he comprobado arriba con el reset de errores y localizado el lugar donde se produce el error.

Además, ocurre dos veces desde diferentes funciones allí - después de la primera función el error se borra, pero luego ocurre de nuevo.

Y mi variante de creación

Crear

Crea un recursográfico vinculado al objeto gráfico.

bool Crear (
const longchart,// ID del gráfico
const stringname,//nombre
const intsubwin,// número de subventanas
const intx1,//coordenada x1
const inty1,//coordenada y1
const intx2,//coordenada x2
const inty2//coordenada y1
)

Parámetros

gráfico

El identificador [in] del gráfico.

nombre

[en] Nombre.

subwin

[Número de subventana.

x1

[Coordenada X1.

y1

[en] Coordenada Y1.

x2

[en] Coordenada X2.

y2

[en] Coordenada Y2.

 
Aleksey Vyazmikin:

Ya he comprobado arriba con un reset de errores y localizado donde se produce el error

No se restablece el error antes de acceder a la función de búsqueda de objetos.

 
Artyom Trishkin:

No se restablece el error antes de acceder a la función de búsqueda de objetos.

Sí, en la cita del código no reinicio, como ya he comprobado el código de arriba - no hay ningún error allí, así que he borrado las líneas de verificación similares como se muestra a continuación.

 
Hola, mi función de alerta lee una cadena de un archivo y la emite en caracteres chinos o japoneses, ¿cómo puedo solucionarlo?
 
Artyom Trishkin:

No se restablece el error antes de llamar a la función de búsqueda de objetos.

Una vez más he decidido repetir el experimento, aquí está el código

      //--- отключим показ ценового графика
      ChartSetInteger(0,CHART_SHOW,false);
      long chart=ChartID();

      CGraphic graphic;
         Print("0 Тут ошибка ",GetLastError()," ",cLng::CodeDescription(GetLastError()));
         ResetLastError();
      if(ObjectFind(chart,name)<0)
        {
         Print("1 Тут ошибка ",GetLastError()," ",cLng::CodeDescription(GetLastError()));
         ResetLastError();
         graphic.Create(chart,name,0,0,0,pix_X,pix_Y);//Создает графический ресурс, привязанный к объекту чарта 
         Print("2 Тут ошибка ",GetLastError()," ",cLng::CodeDescription(GetLastError()));
         ResetLastError();
        }

Aquí está el resultado.

2019.02.17 08:55:19.845 Test_4G_CB (Si Splice,H1)       0 Тут ошибка 0 Операция выполнена успешно
2019.02.17 08:55:19.860 Test_4G_CB (Si Splice,H1)       1 Тут ошибка 4202 Графический объект не найден
2019.02.17 08:55:19.860 Test_4G_CB (Si Splice,H1)       2 Тут ошибка 4202 Графический объект не найден
¿Alguna idea de la causa del error?
 
Denis Nikolaev:
Hola, mi función de alerta lee una cadena de un archivo y la emite en caracteres chinos o japoneses, ¿cómo puedo solucionarlo?

Configurar las fuentes en Windows. Establezca el ruso como "Idioma para programas que no soportan Unicode".

"Normas regionales" - "Avanzadas".

 
Vladimir Karputov:

Configurar las fuentes en Windows. Establezca el ruso como "Idioma para programas que no soportan Unicode".

"Normas regionales - Avanzadas.

Esto no funcionó.

Obtengo una traducción automática al japonés o al chino de una línea leída de un archivo, ¿por qué ocurre esto?

 
Aleksey Vyazmikin:

Una vez más he decidido repetir el experimento, aquí está el código

Este es el resultado

¿Alguna idea de la causa del error?

Pues bien, ya que restableces el último error, busca en la selva de CGraphic dónde se produce este código de error.

Razón de la queja: