2017-03-10 7 views
0

MQL4 및 MetaTrader4를 처음 사용합니다. CSV 파일 형식이 다음과 같습니다.CSV 값을 사용자 지정 지표로 플롯하는 방법은 무엇입니까?

2017.2.1 0:00, 120 
2017.2.1 0:05, 123 
2017.2.1 0:10, 125  

날짜 형식은 YYYY.M.D H:MM입니다. 다른 포럼을 검색했지만 도움을 얻을 수 없습니다. 나는 이것이 지표로 그려지기를 바랍니다. 데이터 읽기에 대한

+1

표시기가 틱마다 업데이트되므로 잠시 후에 새 파일을 받아야합니다. 괜찮아? 어쨌든, 당신의 작업은 두 가지로 나누어 져야합니다 : 파일을 읽고 파싱하여 올바른 시간 포맷을 얻고, 지시자를 플롯 팅 –

+0

@ 대니얼, 예. 정기적으로 파일에 데이터를 추가하겠습니다. 지금까지 나는 그것에 개월 데이터를 넣었다. 표시 할 데이터의 최소 시간 간격은 5 분입니다. – John

답변

1

: 위 획득 텍스트의 각 행 구문 분석에 대한

bool ReadFile(const string fileName, string &data){ 
    const int handle=FileOpen(fileName,FILE_READ|FILE_TXT); 
    if (handle==INVALID_HANDLE) return false; 
    string collector = ""; 
    int SIZE = (int)FileSize(handle); 
    int size=StringLen(collector); 
    while(size < SIZE && !IsStopped()){ 
     collector = StringConcatenate(collector, "\n", FileReadString(handle, SIZE - size)); 
     size = StringLen(collector); 
    } 
    FileClose(handle); 
    if (!FileDelete(fileName)) 
     Print("FileDelete(", fileName, ") FAILED"); // to delete this file after it is read 
    data = collector; 
    return true; 
    } 

: 데이터를 열 필요가 다음의 내용을 읽을 그 이후

MqlTime mql; 
    int st_pos=0,end_pos=0; 
    int year = 0; 
    end_pos = StringFind(line, ".", st_pos); 
    int year = StrToInteger(StringSubStr(line,st_pos+1,end_pos-st_pos-1)); 
    mql.year = year; 
    // same with month, day, hour and minute 
    datetime time = StructToTime(mql); - this is your date 

을 - iBarShift()를 사용하여 인덱스를 찾아 그 귀하의 날짜와 Buffer [i] = 같은 라인에서 파싱 된 값

+0

코드를 보내 주셔서 감사합니다. 나는 성공에 대해 당신에게 알려 드릴 것입니다. 솔직히 말하면 이것은 mt4에서의 첫 번째 프로그램이 될 것입니다. – John

+0

그러면 시간이 걸릴 것입니다.이 신나는 사람에게는 가장 쉬운 작업 인 것 같습니다. mql4에 오신 것을 환영합니다! –

+0

합계. 경사 선을 그려서 수직선을 얻고 싶었습니다. – John