초보자의 질문 MQL4 MT4 MetaTrader 4 - 페이지 154

 
nidves 첫째, 코드로 메시지 형식을 올바르게 지정하면 이해하기가 매우 어렵습니다. 둘째, 뉴스 파일의 구조를 보고 싶습니다. 그렇지 않으면 어떤 데이터가 어디에 사용되는지 명확하지 않습니다.
 

가장 먼저 눈에 들어오는 것은 어드바이저를 일반 스크립트로 사용한다는 점입니다. 차이점은 설명서를 읽으십시오. 어드바이저가 아닌 작업에 맞는 스크립트입니다!

둘째 , 왜 이 디자인을 사용하는가?

   for (count= 1 ; count<=countstr; count++)
  {
   //----
   //----  
   if (count>=countstr) break ;
  }

그렇다면 문제의 근원은 어디에 있습니까?

 void CreatFile()
   {
     string Filepatch="Analyse news\\"+" Symbol "+"_"+ IntegerToString (periodMT)+".csv";
     Comment ("Creat a new file");
     int file= FileOpen (Filepatch, FILE_WRITE | FILE_CSV );
     FileWrite (file, " Symbol "," Period ","News","Data Time "," Open "," High "," Low "," Close ");
    
     int   bar_index= iBarShift (symbolMT,periodMT,DateNews[count- 1 ]); 
//Чему равен в этот момент count? 
//Для чего нужен был массив событий если в обработку попадает только одно событие?
//Функция iBarShift (так как вы используете) возвращает либо номер бара по времени либо ближайший номер бара если в истории есть пропуски 
//Внимательно почитайте описание 
     int   countBar=bar_index;
    
     for (count= 1 ; count<=countstr; count++)
    {
    countBar--;
    
     FileWrite (file,symbolMT,periodMT,NameNews[count- 1 ],DateNews[count- 1 ],
    
     DoubleToStr ( iOpen (symbolMT,periodMT,countBar))

    );
    }
     FileClose (file);
     ExpertRemove ();
   }

자, 가장 간단한 프로그램에서 마지막으로 아주 잘 한 것, 이 프로그램에서 원하는 것을 설명하고 차근차근 스크립트를 아름답게 작성해 봅시다!

 
Vitaly Gorbunov :

가장 먼저 눈에 들어오는 것은 어드바이저를 일반 스크립트로 사용한다는 점입니다. 차이점은 설명서를 읽으십시오. 어드바이저가 아닌 작업에 맞는 스크립트입니다!

둘째 , 왜 이 디자인을 사용하는가?

그렇다면 문제의 근원은 어디에 있습니까?

자, 가장 간단한 프로그램에서 마지막으로 아주 잘 한 것, 이 프로그램에서 원하는 것을 설명하고 차근차근 스크립트를 아름답게 작성해 봅시다!

비탈리님, 답변 감사합니다!

1) 대본은 이해하고 노력하겠습니다.

2) 모든 것이 간단합니다. for 루프를 중단합니다.

3) 특정 날짜 및 시간에 특정 도구 + 시간대, 특정 뉴스의 시세를 업로드할 전문가 고문 또는 스크립트를 만들어야 합니다.

파일 쓰기의 최종 결과는 다음과 같아야 합니다.

상징 기간 소식 날짜 시간 열려 있는 높은 낮은 닫다
GBPUSD 5 캐나다 핵심 소비자 물가 지수 (MoM) 2018년 1월 26일 16:30:00 0.00000000 0.00000000 0.00000000 0.00000000
GBPUSD 5 캐나다 핵심 소비자 물가 지수(MoM) 2017년 12월 21일 15:30:00 0.00000000 0.00000000 0.00000000 0.00000000
GBPUSD 5 캐나다 핵심 소비자 물가 지수(MoM) 2017년 11월 17일 15:30:00 0.00000000 0.00000000 0.00000000 0.00000000
GBPUSD 5 캐나다 핵심 소비자 물가 지수(MoM) 2017년 10월 20일 15:30:00 0.00000000 0.00000000 0.00000000 0.00000000

다른 악기 + 기간 + 뉴스 및 날짜도 마찬가지입니다.

