Miscellaneous
1
Views
0
Downloads
0
Favorites
!Control
//+------------------------------------------------------------------+
//| Dupel.mq4 |
//| Copyright © 2009, Ñåðãååâ Àëåêñåé |
//| mailto: profy.mql@gmail.com |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2009, Ñåðãååâ Àëåêñåé"
#property link "mailto: profy.mql@gmail.com"
int i, j, type, w;
string name, st, var;
int obj, fo;
double d;
bool b, bNeedUpdate;
int gType, sType;
string gText, sText;
double gProp[232], sProp[232];
string names[1000];
//------------------------------------------------------------------
int start()
{
while(!IsStopped())
{
Sleep(1000);
bNeedUpdate=false;
//ñîõðàíÿåì
var="DupelSync_"+Symbol()+Period();
if (!GlobalVariableCheck("DupelSync")) GlobalVariableSet("DupelSync", 0); // ñîçäà¸ì, åñëè íåò
if (!GlobalVariableCheck("DupelSync_"+Symbol()+Period())) GlobalVariableSet("DupelSync_"+Symbol()+Period(), -1); // ñîçäà¸ì, åñëè íåò
if (GlobalVariableGet(var)>0) // åñëè ýòà âàëþòà ïèñàòåëü
{
Comment("writter");
if (GlobalVariableSetOnCondition("DupelSync", 1, 0))
{
obj=FileOpen("DupelSync.txt", FILE_CSV|FILE_WRITE);
if (obj<0) { Print("Íå ñìîãëè çàïèñàòü!"); GlobalVariableSet("DupelSync", 0); continue; }
FileSeek(obj, 0, SEEK_SET);
for (i=0; i<ObjectsTotal(); i++)
{
name=ObjectName(i);
if (ObjectFind(name)!=0) continue; // áåð¸ì òîëüêî ãëàâíîå îêíî
FileWrite(obj, name); // ñîõðàíèëè èìÿ
FileWrite(obj, ObjectType(name)); // ñîõðàíèëè òèï
FileWrite(obj, ObjectDescription(name)); // ñîõðàíèëè îïèñàíèå
for (j=0; j<=16; j++) FileWrite(obj, DoubleToStr(ObjectGet(name, j), Digits));
for (j=100; j<=103; j++) FileWrite(obj, DoubleToStr(ObjectGet(name, j), Digits));
for (j=200; j<=203; j++) FileWrite(obj, DoubleToStr(ObjectGet(name, j), Digits));
for (j=210; j<=231; j++) FileWrite(obj, DoubleToStr(ObjectGet(name, j), Digits));
}
FileClose(obj);
GlobalVariableSet("DupelSync", 0);
}
}
if (GlobalVariableGet(var)<=0) // åñëè ýòà âàëþòà ÷èòàòåëü
{
Comment("lister");
if (GlobalVariableSetOnCondition("DupelSync", 1, 0))
{
obj=FileOpen("DupelSync.txt", FILE_CSV|FILE_READ);
if (obj<0) { Print("íå ñìîãëè îòêðûòü"); GlobalVariableSet("DupelSync", 0); continue; }
// ñðàâíèâàåì íàëè÷èå îáúåêòîâ
w=0;
FileSeek(obj, 0, SEEK_SET);
while (!FileIsEnding(obj)) // ÷èòàåì äàííûå îáúåêòîâ èç ôàéëà
{
names[w]=FileReadString(obj); if (names[w]=="") break;
w++;
st=FileReadString(obj); // òèï îáúåêòà
st=FileReadString(obj); // òåêñò
for (j=0; j<=16; j++) st=FileReadString(obj); for (j=100; j<=103; j++) st=FileReadString(obj);
for (j=200; j<=203; j++) st=FileReadString(obj); for (j=210; j<=231; j++) st=FileReadString(obj);
}
// ïðîõîäèì ïî òåêóùèì è ñðàâíèâàåì íàëè÷èå îáúåêòîâ
for (i=0; i<ObjectsTotal(); i++)
{
b=true;
name=ObjectName(i); // ïîëó÷èëè èìÿ
if (ObjectFind(name)>0) continue; // åñëè îáúåêò íå íà ãëàâíîì ãðàôèêå, òî ïðîïóñêàåì
for(j=0; j<w; j++) if (name==names[j]) b=false; // åñëè íàøëè îáúåêò, òî ïðîïóñêàåì
if (b) { ObjectsDeleteAll(0, -1); bNeedUpdate=true; break; } // óäàëÿåì âñå ëèøíèå îáúåêòû
}
// òåïåðü êîïèðóåì ñâîéñòâà
FileSeek(obj, 0, SEEK_SET);
while (!FileIsEnding(obj)) // ÷èòàåì äàííûå îáúåêòîâ èç ôàéëà
{
b=false;
name=FileReadString(obj); if (name=="") break; // èìÿ îáúåêòà
gType=StrToInteger(FileReadString(obj)); // òèï îáúåêòà
gText=FileReadString(obj); // òåêñò îáúåêòà
for (j=0; j<=16; j++) gProp[j]=StrToDouble(FileReadString(obj)); for (j=100; j<=103; j++) gProp[j]=StrToDouble(FileReadString(obj));
for (j=200; j<=203; j++) gProp[j]=StrToDouble(FileReadString(obj)); for (j=210; j<=231; j++) gProp[j]=StrToDouble(FileReadString(obj));
if (ObjectFind(name)<0) { ObjectCreate(name, gType, 0, 0, 0); b=true; bNeedUpdate=true; }
else
{
// áåð¸ì äàííûå
sType=ObjectType(name); // òèï îáúåêòà
sText=ObjectDescription(name); // òåêñò îáúåêòà
for (j=0; j<=16; j++) sProp[j]=ObjectGet(name, j); for (j=100; j<=103; j++) sProp[j]=ObjectGet(name, j);
for (j=200; j<=203; j++) sProp[j]=ObjectGet(name, j); for (j=210; j<=231; j++) sProp[j]=ObjectGet(name, j);
if (IsDifObject()) { b=true; bNeedUpdate=true; }// åñëè îáúåêòû îòëè÷àþòñÿ, òî áóäåì îáíîâëÿòü
}
if (b)
{
ObjectSetText(name, gText);
for (j=0; j<=16; j++) ObjectSet(name, j, gProp[j]); for (j=100; j<=103; j++) ObjectSet(name, j, gProp[j]);
for (j=200; j<=203; j++) ObjectSet(name, j, gProp[j]); for (j=210; j<=231; j++) ObjectSet(name, j, gProp[j]);
}
}
FileClose(obj); // çàêðûëè ôàéë
GlobalVariableSet("DupelSync", 0); // ðàçðåøèëè ðàáîòó ñ ôàéëîì
if (bNeedUpdate) WindowRedraw(); // ïåðåðèñîâàëè
}
}
}
return(0);
}
//+------------------------------------------------------------------+
bool IsDifObject()
{
int j;
if (gType!=sType) return (true);
if (gText!=sText) return (true);
for (j=0; j<=16; j++) if (gProp[j]!=sProp[j]) return (true);
for (j=100; j<=103; j++) if (gProp[j]!=sProp[j]) return (true);
for (j=200; j<=203; j++) if (gProp[j]!=sProp[j]) return (true);
for (j=210; j<=231; j++) if (gProp[j]!=sProp[j]) return (true);
}
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
---