PROBLEM-CODE - Seite 3

 
burnssss:
Ich möchte historische OHLC, Fraktale und Zigzag-Indikator, mit diesem Skript herunterladen, aber wenn ich die csv geöffnet, habe ich nicht alle Informationen.
Kann mir jemand sagen, wo der Fehler liegt?
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. Das letzte Argument in FileOpen ist ein int, kein String.
  2. Sie können mit FileWrite keine Arrays schreiben.
  3. Schleife zuvor erwähnt
 
Ich habe den Code entwickelt, um OHLC-Daten, Fraktal und Zickzack herunterzuladen, aber aufgrund der großen Menge an Daten, in M1 würde das Datum, von dem das Herunterladen zu starten wählen.
 
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
//| 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:
Ich habe den Code zum Herunterladen von OHLC-Daten, Fractal und Zigzag entwickelt, aber aufgrund der großen Menge an Daten, in M1 würde das Datum, von dem das Herunterladen beginnen zu wählen.
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));
}

Also, was Sie tun müssen, ist es nicht starten Sie das Schreiben von Bars-1

Machen Sie eine Bedingung, wenn Zeit bar i > Ihr Datum gehen filewrite....

 
deVries:

Also, was muss ich tun, damit ich nicht von Bares-1 schreiben muss?

eine Bedingung zu erfüllen, wenn die Zeitspanne i> tu cita FILEWRITE ....


Ich verstehe das nicht, denn ich bin Amateur in Mql4. Könnten Sie mir ein Beispiel geben?

Was ich brauche, ist, anstatt mit dem Herunterladen von Daten aus dem Jahr 1971 zu beginnen, das Herunterladen im Jahr 2009 zu starten

 
burnssss:


Ich verstehe das nicht, denn ich bin Amateur in mql4. Könnten Sie mir ein Beispiel geben?

Was ich brauche, ist, anstatt mit dem Herunterladen von Daten von 1971 zum Beispiel, starten Sie das Herunterladen im Jahr 2009


Wie erhalten Sie die Zeit einer Kerze?

if(Time[i]>= D'2004.01.01 00:00') FileWrite(f,TimeToStr(Time,TIM.......                                        // New Year'2004
 
Im folgenden Teil des Codes, die ändern sollte, um die Zickzack von 13 zu bekommen?

Ich stelle fest, dass ich Zickzack-Parameter herunterladen ist 12 und möchte die Zickzack-Parameter 13 herunterladen

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

Vielen Dank!

 

gut,

eine Lösung für meine Frage?

Ich danke Ihnen sehr

 
burnssss: Ich stelle fest, dass ich den Zickzack-Parameter 12 herunterlade und möchte den Zickzack-Parameter 13 herunterladen.
Sie übergeben KEINE Parameter an zigzag. Wenn Sie die Standardwerte nicht wollen, übergeben Sie alle drei. Ausführliche Erklärung von iCustom - MQL4 forum
 

Versuchen Sie dies, scheint gut zu funktionieren.

Sie finden die geschriebene Datei in Ihrem metatrader/tester/files-Ordner, nachdem Sie diesen Experten einem Backtest unter zogen haben.

Warnung! Ich bin kein Programmierer, daher kann dieser Fehler Teile des Arbeitscodes enthalten :)

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