Questions des débutants MQL5 MT5 MetaTrader 5 - page 929

 
Juer:

Code

Donne ce résultat :

Qu'est-ce que je fais de mal ?

Vous ne pouvez pas passer par tous les membres de l'énumération. Les énumérations intégrées ne peuvent pas être parcourues comme un tableau - comme de "0" à "fin". Pour parcourir les énumérations en ligne, vous devez vous adresser directement et correctement à chaque membre de l'énumération. Par exemple, comme ceci :

//+------------------------------------------------------------------+
//|                                              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");
  }
//+------------------------------------------------------------------+
Dossiers :
 
Vladimir Karputov:

Vous ne passez pas par tous les membres de l'énumération. Les énumérations intégrées ne peuvent pas être parcourues comme un tableau - comme de "0" à "fin". Pour accéder aux énumérations incorporées, vous devez vous adresser directement à chaque membre de l'énumération, correctement. Par exemple, comme ceci :

Qui aurait pu penser...
 
int val=(int)PERIOD_H1;

Dans une expression comme celle-ci, val est 16385. Quelle est cette valeur ?

J'ai toujours pensé que int et enum pouvaient être facilement convertis l'un en l'autre :(

 
Juer:
Qui aurait pu penser...

Si vous voulez accéder à une énumération standard sous forme de tableau, vous devez d'abord déclarer et remplir vous-même un tel tableau:

//--- 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:

Dans une expression comme celle-ci, val est 16385. Quelle est cette valeur ?

J'ai toujours pensé que int et enum pouvaient être facilement convertis l'un en l'autre :(

Mon exemple ci-dessus) : reproduisez-le et regardez les chiffres.

 

J'essaie de mettre en place un transfert de fichiers par ftp.

Le fait d'appuyer sur le bouton Test dans Service-Settings-FTP permet d'envoyer le fichier, c'est-à-dire que les mots de passe et le chemin sont corrects.

Je ne peux pas envoyer de fichiers via le logiciel. Lors de l'envoi d'un fichier via un script, lors de l'exécution de SendFTP("File_1.txt", "/ftp_failes"), le terminal se bloque. Le fichier_1.txt se trouve dans le répertoire Files.

Question: TerminalInfoInteger( TERMINAL_FTP_ENABLED) dans mon script =0. Je n'arrive pas à trouver où et comment il est configuré, veuillez me conseiller.

Et pouvez-vous me dire ce que j'ai manqué d'autre ?
Использование облачных хранилищ для обмена данными между терминалами
Использование облачных хранилищ для обмена данными между терминалами
  • www.mql5.com
Все большее распространение в современном мире получают облачные технологии. Мы можем использовать хранилища разного объема, как платные, так и бесплатные. Можем ли мы их использовать в практическом трейдинге? В этой статье предлагается технология для обмена данными между терминалами, через облачные хранилища. Вы спросите: зачем для этого...
 
User_mt5:

J'essaie de mettre en place un transfert de fichiers par ftp.

Le fait d'appuyer sur le bouton Test dans Service-Settings-FTP permet d'envoyer le fichier, c'est-à-dire que les mots de passe et le chemin sont corrects.

Je ne peux pas envoyer de fichiers via le logiciel. Lors de l'envoi d'un fichier via un script, lors de l'exécution de SendFTP("File_1.txt", "/ftp_failes"), le terminal se bloque. Le fichier_1.txt se trouve dans le répertoire Files.

Question: TerminalInfoInteger( TERMINAL_FTP_ENABLED) dans mon script =0. Je n'arrive pas à trouver où et comment il est configuré, veuillez me conseiller.

Et pouvez-vous me dire ce que j'ai manqué d'autre ?
La raison était la suivante : il n'est pas permis de nommer un fichier en lettres russes.
Le problème a été résolu.
 

J'essaie de lire une chaîne de caractères à partir d'un fichier :

#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();

Voici la première ligne du fichier :

,1,1,1,21,0,nombre de non-concordances,IGNORECRLF

Je n'obtiens que le caractère "," dans la chaîne.

 
FILE_UNICODE

aidé, mais dans ce cas, les caractères chinois sont lus.

Et si j'ai besoin d'ANSI ? Pourquoi je ne peux pas lire une chaîne entière avec le drapeau FILE_ANSI?

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

remplacer par :

   int cur_bars=Bars(_Symbol,_Period);