문제 코드 - 페이지 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을 다운로드하고 싶습니다.
지그재그로 매개변수를 전달하지 않습니다. 기본값을 원하지 않으면 세 가지를 모두 전달하십시오. iCustom에 대한 자세한 설명 - MQL4 포럼
 

이것을 시도하십시오. 잘 작동하는 것 같습니다.

이 전문가를 백테스트 한 후 메타트레이더/테스터/파일 폴더에서 작성된 파일을 찾을 수 있습니다.

경고! 저는 프로그래머가 아니므로 이 버그에는 작동하는 코드 부분이 포함될 수 있습니다. :)

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