Market Info





//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Market Info
// version - 1.0.1
// Author - CyberPunk
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/* Ñêðèïò âûäàþùèé âñþ èíôîðìàöèþ ïðåäîñòàâëÿåìóþ ôóíêöèåé MarketInfo().
   Èíôîðìàöèþ ìîæíî ïîëó÷èòü êàê ïî òåêóùåìó ôèíàíñîâîìó èíñòðóìåíó, òàê è ïî
ëþáîìó äðóãîìó.
   Òàêæå ñóùåñòâóåò âîçìîæíîñòü âûâîäà ïîëó÷åííîé èíôîðìàöèè â *.csv è/èëè
*.htm ôàéë. */
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~



//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Ãîëîâíàÿ ÷àñòü
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

//-----------------------------------------------------------------------------
// Ñïåöèàëüíûå ïàðàìåòðû
//-----------------------------------------------------------------------------

/* Copyright */
#property copyright "Copyright \xa9 2009, CyberPunk"

/* Ïîêàçûâàòü îêíî ñâîéñòâ ñêðèïòà */
#property show_inputs

//-----------------------------------------------------------------------------
// Âêëþ÷àåìûå ôàéëû
//-----------------------------------------------------------------------------

/* Ñòàíäàðòíûå êîäû îøèáîê */
#include <stderror.mqh>

/* Áèáëèîòåêà äîïîëíèòåëüíûõ ôóíêöèé */
#include <stdlib.mqh>

/* Áèáëèîòåêà ñòàíäàðòíûõ ôóíêöèé è êîíñòàíò Windows */
#include <WinUser32.mqh>

//-----------------------------------------------------------------------------
// Âíåøíèå ïåðåìåííûå
//-----------------------------------------------------------------------------

/* Îïðåäåëÿåò ñèìâîë */
extern string ev_Symbol = "";

/* Îïðåäåëÿåò ñïîñîá âûâîäà èíôîðìàöèè íà ýêðàí:
   false - ñ ïîìîùüþ ôóíêöèè Alert();
   true - ñ ïîìîùüþ ôóíêöèè MessageBox(); */
extern bool ev_MsgType = true;

/* Çàäà¸ò èìÿ (áåç ðàñøèðåíèÿ) ñîçäàâàåìîãî ôàéëà */
extern string ev_FileName = "Market Info";

/* Îïðåäåëÿåò, áóäåò ëè, îñóùåñòâëÿòüñÿ âûâîä â *.csv ôàéë */
extern bool ev_PrintCsvFile = false;

/* Îïðåäåëÿåò, áóäåò ëè, îñóùåñòâëÿòüñÿ âûâîä â *.htm ôàéë */
extern bool ev_PrintHtmlFile = false;

//-----------------------------------------------------------------------------
// Ãëîáàëüíûå ïåðåìåííûå
//-----------------------------------------------------------------------------

