Author: Copyright � 2008-12, TarasBY WM R418875277808
0 Views
0 Downloads
0 Favorites
b-PSIaBase
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
//|                                                                    b-PSI@Base.mq4 |
//|                                       Copyright © 2012, Igor Stepovoi aka TarasBY |
//|                                                                taras_bulba@tut.by |
//| 17.03.2012  Áèáëèîòåêà áàçîâûõ ôóíêöèé.                                           |
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
//|   Äàííûé ïðîäóêò ïðåäíàçíà÷åí äëÿ íåêîìåð÷åñêîãî èñïîëüçîâàíèÿ. Ïóáëèêàöèÿ ðàçðå- |
//|øåíà òîëüêî ïðè óêàçàíèè èìåíè àâòîðà (TarasBY). Ðåäàêòèðîâàíèå èñõîäíîãî êîäà äî- |
//|ïóñòèìà òîëüêî ïðè óñëîâèè ñîõðàíåíèÿ äàííîãî òåêñòà, ññûëîê è èìåíè àâòîðà.  Ïðî- |
//|äàæà áèáëèîòåêè èëè îòäåëüíûõ å¸ ÷àñòåé ÇÀÏÐÅÙÅÍÀ.                                 |
//|   Àâòîð íå íåñ¸ò îòâåòñòâåííîñòè çà âîçìîæíûå óáûòêè, ïîëó÷åííûå â ðåçóëüòàòå èñ- |
//|ïîëüçîâàíèÿ áèáëèîòåêè.                                                            |
//|   Ïî âñåì âîïðîñàì, ñâÿçàííûì ñ ðàáîòîé áèáëèîòåêè, çàìå÷àíèÿìè èëè ïðåäëîæåíèÿìè |
//|ïî å¸ äîðàáîòêå îáðàùàòüñÿ íà Skype: TarasBY èëè e-mail.                           |
//+-----------------------------------------------------------------------------------+
//|   This product is intended for non-commercial use.  The publication is only allo- |
//|wed when you specify the name of the author (TarasBY). Edit the source code is va- |
//|lid only under condition of preservation of the text, links and author's name.     |
//|   Selling a module or(and) parts of it PROHIBITED.                                |
//|   The author is not liable for any damages resulting from the use of a module.    |
//|   For all matters relating to the work of the module, comments or suggestions for |
//|their improvement in the contact Skype: TarasBY or e-mail.                         |
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
#property copyright "Copyright © 2008-12, TarasBY WM R418875277808; Z670270286972"
#property link      "taras_bulba@tut.by"
#property library
//IIIIIIIIIIIIIIIIIII==================CONSTANS=================IIIIIIIIIIIIIIIIIIIIII+
//IIIIIIIIIIIIIIIIIII========Ãëîáàëüíûå ïåðåìåííûå ìîäóëÿ=======IIIIIIIIIIIIIIIIIIIIII+
//IIIIIIIIIIIIIIIIIII=========Ïîäêëþ÷åíèå âíåøíèõ ìîäóëåé=======IIIIIIIIIIIIIIIIIIIIII+
//IIIIIIIIIIIIIIIIIII===========Ïåðå÷åíü ôóíêöèé ìîäóëÿ=========IIIIIIIIIIIIIIIIIIIIII+
//|***********************************************************************************|
//| ÐÀÇÄÅË: Îáùèå ôóíêöèè                                                             |
//|***********************************************************************************|
//double fGet_Point (string fs_Symbol = "")
                                     // Ôóíêöèÿ, ãàðàíòèðîâàííîãî ïîëó÷åíèÿ Point
/*bool fCCV_D (double fd_Value,                    // Ïðîâåðÿåìûé ïàðàìåòð
               int fi_IND)*/                       // èíäåêñ ïàðàìåòðà â ìàññèâå
                                     // Ôèêñèðóåò ôàêò èçìåíåíèÿ ïðîâåðÿåìîãî double ïàðàìåòðà
/*bool fCCV_S (string fs_Value,                    // Ïðîâåðÿåìûé ïàðàìåòð
               int fi_IND)*/                       // èíäåêñ ïàðàìåòðà â ìàññèâå
                                     // Ôèêñèðóåò ôàêò èçìåíåíèÿ ïðîâåðÿåìîãî string ïàðàìåòðà
/*bool fCCV_B (bool fb_Value,                      // Ïðîâåðÿåìûé ïàðàìåòð
               int fi_IND)*/                       // èíäåêñ ïàðàìåòðà â ìàññèâå
                                     // Ôèêñèðóåò ôàêò èçìåíåíèÿ ïðîâåðÿåìîãî bool ïàðàìåòðà
//string fGet_NameOP (int fi_Type)   // Ôóíêöèÿ âîçâðàùàåò íàèìåíîâàíèå òîðãîâîé îïåðàöèè
//string fGet_NameTF (int fi_TF)     // Âîçâðàùàåò íàèìåíîâàíèå òàéìôðåéìà
//string fGet_SignCurrency()         // Ôóíêöèÿ âîçâðàùàåò çíà÷¸ê âàëþòû äåïîçèòà
//string CheckBOOL (int M)           // Âîçâðàùàåò íàèìåíîâàíèå ñîñòîÿíèÿ (ÄÀ\ÍÅÒ)
//string fGet_TimeToStr (datetime fdt_Time)
                                     // Âîçâðàùàåò ïðîäîëæèòåëüíîñòü ïåðèîäà â D:H:M
//double IIFd (bool condition, double ifTrue, double ifFalse)
                                     // Âîçâðàùàåò îäíî èç äâóõ çíà÷åíèé DOUBLE â çàâèñèìîñòè îò óñëîâèÿ
//string IIFs (bool condition, string ifTrue, string ifFalse)
                                     // Âîçâðàùàåò îäíî èç äâóõ çíà÷åíèé STRING â çàâèñèìîñòè îò óñëîâèÿ
