ZG_All Quotings 1-80924
Download scriptThis script is designed to automatically gather and organize comprehensive historical and technical data for every financial instrument listed in your trading platform's "Market Watch" window. Instead of requiring you to open each chart manually to see the available history, this tool automates that process to ensure all data is downloaded from the broker's server as quickly as possible.
Core Functionality
1. User Initialization and Preferences
When you first run the script, it interacts with you via a pop-up message to determine how you would like to save the results. You can choose between a plain text file (.txt) or a comma-separated values file (.csv), which is ideal if you plan to import the data into software like Microsoft Excel.
2. Automated Market Scanning The script performs the following steps automatically:
- Identification: It identifies every symbol currently visible in your "Market Watch" list.
- Sequential Processing: It moves through each instrument one by one without manual intervention.
- Chart Activation: For every symbol, it temporarily opens a chart window.
- Timeframe Cycling: It cycles through multiple timeframes (ranging from 1-minute charts up to monthly charts). By "refreshing" these charts rapidly during the scan, it forces the platform to pull the maximum available history for each period.
- Window Management: After processing a symbol, the script automatically closes the temporary chart to keep your workspace clean.
3. Data Collection and Logging As it scans the market, the script captures a wide array of technical specifications for every instrument, including:
- Trading Specs: Point value, digits, spread, stop levels, lot sizes, swap rates, and tick values.
- Historical Depth: It counts exactly how many historical bars are available for every major timeframe (M1, M5, M15, M30, H1, H4, D1, W1, MN1).
4. Final Reporting Once the entire market scan is complete, the script saves a summary report. This includes a log of the total number of instruments processed and the exact date and time the synchronization was finished.
Summary for the User
Essentially, this is a "History Fetcher." Its primary purpose is to "warm up" your trading platform by forcing it to download all available historical data for every currency pair, stock, or commodity you trade. This ensures that when you eventually go to perform analysis, the history is already present and ready to use.
//+----------------------------------------------------------------------------------+
//| ZG_All Quotings 1-80924.mq4|
//|24.09.2008 Copyright © Zhunko, getch |
//+----------------------------------------------------------------------------------+
//| Ñêðèïò ñîçäàí íà áàçå ñêðèïòà "Market Watch" îò getch. |
//| Âûðàæàþ ñâî¸ âîñõèùåíèå íåñòàíäàðòíîìó ïîäõîäó getch. |
//| Zhunko |
//+----------------------------------------------------------------------------------+
//| Ñêàíèðîâàíèå âñåõ ÒÔ ñ îáíîâëåíèåì îêîí îòêðûòûõ ãðàôèêîâ, çàïèñü â ôàéë íàçâàíèé|
//|è òîðãîâûõ óñëîâèé âñåõ ñèìâîëîâ èç îêíà "Îáçîð ðûíêà". Òàêèèì îáðàçîì ñêðèïò |
//|ïîäêà÷èâàåò èñòîðèþ ïî âñåì èíñòðóìåíòàì òåðìèíàëà ñàìûì "æ¸ñòêèì" ñïîñîáîì. |
//| Åñëè ïðè ýòîì ñïîñîáå ïîäêà÷êè èñòîðèÿ íå ïðèõîäèò, òî ýòî ïðîáëåìà ñî ñòîðîíû |
//|ñåðâåðà áðîêåðà. |
//+----------------------------------------------------------------------------------+
//| !!! ÂÎ ÂÐÅÌß ÐÀÁÎÒÛ ÑÊÐÈÏÒÀ ÍÅ ÏÐÎÈÇÂÎÄÈÒÜ ÄÅÉÑÒÂÈÉ Â ÒÅÐÌÈÍÀËÅ!!! |
//+----------------------------------------------------------------------------------+
#property copyright "Copyright © Zhunko, getch"
#property link "http://forum.mql4.com/ru/11241/page3"
//----
#import "user32.dll"
int GetParent (int hWnd );
int GetDlgItem (int hDlg, int nIDDlgItem);
int SendMessageA (int hWnd, int Msg, int wParam, int lParam);
int PostMessageA (int hWnd, int Msg, int wParam, int lParam);
#import
//----
#define IDCANCEL 2
#define IDYES 6
#define IDNO 7
#define MB_YESNOCANCEL 0x00000003
#define MB_ICONQUESTION 0x00000020
#define LVM_GETITEMCOUNT 0x1004
#define VK_HOME 0x24
#define VK_DOWN 0x28
#define WM_CLOSE 0x0010
#define WM_COMMAND 0x0111
#define WM_KEYDOWN 0x0100
#define NAME_SCRIPT "GZ_All Quotings 1-80924"
//----
string FileName = "MarketWatch"; // Èìÿ ôàéëà äëÿ çàïèñè èíôîðìàöèè ïî ñèìâîëàì.
int Pause = 500; // Òåõíè÷åñêàÿ ïàóçà â ìèëëèñåêóíäàõ.
//===================================================================================
void start()
{
int Count;
int handle;
int HandleChart;
int i, j;
int Question;
//----
int Instructions[8] = {33136, 33134, 33141, 33334, 33137, 33138, 33139, 33140};
//----
if (GlobalVariableCheck ("glSymbolHandle") == true) // Çàïóñòèëè íå ïåðâûé ðàç.
{
GlobalVariableSet ("glSymbolHandle", WindowHandle (Symbol(), Period()));
if (GlobalVariableGet ("glFileWrite") == IDYES) WriteSymbolTXT (FileName);
if (GlobalVariableGet ("glFileWrite") == IDNO) WriteSymbolCSV (FileName);
}
else // Ïåðâûé çàïóñê.
{
Question = MessageBox ("Ïðîèçâîäèòü çàïèñü â ôàéë íàçâàíèé èíñòðóìåíòîâ è òîðãîâûõ óñëîâèé?" +
"\nÅñëè ôàéë íóæåí â ôîðìàòå \"*.TXT\", íàæèìàéòå \"ÄÀ\"." +
"\nÅñëè ôàéë íóæåí â ôîðìàòå \"*.CSV\", íàæèìàéòå \"ÍÅÒ\"." +
"\nÅñëè ôàéë íå íóæåí, íàæèìàéòå \"ÎÒÌÅÍÀ\".", NAME_SCRIPT, MB_YESNOCANCEL|MB_ICONQUESTION);
if (Question == IDYES) FileClose (FileOpen (FileName + ".txt", FILE_WRITE)); // Îòêðûâàåì îáíóëÿÿ ôàéë.
if (Question == IDNO)
{
handle = FileOpen (FileName + ".csv", FILE_CSV | FILE_WRITE);
FileWrite (handle, "SYMBOL", "POINT", "DIGITS", "SPREAD", "STOPLEVEL", "LOTSIZE", "TICKVALUE", "TICKSIZE",
"SWAPLONG", "SWAPSHORT", "TRADEALLOWED", "MINLOT", "LOTSTEP", "MAXLOT", "STARTING", "EXPIRATION",
"Bar in M1", "Bar in M5", "Bar in M15", "Bar in M30", "Bar in H1", "Bar in H4", "Bar in D1", "Bar in W1", "Bar in MN1");
FileClose (handle);
}
GlobalVariableSet ("glFileWrite", Question);
GlobalVariableSet ("glSymbolHandle", WindowHandle (Symbol(), Period()));
// Âû÷èñëåíèå äëèíû ñïèñêà â îêíå "Îáçîð ðûíêà".
handle = Parent();
if (handle != 0) // Íàøëè ãëàâíîå îêíî.
{
handle = GetDlgItem (handle, 0xE81C); // Íàøëè ñïèñîê ñèìâîëîâ.
handle = GetDlgItem (handle, 0x50);
handle = GetDlgItem (handle, 0x8A71);
Count = SendMessageA (handle, LVM_GETITEMCOUNT, 0, 0); // Ïîëó÷èëè êîëè÷åñòâî ýëåìåíòîâ ñïèñêà.
}
// Îòêðûâàåì îêíà ñ ãðàôèêàìè.
for (i = 1; i <= Count && !IsStopped(); i++)
{
OpenChart(i); // Îòêðûëè ãðàôèê î÷åðåäíîãî ñèìâîëà èç îêíà "Îáçîð ðûíêà".
Sleep (Pause);
// ÇàïóñêàåÌ âûáðàííûé â îêíå "Navigator" ñêðèïò (èíäèêàòîð èëè ñîâåòíèê).
PostMessageA (Parent(), WM_COMMAND, 33042, 0); // Çàïóñòèëè íà òîëüêî, ÷òî îòêðûòîì ãðàôèêå ýòîò ñêðèïò.
Sleep (Pause);
HandleChart = GlobalVariableGet ("glSymbolHandle"); // Îïðåäåëÿåì äåñêðèïòîð òîëüêî, ÷òî îòêðûòîãî îêíà.
// Ïåðåêëþ÷åíèå ÒÔ è ýìóëÿöèÿ òèêîâ.
for (j = 0; j < 9 && !IsStopped(); j++)
{
if (j != 0) // Ïåðâóþ èòåðàöèþ ïðîïóñêàåì. Ïî óìîë÷àíèþ ïåðâûé ÒÔ H1.
{
PostMessageA (HandleChart, WM_COMMAND, Instructions[j - 1], 0); // Óñòàíàâëèâàåì ÒÔ.
}
PostMessageA (HandleChart, WM_COMMAND, 33324, 0); // Îáíîâëÿåì îêíî.
Sleep (Pause);
PostMessageA (HandleChart, WM_COMMAND, 33324, 0); // Îáíîâëÿåì îêíî åù¸ ðàç.
Sleep (Pause);
}
PostMessageA (GetParent (HandleChart), WM_CLOSE, 0, 0); // Çàêðûëè îêíî ãðàôèêà.
Sleep (Pause);
}
GlobalVariableDel ("glSymbolHandle");
GlobalVariableDel ("glFileWrite");
if (Question == IDYES || Question == IDCANCEL)
{// Çàïèñûâàåì â ôàéë êîëè÷åñòâî ñèìâîëîâ â îêíå "Îáçîð ðûíêà".
handle = FileOpen (FileName + ".txt", FILE_READ | FILE_WRITE);
FileWrite (handle, "===================================================" +
"\nÊîëè÷åñòâî èíñòðóìåíòîâ â îêíå \"Îáçîð ðûíêà\" = " + Count +
"\nÄàòà ïîñëåäíåãî ñêàíèðîâàíèÿ " + TimeToStr (TimeLocal(), TIME_DATE|TIME_MINUTES|TIME_SECONDS));
FileClose (handle);
}
if (Question == IDNO)
{// Çàïèñûâàåì â ôàéë êîëè÷åñòâî ñèìâîëîâ â îêíå "Îáçîð ðûíêà".
handle = FileOpen (FileName + ".csv", FILE_CSV | FILE_READ | FILE_WRITE);
FileSeek (handle, 0, SEEK_END);
FileWrite (handle, "Êîëè÷åñòâî èíñòðóìåíòîâ â îêíå \"Îáçîð ðûíêà\" = " + Count +
"\nÄàòà ïîñëåäíåãî ñêàíèðîâàíèÿ " + TimeToStr (TimeLocal(), TIME_DATE|TIME_MINUTES|TIME_SECONDS));
FileClose (handle);
}
}
}
//======================================================================================
// Âîçâðàùàåò ñèñòåìíûé äåñêðèïòîð îñíîâíîãî îêíà òåðìèíàëà.
int Parent()
{
int hwnd = WindowHandle(Symbol(), Period());
int hwnd_parent = 0;
while (!IsStopped())
{
hwnd = GetParent(hwnd);
if (hwnd == 0) break;
hwnd_parent = hwnd;
}
return (hwnd_parent);
}
//======================================================================================
// Îòêðûâàåò îêíî ãðàôèêà ñèìâîëà, ðàñïîëîæåííîãî â ñòðîêå íîìåð Num îêíà "Îáçîð ðûíêà".
void OpenChart (int Num)
{
int hwnd = Parent();
if (hwnd != 0) // Íàøëè ãëàâíîå îêíî.
{
hwnd = GetDlgItem (hwnd, 0xE81C); // Íàøëè "Îáçîð ðûíêà".
hwnd = GetDlgItem (hwnd, 0x50);
hwnd = GetDlgItem (hwnd, 0x8A71);
PostMessageA (hwnd, WM_KEYDOWN, VK_HOME,0); // Âåðõíÿÿ ñòðî÷êà îêíà "Îáçîð ðûíêà".
while (Num > 1)
{
PostMessageA (hwnd, WM_KEYDOWN,VK_DOWN, 0); // Ñìåñòèëèñü íà íóæíóþ ñòðî÷êó.
Num--;
}
}
PostMessageA (Parent(), WM_COMMAND, 33160, 0); // Îòêðûëè ãðàôèê.
}
//======================================================================================
// Çàïèñûâàåò õàðàêòåðèñòèêà òåêóùåãî òîðãîâîãî ñèìâîëà â ôàéë ôîðìàòà "*.TXT".
void WriteSymbolTXT (string FileName)
{
int handle;
int i;
string MarketInf[20];
//----
for (i = 0; i < 20; i++) MarketInf[i] = ""; // Èíèöèàëèçèðóåì ìàññèâ.
//----
MarketInf[0] = "==================== " + Symbol() + " =====================";
MarketInf[1] = "Point = " + DoubleToStr (MarketInfo (Symbol(), MODE_POINT), 4);
MarketInf[2] = "Digits = " + DoubleToStr (MarketInfo (Symbol(), MODE_DIGITS), 0);
MarketInf[3] = "Spread = " + DoubleToStr (MarketInfo (Symbol(), MODE_SPREAD), 1);
MarketInf[4] = "StopLevel = " + DoubleToStr (MarketInfo (Symbol(), MODE_STOPLEVEL), 1);
MarketInf[5] = "Lot Size = " + DoubleToStr (MarketInfo (Symbol(), MODE_LOTSIZE), 2);
MarketInf[6] = "Tick Value = " + DoubleToStr (MarketInfo (Symbol(), MODE_TICKVALUE), 4);
MarketInf[7] = "Tick Size = " + DoubleToStr (MarketInfo (Symbol(), MODE_TICKSIZE), 4);
MarketInf[8] = "Swap Long = " + DoubleToStr (MarketInfo (Symbol(), MODE_SWAPLONG), 2);
MarketInf[9] = "Swap Short = " + DoubleToStr (MarketInfo (Symbol(), MODE_SWAPSHORT), 2);
MarketInf[10] = "------ The Amount Bar In TF. ------";
MarketInf[11] = "Bar in M1 = " + iBars (Symbol(), 1);
MarketInf[12] = "Bar in M5 = " + iBars (Symbol(), 5);
MarketInf[13] = "Bar in M15 = " + iBars (Symbol(), 15);
MarketInf[14] = "Bar in M30 = " + iBars (Symbol(), 30);
MarketInf[15] = "Bar in H1 = " + iBars (Symbol(), 60);
MarketInf[16] = "Bar in H4 = " + iBars (Symbol(), 240);
MarketInf[17] = "Bar in D1 = " + iBars (Symbol(), 1440);
MarketInf[18] = "Bar in W1 = " + iBars (Symbol(), 10080);
MarketInf[19] = "Bar in MN1 = " + iBars (Symbol(), 43200);
//----
handle = FileOpen (FileName + ".txt", FILE_READ|FILE_WRITE|FILE_BIN);
FileSeek (handle, 0, SEEK_END);
FileWriteArray (handle, MarketInf, 0, 20);
FileClose (handle);
ArrayResize (MarketInf, 0); // Óíè÷òîæàåì ìàññèâ íà âñÿêèé ñëó÷àé.
}
//==========================================================================================
// Çàïèñûâàåò õàðàêòåðèñòèêà òåêóùåãî òîðãîâîãî ñèìâîëà â ôàéë ôîðìàòà "*.CSV".
void WriteSymbolCSV (string FileName)
{
int handle = FileOpen (FileName + ".csv", FILE_CSV | FILE_READ | FILE_WRITE);
FileSeek (handle, 0, SEEK_END);
FileWrite (handle, Symbol(),
MarketInfo (Symbol(), MODE_POINT),
MarketInfo (Symbol(), MODE_DIGITS),
MarketInfo (Symbol(), MODE_SPREAD),
MarketInfo (Symbol(), MODE_STOPLEVEL),
MarketInfo (Symbol(), MODE_LOTSIZE),
MarketInfo (Symbol(), MODE_TICKVALUE),
MarketInfo (Symbol(), MODE_TICKSIZE),
MarketInfo (Symbol(), MODE_SWAPLONG),
MarketInfo (Symbol(), MODE_SWAPSHORT),
MarketInfo (Symbol(), MODE_TRADEALLOWED),
MarketInfo (Symbol(), MODE_MINLOT),
MarketInfo (Symbol(), MODE_LOTSTEP),
MarketInfo (Symbol(), MODE_MAXLOT),
MarketInfo (Symbol(), MODE_STARTING),
MarketInfo (Symbol(), MODE_EXPIRATION),
iBars (Symbol(), 1),
iBars (Symbol(), 5),
iBars (Symbol(), 15),
iBars (Symbol(), 30),
iBars (Symbol(), 60),
iBars (Symbol(), 240),
iBars (Symbol(), 1440),
iBars (Symbol(), 10080),
iBars (Symbol(), 43200));
//----
FileClose (handle);
}
//==========================================================================================
Comments