/* Ìàññèâ îïèñàíèé çíà÷åíèé âîçâðàùàåìûõ ôóíêöèåé MarketInfo() */
string pa_Descriptions[28] = 
  {
   "Ìèíèìàëüíàÿ äíåâíàÿ öåíà",
   "Ìàêñèìàëüíàÿ äíåâíàÿ öåíà",
   "Âðåìÿ ïîñòóïëåíèÿ ïîñëåäíåé êîòèðîâêè",
   "Ïîñëåäíÿÿ ïîñòóïèâøàÿ öåíà ïðåäëîæåíèÿ (Bid)",
   "Ïîñëåäíÿÿ ïîñòóïèâøàÿ öåíà ïðîäàæè (Ask)",
   "Ðàçìåð ïóíêòà â âàëþòå êîòèðîâêè (Point)",
   "Êîëè÷åñòâî öèôð ïîñëå äåñÿòè÷íîé òî÷êè â öåíå ôèíàíñîâîãî èíñòðóìåíòà",
   "Ñïðýä â ïóíêòàõ (Spread)",
   "Ìèíèìàëüíî äîïóñòèìûé ðàçìåð ñòîï-ëîññà/òåéê-ïðîôèòà â ïóíêòàõ (StopLevel)",
   "Ðàçìåð êîíòðàêòà â áàçîâîé âàëþòå èíñòðóìåíòà",
   "Ðàçìåð ìèíèìàëüíîãî èçìåíåíèÿ öåíû èíñòðóìåíòà â âàëþòå äåïîçèòà",
   "Ìèíèìàëüíûé øàã èçìåíåíèÿ öåíû èíñòðóìåíòà â âàëþòå êîòèðîâêè",
   "Ðàçìåð ñâîïà äëÿ äëèííûõ ïîçèöèé",
   "Ðàçìåð ñâîïà äëÿ êîðîòêèõ ïîçèöèé",
   "Êàëåíäàðíàÿ äàòà íà÷àëà òîðãîâ (îáû÷íî èñïîëüçóåòñÿ äëÿ ôüþ÷åðñîâ)",
   "Êàëåíäàðíàÿ äàòà îêîí÷àíèÿ òîðãîâ (îáû÷íî èñïîëüçóåòñÿ äëÿ ôüþ÷åðñîâ)",
   "Ðàçðåøåíèå òîðãîâ ïî óêàçàííîìó ôèíàíñîâîìó èíñòðóìåíòó",
   "Ìèíèìàëüíûé ðàçìåð ëîòà",
   "Øàã èçìåíåíèÿ ëîòà",
   "Ìàêñèìàëüíûé ðàçìåð ëîòà",
   "Ìåòîä âû÷èñëåíèÿ ñâîïîâ",
   "Ñïîñîá ðàñ÷¸òà ïðèáûëè",
   "Ñïîñîá ðàñ÷¸òà çàëîãîâûõ ñðåäñòâ",
   "Íà÷àëüíûå çàëîãîâûå òðåáîâàíèÿ äëÿ îäíîãî ëîòà",
   "Ðàçìåð çàëîãîâûõ ñðåäñòâ äëÿ ïîääåðæêè îòêðûòûõ ïîçèöèé â ðàñ÷¸òå íà îäèí ëîò",
   "Ìàðæà, âçèìàåìàÿ ñ ïåðåêðûòûõ ïîçèöèé â ðàñ÷¸òå íà îäèí ëîò",
   "Ðàçìåð ñâîáîäíûõ ñðåäñòâ, íåîáõîäèìûõ äëÿ îòêðûòèÿ îäíîãî ëîòà íà ïîêóïêó",
// Óðîâåíü çàìîðîçêè îðäåðîâ â ïóíêòàõ. Åñëè öåíà èñïîëíåíèÿ íàõîäèòñÿ â ïðåäåëàõ, îïðåäåëÿåìûõ óðîâíåì çàìîðîçêè, òî îðäåð íå ìîæåò áûòü ìîäèôèöèðîâàí, îòìåí¸í èëè çàêðûò
   "Óðîâåíü çàìîðîçêè îðäåðîâ â ïóíêòàõ"
  };

/* Ìàññèâ çíà÷åíèé âîçâðàùàåìûõ ôóíêöèåé MarketInfo() */
string pa_Values[28];

/* Íàçâàíèå áðîêåðñêîé êîìïàíèè */
string pv_BrokerName[2] = {"Íàçâàíèå áðîêåðñêîé êîìïàíèè: "};

/* Èìÿ òîðãîâîãî ñåðâåðà */
string pv_ServerName[2] = {"Èìÿ òîðãîâîãî ñåðâåðà: "};

/* Ëîêàëüíîå âðåìÿ */
string pv_LocalTime[2] = {"Ëîêàëüíîå âðåìÿ: "};



//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Ñòàíäàðòíûå ôóíêöèè
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

