Miscellaneous
0
Views
0
Downloads
0
Favorites
fromCSV_OnGraph
//+----------------------------------------------------------------------------+
//| fromRepOnGraph.mq4 |
//| Êèì Èãîðü Â. aka KimIV |
//| http://www.kimiv.ru |
//| |
//| 17.02.2006 Ñêðèïò äëÿ ïåðåíîñà ñäåëîê èç îò÷¸òà íà ãðàôèê. |
//| Carrying the Deals from Report on Graph. |
//| Ñêðèïò âûïîëíÿåò ÷òåíèå ñäåëîê èç ôàéëà ñòàíäàðíîãî îò÷¸òà òåñòåðà è |
//| îòîáðàæàåò èõ â âèäå ðàçíîöâåòíûõ ïðÿìîóãîëüíèêîâ èëè ëèíèé. |
//| 16.06.2007 Ïîääåðæêà áèëäà 204 ÌÒ4. |
//| 10.02.2010 Òåïåðü ñêðèïò íå ïðèâÿçàí ê êàêîìó ëèáî áèëäó. |
//| Èìïîðò ïðîèçâîäèòñÿ èç ôàéëà csv. |
//+----------------------------------------------------------------------------+
#property copyright "Êèì Èãîðü Â. aka KimIV, modifyed by Evgeniy Trofimov"
#property link "http://www.kimiv.ru"
#property show_inputs
extern string FileName = "StrategyTester.csv";
extern int CountColumns = 14;
extern bool DeleteOldObjects = True; // Óäàëÿòü ñòàðûå îáúåêòû
extern string _P_Objects = "---------- Ïàðàìåòðû îáúåêòîâ";
extern int TypeObjects = 1; // Òèï îáúåêòîâ (0-ïðÿìîóã. 1-ëèíèÿ)
extern color clObjBuy = Aqua; // Öâåò ïðèáûëüíûõ ïîêóïîê
extern color clObjBuyLoss = Blue; // Öâåò óáûòî÷íûõ ïîêóïîê
extern color clObjSell = Salmon; // Öâåò ïðèáûëüíûõ ïðîäàæ
extern color clObjSellLoss = Red; // Öâåò óáûòî÷íûõ ïðîäàæ
extern string _P_Arrows = "---------- Ïàðàìåòðû óêàçàòåëåé";
extern bool ShowArrow = True; // Ïîêàçûâàòü óêàçàòåëè
extern int KodArrowBuy = 241; // Êîä óêàçàòåëÿ ïîêóïêè
extern int OffSetArrowBuy = -20; // Ñìåùåíèå óêàçàòåëÿ ïîêóïêè
extern color clArrowBuy = Blue; // Öâåò óêàçàòåëÿ ïîêóïêè
extern int KodArrowSell = 242; // Êîä óêàçàòåëÿ ïðîäàæè
extern int OffSetArrowSell = 20; // Ñìåùåíèå óêàçàòåëÿ ïðîäàæè
extern color clArrowSell = Red; // Öâåò óêàçàòåëÿ ïðîäàæè
extern string _P_Text = "---------- Ïàðàìåòðû òåêñòà";
extern bool ShowTextBalance = True; // Ïîêàçûâàòü òåêñò áàëàíñà
extern int OffSetText = 1000; // Ñìåùåíèå òåêñòà
extern int SizeText = 9; // Ðàçìåð òåêñòà
extern color clTextProfit = Green; // Öâåò ñóììû ïðèáûëè
extern color clTextLoss = Red; // Öâåò ñóììû óáûòêà
extern color clTextBalans = Green; // Öâåò ñóììû áàëàíñà
//------- Ãëîáàëüíûå ïåðåìåííûå -----------------------------------------------+
bool frogPrevOP[]; // Òèï ïðåäûäóùåé îïåðàöèè
int frogBalance = 0;
string frogNameObjLine = "LDeal"; // Íàèìåíîâàíèÿ îáúåêòîâ ËÈÍÈß
string frogNameObjRect = "RDeal"; // Íàèìåíîâàíèÿ îáúåêòîâ ÏÐßÌÎÓÃÎËÜÍÈÊ
//+----------------------------------------------------------------------------+
//| script program start function |
//+----------------------------------------------------------------------------+
//Íåîáõîäèìî ðàñïîëîæèòü ñòîëáöû â ñëåäóþùåì ïîðÿäêå:
//0-Íîìåð ïîçèöèè
//1-Äàòà îòêðûòèÿ (16 ñèìâîëîâ)
//2-Òèï ñäåëêè (sell èëè buy)
//3-Ëîò
//4-Ñèìâîë
//5-Öåíà îòêðûòèÿ
//6-Stop Loss
//7-Take Profit
//8-Äàòà çàêðûòèÿ (16 ñèìâîëîâ)
//9-Öåíà çàêðûòèÿ
//10-Êîìèññèÿ
//11-Íàëîãè
//12-Ñâîï
//13-Ïðèáûëü
void start() {
datetime dt;
double pp;
int or, pos;
string op, str;
string blablabla[];
int ÍîìåðÑòîëáöà;
ArrayResize(blablabla,CountColumns);
int fh=FileOpen(FileName, FILE_CSV|FILE_READ);
if (fh>0) {
if (DeleteOldObjects) ObjectsDeleteAll();
while (!FileIsEnding(fh)) {
ÍîìåðÑòîëáöà=0;
while (!FileIsEnding(fh) && ÍîìåðÑòîëáöà<CountColumns) { //Ñ÷èòûâàåì 14 ñòîëáöîâ
blablabla[ÍîìåðÑòîëáöà]=FileReadString(fh);
ÍîìåðÑòîëáöà++;
}
if(blablabla[4]==Symbol()){
or=StrToInteger(blablabla[0]);//Íîìåð ïîçèöèè
dt=StrToTime(blablabla[1]);//Äàòà îòêðûòèÿ
op=blablabla[2];//Òèï ñäåëêè (sell èëè buy)
pp=StrToDouble(blablabla[5]);//Öåíà îòêðûòèÿ
DrawOrder(dt, op, or, pp);
dt=StrToTime(blablabla[8]);//Äàòà çàêðûòèÿ (16 ñèìâîëîâ)
pp=StrToDouble(blablabla[9]);//Öåíà çàêðûòèÿ
DrawOrder(dt, op, or, pp);
}
}//Ñëåäóþùàÿ ñòðîêà
FileClose(fh);
} else Print("Îøèáêà îòêðûòèÿ ôàéëà îò÷¸òà "+FileName);
Comment("");
}
//+----------------------------------------------------------------------------+
void DrawOrder(datetime dt, string op, int or, double pp){
int ko;
ko=ArraySize(frogPrevOP);
if (ko<or) ko=ArrayResize(frogPrevOP, or);
Comment("Ïîçèöèÿ: "+ko);
switch (TypeObjects) {
case 0: SetPropRectangle(dt, op, or, pp); break;
default: SetPropLines(dt, op, or, pp); break;
}
if (ShowArrow) SetPropArrow(dt, op, or, pp);
if (ShowTextBalance) SetPropText(dt, op, or, pp);
}//DrawOrder
//+----------------------------------------------------------------------------+
//| Óñòàíîâêà ñâîéñòâ îáúåêòà ÓÊÀÇÀÒÅËÜ |
//| Ïàðàìåòðû: |
//| dt - äàòà, âðåìÿ |
//| op - îïåðàöèÿ |
//| or - íîìåð îðäåðà (îáúåêòà) |
//| pp - öåíà |
//+----------------------------------------------------------------------------+
void SetPropArrow(datetime dt, string op, int or, double pp)
{
string no="ADeal";
if (op=="buy" || op=="sell")
{
if (ObjectFind(no+or)<0) {
ObjectCreate(no+or, OBJ_ARROW, 0, 0,0);
ObjectSet(no+or, OBJPROP_TIME1, dt);
if (op=="buy")
{
ObjectSet(no+or, OBJPROP_PRICE1 , pp+OffSetArrowBuy*Point);
ObjectSet(no+or, OBJPROP_COLOR , clArrowBuy);
ObjectSet(no+or, OBJPROP_ARROWCODE, KodArrowBuy);
}
if (op=="sell")
{
ObjectSet(no+or, OBJPROP_PRICE1 , pp+OffSetArrowSell*Point);
ObjectSet(no+or, OBJPROP_COLOR , clArrowSell);
ObjectSet(no+or, OBJPROP_ARROWCODE, KodArrowSell);
}
}
}
}
//+----------------------------------------------------------------------------+
//| Óñòàíîâêà ñâîéñòâ îáúåêòà ËÈÍÈß ÒÐÅÍÄÀ |
//| Ïàðàìåòðû: |
//| dt - äàòà, âðåìÿ |
//| op - îïåðàöèÿ |
//| or - íîìåð îðäåðà (îáúåêòà) |
//| pp - öåíà |
//+----------------------------------------------------------------------------+
void SetPropLines(datetime dt, string op, int or, double pp) {
double p1, p2;
string no=frogNameObjLine;
if (op=="buy" || op=="sell") {
if (ObjectFind(no+or)<0) {
ObjectCreate(no+or, OBJ_TREND, 0, 0, 0, 0,0);
ObjectSet(no+or, OBJPROP_TIME1 , dt);
ObjectSet(no+or, OBJPROP_PRICE1, pp);
if (op=="buy") frogPrevOP[or-1]=True; else frogPrevOP[or-1]=False;
} else {
ObjectSet(no+or, OBJPROP_TIME2 , dt);
ObjectSet(no+or, OBJPROP_PRICE2, pp);
}
}
if (op=="buy") ObjectSet(no+or, OBJPROP_COLOR, clObjBuy);
if (op=="sell") ObjectSet(no+or, OBJPROP_COLOR, clObjSell);
ObjectSet(no+or, OBJPROP_RAY , False);
p1=ObjectGet(no+or, OBJPROP_PRICE1);
p2=ObjectGet(no+or, OBJPROP_PRICE2);
if (p1!=0 && p2!=0)
{
if (frogPrevOP[or-1])
{
if (p1>p2) ObjectSet(no+or, OBJPROP_COLOR, clObjBuyLoss);
}
if (!frogPrevOP[or-1])
{
if (p1<p2) ObjectSet(no+or, OBJPROP_COLOR, clObjSellLoss);
}
}
}
//+----------------------------------------------------------------------------+
//| Óñòàíîâêà ñâîéñòâ îáúåêòà ÏÐßÌÎÓÃÎËÜÍÈÊ |
//| Ïàðàìåòðû: |
//| dt - äàòà, âðåìÿ |
//| op - îïåðàöèÿ |
//| or - íîìåð îðäåðà (îáúåêòà) |
//| pp - öåíà |
//+----------------------------------------------------------------------------+
void SetPropRectangle(datetime dt, string op, int or, double pp)
{
double p1, p2;
string no=frogNameObjRect;
if (op=="buy" || op=="sell")
{
if (ObjectFind(no+or)<0) {
ObjectCreate(no+or, OBJ_RECTANGLE, 0, 0,0, 0,0);
ObjectSet(no+or, OBJPROP_TIME1 , dt);
ObjectSet(no+or, OBJPROP_PRICE1, pp);
if (op=="buy") frogPrevOP[or-1]=True; else frogPrevOP[or-1]=False;
} else {
ObjectSet(no+or, OBJPROP_TIME2 , dt);
ObjectSet(no+or, OBJPROP_PRICE2, pp);
}
}
if (op=="buy") ObjectSet(no+or, OBJPROP_COLOR, clObjBuy);
if (op=="sell") ObjectSet(no+or, OBJPROP_COLOR, clObjSell);
ObjectSet(no+or, OBJPROP_BACK , True);
p1=ObjectGet(no+or, OBJPROP_PRICE1);
p2=ObjectGet(no+or, OBJPROP_PRICE2);
if (p1!=0 && p2!=0)
{
if (frogPrevOP[or-1])
{
if (p1>p2) ObjectSet(no+or, OBJPROP_COLOR, clObjBuyLoss);
}
if (!frogPrevOP[or-1])
{
if (p1<p2) ObjectSet(no+or, OBJPROP_COLOR, clObjSellLoss);
}
}
}
//+----------------------------------------------------------------------------+
//| Óñòàíîâêà ñâîéñòâ îáúåêòîâ ÒÅÊÑÒ |
//| Ïàðàìåòðû: |
//| dt - äàòà, âðåìÿ |
//| op - îïåðàöèÿ |
//| or - íîìåð îðäåðà (îáúåêòà) |
//| pp - öåíà |
//+----------------------------------------------------------------------------+
void SetPropText(datetime dt, string op, int or, double pp)
{
color clText;
double p1, p2, ss;
string no, no1="T1Deal", no2="T2Deal";
if (TypeObjects==0) no=frogNameObjRect; else no=frogNameObjLine;
if (op=="buy" || op=="sell") if (op=="buy") frogPrevOP[or-1]=True; else frogPrevOP[or-1]=False;
p1=ObjectGet(no+or, OBJPROP_PRICE1);
p2=ObjectGet(no+or, OBJPROP_PRICE2);
if (p1!=0 && p2!=0)
{
if (ObjectFind(no1+or)<0) ObjectCreate(no1+or, OBJ_TEXT, 0, 0,0);
if (ObjectFind(no2+or)<0) ObjectCreate(no2+or, OBJ_TEXT, 0, 0,0);
ObjectSet(no1+or, OBJPROP_TIME1 , dt);
ObjectSet(no2+or, OBJPROP_TIME1 , dt);
ObjectSet(no1+or, OBJPROP_PRICE1, pp+OffSetText*Point);
ObjectSet(no2+or, OBJPROP_PRICE1, pp-OffSetText*Point);
if (frogPrevOP[or-1])//Ïîêóïêà
{
ss=(p2-p1)/Point;//Ïðèáûëü â ïóíêòàõ
frogBalance+=ss;
if (ss<0) clText=clTextLoss; else clText=clTextProfit;
ObjectSetText(no1+or, DoubleToStr(ss, 0), SizeText, "", clText);
ObjectSetText(no2+or, DoubleToStr(frogBalance, 0), SizeText, "", clTextBalans);
}
if (!frogPrevOP[or-1])//Ïðîäàæà
{
ss=(p1-p2)/Point;
frogBalance+=ss;
if (ss<0) clText=clTextLoss; else clText=clTextProfit;
ObjectSetText(no1+or, DoubleToStr(ss, 0), SizeText, "", clText);
ObjectSetText(no2+or, DoubleToStr(frogBalance, 0), SizeText, "", clTextBalans);
}
}
}
//+----------------------------------------------------------------------------+
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
---