CODE PROBLÈME - page 3

 
burnssss:
Je veux télécharger l'historique OHLC, les fractales et l'indicateur zigzag, en utilisant ce script, mais quand j'ai ouvert le csv, je n'ai aucune information.
Quelqu'un peut-il me dire quelle est l'erreur à cet endroit ?
int f=FileOpen(file,FILE_CSV|FILE_WRITE,","); 
if(f<1) { Alert("File opening error"); return(0); }
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));
}
  1. Le dernier argument dans FileOpen est un int, pas une chaîne.
  2. Vous ne pouvez pas écrire des tableaux en utilisant FileWrite.
  3. Boucle mentionnée précédemment
 
J'ai développé le code pour télécharger les données OHLC, fractales et zigzag, mais en raison de la grande quantité de données, en M1 il faudrait choisir la date à partir de laquelle commencer le téléchargement.
 
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   start();
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
 
 void export() 
{ 

string file="export_"+Symbol()+"_"+Period()+".csv"; 
int f=FileOpen(file,FILE_CSV|FILE_WRITE,","); 
if(f<1) { Alert("File opening error"); return(0); }
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");  
FileFlush(f); 
FileClose(f); 
}

//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
export();

//----
//Alert(ArraySize(norepeats) + ArraySize(morerepeats));
   return(0);
 }
//+------------------------------------------------------------------+
 
burnssss:
J'ai développé le code pour télécharger les données OHLC, fractales et zigzag, mais en raison de la grande quantité de données, en M1, il faudrait choisir la date à partir de laquelle commencer le téléchargement.
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));
}

Donc, ce que vous devez faire, c'est de ne pas commencer à écrire à partir des barres 1.

faire une condition si la barre de temps i > votre date va filewrite....

 
deVries:

Entonces, ¿qué hay que hacer no es empezar a escribir de Bares-1

hacer una condición si barra de tiempo i> tu cita FILEWRITE ....


Je ne comprends pas car je suis un amateur de mql4. Pourriez-vous me donner un exemple ?

Ce dont j'ai besoin, c'est qu'au lieu de commencer à télécharger des données à partir de 1971 par exemple, on commence à télécharger en 2009

 
burnssss:


Je ne comprends pas car je suis un amateur de mql4. Pourriez-vous me donner un exemple ?

Ce dont j'ai besoin, c'est qu'au lieu de commencer à télécharger les données à partir de 1971, par exemple, on commence à télécharger en 2009.


comment obtenir le temps d'une bougie ?

if(Time[i]>= D'2004.01.01 00:00') FileWrite(f,TimeToStr(Time,TIM.......                                        // New Year'2004
 
Dans la partie suivante du code qui devrait changer pour obtenir le zigzag de 13 ?

Je note que le paramètre de zigzag que je télécharge est 12 et je voudrais télécharger le paramètre de zigzag 13.

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));
}

Merci beaucoup

 

Bien,

une solution à ma question ?

merci beaucoup

 
burnssss: Je note que le paramètre de téléchargement de zigzag est 12 et que je voudrais télécharger le paramètre de zigzag 13.
Vous ne passez AUCUN paramètre à zigzag. Si vous ne voulez pas les valeurs par défaut, passez les trois. Explication détaillée de iCustom - MQL4 forum
 

Essayez celui-ci, il semble fonctionner correctement.

Vous trouverez le fichier écrit dans votre dossier metatrader/tester/files après avoir backtesté cet expert.

Attention ! Je ne suis pas un programmeur, donc ce bug peut contenir des parties de code qui fonctionnent :)

//+------------------------------------------------------------------+
//|                                                        burns.mq4 |
//|                        Copyright 2012, MetaQuotes Software Corp. |
//|                                        https://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2012, MetaQuotes Software Corp."
#property link      "https://www.metaquotes.net"

/*
if this mode parameter is zero, the indicator values of the previous bar 
will be written to file, instead of their last known positon
*/
extern int mode=1;
int bartime;
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit(){
 Alert("Export "+Symbol()+" finished. Exported: "+Bars+" records");  
 return(0);
}
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start() {
 if(bartime==Time[0]) return(0);
 bartime=Time[0];
 double value[7];
 string file="export_"+Symbol()+"_"+Period()+".csv"; 
 int f=FileOpen(file,FILE_CSV|FILE_READ|FILE_WRITE,","); 
 if(f<0) {Alert("File opening error");return(0);}
 
 value[0]=Open[1];
 value[1]=High[1];
 value[2]=Low[1];
 value[3]=Close[1];
 
 if(mode!=0) {
  value[4]=lastfrup();
  value[5]=lastfrdn();
  value[6]=lastzz();
 }
 else {
  value[4]=iFractals(NULL,0,MODE_UPPER,1);
  value[5]=iFractals(NULL,0,MODE_LOWER,1);
  value[6]=iCustom(NULL,0,"ZigZag",12,5,3,0,1);
 }
 
 string sum=TimeToStr(Time[1],TIME_DATE|TIME_MINUTES);
 for(int j=0; j<7; j++) {
  sum=sum+","+DoubleToStr(value[j],Digits);
 }
 FileSeek(f,0,SEEK_END);
 FileWrite(f,sum);
 FileClose(f);
 return(0);
}
//+------------------------------------------------------------------+
double lastfrup() {
 for(int i=1; i<Bars-1; i++) {
  if(iFractals(NULL,0,MODE_UPPER,i)!=0) break;
 }
 return(iFractals(NULL,0,MODE_UPPER,i));
}
//+------------------------------------------------------------------+
double lastfrdn() {
 for(int i=1; i<Bars-1; i++) {
  if(iFractals(NULL,0,MODE_LOWER,i)!=0) break;
 }
 return(iFractals(NULL,0,MODE_LOWER,i));
}
//+------------------------------------------------------------------+
double lastzz() {
 for(int i=1; i<Bars-1; i++) {
  if(iCustom(NULL,0,"ZigZag",12,5,3,0,i)!=0) break;
 }
 return(iCustom(NULL,0,"ZigZag",12,5,3,0,i));
}