//color IIFc (bool condition, color ifTrue, color ifFalse)
                                     // Âîçâðàùàåò îäíî èç äâóõ çíà÷åíèé COLOR â çàâèñèìîñòè îò óñëîâèÿ
//|***********************************************************************************|
//| ÐÀÇÄÅË: Ðàáîòû ñ ìàññèâàìè                                                        |
//|***********************************************************************************|
/*int fGet_INDInArrayINT (int fi_Value,            // Èñêîìûé ýëåìåíò
                          int ar_Array[])*/        // Ïðîâåðÿåìûé ìàññèâ
                                     // Ïîëó÷àåì èíäåêñ èñêîìîãî ýëåìåíòà â ìàññèâå int
/*int fGet_INDInArraySTR (string fs_Value,         // Èñêîìûé ýëåìåíò
                          string ar_Array[])*/     // Ïðîâåðÿåìûé ìàññèâ
                                     // Ïîëó÷àåì èíäåêñ èñêîìîãî ýëåìåíòà â ìàññèâå string
//int fGet_NumPeriods (int fi_Period)// Ïîëó÷àåì íîìåð ïåðèîäà ãðàôèêà
//void InitializeArray_STR (string& fsa_Array[], string fs_Value = "")
                                     // Èíèöèàëèçèðóåì ìàññèâ STRING
/*void fCreat_ArrayGV (string& ar_Base[],          // ðàáî÷èé ìàññèâ
                       string ar_Add[])*/          // äîáàâëÿåìû ìàññèâ
                                     // Ñîçäà¸ì ìàññèâ èì¸í âðåìåííûõ GV-ïåðåìåííûõ
/*int fSplitStrToStr (string fs_List,              // ñòðîêà ñ äàííûìè
                      string& ar_OUT[],            // âîçâðàùàåìûé ìàññèâ
                      string fs_Delimiter = ",")*/ // ðàçäåëèòåëü äàííûõ â ñòðîêå
                                     // Âîçâðàùàåò ìàññèâ STRING èç ñòðîêè, ðàçäåë¸ííîé sDelimiter
/*void fCreat_StrToInt (string ar_Value[],         // ìàññèâ ýëåìåíòîâ string
                        int& ar_OUT[],             // âîçâðàùàåìûé ìàññèâ int
                        int fi_IND,                // êîëè÷åñòâî ÿ÷ååê â ìàññèâå
                        int fi_Factor = 1,         // ìíîæèòåëü
                        string fs_NameArray = "")*/// èìÿ âîçâðàùàåìîãî ìàññèâà
                                     // Âîçâðàùàåò ìàññèâ INT èç ýëåìåíòîâ ìàññèâà STRING
/*void fCreat_StrToDouble (string ar_Value[],      // ìàññèâ ýëåìåíòîâ string
                           double& ar_OUT[],       // âîçâðàùàåìûé ìàññèâ double
                           int fi_IND,             // êîëè÷åñòâî ÿ÷ååê â ìàññèâå
                           double fd_Factor = 1.0, // ìíîæèòåëü
                           string fs_NameArray = "")*/// èìÿ âîçâðàùàåìîãî ìàññèâà
                                     // Âîçâðàùàåò ìàññèâ DOUBLE èç ýëåìåíòîâ ìàññèâà STRING
/*string fCreat_StrAndArray (int fi_First,         // çíà÷åíèå 1-ãî ýåëåìåíòà ìàññèâà
                             int& ar_OUT[],        // âîçâðàùàåìûé ìàññèâ int
                             int fi_cntIND,        // êîëè÷åñòâî ýëåìåíòîâ â ìàññèâå
                             string fs_Delimiter = ",")*/// ðàçäåëèòåëü ýëåìåíòîâ â âîçâðàùàåìîé ñòðîêå
                                     // Âîçâðàùàåò ñòðîêó èç ýëåìåíòîâ ìàññèâà INT è ñàì ìàññèâ
/*string fCreat_StrFromArray (string ar_Array[],   // ìàññèâ ñî çíà÷åíèÿìè
                              string fs_Delimiter = ",")*/// ðàçäåëèòåëü ýëåìåíòîâ â âîçâðàùàåìîé ñòðîêå
                                     // Âîçâðàùàåò ñòðîêó èç ýëåìåíòîâ ìàññèâà, ðàçäåë¸ííûõ fs_Delimiter
/*int fInit_ArrayINT (int& ar_INT[],               // Èíèöèàëèçèðóåìûé ìàññèâ
                      string fs_List,              // Èíèöèàëèçèðóåìûå çíà÷åíèÿ â ñòðîêå
                      int fi_Range,                // Ðàçìåð ìàññèâà
                      double fd_Factor = 1.0,      // ìíîæèòåëü
                      string fs_NameArray = "",    // èìÿ âîçâðàùàåìîãî ìàññèâà
                      string fs_Delimiter = ",")*/ // Ðàçäåëèòåëü çíà÷åíèé â ñòðîêå
                                     // Èíèöèàëèçàöèÿ ðàáî÷åãî ìàññèâà int
/*int fInit_ArrayDBL (double& ar_DBL[],            // Èíèöèàëèçèðóåìûé ìàññèâ
                      string fs_List,              // Èíèöèàëèçèðóåìûå çíà÷åíèÿ â ñòðîêå
                      int fi_Range,                // Ðàçìåð ìàññèâà
                      double fd_Factor = 1.0,      // ìíîæèòåëü
                      string fs_NameArray = "",    // èìÿ âîçâðàùàåìîãî ìàññèâà
                      string fs_Delimiter = ",")*/ // Ðàçäåëèòåëü çíà÷åíèé â ñòðîêå
                                     // Èíèöèàëèçàöèÿ ðàáî÷åãî ìàññèâà double
