CÓDIGO DEL PROBLEMA - página 3

 
burnssss:
Quiero descargar el histórico OHLC, los fractales y el indicador zigzag, utilizando este script, pero cuando abrí el csv, no tengo ninguna información.
¿Alguien puede decirme cuál es el error ahí?
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. El último argumento en FileOpen es un int, no una cadena.
  2. No puedes escribir arrays usando FileWrite.
  3. Bucle mencionado anteriormente
 
He desarrollado el código para descargar los datos de OHLC, fractal y zigzag, pero debido a la gran cantidad de datos, en M1 elegiría la fecha desde la que empezar a descargar.
 
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
//| 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:
He desarrollado el código para descargar los datos de OHLC, fractal y zigzag, pero debido a la gran cantidad de datos, en M1 elegiría la fecha desde la que empezar a descargar.
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));
}

Así que lo que tienes que hacer es no empezar a escribir desde Bares-1

hacer una condición si la barra de tiempo i > su fecha ir 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 ....


no entiendo porque soy aficionado en mql4. ¿Podría darme un ejemplo?

Lo que necesito es, en lugar de empezar a descargar los datos desde 1971 por ejemplo, empezar a descargar en 2009

 
burnssss:


no entiendo porque soy aficionado en mql4. ¿Podría darme un ejemplo?

Lo que necesito es que en lugar de empezar a descargar los datos desde 1971 por ejemplo, empezar a descargar en 2009


¿como se obtiene el tiempo de una vela?

if(Time[i]>= D'2004.01.01 00:00') FileWrite(f,TimeToStr(Time,TIM.......                                        // New Year'2004
 
En la siguiente parte del código que debe cambiar para obtener el zigzag de 13?

Observo que el parámetro del zigzag que descargo es el 12 y me gustaría descargar el parámetro del 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));
}

Muchas gracias

 

Bien,

¿alguna solución a mi pregunta?

muchas gracias

 
burnssss: Observo que el parámetro de descarga de zigzag es 12 y me gustaría descargar el parámetro de zigzag 13
No estás pasando NINGÚN parámetro a zigzag. Si no quieres los valores por defecto, pasa los tres. Explicación detallada de iCustom - Foro MQL4
 

Pruebe este, parece que funciona bien.

Usted encontrará el archivo escrito en su carpeta metatrader/tester/files después de backtesting este experto.

¡Advertencia! No soy un programador, por lo que este error puede contener partes de código de trabajo. :)

//+------------------------------------------------------------------+
//|                                                        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));
}
Razón de la queja: