CODE PROBLÈME - page 2

 
burnssss:

J'ai essayé de créer un expert, code plus ou moins similaire, et j'écris un fichier par exemple les données mensuelles.


Mais je ne peux plus télécharger les données de 1970.

Le code utilisé était le suivant :

Je vous ai déjà donné un lien qui vous explique pourquoi cela ne fonctionne pas, l'avez-vous lu ?

RaptorUK:

Veuillez utiliser la recherche du forum...

https://www.mql5.com/en/forum/147170

. . . et la documentation

 
RaptorUK:
No has respondido a mi pregunta simple, donde en el archivo es lo que desea colocar los nuevos datos ? si se piensa que por unos minutos le ayudará. . .

Une continuation des anciennes données ? Je ne comprends pas que je dois utiliser et où continuer à exécuter le téléchargement de données
 
La combinaison FILEREAD / file_write, je viens de la faire et je continue à faire la même chose. Il y a quelque chose que je ne comprends pas
 
burnssss:
La combinaison FILEREAD / file_write, je viens de la faire et je continue à faire la même chose. Il y a quelque chose que je ne comprends pas
Chaque fois que vous écrivez une ligne de données dans le fichier, vous voulez que chaque nouvelle ligne de données se trouve sur une nouvelle ligne, vous ne voulez pas qu'elle écrase la ligne que vous venez d'écrire... avant d'écrire la nouvelle ligne de données, vous devez FileSeek() jusqu'à la fin du fichier... puis écrire votre nouvelle ligne de données. . puis écrire votre nouvelle ligne de données.
 
Je vais essayer
 

Je ne comprends pas, c'est la même chose qu'avant.

//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()
  {
export();
  }

//+------------------------------------------------------------------+
void export() 
{ 

string file="export_"+Symbol()+"_"+Period()+".csv"; 
int f=FileOpen(file,FILE_CSV|FILE_READ|FILE_WRITE, ';'); 
if(f>0)
{
     FileSeek(f, 0, SEEK_END);
   
    }



for(int i=Bars-1;i>=0;i--)
{
FileWrite(f,TimeToStr(Time,TIME_DATE|TIME_MINUTES),Open,High,Low,Close ,iFractals(Symbol(),0,1,i),iFractals(Symbol(),0,2,i),iCustom(Symbol(), 
0,"ZigZag",0,i),iCustom(Symbol(),0, "ZigZag",1,i));
Alert("Export "+Symbol()+" finished. Exported: "+Bars+" records"); 
FileClose(f);
  f=0;
}
}
 
burnssss:

Je ne comprends pas, c'est la même chose qu'avant.

Pourquoi fermez-vous le fichier à l'intérieur de la boucle ? Lisez bien votre code avant de le tester, assurez-vous qu'il a un sens...
 

Dans le code, je pense que j'utilise les bonnes étapes. Je pense que vous devez télécharger toutes les données dans un fichier . Csv, mais je ne comprends pas pourquoi je fais cela.

//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()
  {
export();
  }

//+------------------------------------------------------------------+
void export() 
{ 

string file="export_"+Symbol()+"_"+Period()+".csv"; 
int f=FileOpen(file,FILE_READ|FILE_WRITE, ';'); 
if(f>0)
{
     FileSeek(f, 0, SEEK_END);
   
    }



for(int i=Bars-1;i>=0;i--)
{
FileWrite(f,TimeToStr(Time,TIME_DATE|TIME_MINUTES),Open,High,Low,Close ,iFractals(Symbol(),0,1,i),iFractals(Symbol(),0,2,i),iCustom(Symbol(),0,"ZigZag",0,i),iCustom(Symbol(),0, "ZigZag",1,i));
}

Alert("Export "+Symbol()+" finished. Exported: "+Bars+" records");  
FileClose(f); 
}
 
burnssss:

Dans le code, je pense que j'utilise les bonnes étapes. Je pense que vous devez télécharger toutes les données dans un fichier . Csv, mais je ne comprends pas pourquoi je fais cela.

Lorsque la boucle s'exécute pour la première valeur de i, elle écrit les données puis ferme le fichier, pour la prochaine valeur de i dans la boucle, le fichier est fermé... que pensez-vous qu'il va se passer ?
 
Merci beaucoup, j'ai trouvé la solution
Raison: