Miscellaneous
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 "Market Info". Copyright © 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 "Market Info". Copyright © 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 Formatting Guide
# H1
## H2
### H3
**bold text**
*italicized text*
[title](https://www.example.com)

`code`
```
code block
```
> blockquote
- Item 1
- Item 2
1. First item
2. Second item
---