/*int fInit_ArrayBOOL (bool& ar_BOOL[],            // Èíèöèàëèçèðóåìûé ìàññèâ
                       string fs_List,             // Èíèöèàëèçèðóåìûå çíà÷åíèÿ â ñòðîêå
                       int fi_Range,               // Ðàçìåð ìàññèâà
                       double fd_Factor = 1.0,     // ìíîæèòåëü
                       string fs_NameArray = "",   // èìÿ âîçâðàùàåìîãî ìàññèâà
                       string fs_Delimiter = ",")*/// Ðàçäåëèòåëü çíà÷åíèé â ñòðîêå
                                     // Èíèöèàëèçàöèÿ ðàáî÷åãî ìàññèâà bool
/*void fShiftIndex (double& ar_MAS[],              // ìàññèâ çíà÷åíèé
                    bool fb_Conditions = false)*/  // ðàçðåøåíèå íà óâåëè÷åíèå ðàçìåðíîñòè ìàññèâà
                                     // Îñâîáîæäàåì 0-ÿ÷åéêó ñî ñäâèãîì ââåðõ äëÿ çàïèñè òåêóùèõ çíà÷åíèé
/*double fChoiceSource (string fs_Symbol,          // Symbol
                        int fi_Bar,                // Bar
                        datetime fdt_Time,         // Time
                        int fi_TF,                 // Period
                        double fda_Array[][],      // ìàññèâ ñ àëüòåðíàòèâíûìè êîòèðîâêàìè
                        int fi_NSource,            // èíäåêñ â 1-îì èçìåðåíèè ìàññèâà
                        bool fb_IsBufffer = true)*/// ôëàã "ðîäíîé" èñòîðèè
                                     // Àëüòåðíàòèâà èíäèêàòîðíîìó áóôåðó
/*void fRun_Sort (int& ar_INDEX[],                 // ìàññèâ èíäåêñîâ äëÿ ñîðòèðîâêè
                  double fda_Value[])*/            // ìàññèâ çíà÷åíèé
                                     // Ñîðòèðóåì èíäåêñû ìàññèâà ïî óáûâàíèþ
//|***********************************************************************************|
//| ÐÀÇÄÅË: Ñåðâèñíûõ ôóíêöèé                                                         |
//|***********************************************************************************|
/*double fGet_ValueFromGV (string fs_Name,         // èìÿ GV-ïåðåìåííîé
                           double fd_Value,        // åñëè òàêîé ïåðåìåííîé íåò, ïîäñòàâëÿåìîå çíà÷åíèå
                           bool fd_Condition = true,// óñëîâèå íà ïðîâåðêó íàëè÷èÿ GV-ïåðåìåííîé
                           bool fd_CreatGV = false)*/// Ðàçðåøåíèå íà ñîçäàíèå GV (åñëè å¸ íåò)
                                     // Áåð¸ì çíà÷åíèå ïåðåìåííîé èëè èç GV, èëè (ïðè å¸ îòñòóòñòâèè) fd_Value
//void fClear_GV (int fi_cnt = 5000)               // êîë-âî î÷èùàåìûõ îáúåêòîâ (òèêåòîâ)
                                     // Ïîä÷èùàåì âîçìîæíî îñòàâøèåñÿ GV-ïåðåìåííûå
/*void fPrintAlert (string fs_Symbol,              // Symbol
                    int fi_TF,                     // Òàéìôðåéì
                    int fi_IND)*/                  // íîìåð èíäåêñà â ìàññèâå
                                     // Ïðåäóïðåæäàåì îá îòñóòñòâèè èñòîðèè íà áàðå
