//+------------------------------------------------------------------+ //| Comment2.mq4 | //| Strator | //| k-v-p@yandex.ru | //+------------------------------------------------------------------+ #property copyright "Strator" #property link "k-v-p@yandex.ru" #property library //+------------------------------------------------------------------+ //| Ðàñøèðÿåò âîçìîæíîñòè ñòàíäàðòíîé ôóíêöèè Comment äëÿ âûâîäà | //| êîììåíòàðèåâ íà ãðàôèê. | //| Ïîìåùàåò êîììåíòàðèé str_text â çàäàííóþ ñòðîêó str_no íà ýêðàíå.| //+------------------------------------------------------------------+ int Comment2(string str_text, int str_no) { // ìàññèâ ñòðîê string str[]; // ïîëíîå èìÿ ôàéëà string file_name = Symbol() + Period() + "_" + "comment.dat"; // ñ÷èòàåì ñòðîêè èç ôàéëà â ìàññèâ ñòðîê int str_cnt = FileReadToStringArray(file_name, str); // åñëè ñòðîê â ìàññèâå íåäîñòàòî÷íî, óâåëè÷èì ðàçìåðíîñòü ìàññèâà if(str_cnt < str_no) ArrayResize(str, str_no); // óäàëèì èç íîâîé ñòðîêè ñèìâîëû ïåðåâîäà ñòðîêè, åñëè åñòü StringDeleteAllSubstr(str_text, "\n"); // ïîìåñòèì â ìàññèâ íîâóþ ñòðîêó str[str_no-1] = str_text; // ñîõðàíèì ñòðîêîâûé ìàññèâ â ôàéë str_cnt = FileWriteFromStringArray(file_name, str); // îòîáðàçèì ñòðîêè íà ýêðàíå string str_tmp = ""; for(int i = 0; i < str_cnt; i++) str_tmp = str_tmp + str[i] + "\n"; Comment(str_tmp); return(0); } //+------------------------------------------------------------------+ //| ÷òåíèå ôàéëà â ìàññèâ òèïà string | //+------------------------------------------------------------------+ int FileReadToStringArray(string file_name, string& str[]) { int file_str_cnt = 0; int file_id = FileOpen(file_name, FILE_CSV|FILE_READ|FILE_WRITE); if(file_id > 0) { //î÷èñòèì ìàññèâ ñòðîê, åñëè îí íå ïóñòîé if(ArraySize(str)!= 0) ArrayResize(str, 0); //çàïîëíèì ìàññèâ çíà÷åíèÿìè èç ôàéëà while(!FileIsEnding(file_id)) { file_str_cnt++; int arr_size = ArrayResize(str, file_str_cnt); if(arr_size == 0) break; str[file_str_cnt-1] = FileReadString(file_id); } FileClose(file_id); } else return(-1); return(file_str_cnt); } //+------------------------------------------------------------------+ //| çàïèñü ìàññèâà òèïà string â ôàéë | //+------------------------------------------------------------------+ int FileWriteFromStringArray(string file_name, string& str[]) { //êîëè÷åñòâî ñòðîê â ôàéëå int file_str_cnt = 0; //äåñêðèïòîð ôàéë int file_id = FileOpen(file_name, FILE_BIN|FILE_WRITE); //åñëè ôàéë îòêðûò óñïåøíî, ïðîèçâåñòè çàïèñü if(file_id > 0) { for(int i = 0; i < ArraySize(str); i++) { string str_tmp = str[i] + "\n"; int str_len = StringLen(str_tmp); str_len = FileWriteString(file_id, str_tmp, str_len); if(str_len >= 0) file_str_cnt++; } FileClose(file_id); } else return(-1); return(file_str_cnt); } //+------------------------------------------------------------------+ //| Óäàëåíèå èç ñòðîêè str âñåõ âõîæäåíèé ïîäñòðîêè substr | //+------------------------------------------------------------------+ string StringDeleteAllSubstr(string str, string substr) { string str_tmp = ""; string str_tmp1 = ""; string str_tmp2 = ""; int pos_substr = StringFind(str, substr); if(pos_substr >= 0) { if(pos_substr != 0) str_tmp1 = StringSubstr(str, 0, pos_substr); str_tmp2 = StringSubstr(str, pos_substr + StringLen(substr)); str_tmp = StringDeleteAllSubstr(str_tmp1 + str_tmp2, substr); } else str_tmp = str; return(str_tmp); } //+------------------------------------------------------------------+
Sample
Analysis
Market Information Used:
Indicator Curves created:
Indicators Used:
Custom Indicators Used:
Order Management characteristics:
Other Features:
Uses files from the file system
It reads information from a file
It writes information to file