Miscellaneous
0
Views
0
Downloads
0
Favorites
hst2csv
//+------------------------------------------------------------------+
//| 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);
}
//+------------------------------------------------------------------+
Comments
Markdown Formatting Guide
# H1
## H2
### H3
**bold text**
*italicized text*
[title](https://www.example.com)

`code`
```
code block
```
> blockquote
- Item 1
- Item 2
1. First item
2. Second item
---