fromCSV_OnGraph

Author: ��� ����� �. aka KimIV, modifyed by Evgeniy Trofimov
Miscellaneous
Uses files from the file systemIt reads information from a file
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 supported. Formatting help

Markdown Formatting Guide

Element Markdown Syntax
Heading # H1
## H2
### H3
Bold **bold text**
Italic *italicized text*
Link [title](https://www.example.com)
Image ![alt text](image.jpg)
Code `code`
Code Block ```
code block
```
Quote > blockquote
Unordered List - Item 1
- Item 2
Ordered List 1. First item
2. Second item
Horizontal Rule ---