fromRepOnGraph





//+------------------------------------------------------------------+
//|                                               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