Market Info

Author: Copyright \xa9 2009, CyberPunk
Miscellaneous
It issuies visual alerts to the screenIt opens Message Boxes to the userUses files from the file systemIt writes information to fileIt writes information to file
0 Views
0 Downloads
0 Favorites
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), ")"
   );
  }

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