//+------------------------------------------------------------------+ //| hst2csv.mq4 | //| Copyright © 2007, Kiriyenko Dmitriy | //| http://kiriyenko.moikrug.ru | //+------------------------------------------------------------------+ #property copyright "Copyright © 2007, Kiriyenko Dmitriy" #property link "http://kiriyenko.moikrug.ru" //---- #property show_inputs //---- #include <WinUser32.mqh> #include <stdlib.mqh> //---- #define FILE_NAME "hst2csv.ex4" #define WRONG_FILE_EXT "Íåâåðíûé òèï ôàéëà: ìîæíî çàäàâàòü òîëüêî *.hst ôàéëû" #define WRONG_FILE_EXT_HDR "Îøèáêà âõîäíûõ äàííûõ" //---- extern string input_file_name = "EURUSD5.hst"; extern bool input_file_in_history = true; //---- int hst_handle; int err; //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int start() { // îïðåäåëåíèå òèïà âõîäíîãî ôàéëà if(file_ext(input_file_name) != "hst") { MessageBox(WRONG_FILE_EXT,WRONG_FILE_EXT_HDR, MB_OK | MB_ICONSTOP); return(-3); } // îòêðûòèå âõîäíîãî ôàéëà if(input_file_in_history) hst_handle = FileOpenHistory(input_file_name, FILE_BIN | FILE_READ); else hst_handle = FileOpen(input_file_name, FILE_BIN | FILE_READ); err = GetLastError(); if(hst_handle < 0 || err > 0) return(error_out(err, "Îòêðûòèå âõîäíîãî ôàéëà")); // ÷òåíèå çàãîëîâêà FileSeek(hst_handle, 68, SEEK_SET); err = GetLastError(); if(err > 0) return(error_out(err, "Ñìåùåíèå âî âõîäíîì ôàéëå ê ñèìâîëó")); string hst_symbol = FileReadString(hst_handle, 12); int hst_period = FileReadInteger(hst_handle, LONG_VALUE); err = GetLastError(); if(err > 0) return (error_out(err, "×òåíèå çàãîëîâêà *.hst ôàéëà")); FileSeek(hst_handle, 64, SEEK_CUR); err = GetLastError(); if(err > 0) return(error_out(err, "Ñìåùåíèå âî âõîäíîì ôàéëå ê ïåðâîé êîòèðîâêå")); // ïîïûòêà îòêðûòü âûõîäíîé ôàéë string csv_file_name = StringConcatenate(hst_symbol, hst_period, ".csv"); int csv_handle = FileOpen(csv_file_name, FILE_CSV | FILE_WRITE); err = GetLastError(); if(csv_handle < 0 || err > 0) return(error_out(err,"Îòêðûòèå âûõîäíîãî ôàéëà")); // ïîêà âõîäíîé ôàéë íå çàêîí÷èòñÿ while(!FileIsEnding(hst_handle)) { err = GetLastError(); if(err > 0) return(error_out(err, "Ïðîâåðêà EOF äëÿ îñíîâíîãî öèêëà")); // ïîáàéòîâîå ÷òåíèå èç âõîäíîãî ôàéëà int bar_time = FileReadInteger(hst_handle, LONG_VALUE); double bar_open = FileReadDouble(hst_handle, DOUBLE_VALUE); double bar_low = FileReadDouble(hst_handle, DOUBLE_VALUE); double bar_high = FileReadDouble(hst_handle, DOUBLE_VALUE); double bar_close = FileReadDouble(hst_handle, DOUBLE_VALUE); double bar_volume = FileReadDouble(hst_handle, DOUBLE_VALUE); err = GetLastError(); if(err == 4099) break; // åñëè ôàéë çàêîí÷èëñÿ, çàâåðøàåì öèêë if(err > 0) return(error_out(err,"×òåíèå èç âõîäíîãî ôàéëà")); // ïðåîáðàçîâàíèå âðåìåíè â ñòðîêó string bar_time_str = StringConcatenate(TimeToStr(bar_time, TIME_DATE), ";", TimeToStr(bar_time, TIME_MINUTES)); // ïîñòðî÷íàÿ çàïèñü â âûõîäíîé ôàéë FileWrite(csv_handle, bar_time_str, bar_open, bar_high, bar_low, bar_close, bar_volume); err = GetLastError(); if(err > 0) return(error_out(err,"Çàïèñü â èñõîäÿùèé ôàéë")); } err = GetLastError(); if(err > 0) return(error_out(err, "Ïðîâåðêà EOF äëÿ îñíîâíîãî öèêëà")); // çàêðûòèå ôàéëîâ FileClose(hst_handle); FileClose(csv_handle); err = GetLastError(); if(err > 0) return(error_out(err, "Çàêðûòèå ôàéëîâ")); MessageBox(" ïàïêå òåðìèíàëà MT4: \Experts\files\ ñîçäàí ôàéë:\n\n" + csv_file_name, "Ïðåîáðàçîâàíèå ôàéëà óñïåøíî çàâåðøåíî", MB_OK | MB_DEFBUTTON1); err = GetLastError(); if(err > 0) return(error_out(err, "Âûâîä ñîîáùåíèÿ î çàâåðøåíèè ðàáîòû")); return(0); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int error_out(int err, string where) { if(err == 0) return; string message = StringConcatenate("Îøèáêà ¹", err, ":\"", ErrorDescription(err), "\"\n", "âîçíèêëà ïðè âûïîëíåíèè îïåðàöèè \"", where,"\""); string caption = StringConcatenate("Âîçíèêëà îøèáêà â ìîäóëå: \"", FILE_NAME, "\"!"); MessageBox(message,caption,MB_OK | MB_ICONSTOP); return(err); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ string file_ext(string file_name) { string result = StringSubstr(file_name, StringLen(input_file_name) - 3, 3); int err = GetLastError(); if(err > 0) return(error_out(err, "Îáðàáîòêà çàäàííîé ñòðîêè-èìåíè ôàéëà")); return (result); } //+------------------------------------------------------------------+
Sample
Analysis
Market Information Used:
Indicator Curves created:
Indicators Used:
Custom Indicators Used:
Order Management characteristics:
Other Features:
It opens Message Boxes to the user
Uses files from the file system
It reads information from a file
It writes information to file