//-----------------------------------------------------------------------------
// Ñòàíäàðòíàÿ ôóíêöèÿ start()
//-----------------------------------------------------------------------------
void start()
  {
   if (pf_InitValues())                      // Èíèöèàëèçèðóåì çíà÷åíèÿ ïåðåìåííûõ
     {
      pf_PrintScreen();                      // Âûâîä èíôîðìàöèè íà ýêðàí
      if (ev_PrintCsvFile) pf_PrintCsv();    // Ñîçäà¸ì csv-ôàéë
      if (ev_PrintHtmlFile) pf_PrintHtml();  // Ñîçäà¸ì html-ôàéë
     }
  }



//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Ïîëüçîâàòåëüñêèå ôóíêöèè
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

//-----------------------------------------------------------------------------
// Ôóíêöèÿ pf_InitValues()
//-----------------------------------------------------------------------------
/* Ôóíêöèÿ âû÷èñëÿåò çíà÷åíèÿ ïåðåìåííûõ ïðîãðàììû, èëè, ïðè íåïðàâèëüíîì
ñèìâîëå, âûâîäèò ñîîáùåíèå îá îøèáêå */
//-----------------------------------------------------------------------------
bool pf_InitValues()
  {
   bool Rez = false;                         // Ïåðåìåííàÿ ðåçóëüòàòà
   // Åñëè ñèìâîë íå çàäàí, òî óñòàíàâëèâàåì òåêóùèé ñèìâîë
   if (ev_Symbol == "") ev_Symbol = Symbol();
   GetLastError();                           // Îáíóëÿåì çíà÷åíèå ïåðåìåííîé îøèáîê ïðîãðàììû
//-----------------------------
/* Åñëè ñèìâîëà íå ñóùåñòâóåò, òî ïîñëå âûçîâà ôóíêöèè MarketInfo(), ôóíêöèÿ
GetLastError() âîçâðàòèò êîä îøèáêè */
//-----------------------------
   MarketInfo(ev_Symbol, MODE_POINT);
   if (GetLastError() == ERR_UNKNOWN_SYMBOL) // Åñëè óêàçàííîãî ñèìâîëà íå ñóùåñòâóåò
      // Ñîîáùåíèå
      Alert("Ñèìâîë ", ev_Symbol, " íå ñóùåñòâóåò!");
   else                                      // Ñèìâîë ñóùåñòâóåò
     {
      // Òî÷íîñòü (êîëè÷åñòâî öèôð ïîñëå çàïÿòîé) äëÿ âûáðàííîãî ôèíàíñîâîãî èíñòðóìåíòà
      int lv_Digits = MarketInfo(ev_Symbol, MODE_DIGITS);
      int lv_TempInt;                        // Ïåðåìåííàÿ äëÿ ïðåîáðàçîâàíèÿ double >> int
      Rez = true;                            // Óñòàíàâëèâàåì ðåçóëüòàò
      pv_BrokerName[1] = AccountCompany();   // Óçíà¸ì íàçâàíèå áðîêåðñêîé êîìïàíèè
      pv_ServerName[1] = AccountServer();    // Óçíà¸ì èìÿ àêòèâíîãî ñåðâåðà
      // Óçíà¸ì ëîêàëüíîå âðåìÿ
      pv_LocalTime[1] = TimeToStr(TimeLocal(), TIME_DATE | TIME_SECONDS);
//-----------------------------
/* Èíèöèàëèçàöèÿ çíà÷åíèé âîçâðàùàåìûõ ôóíêöèåé MarketInfo() */
//-----------------------------
      pa_Values[0] = DoubleToStr(MarketInfo(ev_Symbol, MODE_LOW), lv_Digits);
      pa_Values[1] = DoubleToStr(MarketInfo(ev_Symbol, MODE_HIGH), lv_Digits);
      pa_Values[2] = TimeToStr(MarketInfo(ev_Symbol, MODE_TIME), TIME_DATE | TIME_SECONDS);
      pa_Values[3] = DoubleToStr(MarketInfo(ev_Symbol, MODE_BID), lv_Digits);
      pa_Values[4] = DoubleToStr(MarketInfo(ev_Symbol, MODE_ASK), lv_Digits);
      pa_Values[5] = DoubleToStr(MarketInfo(ev_Symbol, MODE_POINT), lv_Digits);
      pa_Values[6] = lv_Digits;
      lv_TempInt = MarketInfo(ev_Symbol, MODE_SPREAD);
      pa_Values[7] = lv_TempInt;
      lv_TempInt = MarketInfo(ev_Symbol, MODE_STOPLEVEL);
      pa_Values[8] = lv_TempInt;
      pa_Values[9] = DoubleToStr(MarketInfo(ev_Symbol, MODE_LOTSIZE), 2);
      pa_Values[10] = MarketInfo(ev_Symbol, MODE_TICKVALUE);
      pa_Values[11] = MarketInfo(ev_Symbol, MODE_TICKSIZE);
      pa_Values[12] = MarketInfo(ev_Symbol, MODE_SWAPLONG);
      pa_Values[13] = MarketInfo(ev_Symbol, MODE_SWAPSHORT);
      pa_Values[14] = TimeToStr(MarketInfo(ev_Symbol, MODE_STARTING), TIME_DATE | TIME_SECONDS);
      pa_Values[15] = TimeToStr(MarketInfo(ev_Symbol, MODE_EXPIRATION), TIME_DATE | TIME_SECONDS);
      if (MarketInfo(ev_Symbol, MODE_TRADEALLOWED) == 1.0) pa_Values[16] = "Äà";
      else pa_Values[16] = "Íåò";
      pa_Values[17] = MarketInfo(ev_Symbol, MODE_MINLOT);
      pa_Values[18] = MarketInfo(ev_Symbol, MODE_LOTSTEP);
      pa_Values[19] = MarketInfo(ev_Symbol, MODE_MAXLOT);
      switch (MarketInfo(ev_Symbol, MODE_SWAPTYPE))
        {
         case 0.0: pa_Values[20] = "Â ïóíêòàõ"; break;
         case 1.0: pa_Values[20] = "Â áàçîâîé âàëþòå èíñòðóìåíòà"; break;
         case 2.0: pa_Values[20] = "Â ïðîöåíòàõ"; break;
         case 3.0: pa_Values[20] = "Â âàëþòå çàëîãîâûõ ñðåäñòâ";
        }
      switch (MarketInfo(ev_Symbol, MODE_PROFITCALCMODE))
        {
         case 0.0: pa_Values[21] = "Forex"; break;
         case 1.0: pa_Values[21] = "CFD"; break;
         case 2.0: pa_Values[21] = "Futures";
        }
      switch (MarketInfo(ev_Symbol, MODE_MARGINCALCMODE))
        {
         case 0.0: pa_Values[22] = "Forex"; break;
         case 1.0: pa_Values[22] = "CFD"; break;
         case 2.0: pa_Values[22] = "Futures"; break;
         case 3.0: pa_Values[22] = "CFD íà èíäåêñû";
        }
      pa_Values[23] = MarketInfo(ev_Symbol, MODE_MARGININIT);
      pa_Values[24] = MarketInfo(ev_Symbol, MODE_MARGINMAINTENANCE);
      pa_Values[25] = MarketInfo(ev_Symbol, MODE_MARGINHEDGED);
      pa_Values[26] = MarketInfo(ev_Symbol, MODE_MARGINREQUIRED);
      lv_TempInt = MarketInfo(ev_Symbol, MODE_FREEZELEVEL);
      pa_Values[27] = lv_TempInt;
     }
   return(Rez);                              // Âîçâðàùàåì ðåçóëüòàò
  }

