//+------------------------------------------------------------------------------------------------------------+
//| ZH_All_Quotings 4.10912 |
//| Copyright © Zhunko |
//| 06.04.2011 - 05.02.2014 vadim@zhunko.ru |
//+------------------------------------------------------------------------------------------------------------+
//| ÓÏÐÀÂËÅÍÈÅ ÑÊÐÈÏÒÎÌ ÏÐÎÈÇÂÎÄÈÒÑß ×ÅÐÅÇ ÃËÎÁÀËÜÍÛÅ ÏÅÐÅÌÅÍÍÛÅ. |
//| glAQ_TF_M1_M5_ - Âêëþ÷åíèå ïîäêà÷êè ïî âûáðàííûì ïåðèîäàì. Ãëîáàëüíàÿ ïåðåìåííàÿ ñîçäà¸òñÿ âðó÷íóþ â îêíå |
//| ãëîáàëüíûõ ïåðåìåííûõ. Ïîä÷¸ðêèâàíèå â êîíöå èìåíè íåîáõîäèìî äëÿ èäåíòèôèêàöèè |
//| ïîñëåäíåãî ÒÔ. Äëÿ ïîäêà÷êè ïî âñåì ïåðèîäàì ïåðåìåííóþ ìîæíî íå ñîçäàâàòü èëè ñîçäàòü ñ |
//| òàêèì èìåíåì: glAQ_TF_ALL. Åñëè çíà÷åíèå ïåðåìåííîé áîëåå íóëÿ, âêëþ÷àåòñÿ ñêàíèðîâàíèå |
//| âñåõ ÒÔ äî óêàçàííîãî íîìåðà ÒÔ â ïîðÿäêå âîçðàñòàíèÿ. Ïðè ýòîì èìÿ ïåðåìåííîé äëÿ |
//| âûáîðî÷íîãî ñêàíèðîâàíèÿ èãíîðèðóåòñÿ. |
//+------------------------------------------------------------------------------------------------------------+
//| 1.Èçìåíåíèÿ â ZH_All_Quotings 4.10425 îò 25.04.2011. |
//| 1.1.Îòêðûòèå ãðàôèêà ñêàíèðóåìîãî èíñòðóìåíòà çàìåíåíî íà çàìåíó èíñòðóìåíòà íà óæå îòêðûòîì ãðàôèêå. |
//| 1.Èçìåíåíèÿ â ZH_All_Quotings 4.10912 îò 12.09.2011. |
//| 1.1.Âûãðóçêà ñêðèïòà òåïåðü íå ïðèâîäèò ê àâàðèéíîé âûãðóçêå òåðìèíàëà. Òåïåðü äëÿ çàâåðøåíèÿ ðàáîòû |
//| ñêðèïòà äîñòàòî÷íî åãî âûãðóçèòü ñî ñêàíèðóåìîãî îêíà. |
//+------------------------------------------------------------------------------------------------------------+
#property copyright "Copyright © Zhunko"
#property link "vadim@zhunko.ru"
#include <ServicesMT.mqh>
int abScanTF[9] = {1}; // Ìàññèâ ñî ñïèñêîì ñêàíèðóåìûõ ÒÔ.
//æææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ
void start()
{
int i = 0;
int nBarsStart = 0; // Êîëè÷åñòâî áàðîâ íà ãðàôèêå â íà÷àëå ñêàíèðîâàíèÿ.
int nBars = 0; // Êîëè÷åñòâî áàðîâ íà ãðàôèêå.
int nStart = 0; // Ôëàã çàïóñêà öèêëà.
string sProgress = ""; // Ïðîãðåññáàð.
// Èíèöèàëèçèðóåì ìàññèâ âêëþ÷àòåëåé ñêàíèðóåìûõ ÒÔ èç èìåíè ãëîáàëüíîé ïåðåìåííîé "glAQ_TF_..._".
SwitchPeriod(abScanTF);
// Çàïóñêàåì ôóíêöèþ ïîòîêà, íî ñêàíèðîâàíèå íà÷èíàåòñÿ ñî âòîðîãî çàïóñêà ñ äðóãîãî îêíà.
nStart = ServiceLoaderQuotesW(MLQ_CONTINUED, // Óïðàâëåíèÿ çàãðóçêîé êîòèðîâîê:
// MLQ_STOP_TF ïðåêðàùåíèå çàãðóçêè êîòèðîâîê ïî òåêóùåìó ÒÔ è ïåðåõîä ê ñëåäóþùåìó èíñòðóìåíòó
// èëè ÒÔ â çàâèñèìîñòè îò ïàðàìåòðà "bMode";
// MLQ_CONTINUED çàãðóçêà êîòèðîâîê ïî òåêóùåìó ÒÔ ïðîäîëæàåòñÿ;
// MLQ_FINISH çàâåðøåíèå ôóíêöèè ïîòîêà.
true, // Ïîðÿäîê ñêàíèðîâàíèÿ èíñòðóìåíòîâ:
// TRUE - ñêàíèðîâàíèÿ ïðîèçâîäèòñÿ íà êàæäûé èíñòðóìåíò ïî âñåì ÒÔ;
// FALSE - ñêàíèðîâàíèÿ ïðîèçâîäèòñÿ íà êàæäûé ÒÔ ïî âñåì èíñòðóìåíòàì.
abScanTF, // Ìàññèâ ñ ôëàãàìè ñêàíèðóåìûõ ÒÔ. Ìàññèâ äîëæåí èìåòü ðàçìåð íå ìåíåå 9 ÿ÷ååê.
WindowExpertName()); // Èìÿ ñêðèïòà-äàò÷èêà äëÿ ïåðåäà÷è ôëàãà ïðåêðàùåíèÿ îáíîâëåíèÿ ãðàôèêà è ïåðåêëþ÷åíèÿ íà äðóãîé èíñòðóìåíò èëè ÒÔ.
for (i = 1, nBarsStart = Bars, sProgress = " "; nStart >= 1 && !IsStopped(); sProgress = sProgress + ">", i++)
{// Ìîæíî ñäåëàòü äâóìÿ ñïîáàìè:
// 1. Ïåðåäà¸ì â áèáëèîòåêó êîìàíäó î ïðåêðàùåíèè îáíîâëåíèÿ ãðàôèêà.
if (nBars == Bars)
{
ServiceSensorLoadQuotes(WindowHandle(Symbol(), 0));
return;
}
// 2. Ïåðåäà¸ì â áèáëèîòåêó êîìàíäó î ïðåêðàùåíèè îáíîâëåíèÿ ãðàôèêà.
/* ServiceLoaderQuotesW(nBars != Bars, NULL, abScanTF, NULL);
if (nBars == Bars) return;*/
for (nBars = Bars; i % 10 != 0 && !IsStopped(); sProgress = sProgress + ">", i++)
{
RefreshRates();
Comment("Bars = ", Bars - nBarsStart, "\n", sProgress);
Sleep(200);
}
if (i % 30 == 0) sProgress = "";
}
}
//æææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ
void deinit()
{//  ýòîé ôóíêöèè ñòàâèì ôèëüòð íà ïðè÷èíû óäàëåíèÿ ñêðèïòà. Ýòî àëüòåðíàòèâà ïîñëåäíåìó áëîêó â ôóíêöèè "start()".
// Åñëè ïðîèñõîäèò óäàëåíèå ñêðèïòà ñ ãðàôèêà, òî çàâåðøàåì ïîòîê.  ñëó÷àÿõ çàêðûòèÿ ãðàôèêà îòêðûâàåì åãî çàíîâî.
if (UninitializeReason() == REASON_REMOVE) ServiceLoaderQuotesW(MLQ_FINISH, NULL, abScanTF, NULL);
}
//æææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ
// Ôóíêöèÿ óñòàíàâëèâàåò âêëþ÷àòåëè ñêàíèðóåìûõ ÒÔ.
void SwitchPeriod(int& abSwitchPeriod[])
{
int j = 0, l = 0;
string sTimeFrame = ""; // Ñòðîêà ñ ïåðå÷èñëåíèåì ñêàíèðóåìûõ ÒÔ.
//----
ArrayInitialize(abSwitchPeriod, false); // Èíèöèàëèçèðóåì ìàññèâ.
for (j = 0; j < GlobalVariablesTotal() && !IsStopped(); j++) // Èùåì ãëîáàëüíóþ ïåðåìåííóþ "glAQ_TF_...".
{
if (StringSubstr(GlobalVariableName(j), 0, 8) == "glAQ_TF_") // Åñëè íàøëè ãëîáàëüíóþ ïåðåìåííóþ ñ ïåðå÷èñëåíèåì ÒÔ.
{
sTimeFrame = GlobalVariableName(j); // Çàïîìèíàåì èìÿ ãëîáàëüíîé ïåðåìåííîé ñî ñïèñêîì ÒÔ.
break; // Âûõîäèì èç öèêëà ïî ñïèñêó ãëîáàëüíûõ ïåðåìåííûõ.
}
}
// Åñëè íå íàøëè ãëîáàëüíîé ïåðåìåííîé, ñêàíèðóåì âñå ÒÔ.
if (j == GlobalVariablesTotal())
{
ArrayInitialize(abSwitchPeriod, true);
return;
}
// Ïðîâåðÿåì íà çíà÷åíèå ãëîáàëüíîé ïåðåìåííîé.
if (GlobalVariableGet(sTimeFrame) > 0) // Åñëè çíà÷åíèå áîëåå íóëÿ, âêëþ÷àåì ñêàíèðîâàíèå âñåõ ÒÔ äî óêàçàííîãî íîìåðà ÒÔ â ïîðÿäêå âîçðàñòàíèÿ.
{
switch (int(GlobalVariableGet(sTimeFrame)))
{
case 9: abSwitchPeriod[8] = true;
case 8: abSwitchPeriod[7] = true;
case 7: abSwitchPeriod[6] = true;
case 6: abSwitchPeriod[5] = true;
case 5: abSwitchPeriod[4] = true;
case 4: abSwitchPeriod[3] = true;
case 3: abSwitchPeriod[2] = true;
case 2: abSwitchPeriod[1] = true;
case 1: abSwitchPeriod[0] = true; break;
default: ArrayInitialize(abSwitchPeriod, true); // Ïðè ÷èñëå 10 è áîëåå âêëþ÷àåì ñêàíèðîâàíèå âñåõ ÒÔ.
}
return;
}
// Åñëè ïîèñê íåóñïåøíûé èëè â èìåíè ÒÔ åñòü ñëîâî "ALL", òî âêëþ÷àåì âñå ÒÔ.
if (StringLen(sTimeFrame) <= 8 || sTimeFrame == "" || StringFind(sTimeFrame, "ALL", 7) > 7)
{
ArrayInitialize(abSwitchPeriod, true);
return;
}
// Åñëè çíà÷åíèå ãëîáàëüíîé ïåðåìåííîé íîëü, âêëþ÷àåì âûáîðî÷íîå ñêàíèðîâàííèå óñòàíîâëåííîå ïîëüçîâàòåëåì â èìåíè ãëîáàëüíîé ïåðåìåííîé.
if (StringFind(sTimeFrame, "M1_", 7) > 7) abSwitchPeriod[0] = true;
if (StringFind(sTimeFrame, "M5_", 7) > 7) abSwitchPeriod[1] = true;
if (StringFind(sTimeFrame, "M15_", 7) > 7) abSwitchPeriod[2] = true;
if (StringFind(sTimeFrame, "M30_", 7) > 7) abSwitchPeriod[3] = true;
if (StringFind(sTimeFrame, "H1_", 7) > 7) abSwitchPeriod[4] = true;
if (StringFind(sTimeFrame, "H4_", 7) > 7) abSwitchPeriod[5] = true;
if (StringFind(sTimeFrame, "D1_", 7) > 7) abSwitchPeriod[6] = true;
if (StringFind(sTimeFrame, "W1_", 7) > 7) abSwitchPeriod[7] = true;
if (StringFind(sTimeFrame, "MN1_", 7) > 7) abSwitchPeriod[8] = true;
}
//æææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ
Comments