bleh
[mqlkit.git] / include / cotlib.mq4.orig
blob5a7e03074556fba39dd0c5e575ac9a30c8084232
1 //+------------------------------------------------------------------+\r
2 //|                                              Meta COT cotlib.mq4 |\r
3 //|   Copyright © 2009, C-4 (Vasiliy Sokolov, Russia, St.-Petersburg,|\r
4 //|                                      2009), All Rights Reserved. |\r
5 //|                                                   vs-box@mail.ru |\r
6 //+------------------------------------------------------------------+\r
7 #property copyright "Copyright © 2009, C-4 (Vasiliy Sokolov, SPb), All Rights Reserved."\r
8 #property link      "vs-box@mail.ru"\r
9 \r
10 // Âîçìîæíûå çíà÷åíèÿ ïàðàìåòðà "type" ôóíêöèè get_data()\r
11 #define OI                    0\r
12 #define NONCOMM_LONG          1\r
13 #define NONCOMM_SHORT         2\r
14 #define OPERATORS_LONG        3\r
15 #define OPERATORS_SHORT       4\r
16 #define NONREP_LONG           5\r
17 #define NONREP_SHORT          6\r
18 #define NET_NONCOMM           7\r
19 #define NET_OPERATORS         8\r
20 #define NET_NONREP            9\r
21 #define OI_NONCOMM_LONG       10\r
22 #define OI_NONCOMM_SHORT      11\r
23 #define OI_OPERATORS_LONG     12\r
24 #define OI_OPERATORS_SHORT    13\r
25 #define OI_NONREP_LONG        14\r
26 #define OI_NONREP_SHORT       15\r
27 #define WILLCO_NONCOMM        16\r
28 #define WILLCO_OPERATORS      17\r
29 #define WILLCO_NONREP         18\r
30 #define INDEX_OI              19\r
31 #define INDEX_NONCOMM         20\r
32 #define INDEX_OPERATORS       21\r
33 #define INDEX_NONREP          22\r
34 #define MOVEMENT_NONCOMM      23\r
35 #define MOVEMENT_OPERATORS    24\r
36 #define MOVEMENT_NONREP       25\r
37 #define MOVEMENT_OI           26\r
38 #define OI_NET_NONCOMM        27\r
39 #define OI_NET_OPERATORS      28\r
40 #define OI_NET_NONREP         29\r
43 extern bool   load_cot_file=false;\r
44 extern string cot_file="COT - U.S. DOLLAR CONCATENATE.csv";\r
45 extern string settings="settings.ini";\r
46 string name;\r
47 bool error=false;\r
48 int column;\r
49 bool DrawData=true;\r
50 bool LoadData=true;\r
53 //***************************************************************************************************************\r
54 //                                     ÒÀÁËÈÖÀ ÄÀÍÍÛÕ COT\r
55 int n_str;                    //ñîäåðæèò êîë-âî ñòðîê\r
57 // Ìàññèâ ñîäåðæèò äàòó\r
58 datetime realize_data[];\r
59 // Ìàññèâû ñîäåðæàò îáñîëþòíûå ïîçèöèè \r
60 double open_interest[];       // Îòêðûòûé èíòåðåñ\r
61 double noncomm_long[];        // Äëèííûå ïîçèöèè íåêîììåð÷åñêèõ òðåéäåðîâ\r
62 double noncomm_short[];       // Êîðîòêèå ïîçèöèè íåêîììåð÷åñêèõ òðåéäåðîâ\r
63 double noncomm_spread[];      // Ïîêðûòèå íåêîììåð÷åñêèõ òðåéäåðîâ\r
64 double operators_long[];      // Äëèííûå ïîçèöèè íåêîììåð÷åñêèõ òðåéäåðîâ (îïåðàòîðîâ)\r
65 double operators_short[];     // Êîðîòêèå ïîçèöèè íåêîììåð÷åñêèõ òðåéäåðîâ (îïåðàòîðîâ)\r
66 double nonrep_long[];         // Äëèííûå ïîçèöèè íåïîäîò÷åòíûõ òðåéäåðîâ (ïóáëèêè)\r
67 double nonrep_short[];        // Êîðîòêèå îïçèöèè íåïîäîò÷åòíûõ òðåéäåðîâ (ïóáëèêè)\r
69 // Ìàññèâû ñîäåðæàò ðåçóëüòàò äåëåíèÿ îáñîëþòíîé äëèííîé è êîðîòêîé ïîçèöèè êàæäîé èç òðåõ ãðóïï òðåéäåðîâ íà îòêðûòûé èíòåðåñ\r
70 double oi_noncomm_long[];     // Îòêðûòûé èíòåðåñ / Äëèííûå ïîçèöèè íåêîììåð÷åñêèõ òðåéäåðîâ\r
71 double oi_noncomm_short[];    // Îòêðûòûé èíòåðåñ / Êîðîòêèå ïîçèöèè íåêîììåð÷åñêèõ òðåéäåðîâ\r
72 double oi_operators_long[];   // Îòêðûòûé èíòåðåñ / Äëèííûå ïîçèöèè íåêîììåð÷åñêèõ òðåéäåðîâ (îïåðàòîðîâ)\r
73 double oi_operators_short[];  // Îòêðûòûé èíòåðåñ / Êîðîòêèå ïîçèöèè íåêîììåð÷åñêèõ òðåéäåðîâ (îïåðàòîðîâ)\r
74 double oi_nonrep_long[];      // Îòêðûòûé èíòåðåñ / Äëèííûå ïîçèöèè íåïîäîò÷åòíûõ òðåéäåðîâ (ïóáëèêè)\r
75 double oi_nonrep_short[];     // Îòêðûòûé èíòåðåñ / Êîðîòêèå îïçèöèè íåïîäîò÷åòíûõ òðåéäåðîâ (ïóáëèêè)\r
77 //Ìàññèâû ñîäåðæàò ðåçóëüòàò äåëåíèÿ ÷èñòîé ïîçèöèè êàæäîé èç òðåõ ãðóïï òðåéäåðîâ íà îòêðûòûé èíòåðåñ\r
78 //èñïîëüçóåòñÿ äëÿ ïîñòðîåíèÿ èíäåêñà WILLCO\r
79 double oi_net_noncomm[];\r
80 double oi_net_operators[];\r
81 double oi_net_nonrep[];\r
83 // Ìàññèâû ñîäåðæàò ÷èñòûå ïîçèöèè êîììåð÷åñêèõ òðåéäåðîâ, îïåðàòîðîâ è íå ïîäîò÷åòíîé ïóáëèêè\r
84 double net_noncomm[];         // ×èñòûå ïîçèöèè íåêîììåð÷åñêèõ òðåéäåðîâ\r
85 double net_operators[];       // ×èñòûå ïîçèöèè êîììåð÷åñêèõ òðåéäåðîâ\r
86 double net_nonrep[];          // ×èñòûå ïîçèöèè íåïîäîò÷åòíûõ òðåéäåðîâ\r
88 // Ìàññèâû ñîäåðæàò èíäåêñ ÷èñòûõ ïîçèöèé êàæäîé èç òðåõ ãðóïï\r
89 double index_oi[];            // Èíäåêñ îòêðûòîãî èíòåðåñà\r
90 double index_ncomm[];         // Èíäåêñ íåêîììåð÷åñêèõ òðåéäåðîâ\r
91 double index_operators[];     // Èíäåêñ êîììåð÷åñêèõ òðåéäåðîâ (îïåðàòîðîâ)\r
92 double index_nonrep[];        // Èíääåêñ íåïîäîò÷åòíûõ òðåéäåðîâ (ïóáëèêè)\r
94 // Ìàññèâû ñîäåðæàò ñòîõàñòè÷åñêèé îñöèëÿòîð âûñ÷èòàííûé èç îòíîøåíèÿ îòêðûòîãî èíòåðåñà ê ÷èñòîé ïîçèèöèè êàæäîé èç òðåõ ãðóïï\r
95 // Stohastic(OI/NET_POSITION)\r
96 double willco_ncomm[];        // \r
97 double willco_operators[];    //\r
98 double willco_nonrep[];       //\r
100 //MOVEMENT INDEX\r
101 double movement_oi[];\r
102 double movement_ncomm[];\r
103 double movement_operators[];\r
104 double movement_nonrep[];\r
105 //***********************************************************************************************************************************\r
107 //\r
108 bool init_data()\r
110    string data;\r
111    int handle_cotfile;\r
112    int str;\r
113    //settings_load();\r
114    settings_load();\r
115    handle_cotfile=FileOpen(cot_file,FILE_READ|FILE_CSV);\r
116    //handle_cotfile=FileOpen("COT - U.S. DOLLAR CONCATENATE.csv",FILE_READ|FILE_CSV);\r
117    if(handle_cotfile==-1){\r
118       Print("Íå óäàëîñü çàãðóçèòü ôàéë. Äàëüíåéøåå ïðîäîëæåíèå íåâîçìîæíî ", cot_file);\r
119       Print(GetLastError());\r
120       return(false);\r
121    }\r
122    while(FileIsEnding(handle_cotfile)==false){\r
123       data=FileReadString(handle_cotfile);\r
124       if(FileIsLineEnding(handle_cotfile)&&data!="")str++;\r
125    }\r
126    ArrayResize(realize_data,str);\r
127    \r
128    ArrayResize(open_interest,str);\r
129    ArrayResize(noncomm_long,str);\r
130    ArrayResize(noncomm_short,str);\r
131    ArrayResize(noncomm_spread,str);\r
132    ArrayResize(operators_long,str);\r
133    ArrayResize(operators_short,str);\r
134    ArrayResize(nonrep_long,str);\r
135    ArrayResize(nonrep_short,str);\r
136    \r
137    ArrayResize(oi_noncomm_long,str);\r
138    ArrayResize(oi_noncomm_short,str);\r
139    ArrayResize(oi_operators_long,str);\r
140    ArrayResize(oi_operators_short,str);\r
141    ArrayResize(oi_nonrep_long,str);\r
142    ArrayResize(oi_nonrep_short,str);\r
143    \r
144    ArrayResize(oi_net_noncomm,str);\r
145    ArrayResize(oi_net_operators,str);\r
146    ArrayResize(oi_net_nonrep,str);\r
147    \r
148    ArrayResize(net_noncomm,str);\r
149    ArrayResize(net_operators,str);\r
150    ArrayResize(net_nonrep,str);\r
151    \r
152    ArrayResize(index_oi,str);\r
153    ArrayResize(index_ncomm,str);\r
154    ArrayResize(index_operators,str);\r
155    ArrayResize(index_nonrep,str);\r
156    \r
157    ArrayResize(willco_ncomm,str);\r
158    ArrayResize(willco_operators,str);\r
159    ArrayResize(willco_nonrep,str);\r
160    \r
161    ArrayResize(movement_oi,str);\r
162    ArrayResize(movement_ncomm,str);\r
163    ArrayResize(movement_operators,str);\r
164    ArrayResize(movement_nonrep,str);\r
165    \r
166    FileClose(handle_cotfile);\r
167    return(true);\r
171 /*void settings_load()\r
173    int h_set, _column;\r
174    string set, sname;\r
175    if(load_cot_file==true)return;\r
176    h_set=FileOpen(settings,FILE_READ|FILE_CSV,";");\r
177    //FileOpen("\Temp\Cot_file.txt",FILE_WRITE,FILE_CSV);\r
178    if(h_set==-1)return;\r
179    while(FileIsEnding(h_set)==false){\r
180       set=FileReadString(h_set);\r
181       _column++;\r
182       if(set==Symbol()&&_column!=1){cot_file=sname;return;}\r
183       if(_column==2&&set!="")name=set;             // Âòîðàÿ êîëîíêà - æåëàåìîå íàçâàíèå èíäèêàòîðà\r
184       if(FileIsLineEnding(h_set)==true)_column=0;\r
185       if(_column==1)sname=set;\r
186       \r
187    }\r
188    FileClose(h_set);\r
189 }*/\r
191 // Íà ñåãîäíÿøíèé äåíü, åäèíñòâåííûé áðîêåð â Ðîññèè, êîòîðûé ïîääåðæèâàåò ïðàêòè÷åñêè âñå èíñòðóìåíòû\r
192 // ïîïàäàþùèå â îò÷åò òðåéäåðîâ ÿâëÿåòñÿ Broco Company. Ïîýòîìó ïîääåðæêà áðîêåðà âêëþ÷åíà â ïðîåêò.\r
193 // Ýòî îçíà÷àåò, ÷òî âàì íå íàäî áóäåò âûáèðàòü íàçâàíèå èíñòðóìåíòà, èç ñîòíè ôàéëîâ, âñå áóäåò ñäåëàíî\r
194 // àâòîìàòè÷åñêè!!!\r
195 void settings_load()\r
197    int h_set, _column;\r
198    string set, sname;\r
199    if(load_cot_file==true)return;\r
200    h_set=FileOpen(settings,FILE_READ|FILE_CSV,";");\r
201    //FileOpen("\Temp\Cot_file.txt",FILE_WRITE,FILE_CSV);\r
202    if(h_set==-1)return;\r
203    while(FileIsEnding(h_set)==false){\r
204       set=FileReadString(h_set);\r
205       _column++;\r
206       if(_column==1&&set!="")sname=set;\r
207       if(_column==2&&set!="")name=set;             // Âòîðàÿ êîëîíêà - æåëàåìîå íàçâàíèå èíäèêàòîðà\r
208       if(_column>2&&set!=""&&StringFind(Symbol(),set)==0){cot_file=sname;return;}\r
209       if(FileIsLineEnding(h_set)==true)_column=0;\r
210    }\r
213 void load_data()\r
215    datetime data_realize;\r
216    int handle_cotfile;\r
217    string data;\r
218    handle_cotfile=FileOpen(cot_file,FILE_READ|FILE_CSV, ";");\r
219    Print("Ôàéë íàéäåí");\r
220    while(FileIsEnding(handle_cotfile)==false){\r
221       data=FileReadString(handle_cotfile);\r
222       column++;\r
223       if(FileIsLineEnding(handle_cotfile)==true||FileIsEnding(handle_cotfile)==true){//column=12 - îáíóëÿåò ðàíüøå âðåìåíè\r
224         if(column==12)\r
225            nonrep_short[n_str]=StrToDouble(data);\r
226         column=0;\r
227         if(data!="")n_str++;\r
228       }\r
229       else{\r
230          switch(column){\r
231             case 2:\r
232                realize_data[n_str]=StrToTime(data);\r
233                break;\r
234             case 3:\r
235                open_interest[n_str]=StrToDouble(data);\r
236                //Print(open_interest[n_str]);\r
237                break;\r
238             case 4:\r
239                noncomm_long[n_str]=StrToDouble(data);\r
240                break;\r
241             case 5:\r
242                noncomm_short[n_str]=StrToDouble(data);\r
243                break;          \r
244             case 6:\r
245                noncomm_spread[n_str]=StrToDouble(data);\r
246                break;\r
247             case 7:\r
248                operators_long[n_str]=StrToDouble(data);\r
249                break;\r
250             case 8:\r
251                operators_short[n_str]=StrToDouble(data);\r
252                break;\r
253             case 11:\r
254                nonrep_long[n_str]=StrToDouble(data);\r
255                break;\r
256          }\r
257       } \r
258    }\r
259    FileClose(handle_cotfile);\r
260    Print("Ôàéë çàãðóæåí");\r
263 void count_data()\r
265    int    max,\r
266           min;\r
267    double delta;\r
268    \r
269    for(int i=0;i<n_str;i++){\r
270       index_oi[i]=EMPTY_VALUE;\r
271       index_ncomm[i]=EMPTY_VALUE;\r
272       index_operators[i]=EMPTY_VALUE;\r
273       index_nonrep[i]=EMPTY_VALUE;\r
274       willco_ncomm[i]=EMPTY_VALUE;\r
275       willco_operators[i]=EMPTY_VALUE;\r
276       willco_nonrep[i]=EMPTY_VALUE;\r
277       movement_ncomm[i]=EMPTY_VALUE;\r
278       movement_operators[i]=EMPTY_VALUE;\r
279       movement_nonrep[i]=EMPTY_VALUE;\r
280    }\r
281    for(i=0;i<n_str;i++){\r
282       if(open_interest[i]==0){\r
283          oi_noncomm_long[i]=0;\r
284          oi_noncomm_short[i]=0;\r
285          oi_operators_long[i]=0;\r
286          oi_operators_short[i]=0;\r
287          oi_nonrep_long[i]=0;\r
288          oi_nonrep_short[i]=0;\r
289       }\r
290       else{\r
291          oi_noncomm_long[i]=noncomm_long[i]/open_interest[i];\r
292          oi_noncomm_short[i]=noncomm_short[i]/open_interest[i];\r
293          oi_operators_long[i]=operators_long[i]/open_interest[i];\r
294          oi_operators_short[i]=operators_short[i]/open_interest[i];\r
295          oi_nonrep_long[i]=nonrep_long[i]/open_interest[i];\r
296          oi_nonrep_short[i]=nonrep_short[i]/open_interest[i];\r
297       }\r
298       \r
299       net_noncomm[i]=noncomm_long[i]-noncomm_short[i];\r
300       net_operators[i]=operators_long[i]-operators_short[i];\r
301       net_nonrep[i]=nonrep_long[i]-nonrep_short[i];\r
302       \r
303       if(open_interest[i]==0){\r
304          oi_net_noncomm[i]=0;\r
305          oi_net_operators[i]=0;\r
306          oi_net_nonrep[i]=0;\r
307       }\r
308       else{\r
309          oi_net_noncomm[i]=net_noncomm[i]/open_interest[i];\r
310          oi_net_operators[i]=net_operators[i]/open_interest[i];\r
311          oi_net_nonrep[i]=net_nonrep[i]/open_interest[i];\r
312       }  \r
313    }\r
314    \r
315    for(i=0;i<n_str-period;i++){  \r
316       \r
317       max=ArrayMaximum(open_interest,period,i);\r
318       min=ArrayMinimum(open_interest,period,i);\r
319       delta=open_interest[max]-open_interest[min];\r
320       if(delta==0)delta=1;\r
321       index_oi[i]=(open_interest[i]-open_interest[min])/delta*100;\r
322       \r
323       max=ArrayMaximum(net_noncomm,period,i);\r
324       min=ArrayMinimum(net_noncomm,period,i);\r
325       delta=net_noncomm[max]-net_noncomm[min];\r
326       if(delta==0)delta=1;\r
327       index_ncomm[i]=(net_noncomm[i]-net_noncomm[min])/delta*100;\r
328       \r
329       max=ArrayMaximum(net_operators,period,i);\r
330       min=ArrayMinimum(net_operators,period,i);\r
331       delta=net_operators[max]-net_operators[min];\r
332       if(delta==0)delta=1;\r
333       index_operators[i]=(net_operators[i]-net_operators[min])/delta*100;\r
334       \r
335       max=ArrayMaximum(net_nonrep,period,i);\r
336       min=ArrayMinimum(net_nonrep,period,i);\r
337       delta=net_nonrep[max]-net_nonrep[min];\r
338       if(delta==0)delta=1;\r
339       index_nonrep[i]=(net_nonrep[i]-net_nonrep[min])/delta*100;\r
340       \r
341       max=ArrayMaximum(oi_net_noncomm,period,i);\r
342       min=ArrayMinimum(oi_net_noncomm,period,i);\r
343       delta=oi_net_noncomm[max]-oi_net_noncomm[min];\r
344       if(delta==0)delta=1;\r
345       willco_ncomm[i]=(oi_net_noncomm[i]-oi_net_noncomm[min])/delta*100;\r
346       \r
347       max=ArrayMaximum(oi_net_operators,period,i);\r
348       min=ArrayMinimum(oi_net_operators,period,i);\r
349       delta=oi_net_operators[max]-oi_net_operators[min];\r
350       if(delta==0)delta=1;\r
351       willco_operators[i]=(oi_net_operators[i]-oi_net_operators[min])/delta*100;\r
352       \r
353       max=ArrayMaximum(oi_net_nonrep,period,i);\r
354       min=ArrayMinimum(oi_net_nonrep,period,i);\r
355       delta=oi_net_nonrep[max]-oi_net_nonrep[min];\r
356       if(delta==0)delta=1;\r
357       willco_nonrep[i]=(oi_net_nonrep[i]-oi_net_nonrep[min])/delta*100;\r
358    }\r
359    for(i=0;i<n_str-period-movement_index;i++){\r
360       movement_oi[i]=index_oi[i]-index_oi[i-movement_index];\r
361       movement_ncomm[i]=index_ncomm[i]-index_ncomm[i-movement_index];\r
362       movement_operators[i]=index_operators[i]-index_operators[i-movement_index];\r
363       movement_nonrep[i]=index_nonrep[i]-index_nonrep[i-movement_index];\r
364    }\r
367 // Âîçâðàùàåò îäíî èç çíà÷åíèé COT òàáëèöû îïðåäåëåííîå ïåðåìåííîé "type" äëÿ áàðà "bar"\r
368 double get_data(int type, int bar)\r
370    double data;\r
371    int i_data=get_cot(bar);\r
372    if(i_data==EMPTY_VALUE)return(EMPTY_VALUE);\r
373    switch (type){\r
374       case OI:\r
375          return(open_interest[i_data]);\r
376       case NONCOMM_LONG:\r
377          return(noncomm_long[i_data]+noncomm_spread[i_data]);\r
378          //return(noncomm_long[i_data]);\r
379       case NONCOMM_SHORT:\r
380          return(noncomm_short[i_data]+noncomm_spread[i_data]);\r
381          //return(noncomm_short[i_data]);\r
382       case OPERATORS_LONG:\r
383          return(operators_long[i_data]);\r
384       case OPERATORS_SHORT:\r
385          return(operators_short[i_data]);\r
386       case NONREP_LONG:\r
387          return(nonrep_long[i_data]);\r
388       case NONREP_SHORT:\r
389          return(nonrep_short[i_data]);\r
390       case NET_NONCOMM:\r
391          return(net_noncomm[i_data]);\r
392       case NET_OPERATORS:\r
393          return(net_operators[i_data]);\r
394       case NET_NONREP:\r
395          return(net_nonrep[i_data]);\r
396       case INDEX_OI:\r
397          return(index_oi[i_data]);\r
398       case INDEX_NONCOMM:\r
399          return(index_ncomm[i_data]);\r
400       case INDEX_OPERATORS:\r
401          return(index_operators[i_data]);\r
402       case INDEX_NONREP:\r
403          return(index_nonrep[i_data]);\r
404       case OI_NONCOMM_LONG:\r
405          return(oi_noncomm_long[i_data]);\r
406       case OI_NONCOMM_SHORT:\r
407          return(oi_noncomm_short[i_data]);\r
408       case OI_OPERATORS_LONG:\r
409          return(oi_operators_long[i_data]);\r
410       case OI_OPERATORS_SHORT:\r
411          return(oi_operators_short[i_data]);\r
412       case OI_NONREP_LONG:\r
413          return(oi_nonrep_long[i_data]);\r
414       case OI_NONREP_SHORT:\r
415          return(oi_nonrep_short[i_data]);\r
416       case WILLCO_NONCOMM:\r
417          return(willco_ncomm[i_data]);\r
418       case WILLCO_OPERATORS:\r
419          return(willco_operators[i_data]);\r
420       case WILLCO_NONREP:\r
421          return(willco_nonrep[i_data]);\r
422       case OI_NET_NONCOMM:\r
423          return(oi_net_nonrep[i_data]);\r
424       case OI_NET_OPERATORS:\r
425          return(oi_net_operators[i_data]);\r
426       case OI_NET_NONREP:\r
427          return(oi_net_nonrep[i_data]);\r
428       case MOVEMENT_NONCOMM:\r
429          return(movement_ncomm[i_data]);\r
430       case MOVEMENT_OPERATORS:\r
431          return(movement_operators[i_data]);\r
432       case MOVEMENT_NONREP:\r
433          return(movement_nonrep[i_data]);\r
434       case MOVEMENT_OI:\r
435          return(movement_oi[i_data]);\r
436    }\r
437    return(EMPTY_VALUE);\r
440 //Âîçâðàùàåò íîìåð ÿ÷åéêå â ìàññèâå, â êîòîðîì ýòè äàííûå õðàíÿòñÿ, âîçâðàùàåò çíà÷åíèå EMPTY_VALUE, åñëè íå óäàëîñü íàéòè áàð\r
441 int get_cot(int i)\r
443    datetime tbar=iTime(Symbol(),0,i);\r
444    for(int k=0;k<n_str;k++)\r
445       if(realize_data[k]<tbar)return(k);\r
446    return(EMPTY_VALUE);\r
449 // Âîçâðàùàåò áàð äëÿ êîòîðîãî èçâåñòíî ïîñëåäíåå çíà÷åíèå COT äàííûõ\r
450 int get_lastdata()\r
452    return(iBarShift(Symbol(),0,realize_data[n_str-1],false));\r
455 // Âîçâðàùàåò ñòðîêó áåç ðàñøèðåíèÿ è ïåðâûõ 6 ñèìâîëîâ (áûëî "COT - FileName.csv" ñòàëî "FileName")\r
456 string str_trim(string fname)\r
458    int strlen=StringLen(fname)-1;\r
459    int char;\r
460    string str;\r
461    for(int i=strlen;i>0;i--){\r
462       char=StringGetChar(fname,i);\r
463       if(char=='.'){\r
464          for(int b=6;b<i;b++)//ïîìåíÿòü íà b=0 åñëè íå òðåáóåòñÿ óäàëÿòü ïåðâûå 6 ñèìâîëîâ\r
465             str=str+CharToStr(StringGetChar(fname,b));\r
466          return(str);\r
467       }\r
468    }\r
469    return(fname);\r