//-----------------------------------------------------------------------------
// Ôóíêöèÿ pf_PrintScreen()
//-----------------------------------------------------------------------------
/* Ôóíêöèÿ âûâîäèò ñîáðàíóþ èíôîðìàöèþ â îêíî ôóíêöèè Alert(), èëè
MessageBox() */
//-----------------------------------------------------------------------------
void pf_PrintScreen()
  {
   // Ôîðìèðóåì çàãîëîâîê ñîîáùåíèÿ
   string lv_Msg = StringConcatenate(
      "Îáçîð ðûíêà",
      "\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~",
      "\n", pv_BrokerName[0], pv_BrokerName[1],
      "\n", pv_ServerName[0], pv_ServerName[1],
      "\nÑèìâîë: ", ev_Symbol,
      "\n", pv_LocalTime[0], pv_LocalTime[1],
      "\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
   // Ôîðìèðóåì îñíîâíîå ñîäåðæàíèå ñîîáùåíèÿ
   for (int i = 0; i <= 27; i++)
      lv_Msg = StringConcatenate(lv_Msg, "\n", pa_Descriptions[i], ": ", pa_Values[i]);
   // Âûâîäèì ñîîáùåíèå íà ýêðàí
   if (ev_MsgType) MessageBox(lv_Msg, "Îáçîð ðûíêà", MB_ICONINFORMATION);
   else Alert(lv_Msg);
  }

//-----------------------------------------------------------------------------
// Ôóíêöèÿ pf_PrintCsv()
//-----------------------------------------------------------------------------
/* Ôóíêöèÿ âûâîäèò ñîáðàííûå äàííûå â óêàçàííûé ôàéë */
//-----------------------------------------------------------------------------
void pf_PrintCsv()
  {
   // Ïûòàåìñÿ îòêðûòü ôàéë
   int handle = FileOpen(ev_FileName + ".csv", FILE_CSV | FILE_WRITE);
   // Åñëè íå óäàëîñü ñîçäàòü óêàçàííûé ôàéë ñîîáùàåì îá îøèáêå
   if (handle == -1) pf_FileOpenErr(ev_FileName + ".csv");
   else                                      // Åñëè ôàéë ñîçäàí óäà÷íî, òî âûâîäèì â íåãî äàííûå
     {
      FileWrite(handle, "Îáçîð ðûíêà");
      FileWrite(handle,"");                  // Ïóñòàÿ ñòðîêà
      FileWrite(handle, pv_BrokerName[0], pv_BrokerName[1]);
      FileWrite(handle, pv_ServerName[0], pv_ServerName[1]);
      FileWrite(handle, "Ñèìâîë: ", ev_Symbol);
      FileWrite(handle, pv_LocalTime[0], pv_LocalTime[1]);
      FileWrite(handle,"");                  // Ïóñòàÿ ñòðîêà
      FileWrite(handle, "Îïèñàíèå", "Çíà÷åíèå");
      for (int i = 0; i <= 27; i++)          // Çàíîñèì äàííûå â òàáëèöó
         FileWrite(handle, pa_Descriptions[i], pa_Values[i]);
      FileWrite(handle, "");                 // Ïóñòàÿ ñòðîêà
      // Copyright
      FileWrite(handle, "Generated by MQL4 script \"Market Info\"", "Copyright \xa9 2009, CyberPunk");
      FileClose(handle);                     // Çàêðûâàåì ôàéë
     }
  }

//-----------------------------------------------------------------------------
// Ôóíêöèÿ pf_PrintHtml()
//-----------------------------------------------------------------------------
/* Ôóíêöèÿ âûâîäèò ñîáðàííóþ èíôîðìàöèþ â html ôàéë */
//-----------------------------------------------------------------------------
void pf_PrintHtml()
  {
   // Ïûòàåìñÿ îòêðûòü ôàéë
   int handle = FileOpen(ev_FileName + ".htm", FILE_BIN | FILE_WRITE);
   if (handle != -1)                         // Åñëè ôàéë îòêðûò óñïåøíî
     {
//-----------------------------
/* Ñîçäà¸ì html ôàéë â ïàìÿòè êîìïüþòåðà, à çàòåì çàïèñûâàåì íà äèñê */
//-----------------------------
      // Ôîðìèðóåì çàãîëîâîê ôàéëà
      string lv_HtmlFile = StringConcatenate(
         "<html>",
         "\r\n<head>",
         "\r\n\t<meta http-equiv=\"content-type\" content=\"text/html; charset=Windows-1251\">",
         "\r\n\t<meta name=\"generator\" content=\"MQL4 script &quot;Market Info&quot;. Copyright &copy; 2009, CyberPunk\">",
         "\r\n\t<title>Îáçîð ðûíêà</title>",
         "\r\n</head>",
         "\r\n<body bgcolor=\"LightSteelBlue\">",
         "\r\n\t<h2 align=\"center\">Îáçîð ðûíêà</h2>",
         "\r\n\t<hr size=\"4\">",
         "\r\n\t<ul>",
         "\r\n\t\t<li>", pv_BrokerName[0], pv_BrokerName[1], "</li>",
         "\r\n\t\t<li>", pv_ServerName[0], pv_ServerName[1], "</li>",
         "\r\n\t\t<li>Ñèìâîë: ", ev_Symbol, "</li>",
         "\r\n\t\t<li>", pv_LocalTime[0], pv_LocalTime[1], "</li>",
         "\r\n\t</ul>",
         "\r\n\t<hr size=\"4\">",
         "\r\n\t<table border=\"4\" align=\"center\" width=\"85%\">",
         "\r\n\t\t<tr><th>Îïèñàíèå</th><th>Çíà÷åíèå</th></tr>");
      for (int i = 0; i <= 27; i++)          // Çàïîëíÿåì òàáëèöó
         lv_HtmlFile = StringConcatenate(lv_HtmlFile, "\r\n\t\t<tr><td>", pa_Descriptions[i], "</td><td>", pa_Values[i], "</td></tr>");
      // Ôîðìèðóåì îêîí÷àíèå ôàéëà
      lv_HtmlFile = StringConcatenate(lv_HtmlFile,
         "\r\n\t</table>",
         "\r\n\t<hr size=\"4\">",
         "\r\n\t<address style=\"text-align: right\">Generated by MQL4 script &quot;Market Info&quot;. Copyright &copy; 2009, CyberPunk</address>",
         "\r\n</body>",
         "\r\n</html>");
      // Çàïèñûâàåì ôàéë
      FileWriteString(handle, lv_HtmlFile, StringLen(lv_HtmlFile));
      FileClose(handle);                     // Çàêðûâàåì ôàéë
     }
   // Åñëè óêàçàííûé ôàéë ñîçäàòü íå óäàëîñü, òî ñîîáùàåì îá îøèáêå
   else pf_FileOpenErr(ev_FileName + ".htm");
  }

//-----------------------------------------------------------------------------
// Ôóíêöèÿ pf_FileOpenErr()
//-----------------------------------------------------------------------------
/* Ñîîáùàåò îá îøèáêå ïðè îòêðûòèè ôàéëà */
//-----------------------------------------------------------------------------
void pf_FileOpenErr(string fp_FileName)
  {
   int lv_Err = GetLastError();              // Óçíà¸ì êîä îøèáêè
   Alert(                                    // Ñîîáùàåì îá îøèáêå
      "Îøèáêà ïðè îòêðûòèè ôàéëà \"", fp_FileName, "\"!\n",
      "Êîä îøèáêè: ", lv_Err, " (", ErrorDescription(lv_Err), ")"
   );
  }



Sample





Analysis



Market Information Used:

Series array that contains open time of each bar


Indicator Curves created:


Indicators Used:



Custom Indicators Used:

Order Management characteristics:

Other Features:

It issuies visual alerts to the screen
It opens Message Boxes to the user

Uses files from the file system
It writes information to file