КОД ПРОБЛЕМЫ - страница 3

 
burnssss:
Я хочу загрузить исторические OHLC, фракталы и индикатор зигзаг, используя этот скрипт, но когда я открыл 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));
}
  1. Последний аргумент в FileOpen - это int, а не строка.
  2. Вы не можете записывать массивы с помощью FileWrite.
  3. Ранее упомянутый цикл
 
Я разработал код для загрузки данных OHLC, фрактала и зигзага, но из-за большого количества данных, в M1 нужно выбрать дату, с которой начинать загрузку.
 
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
//| 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:
Я разработал код для загрузки данных OHLC, фрактала и зигзага, но из-за большого количества данных, в M1 нужно выбрать дату, с которой начинать загрузку.
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));
}

Итак, что вам нужно сделать, чтобы не начинать писать с Bars-1

сделать условие, если время бара i > вашей даты, перейти к файлу 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 ....


Я не понимаю, потому что я дилетант в mql4. Не могли бы вы дать мне пример?

Мне нужно, чтобы вместо того, чтобы начинать загружать данные, например, с 1971 года, я начал загружать их в 2009 году.

 
burnssss:


Я не понимаю, потому что я дилетант в mql4. Не могли бы вы дать мне пример?

Мне нужно, чтобы вместо того, чтобы начать загружать данные, например, с 1971 года, начать загружать данные в 2009 году.


как вы получаете время свечи?

if(Time[i]>= D'2004.01.01 00:00') FileWrite(f,TimeToStr(Time,TIM.......                                        // New Year'2004
 
В следующей части кода что нужно изменить, чтобы получить зигзаг 13?

Я отметил, что я загружаю параметр зигзага 12 и хотел бы загрузить параметр зигзага 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));
}

Большое спасибо

 

Хорошо,

есть решение моего вопроса?

большое спасибо

 
burnssss: Я заметил, что параметр загрузки зигзага равен 12, и хотел бы загрузить параметр зигзага 13.
Вы не передаете в zigzag НИКАКИХ параметров. Если вам не нужны параметры по умолчанию, передайте все три. Подробное объяснение iCustom - Форум MQL4
 

Попробуйте этот, кажется, работает отлично.

Вы найдете записанный файл в папке metatrader/tester/files после бэктестинга этого эксперта.

Внимание! Я не программист, поэтому этот баг может содержать части рабочего кода :)

//+------------------------------------------------------------------+
//|                                                        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));
}
Причина обращения: