SORUN KODU - sayfa 3

 
burnssss :
Bu scripti kullanarak tarihsel OHLC, fraktallar ve zikzak göstergesini indirmek istiyorum ama csv'yi açtığımda hiçbir bilgim yok.
Biri bana oradaki hatayı söyleyebilir mi?
 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'daki son argüman bir dize değil, bir int'dir.
  2. FileWrite kullanarak dizi yazamazsınız.
  3. Daha önce bahsedilen döngü
 
OHLC verilerini, fraktal ve zikzak indirmek için kod geliştirdim, ancak büyük miktarda veri nedeniyle, M1'de indirmenin başlayacağı tarihi seçecekti.
 
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
//| 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 verilerini, fraktal ve zikzak indirmek için kod geliştirdim, ancak büyük miktarda veri nedeniyle, M1'de indirmenin başlayacağı tarihi seçecekti.
 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));
}

Peki Bars-1'den yazmaya başlamamak için ne yapmanız gerekiyor?

zaman çubuğu i> tarihiniz filewrite ise bir koşul yapın ....

 
deVries :

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

FILEWRITE ....


anlamıyorum çünkü mql4'te amatörüm. Bana bir örnek verebilir misin?

İhtiyacım olan şey, örneğin 1971'den veri indirmeye başlamak yerine, 2009'da indirmeye başlamak.

 
burnssss :


anlamıyorum çünkü mql4'te amatörüm. Bana bir örnek verebilir misin?

İhtiyacım olan şey, örneğin 1971'den veri indirmeye başlamak yerine, 2009'da indirmeye başlamak.


bir mumun zamanını nasıl elde edersiniz?

 if (Time[i]>= D'2004.01.01 00:00' ) FileWrite (f,TimeToStr(Time,TIM.......                                         // New Year'2004
 
13'ün zikzağını almak için değişmesi gereken kodun aşağıdaki bölümünde?

İndirdiğim zikzak parametresinin 12 olduğunu ve zikzak parametresi 13'ü indirmek istediğimi not ediyorum.

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

Çok teşekkürler

 

İyi,

soruma bir çözüm?

çok teşekkürler

 
burnssss : İndirdiğim zikzak parametresinin 12 olduğunu ve zikzak parametresi 13'ü indirmek istediğimi not ediyorum
HİÇBİR parametreyi zikzağa geçirmiyorsunuz. Varsayılanları istemiyorsanız, üçünü de iletin. iCustom - MQL4 forumunun ayrıntılı açıklaması
 

Bunu deneyin, iyi çalışıyor gibi görünüyor.

Bu uzmanı geriye dönük test ettikten sonra, yazılı dosyayı metatrader/tester/files klasörünüzde bulacaksınız.

Uyarı! Ben bir programcı değilim, bu yüzden bu hata çalışan kod parçaları içerebilir. :)

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