//+===================================================================================+
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
//+===================================================================================+
//|***********************************************************************************|
//| ÐÀÇÄÅË: Îáùèå ôóíêöèè                                                             |
//|***********************************************************************************|
//+===================================================================================+
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
//|  Àâòîð : TarasBY, taras_bulba@tut.by                                              |
//+-----------------------------------------------------------------------------------+
//|        Ôóíêöèÿ, ãàðàíòèðîâàííîãî ïîëó÷åíèÿ Point                                  |
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
double fGet_Point (string fs_Symbol = "")
{
    double ld_Point = 0.0;
//----
    if (fs_Symbol == "") {fs_Symbol = Symbol();}
    ld_Point = MarketInfo (fs_Symbol, MODE_POINT);
    //---- Åñëè ðåçóëüòàòà íåò
    if (ld_Point == 0.0)
    {
        int li_Digits = MarketInfo (fs_Symbol, MODE_DIGITS);
        if (li_Digits > 0) {ld_Point = 1.0 / MathPow (10, li_Digits);}
    }
    else {return (ld_Point);}
//----
    return (ld_Point);
}
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
//|  Àâòîð    : TarasBY, taras_bulba@tut.by                                           |
//+-----------------------------------------------------------------------------------+
//|  Âåðñèÿ   : 27.10.2009 (fControlChangeValue_D)                                    |
//|  Îïèñàíèå : Ôèêñèðóåò ôàêò èçìåíåíèÿ ïðîâåðÿåìîãî ïàðàìåòðà                       |
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
bool fCCV_D (double fd_Value,           // Ïðîâåðÿåìûé ïàðàìåòð
             int fi_IND)                // èíäåêñ ïàðàìåòðà â ìàññèâå
{
    static double lda_Values[20];
    static bool   lb_first = true;
//---- 
    //---- Ïðè ïåðâîì çàïóñêå èíèöèàëèçèðóåì ìàññèâ
    if (lb_first) {ArrayInitialize (lda_Values, 0.0); lb_first = false;}
    else if (lda_Values[fi_IND] != fd_Value) {lda_Values[fi_IND] = fd_Value; return (true);}
//---- 
    return (false);
}
//+-----------------------------------------------------------------------------------+
bool fCCV_S (string fs_Value,           // Ïðîâåðÿåìûé ïàðàìåòð
             int fi_IND)                // èíäåêñ ïàðàìåòðà â ìàññèâå
{
    static string lsa_Values[20];
    static bool   lb_first = true;
//---- 
    //---- Ïðè ïåðâîì çàïóñêå èíèöèàëèçèðóåì ìàññèâ
    if (lb_first) {InitializeArray_STR (lsa_Values, ""); lb_first = false;}
    else if (lsa_Values[fi_IND] != fs_Value) {lsa_Values[fi_IND] = fs_Value; return (true);}
//---- 
    return (false);
}
//+-----------------------------------------------------------------------------------+
bool fCCV_B (bool fb_Value,             // Ïðîâåðÿåìûé ïàðàìåòð
             int fi_IND)                // èíäåêñ ïàðàìåòðà â ìàññèâå
{
    static bool lba_Values[20], lb_first = true;
//---- 
    //---- Ïðè ïåðâîì çàïóñêå èíèöèàëèçèðóåì ìàññèâ
    if (lb_first) {ArrayInitialize (lba_Values, False); lb_first = false;}
    else if (lba_Values[fi_IND] != fb_Value) {lba_Values[fi_IND] = fb_Value; return (true);}
//---- 
    return (false);
}
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
//|  Àâòîð : TarasBY, taras_bulba@tut.by                                              |
//+-----------------------------------------------------------------------------------+
//|        Ôóíêöèÿ âîçâðàùàåò íàèìåíîâàíèå òîðãîâîé îïåðàöèè                          |
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
string fGet_NameOP (int fi_Type) 
{
//----
    switch (fi_Type) 
    {
        case -2          : return ("trading");
        case -1          : return ("ALL");
        case OP_BUY      : return ("BUY");
        case OP_SELL     : return ("SELL");
        case OP_BUYLIMIT : return ("BUYLIMIT");
        case OP_SELLLIMIT: return ("SELLLIMIT");
        case OP_BUYSTOP  : return ("BUYSTOP");
        case OP_SELLSTOP : return ("SELLSTOP");
        case 6           : if (OrderType() == 6) return ("balance"); else return ("UNI");
        case 7           : return ("pending");
    }
    return (StringConcatenate ("None (", fi_Type, ")"));
//----
}
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
//|  Àâòîð : TarasBY, taras_bulba@tut.by                                              |
//+-----------------------------------------------------------------------------------+
//|        Âîçâðàùàåò íàèìåíîâàíèå òàéìôðåéìà                                         |
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
string fGet_NameTF (int fi_TF)
{
//----
    if (fi_TF == 0) fi_TF = Period();
    switch (fi_TF)
    {
        case PERIOD_M1:  return ("M1");
		  case PERIOD_M5:  return ("M5");
		  case PERIOD_M15: return ("M15");
		  case PERIOD_M30: return ("M30");
		  case PERIOD_H1:  return ("H1");
		  case PERIOD_H4:  return ("H4");
		  case PERIOD_D1:  return ("D1");
		  case PERIOD_W1:  return ("W1");
		  case PERIOD_MN1: return ("MN1");
	 }
//----
	 return ("UnknownPeriod");
}
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
//|  Àâòîð : TarasBY, taras_bulba@tut.by                                              |
//+-----------------------------------------------------------------------------------+
//|        Ôóíêöèÿ âîçâðàùàåò çíà÷¸ê âàëþòû äåïîçèòà                                  |
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
string fGet_SignCurrency()
{
//---- 
    if (AccountCurrency() == "USD") return ("$");
    if (AccountCurrency() == "EUR") return ("ˆ");
//---- 
    return ("RUB");
}
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
//|  Àâòîð : TarasBY, taras_bulba@tut.by                                              |
//+-----------------------------------------------------------------------------------+
//|        Âîçâðàùàåò íàèìåíîâàíèå ñîñòîÿíèÿ (ÄÀ\ÍÅÒ)                                 |
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
string CheckBOOL (int M)
{
//---- 
    switch (M)
    {
        case 0: return ("OFF");
        case 1: return ("ON");
    }
//---- 
    return ("Don`t know...");
}
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
//|  Àâòîð : TarasBY, taras_bulba@tut.by                                              |
//+-----------------------------------------------------------------------------------+
//|        Âîçâðàùàåò ïðîäîëæèòåëüíîñòü ïåðèîäà â D:H:M                               |
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
string fGet_TimeToStr (datetime fdt_Time)
{
    int li_Day = fdt_Time / (1440 * 60);
//---- 
//---- 
    return (StringConcatenate (li_Day, ":", TimeToStr (fdt_Time, TIME_MINUTES)));
}
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
//|  Àâòîð    : Êèì Èãîðü Â. aka KimIV,  http://www.kimiv.ru                          |
//+-----------------------------------------------------------------------------------+
//|  Âåðñèÿ   : 01.02.2008                                                            |
//|  Îïèñàíèå : Âîçâðàùàåò îäíî èç äâóõ çíà÷åíèé âçàâèñèìîñòè îò óñëîâèÿ.             |
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
double IIFd (bool condition, double ifTrue, double ifFalse)
{if (condition) {return (ifTrue);} else return (ifFalse);}
//+-----------------------------------------------------------------------------------+
string IIFs (bool condition, string ifTrue, string ifFalse)
{if (condition) {return (ifTrue);} else return (ifFalse);}
//+-----------------------------------------------------------------------------------+
color IIFc (bool condition, color ifTrue, color ifFalse)
{if (condition) {return (ifTrue);} else return (ifFalse);}
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
//+===================================================================================+
//|***********************************************************************************|
//| ÐÀÇÄÅË: Ðàáîòû ñ ìàññèâàìè                                                        |
//|***********************************************************************************|
//+===================================================================================+
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
//|  Àâòîð : TarasBY, taras_bulba@tut.by                                              |
//+-----------------------------------------------------------------------------------+
//|  UNI:  Ïîëó÷àåì èíäåêñ èñêîìîãî ýëåìåíòà â ìàññèâå                                |
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
int fGet_INDInArrayINT (int fi_Value,       // Èñêîìûé ýëåìåíò
                        int ar_Array[])     // Ïðîâåðÿåìûé ìàññèâ
{
//---- 
    for (int li_IND = 0; li_IND < ArraySize (ar_Array); li_IND++)
    {if (ar_Array[li_IND] == fi_Value) return (li_IND);}
//---- 
    return (-1);
}
//+-----------------------------------------------------------------------------------+
int fGet_INDInArraySTR (string fs_Value, string ar_Array[])
{
//---- 
    for (int li_IND = 0; li_IND < ArraySize (ar_Array); li_IND++)
    {if (ar_Array[li_IND] == fs_Value) return (li_IND);}
//---- 
    return (-1);
}
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
//|  Àâòîð : TarasBY, taras_bulba@tut.by                                              |
//+-----------------------------------------------------------------------------------+
//|  UNI:  Ïîëó÷àåì íîìåð ïåðèîäà ãðàôèêà                                             |
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
int fGet_NumPeriods (int fi_Period)
{
    static int lia_Periods[] = {1,5,15,30,60,240,1440,10080,43200};
//---- 
    for (int l_int = 0; l_int < ArraySize (lia_Periods); l_int++)
    {if (lia_Periods[l_int] == fi_Period) return (l_int);}
//---- 
    return (-1);
}
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
//|  Àâòîð : TarasBY, taras_bulba@tut.by                                              |
//+-----------------------------------------------------------------------------------+
//|  UNI:  Èíèöèàëèçèðóåì Value ìàññèâ STRING                                         |
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
void InitializeArray_STR (string& fsa_Array[], string fs_Value = "")
{
    int l_int, size = ArraySize (fsa_Array);
//----
    for (l_int = 0; l_int < size; l_int++)
    {fsa_Array[l_int] = fs_Value;}
//----
}
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
//|  Àâòîð : TarasBY, taras_bulba@tut.by                                              |
//+-----------------------------------------------------------------------------------+
//|        Ñîçäà¸ì ìàññèâ èì¸í âðåìåííûõ GV-ïåðåìåííûõ                                |
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
void fCreat_ArrayGV (string& ar_Base[],  // ðàáî÷èé ìàññèâ
                     string ar_Add[])    // äîáàâëÿåìûé ìàññèâ
{
    int li_int, li_sizeB = ArraySize (ar_Base), li_sizeA = ArraySize (ar_Add);
    bool lb_duble;
//----
    for (int li_IND = 0; li_IND < li_sizeA; li_IND++)
    {
        lb_duble = false;
        //---- Îñóùåñòâëÿåì ïðîâåðêó íà äóáëèêàòû
        for (li_int = 0; li_int < li_sizeB; li_int++)
        {
            if (ar_Add[li_IND] == ar_Base[li_int])
            {lb_duble = true; break;}
        }
        //---- Åñëè äóáëèêàò - èä¸ì äàëüøå
        if (lb_duble) continue;
        //---- Óâåëè÷èâàåì ñ÷¸ò÷èê
        li_sizeB++;
        //---- Óâåëè÷èâàåì áàçîâûé ìàññèâ
        ArrayResize (ar_Base, li_sizeB);
        //---- Âíîñèì â ïîñëåäíþþ ÿ÷åéêó íîâîå çíà÷åíèå
        ar_Base[li_sizeB - 1] = ar_Add[li_IND];
    }
//----
}
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
//|  Àâòîð : TarasBY, taras_bulba@tut.by                                              |
//+-----------------------------------------------------------------------------------+
//|        Âîçâðàùàåò ìàññèâ STRING èç ñòðîêè, ðàçäåë¸ííîé sDelimiter                 |
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
int fSplitStrToStr (string fs_List,             // ñòðîêà ñ äàííûìè
                    string& ar_OUT[],           // âîçâðàùàåìûé ìàññèâ
                    string fs_Delimiter = ",")  // ðàçäåëèòåëü äàííûõ â ñòðîêå
{
    string tmp_str = "", tmp_char = "";
//----
    ArrayResize (ar_OUT, 0);
    for (int i = 0; i < StringLen (fs_List); i++)
    {
        tmp_char = StringSubstr (fs_List, i, 1);
        if (tmp_char == fs_Delimiter)
        {
            if (StringTrimLeft (StringTrimRight (tmp_str)) != "")
            {
                ArrayResize (ar_OUT, ArraySize (ar_OUT) + 1);
                ar_OUT[ArraySize (ar_OUT) - 1] = tmp_str;
            }
            tmp_str = "";
        }
        else {if (tmp_char != " ") tmp_str = tmp_str + tmp_char;}
    }
    if (StringTrimLeft (StringTrimRight (tmp_str)) != "")
    {
        ArrayResize (ar_OUT, ArraySize (ar_OUT) + 1);
        ar_OUT[ArraySize (ar_OUT) - 1] = tmp_str;
    }
//----
    return (ArraySize (ar_OUT));
}
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
//|  Àâòîð : TarasBY, taras_bulba@tut.by                                              |
//+-----------------------------------------------------------------------------------+
//|        Âîçâðàùàåò ìàññèâ INT èç ýëåìåíòîâ ìàññèâà STRING                          |
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
void fCreat_StrToInt (string ar_Value[],        // ìàññèâ ýëåìåíòîâ string
                      int& ar_OUT[],            // âîçâðàùàåìûé ìàññèâ int
                      int fi_IND,               // êîëè÷åñòâî ÿ÷ååê â ìàññèâå
                      int fi_Factor = 1,        // ìíîæèòåëü
                      string fs_NameArray = "") // èìÿ âîçâðàùàåìîãî ìàññèâà
{
    int    li_size = ArraySize (ar_Value);
    string ls_row = "";
//----
    ArrayResize (ar_OUT, fi_IND);
    for (int li_int = 0; li_int < fi_IND; li_int++)
    {
        if (li_int < li_size) {ar_OUT[li_int] = StrToInteger (ar_Value[li_int]) * fi_Factor;}
        else {ar_OUT[li_int] = StrToDouble (ar_Value[li_size - 1]) * fi_Factor;}
        ls_row = StringConcatenate (ls_row, fs_NameArray, "[", li_int, "] = ", ar_OUT[li_int], "; ");
    }
    if (fs_NameArray != "") Print (ls_row);
//----
}
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
//|  Àâòîð : TarasBY, taras_bulba@tut.by                                              |
//+-----------------------------------------------------------------------------------+
//|        Âîçâðàùàåò ìàññèâ DOUBLE èç ýëåìåíòîâ ìàññèâà STRING                       |
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
void fCreat_StrToDouble (string ar_Value[],        // ìàññèâ ýëåìåíòîâ string
                         double& ar_OUT[],         // âîçâðàùàåìûé ìàññèâ double
                         int fi_IND,               // êîëè÷åñòâî ÿ÷ååê â ìàññèâå
                         double fd_Factor = 1.0,   // ìíîæèòåëü
                         string fs_NameArray = "") // èìÿ âîçâðàùàåìîãî ìàññèâà
{
    int    li_size = ArraySize (ar_Value);
    string ls_row = "";
//----
    ArrayResize (ar_OUT, fi_IND);
    for (int li_int = 0; li_int < fi_IND; li_int++)
    {
        if (li_int < li_size) {ar_OUT[li_int] = StrToDouble (ar_Value[li_int]) * fd_Factor;}
        else {ar_OUT[li_int] = StrToDouble (ar_Value[li_size - 1]) * fd_Factor;}
        ls_row = StringConcatenate (ls_row, fs_NameArray, "[", li_int, "] = ", ar_OUT[li_int], "; ");
    }
    if (fs_NameArray != "") Print (ls_row);
//----
}
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
//|  Àâòîð : TarasBY, taras_bulba@tut.by                                              |
//+-----------------------------------------------------------------------------------+
//|        Âîçâðàùàåò ñòðîêó èç ýëåìåíòîâ ìàññèâà INT è ñàì ìàññèâ                    |
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
string fCreat_StrAndArray (int fi_First,              // çíà÷åíèå 1-ãî ýåëåìåíòà ìàññèâà
                           int& ar_OUT[],             // âîçâðàùàåìûé ìàññèâ int
                           int fi_cntIND,             // êîëè÷åñòâî ýëåìåíòîâ â ìàññèâå
                           string fs_Delimiter = ",") // ðàçäåëèòåëü ýëåìåíòîâ â âîçâðàùàåìîé ñòðîêå
{
    string ls_row = "";
//----
    ArrayResize (ar_OUT, fi_cntIND);
    for (int li_int = 0; li_int < fi_cntIND; li_int++)
    {
        if (li_int == fi_cntIND - 1) fs_Delimiter = "";
        ar_OUT[li_int] = fi_First + li_int;
        ls_row = StringConcatenate (ls_row, ar_OUT[li_int], fs_Delimiter);
    }
//----
    return (ls_row);
}
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
//|  Àâòîð : TarasBY, taras_bulba@tut.by                                              |
//+-----------------------------------------------------------------------------------+
//|        Âîçâðàùàåò ñòðîêó èç ýëåìåíòîâ ìàññèâà, ðàçäåë¸ííûõ fs_Delimiter           |
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
string fCreat_StrFromArray (string ar_Array[],           // ìàññèâ ñî çíà÷åíèÿìè
                            string fs_Delimiter = ",")   // ðàçäåëèòåëü ýëåìåíòîâ â âîçâðàùàåìîé ñòðîêå
{
    string ls_row = "";
    int    li_size = ArraySize (ar_Array);
//----
    for (int li_int = 0; li_int < li_size; li_int++)
    {
        if (li_int == li_size - 1) fs_Delimiter = "";
        ls_row = StringConcatenate (ls_row, ar_Array[li_int], fs_Delimiter);
    }
//----
    return (ls_row);
}
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
//|  Àâòîð    : TarasBY, taras_bulba@tut.by                                           |
//+-----------------------------------------------------------------------------------+
//|  Âåðñèÿ   : 02.08.2012                                                            |
//|  Îïèñàíèå : Èíèöèàëèçàöèÿ ðàáî÷åãî ìàññèâà.                                       |
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
int fInit_ArrayINT (int& ar_INT[],              // Èíèöèàëèçèðóåìûé ìàññèâ
                    string fs_List,             // Èíèöèàëèçèðóåìûå çíà÷åíèÿ â ñòðîêå
                    int fi_Range,               // Ðàçìåð ìàññèâà
                    double fd_Factor = 1.0,     // ìíîæèòåëü
                    string fs_NameArray = "",   // èìÿ âîçâðàùàåìîãî ìàññèâà
                    string fs_Delimiter = ",")  // Ðàçäåëèòåëü çíà÷åíèé â ñòðîêå
{
//----
    //---- Èùåì â ñòðîêå ðàçäåëèòåëü - ïðèçíàê íàëè÷èÿ â ñòðîêå > 1 ïàðàìåòðà
    if (StringFind (fs_List, fs_Delimiter) == -1) return (1);
    else
    {
        string lsa_TMP[];
        int    li_cnt = fSplitStrToStr (fs_List, lsa_TMP, ",");
        if (fi_Range > 0)
        {
            if (li_cnt != fi_Range)
            {
                Print (fs_NameArray, ": íå ñîîòâåñòâèå â ðàçìåðíîñòè ìàññèâà !!!");
                li_cnt = fi_Range;
            }
        }
        fCreat_StrToInt (lsa_TMP, ar_INT, li_cnt, fd_Factor, fs_NameArray);
    }
//----
    return (li_cnt);
}
//+-----------------------------------------------------------------------------------+
int fInit_ArrayDBL (double& ar_DBL[],           // Èíèöèàëèçèðóåìûé ìàññèâ
                    string fs_List,             // Èíèöèàëèçèðóåìûå çíà÷åíèÿ â ñòðîêå
                    int fi_Range,               // Ðàçìåð ìàññèâà
                    double fd_Factor = 1.0,     // ìíîæèòåëü
                    string fs_NameArray = "",   // èìÿ âîçâðàùàåìîãî ìàññèâà
                    string fs_Delimiter = ",")  // Ðàçäåëèòåëü çíà÷åíèé â ñòðîêå
{
//----
    //---- Èùåì â ñòðîêå ðàçäåëèòåëü - ïðèçíàê íàëè÷èÿ â ñòðîêå > 1 ïàðàìåòðà
    if (StringFind (fs_List, fs_Delimiter) == -1) return (1);
    else
    {
        string lsa_TMP[];
        int    li_cnt = fSplitStrToStr (fs_List, lsa_TMP, ",");
        if (fi_Range > 0)
        {
            if (li_cnt != fi_Range)
            {
                Print (fs_NameArray, ": íå ñîîòâåñòâèå â ðàçìåðíîñòè ìàññèâà !!!");
                li_cnt = fi_Range;
            }
        }
        fCreat_StrToDouble (lsa_TMP, ar_DBL, li_cnt, fd_Factor, fs_NameArray);
    }
//----
    return (li_cnt);
}
//+-----------------------------------------------------------------------------------+
int fInit_ArrayBOOL (bool& ar_BOOL[],            // Èíèöèàëèçèðóåìûé ìàññèâ
                     string fs_List,             // Èíèöèàëèçèðóåìûå çíà÷åíèÿ â ñòðîêå
                     int fi_Range,               // Ðàçìåð ìàññèâà
                     double fd_Factor = 1.0,     // ìíîæèòåëü
                     string fs_NameArray = "",   // èìÿ âîçâðàùàåìîãî ìàññèâà
                     string fs_Delimiter = ",")  // Ðàçäåëèòåëü çíà÷åíèé â ñòðîêå
{
//----
    //---- Èùåì â ñòðîêå ðàçäåëèòåëü - ïðèçíàê íàëè÷èÿ â ñòðîêå > 1 ïàðàìåòðà
    if (StringFind (fs_List, fs_Delimiter) == -1) return (1);
    else
    {
        string lsa_TMP[];
        int    li_cnt = fSplitStrToStr (fs_List, lsa_TMP, ","), lia_TMP[];
        if (fi_Range > 0)
        {
            if (li_cnt != fi_Range)
            {
                Print (fs_NameArray, ": íå ñîîòâåñòâèå â ðàçìåðíîñòè ìàññèâà !!!");
                li_cnt = fi_Range;
            }
        }
        fCreat_StrToInt (lsa_TMP, lia_TMP, li_cnt, fd_Factor, fs_NameArray);
    }
    ArrayCopy (ar_BOOL, lia_TMP);
//----
    return (li_cnt);
}
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
//|  Àâòîð : TarasBY, taras_bulba@tut.by                                              |
//+-----------------------------------------------------------------------------------+
//|        Àëüòåðíàòèâà èíäèêàòîðíîìó áóôåðó                                          |
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
double fChoiceSource (string fs_Symbol,          // Symbol
                      int fi_Bar,                // Bar
                      datetime fdt_Time,         // Time
                      int fi_TF,                 // Period
                      double fda_Array[][],      // ìàññèâ ñ àëüòåðíàòèâíûìè êîòèðîâêàìè
                      int fi_NSource,            // èíäåêñ â 1-îì èçìåðåíèè ìàññèâà
                      bool fb_IsBufffer = true)  // ôëàã "ðîäíîé" èñòîðèè
{
//----
    if (fb_IsBufffer)
    {
        //---- Âîçâðàùàåì çíà÷åíèÿ èç èñòîðèè òåðìèíàëà
        switch (fi_NSource)
        {
            case 0: return (iOpen (fs_Symbol, fi_TF, fi_Bar));
            case 1: return (iHigh (fs_Symbol, fi_TF, fi_Bar));
            case 2: return (iLow (fs_Symbol, fi_TF, fi_Bar));
            case 3: return (iClose (fs_Symbol, fi_TF, fi_Bar));
        }
    }
    else
    {
        //---- Ñâåðÿåìñÿ ïî âðåìåíè (ñèíõðîíèçàöèÿ áàðà)
        if (fda_Array[fi_Bar][6] == fdt_Time) {return (fda_Array[fi_Bar][fi_NSource]);}
        else
        {
            for (int li_IND = 0; li_IND < ArrayRange (fda_Array, 0); li_IND++)
            {
                if (fdt_Time >= fda_Array[li_IND][6])
                {return (fda_Array[li_IND][fi_NSource]);}
            }
        }
    }
//----
    return (0.0);
}
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
//|  Àâòîð : TarasBY, taras_bulba@tut.by                                              |
//+-----------------------------------------------------------------------------------+
//|        Îñâîáîæäàåì 0-ÿ÷åéêó ñî ñäâèãîì ââåðõ äëÿ çàïèñè òåêóùèõ çíà÷åíèé          |
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
void fShiftIndex (double& ar_MAS[],              // ìàññèâ çíà÷åíèé
                  bool fb_Conditions = false)    // ðàçðåøåíèå íà óâåëè÷åíèå ðàçìåðíîñòè ìàññèâà
{
    int li_size = ArraySize (ar_MAS);
    double lda_TMP[];
//----
    //---- Çàäà¸ì ðàçìåð âðåìåííîìó ìàññèâó
    ArrayResize (lda_TMP, li_size);
    //---- Êîïèðóåì äàííûå âî âðåìåííûé ìàññèâ
    ArrayCopy (lda_TMP, ar_MAS);
    //---- Åñëè çàäàíî, óâåëè÷èâàåì ðàçìåð èñõîäíîãî ìàññèâà
    if (fb_Conditions) ArrayResize (ar_MAS, li_size + 1);
    //---- Îáðàòíî êîïèðóåì äàííûå èç âðåìåííîãî ìàññèâà ñî çäâèãîì íà 1
    ArrayCopy (ar_MAS, lda_TMP, 1);
    //---- Íóëåâóþ ÿ÷åéêó èñõîäíîãî ìàññèâà îáíóëÿåì
    ar_MAS[0] = 0.0;
//----
}
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
//|  UNI:   Ñîðòèðóåì èíäåêñû ìàññèâà ïî óáûâàíèþ                                     |
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
void fRun_Sort (int& ar_INDEX[],     // ìàññèâ èíäåêñîâ äëÿ ñîðòèðîâêè
                double fda_Value[])  // ìàññèâ çíà÷åíèé
{
    int li_IND, li_int, li_tmp, li_size = ArraySize (fda_Value);
//----
    for (li_IND = 0; li_IND < li_size; li_IND++)
    {ar_INDEX[li_IND] = li_IND;}
    for (li_IND = 0; li_IND < li_size; li_IND++)
    {
		  for (li_int = li_IND + 1; li_int < li_size; li_int++)
		  {
			   if (fda_Value[ar_INDEX[li_IND]] < fda_Value[ar_INDEX[li_int]])
			   {
				    li_tmp = ar_INDEX[li_int]; 
				    ar_INDEX[li_int] = ar_INDEX[li_IND]; 
				    ar_INDEX[li_IND] = li_tmp;
			   }
		  }
	 }
//----
    return;
}
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
//+===================================================================================+
//|***********************************************************************************|
//| ÐÀÇÄÅË: Ñåðâèñíûõ ôóíêöèé                                                         |
//|***********************************************************************************|
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
//|  Àâòîð : TarasBY, taras_bulba@tut.by                                              |
//+-----------------------------------------------------------------------------------+
//         Áåð¸ì çíà÷åíèå ïåðåìåííîé èëè èç GV, èëè (ïðè å¸ îòñòóòñòâèè) fd_Value     |
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
double fGet_ValueFromGV (string fs_Name,            // èìÿ GV-ïåðåìåííîé
                         double fd_Value,           // åñëè òàêîé ïåðåìåííîé íåò, ïîäñòàâëÿåìîå çíà÷åíèå
                         bool fd_Condition = true,  // óñëîâèå íà ïðîâåðêó íàëè÷èÿ GV-ïåðåìåííîé
                         bool fd_CreatGV = false)   // Ðàçðåøåíèå íà ñîçäàíèå GV (åñëè å¸ íåò)
{
//----
    if (!fd_Condition) {return (fd_Value);}
    if (GlobalVariableCheck (fs_Name)) {return (GlobalVariableGet (fs_Name));}
    else {if (fd_CreatGV) {GlobalVariableSet (fs_Name, fd_Value);} return (fd_Value);}
//----
}
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
//|  Àâòîð : TarasBY, taras_bulba@tut.by                                              |
//+-----------------------------------------------------------------------------------+
//|        Ïîä÷èùàåì âîçìîæíî îñòàâøèåñÿ GV-ïåðåìåííûå                                |
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
void fClear_GV (int fi_cnt = 5000)    // êîë-âî î÷èùàåìûõ îáúåêòîâ (òèêåòîâ)
{
    string ls_Name, lsa_Name[] = {"_#Delta_SL","_#LastLossLevel","_#VirtSL",
           "_#VirtTP","_#BeginSL","_#SL","_#TP","_#Num","_#Lots","_#BU","_#STOP","_#OP"};
    int    li_size = ArraySize (lsa_Name), li_IND;
//---- 
    for (int li_CNT = 0; li_CNT < fi_cnt; li_CNT++)
    {
        for (li_IND = 0; li_IND < li_size; li_IND++)
        {
            ls_Name = StringConcatenate (li_CNT, lsa_Name[li_IND]);
            if (GlobalVariableCheck (ls_Name)) GlobalVariableDel (ls_Name); 
        }
    }
//---- 
}
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
//|  Àâòîð : TarasBY, taras_bulba@tut.by                                              |
//+-----------------------------------------------------------------------------------+
//|        Ïðåäóïðåæäàåì îá îòñóòñòâèè èñòîðèè íà áàðå                                |
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
void fPrintAlert (string fs_Symbol,              // Symbol
                  int fi_TF,                     // Òàéìôðåéì
                  int fi_IND)                    // íîìåð èíäåêñà â ìàññèâå
{
    static int lia_Minute[2] = {0,0};
//----
    if (lia_Minute[fi_IND] != TimeMinute (TimeCurrent()))
    {
        lia_Minute[fi_IND] = TimeMinute (TimeCurrent());
        Print (fs_Symbol, ": Íåò èñòîðèè íà ", fGet_NameTF (fi_TF), " : ", TimeToStr (TimeCurrent()));
    }
//----
}
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+

Comments