그러나 한 가지 주의 사항이 있습니다. 업로드가 60분 단위로 진행되는 경우 따옴표는 16:00 및 15:00에 해당해야 합니다.

뉴스 시간이 14:45이면 따옴표는 시간과 일치해야 합니다.

1분 - 14:45

5분 - 14:45

15분 - 14:45

30분 - 14:30

60분 - 14:00

내가 나를 분명히 표현했으면 좋겠다. 감사해요

 

이 주기를 다시 보십시오! count 변수는 for 문 자체에 의해서만 변경되므로 if는 이 루프에서 중복됩니다.

이제 데이터를 처리하는 방법을 정의해 보겠습니다. 뉴스 파일에서 뉴스 매개변수를 읽고 데이터를 처리하고 인용 파일에 쓰는 것이 가장 논리적인 것 같습니다. 하나의 레코드를 위해 배열을 다시 실행하기 위해 뉴스 배열을 수집하는 것은 어떻게 든 합리적이지 않으며 배열을 처리할 때 인덱스와 관련된 많은 오류를 범할 수 있는 경우가 매우 많습니다.

 
Vitaly Gorbunov :

이 주기를 다시 보십시오! count 변수는 for 문 자체에 의해서만 변경되므로 if는 이 루프에서 중복됩니다.

이제 데이터를 처리하는 방법을 정의해 보겠습니다. 뉴스 파일에서 뉴스 매개변수를 읽고 데이터를 처리하고 인용 파일에 쓰는 것이 가장 논리적인 것 같습니다. 하나의 레코드를 위해 배열을 다시 실행하기 위해 뉴스 배열을 수집하는 것은 어떻게 든 합리적이지 않으며 배열을 처리할 때 인덱스와 관련된 많은 오류를 범할 수 있는 경우가 매우 많습니다.

내 말은, 미리 따옴표가 있는 파일을 만들고 파일에 뉴스 매개변수를 추가하시겠습니까?

 
nidves :

내 말은, 미리 따옴표가 있는 파일을 만들고 파일에 뉴스 매개변수를 추가하시겠습니까?

당신은 나를 오해했습니다. 우리는 뉴스 파일에서 읽고 처리하고 즉시 인용 파일에 쓰는 등 전체 뉴스 파일을 처리할 때까지 계속합니다!
 
Vitaly Gorbunov :
당신은 나를 오해했습니다. 우리는 뉴스 파일에서 읽고 처리하고 즉시 인용 파일에 쓰는 등 전체 뉴스 파일을 처리할 때까지 계속합니다!
그래서 배열을 통해서만 하려고 합니다. 어떻게 그런 코드를 작성하시겠습니까?
 
nidves :
그래서 배열을 통해서만 하려고 합니다. 어떻게 그런 코드를 작성하시겠습니까?
필요하지 않은 곳에 배열을 사용하는 이유는 무엇입니까? 코드가 단순할수록 실수할 가능성이 줄어듭니다!
 
Vitaly Gorbunov :
필요하지 않은 곳에 배열을 사용하는 이유는 무엇입니까? 코드가 단순할수록 실수할 가능성이 줄어듭니다!

이 코드를 통해 배열 작업을 배우고 있습니다. 결국, 원칙적으로 작업은 어렵지 않습니다.

OpenSymbol  [count- 1 ]= iOpen (symbolMT,periodMT,numberBar);

"열기" 따옴표는 이미 위의 배열에 저장되어 있습니다. 따라서 이 배열에서 내가 필요로 하는 날짜의 인용문을 꺼내기만 하면 됩니다.

 
nidves :

이 코드를 통해 배열 작업을 배우고 있습니다. 결국, 원칙적으로 작업은 어렵지 않습니다.

"열기" 따옴표는 이미 위의 배열에 저장되어 있습니다. 따라서 이 배열에서 내가 필요로 하는 날짜의 인용문을 꺼내기만 하면 됩니다.

저는 지금 출발합니다. 월요일에 돌아올 것입니다. 이해에 관심이 있으시면 저를 친구로 추가하고 포럼을 막히지 않고 이야기합시다.