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

 
Aleksandr Slavskii #:

No, no se puede hacer en la báscula. Es posible en la ventana del indicador muy cerca de la báscula, pero no en la propia báscula.

Entendido, gracias.
 

He intentado varias veces averiguar cómo funciona la depuración, pero después de varios intentos fallidos abandoné la idea. Tratando de averiguar de nuevo, por lo que necesitará un poco de ayuda. Por ejemplo, en la imagen adjunta de abajo he creado un código simple para ver Expresiones y Valores mientras depuro, pero no puedo verlos, pero la documentación muestra Expresiones y Valores. ¿Cuál es el problema?


Отладка кода - Разработка программ - Справка по MetaEditor
  • www.metatrader5.com
В MetaEditor встроен отладчик — инструмент, который позволяет проверить работу программы по шагам (по отдельным функциям). Вы расставляете в коде...
 

Nauris Zukas #:

... pero no puedo verlos...

Para ver algo, es necesario añadir algo a la observación utilizando el atajo de teclado Shift+F9. Los pasos para ver cada línea de código se realizan pulsando la tecla F11.

Saludos, Vladimir.

 
Nauris Zukas #:

He intentado varias veces averiguar cómo funciona la depuración, pero después de varios intentos fallidos abandoné la idea. Tratando de averiguar de nuevo, por lo que necesitará un poco de ayuda. Por ejemplo, en la imagen adjunta de abajo he creado un código simple para ver Expresiones y Valores mientras depuro, pero no puedo verlos, pero la documentación muestra Expresiones y Valores. ¿Cuál es el problema?


Averígualo, ¡es muy útil!
 
Búscalo en YouTube.
Creo que es Alexei Volchansky.
 

¡¡¡Gracias!!! He pasado medio día trabajando con el depurador y me he dado cuenta de por qué no lo uso todos los días - me lleva demasiado tiempo, me resulta más fácil simplemente poner Print en una función para obtener información rápidamente.

Pero empecé con esto porque quería entender por qué a todos los elementos del array se les asigna 0 a la vez. Ya es un número en la naturaleza y que puede conducir a un resultado erróneo más tarde. ¿Cómo procedería? ¿Es ArrayInitialise(arr1,EMPTY_VALUE) la mejor solución o alguna otra cosa?


 
Nauris Zukas #:

Pero empecé con esto porque quería entender por qué a todos los elementos del array se les asigna 0 a la vez. Esto ya es un número en la naturaleza y que puede conducir a resultados incorrectos más adelante. ¿Cómo procedería? ¿Es ArrayInitialise(arr1,EMPTY_VALUE) la mejor solución o alguna otra cosa?

A los arrays no se les asignan valores de ceros. Has tenido suerte, digamos que al azar.

Si no inicializas un array, suele contener basura.

En tu pantalla donde indicas que hay un valor incorrecto en lugar de cero podría ser cualquier número.

 
Hola, por favor aconséjeme.

Guardando datos en un archivo.
void OrderExport(MqlTradeRequest &request)
  {
   static long trans = 0;
   static long keepTrans = 0;
   string file = "OrderExchange" + (request.magic > 0 ? IntegerToString(request.magic) : "") + ".csv";
   int handle = FileOpen(file, FILE_CSV | FILE_READ | FILE_SHARE_READ | FILE_WRITE | FILE_SHARE_WRITE | (Common ? FILE_COMMON : 0), ';');
   if(handle != INVALID_HANDLE)
     {
      FileSeek(handle, 0, SEEK_END);
      long tr = TimeGMT();
      trans = (tr > trans) ? tr : (trans + 1);
      FileWrite(handle,
                trans,
                request.action,
                request.magic,

Obtener datos del archivo

void OrderImport(MqlTradeRequest &aReq[], int magic, string symbol)
  {
   ArrayFree(aReq);
   long tr;
   static long trans = 0;
   if(trans == 0)
      trans = TimeGMT() - 3;
   string file = "OrderExchange" + (magic > 0 ? IntegerToString(magic) : "") + ".csv";
   int handle = FileOpen(file, FILE_TXT | FILE_READ | FILE_SHARE_READ | FILE_ANSI | (Common ? FILE_COMMON : 0));
   if(handle != INVALID_HANDLE)
     {
      FileSeek(handle, 0, SEEK_SET);
      while(!FileIsEnding(handle))
        {
         string s = FileReadString(handle);
         string aS[];
         int cnt = StringSplit(s, ';', aS);
         if(cnt <= 0)
            continue;
         //---   ПРОБЛЕМНОЕ МЕСТО ОТ
          tr = StringToInteger(aS[0]);
         //---    ПРОБЛЕМНОЕ МЕСТО ДО
         if(tr <= trans)
            continue;

GetLastError() Se da el error de que -Parámetro detipo cadena estropeado

Si se obtiene el array aS[0] mediante Print(), la fuente es diferente al resto.


Si sólo imprime el parámetro tr , entonces = 0

 
Mikhail Toptunov tipo cadena estropeado

Si doy salida a un array S[0] mediante Print(), la fuente es diferente al resto.


Si sólo imprime el parámetro tr , entonces = 0

¿Has probado a mirar el propio fichero?

estás escribiendo valores binarios y leyendo una cadena de texto....

 
Maxim Kuznetsov #:

¿Has probado a mirar el propio archivo?

estás escribiendo valores binarios y leyendo una cadena de texto...

Yo lo importé así

void OrderImport(MqlTradeRequest &aReq[], int magic, string symbol)
  {
   ArrayFree(aReq);
   long tr;
   static long trans = 0;
   if(trans == 0)
      trans = TimeGMT() - 1;
   string file = "OrderExchange" + (magic > 0 ? IntegerToString(magic) : "") + ".csv";
   int handle = FileOpen(file, FILE_READ | FILE_SHARE_READ | (Common ? FILE_COMMON : 0));

así para exportar

void OrderExport(MqlTradeRequest &request)
  {
   static long trans = 0;
   static long keepTrans = 0;
   string file = "OrderExchange" + (request.magic > 0 ? IntegerToString(request.magic) : "") + ".csv";
   int handle = FileOpen(file, FILE_READ | FILE_SHARE_READ | FILE_WRITE | FILE_SHARE_WRITE | (Common ? FILE_COMMON : 0), ';');

mejoró, pero la primera importación de la primera cadena de parámetros (aS[0]) es siempre un error.


siguiente

tr - refleja la cadena traducida en int (aS[0])

Se visualiza el fichero, todo está en su sitio.


Pero al importar el primer parámetro aS[0] de la primera línea no se traduce en int.
Razón de la queja: