//+------------------------------------------------------------------+ //| fromRepOnGraph.mq4 | //| Êèì Èãîðü Â. aka KimIV | //| http://www.kimiv.ru | //| | //| 17.02.2006 Ñêðèïò äëÿ ïåðåíîñà ñäåëîê èç îò÷¸òà íà ãðàôèê. | //| Carrying the Deals from Report on Graph. | //| Ñêðèïò âûïîëíÿåò ÷òåíèå ñäåëîê èç ôàéëà ñòàíäàðíîãî îò÷¸òà | //| òåñòåðà è îòîáðàæàåò èõ â âèäå ðàçíîöâåòíûõ ïðÿìîóãîëüíèêîâ. | //+------------------------------------------------------------------+ #property copyright "Êèì Èãîðü Â. aka KimIV" #property link "http://www.kimiv.ru" #property show_inputs extern string FileName = "StrategyTester.htm"; 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 = 100; // Ñìåùåíèå òåêñòà extern int SizeText = 9; // Ðàçìåð òåêñòà extern color clTextProfit = Green; // Öâåò ñóììû ïðèáûëè extern color clTextLoss = Red; // Öâåò ñóììû óáûòêà extern color clTextBalans = Green; // Öâåò ñóììû áàëàíñà //------- Ãëîáàëüíûå ïåðåìåííûå -------------------------------------- int frogBalance = 0; string frogNameObjLine = "LDeal"; // Íàèìåíîâàíèÿ îáúåêòîâ ËÈÍÈß string frogNameObjRect = "RDeal"; // Íàèìåíîâàíèÿ îáúåêòîâ ÏÐßÌÎÓÃÎËÜÍÈÊ //+------------------------------------------------------------------+ //| script program start function | //+------------------------------------------------------------------+ void start() { datetime dt; double pp; int or, pos; string op, str; int fh=FileOpen(FileName, FILE_BIN|FILE_READ); if (fh>0) { if (DeleteOldObjects) ObjectsDeleteAll(); while (!FileIsEnding(fh)) { pos=StringFind(str, "<td class=msdate>"); if (pos>0) { str=str+GetStringFromFile(fh, 250-StringLen(str)); str=StringSubstr(str, pos+17); dt =StrToTime(StringSubstr(str, 0, 16)); str=StringSubstr(str, 25); pos=StringFind (str, "</td><td>"); op =StringSubstr(str, 0, pos); str=StringSubstr(str, pos+9); pos=StringFind (str, "</td><td>"); or =StrToInteger(StringSubstr(str, 0, pos)); str=StringSubstr(str, pos+9); pos=StringFind (str, "</td><td>"); str=StringSubstr(str, pos+9); pos=StringFind (str, "</td><td"); pp =StrToDouble (StringSubstr(str, 0, pos)); Comment("Ïîçèöèÿ: "+or); 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); str=str+GetStringFromFile(fh, 250-StringLen(str)); } else { str=StringSubstr(str, 125); str=str+GetStringFromFile(fh, 125); } } FileClose(fh); } else Comment("Îøèáêà îòêðûòèÿ ôàéëà îò÷¸òà "+FileName); } //+------------------------------------------------------------------+ //| ×èòàåò ñòðîêîâûé áëîê èç ôàéëà | //| Ïàðàìåòðû: | //| fh - õýíäë ôàéëà | //| ks - êîëè÷åñòâî ñèìâîëîâ | //+------------------------------------------------------------------+ string GetStringFromFile(int& fh, int ks) { string str="", s; while (StringLen(str)<ks && !FileIsEnding(fh)) { s=FileReadString(fh, 1); if (StringGetChar(s, 0)>31) str=str+s; } return(str); } //+------------------------------------------------------------------+ //| Óñòàíîâêà ñâîéñòâ îáúåêòà ÓÊÀÇÀÒÅËÜ | //| Ïàðàìåòðû: | //| 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) { color cl; 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); } 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); cl=ObjectGet(no+or, OBJPROP_COLOR); if (p1!=0 && p2!=0) { if (cl==clObjBuy) { if (p1>p2) ObjectSet(no+or, OBJPROP_COLOR, clObjBuyLoss); } if (cl==clObjSell) { if (p1<p2) ObjectSet(no+or, OBJPROP_COLOR, clObjSellLoss); } } } //+------------------------------------------------------------------+ //| Óñòàíîâêà ñâîéñòâ îáúåêòà ÏÐßÌÎÓÃÎËÜÍÈÊ | //| Ïàðàìåòðû: | //| dt - äàòà, âðåìÿ | //| op - îïåðàöèÿ | //| or - íîìåð îðäåðà (îáúåêòà) | //| pp - öåíà | //+------------------------------------------------------------------+ void SetPropRectangle(datetime dt, string op, int or, double pp) { color cl; 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); } 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); cl=ObjectGet(no+or, OBJPROP_COLOR); if (p1!=0 && p2!=0) { if (cl==clObjBuy) { if (p1>p2) ObjectSet(no+or, OBJPROP_COLOR, clObjBuyLoss); } if (cl==clObjSell) { if (p1<p2) ObjectSet(no+or, OBJPROP_COLOR, clObjSellLoss); } } } //+------------------------------------------------------------------+ //| Óñòàíîâêà ñâîéñòâ îáúåêòîâ ÒÅÊÑÒ | //| Ïàðàìåòðû: | //| dt - äàòà, âðåìÿ | //| op - îïåðàöèÿ | //| or - íîìåð îðäåðà (îáúåêòà) | //| pp - öåíà | //+------------------------------------------------------------------+ void SetPropText(datetime dt, string op, int or, double pp) { color cl, clText; double p1, p2, ss; string no, no1="T1Deal", no2="T2Deal"; if (TypeObjects==0) no=frogNameObjRect; else no=frogNameObjLine; p1=ObjectGet(no+or, OBJPROP_PRICE1); p2=ObjectGet(no+or, OBJPROP_PRICE2); cl=ObjectGet(no+or, OBJPROP_COLOR); 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 (cl==clObjBuy || cl==clObjBuyLoss) { 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 (cl==clObjSell || cl==clObjSellLoss) { 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); } } } //+------------------------------------------------------------------+
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