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

 
Juer:

Código

Da este resultado:

¿Qué estoy haciendo mal?

No se puede pasar por todos los miembros de la enumeración. Las enumeraciones incorporadas no pueden ser recorridas como un array - como desde "0" hasta "end". Para recorrer las enumeraciones en línea, es necesario dirigirse directamente a cada miembro de la enumeración, correctamente. Por ejemplo, así:

//+------------------------------------------------------------------+
//|                                              ENUM_TIMEFRAMES.mq5 |
//|                        Copyright 2016, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   Print("PERIOD_CURRENT ",PERIOD_M1,"\n",
         "PERIOD_M2 ",PERIOD_M2,"\n",
         "PERIOD_M3 ",PERIOD_M3,"\n",
         "PERIOD_M4 ",PERIOD_M4,"\n",
         "PERIOD_M5 ",PERIOD_M5,"\n",
         "PERIOD_M6 ",PERIOD_M6,"\n",
         "PERIOD_M10 ",PERIOD_M10,"\n",
         "PERIOD_M12 ",PERIOD_M12,"\n",
         "PERIOD_M15 ",PERIOD_M15,"\n",
         "PERIOD_M20 ",PERIOD_M20,"\n",
         "PERIOD_M30 ",PERIOD_M30,"\n",
         "PERIOD_H1 ",PERIOD_H1,"\n",
         "PERIOD_H2 ",PERIOD_H2,"\n",
         "PERIOD_H3 ",PERIOD_H3,"\n",
         "PERIOD_H4 ",PERIOD_H4,"\n",
         "PERIOD_H6 ",PERIOD_H6,"\n",
         "PERIOD_H8 ",PERIOD_H8,"\n",
         "PERIOD_H12 ",PERIOD_H12,"\n",
         "PERIOD_D1 ",PERIOD_D1,"\n",
         "PERIOD_W1 ",PERIOD_W1,"\n",
         "PERIOD_MN1 ",PERIOD_MN1,"\n");
  }
//+------------------------------------------------------------------+
Archivos adjuntos:
 
Vladimir Karputov:

No se pasa por todos los miembros de la enumeración. Las enumeraciones incorporadas no pueden ser recorridas como un array - como desde "0" hasta "end". Para acceder a las enumeraciones incrustadas, debe dirigirse a cada miembro de la enumeración directamente, de forma correcta. Por ejemplo, así:

Quién iba a pensar...
 
int val=(int)PERIOD_H1;

En una expresión como ésta, val es 16385. ¿Cuál es este valor?

Siempre pensé que int y enum podían convertirse fácilmente el uno en el otro :(

 
Juer:
Quién iba a pensar...

Si quiere acceder a una enumeración estándar como una matriz, primero debe declarar y llenar dicha matriz usted mismo:

//--- variant 2
   ENUM_TIMEFRAMES timeframes_array[21]=
     {
      PERIOD_M1,PERIOD_M2,PERIOD_M3,
      PERIOD_M4,PERIOD_M5,PERIOD_M6,
      PERIOD_M10,PERIOD_M12,PERIOD_M15,
      PERIOD_M20,PERIOD_M30,PERIOD_H1,
      PERIOD_H2,PERIOD_H3,PERIOD_H4,
      PERIOD_H6,PERIOD_H8,PERIOD_H12,
      PERIOD_D1,PERIOD_W1,PERIOD_MN1
     };
   int size=ArraySize(timeframes_array);
   for(int i=0;i<size;i++)
      Print(i,": ",EnumToString(timeframes_array[i])," ",timeframes_array[i]);
 
Juer:

En una expresión como ésta, val es 16385. ¿Cuál es este valor?

Siempre pensé que int y enum podían convertirse fácilmente el uno en el otro :(

Mi ejemplo anterior): reprodúzcalo y mire los números

 

Estoy tratando de configurar una transferencia de archivos ftp.

Al pulsar el botón de prueba en Ajustes de servicio-FTP se puede enviar el archivo, es decir, las contraseñas y la ruta son correctas.

No puedo enviar archivos a través del software. Cuando se envía un archivo mediante un script al ejecutar SendFTP("Archivo_1.txt", "/ftp_failes"); el terminal se cuelga. Archivo_1.txt está en el directorio Files.

Pregunta. TerminalInfoInteger( TERMINAL_FTP_ENABLED) en mi script =0. No encuentro en absoluto dónde y cómo se configura, por favor, aconsejadme.

¿Y puede decirme qué más me falta?
Использование облачных хранилищ для обмена данными между терминалами
Использование облачных хранилищ для обмена данными между терминалами
  • www.mql5.com
Все большее распространение в современном мире получают облачные технологии. Мы можем использовать хранилища разного объема, как платные, так и бесплатные. Можем ли мы их использовать в практическом трейдинге? В этой статье предлагается технология для обмена данными между терминалами, через облачные хранилища. Вы спросите: зачем для этого...
 
User_mt5:

Estoy tratando de configurar una transferencia de archivos ftp.

Al pulsar el botón de prueba en el Servicio-Configuración-FTP se puede enviar el archivo, es decir, las contraseñas y la ruta son correctas.

No puedo enviar archivos a través del software. Al enviar un archivo mediante un script al ejecutar SendFTP("Archivo_1.txt", "/ftp_failes"); el terminal se cuelga. Archivo_1.txt está en el directorio Files.

Pregunta. TerminalInfoInteger( TERMINAL_FTP_ENABLED) en mi script =0. No encuentro en absoluto dónde y cómo se configura, por favor, aconsejadme.

¿Y puede decirme qué más me he perdido?
La razón era: nombrar un archivo en letras rusas no está permitido.
El problema se ha resuelto.
 

Estoy tratando de leer una cadena de un archivo:

#include <Files\FileTxt.mqh>
CFileTxt          m_file_txt;
m_file_handle=m_file_txt.Open(m_file_name,FILE_CSV|FILE_READ|FILE_COMMON|FILE_ANSI,10);
m_file_txt.Seek(0,SEEK_SET);
string str=m_file_txt.ReadString();

Esta es la primera línea del archivo:

,1,1,1,21,0,unmatch count,IGNORECRLF

Sólo obtengo el carácter "," en str.

 
FILE_UNICODE

ayudado, pero en este caso se leen los caracteres chinos.

¿Y si necesito ANSI? ¿Por qué no puedo leer una cadena completa cuando la bandera FILE_ANSI?

 
Puede:
   int cur_bars=Bars(_Symbol,PERIOD_CURRENT);

reemplazar con:

   int cur_bars=Bars(_Symbol,_Period);
Razón de la queja: