Tick-Tack-toe_v1





//+-------------------------------------------------------------------+
//|                                              Tick-Tack-toe_v1.mq4 |
//|                                 Copyright © 2009, GoldenFox corp. |
//|                                                                   |
//|                     Ãðàôèê "Êðåñòèêè-Íîëèêè"                      |
//|                                                                   |
//|                                                                   |
//| Ìåòîä îòîáðàæåíèÿ ãðàôèêà îñíîâàí íà ñêðèïòå Period_Converter.mq4 |
//| âûëîæåííûé íà ñàéòå http://mql4.com/ru/                           |
//|                                                                   |
//| Äëÿ çàïóñêà ñêðèïòà íåîáõîäèìî ïåðåòàùèòü åãî íà òåêóùèé  ãðàôèê, |
//| â ïîÿâèâøåìñÿ îêíå ïàðàìåòðîâ ñêðèïòà íà âêëàäêå "Îáùèå"  óñòàíî- |
//| âèòü ãàëî÷êó "Ðàçðåøèòü èìïîðò ôóíêöèé èç DLL", è  ñíÿòü  ãàëî÷êó |
//| "Ðó÷íîå ïîäòâåðæäåíèå âûçîâà".  Íà  âêëàäêå  "Âõîäíûå  ïàðàìåòðû" |
//| óñòàíîâèòü íåîáõîäèìûå ïàðàìåòðû ðàáîòû ñêðèïòà è íàæàòü "ÎÊ".    |
//|                                                                   |
//| Âõîäíûå ïàðàìåòðû:                                                |
//|   Kletka   - ðàçìåð êëåòêè â ïóíêòàõ                              |
//|   RazvorotKletka - êîë-âî êëåòêîê, íåîáõîäèìîå äëÿ ðàçâîðîòà      |
//|                                                                   |
//|          (çíà÷åíèÿ ïî óìîë÷àíèþ âçÿòû äëÿ ïàðû EUR/USD è          |
//|              5-òè çíàêîâ ïîñëå çàïÿòîé â êîòèðîâêå)               |
//|                                                                   |
//| Ïîñëå ïîÿâëåíèÿ íà òåêóùåì ãðàôèêå èíôîðìàöèè î çàïóñêå,  íåîáõî- |
//| äèìî îòêðûòü àâòîíîìíûé äâóõìèíóòíûé ãðàôèê ïî òåêóùåìó èíñòðóìå- |
//| íòó ñëåäóþùèì îáðàçîì. Â ìåíþ "Ôàéë" âûáðàòü "Îòêðûòü àâòîíîìíî", |
//| â ïîÿâèâøåìñÿ îêíå íàéòè äâóõìèíóòíûé àâòîíîìíûé ãðàôèê ïî âàøåìó |
//| èíñòðóìåíòó (íàïðèìåð EURUSD,M2) è íàæàòü êíîïêó  îòêðûòü.  Äàëåå |
//| íà îòêðûâøåìñÿ ãðàôèêå âêëþ÷èòü ðåæèì "ßïîíñêèå ñâå÷è".           |
//|                                                                   |
//| Ïîñòðîåíèå ãðàôèêà ïî èñòîðè÷åñêèì äàííûì ñîäåðæàùèìñÿ íà òåêóùåì |
//| ðàáî÷åì ãðàôèêå ïðîèçâîäèòñÿ â ñîîòâåòñòâèè ñ êëàñè÷åñêèì  îïèñà- |
//| íèåì ãðàôèêà "Êðåñòèêè-Íîëèêè". Äàëåå ãðàôèê ñòðîèòñÿ ïî  òåêóùèì |
//| êîòèðîâêàì.                                                       |
//|                                                                   |
//|  ïàðàìåòðå "Îáúåì" äëÿ êàæäîé ñâå÷è îòîáðàæàåòñÿ âûcîòà ñòîëáèêà |
//| â ïóíêòàõ, à â  êà÷åñòâå  âðåìåíè  èñïîëüçóåòñÿ  âðåìÿ  îêîí÷àíèÿ |
//| ñòîëáèêà.                                                         |
//|                                                                   |
//| Äëÿ áîëåå íàãëÿäíîãî îòîáðàæåíèÿ òåêóùåé êîòèðîâêè ïîñëåäíÿÿ ñâå- |
//| ÷à íà ãðàôèêå îòîáðàæàåòñÿ ñ òåíüþ. Áîëåå ñòàðûå ñâå÷è  îòîáðàæà- |
//| þòñÿ áåç òåíåé.                                                   |
//|                                                                   |
//+-------------------------------------------------------------------+

#property copyright "Copyright © 2009, GoldenFox Corp."
#property link      ""
#property show_inputs
#include <WinUser32.mqh>

static string s_ver="1.0"; //âåðñèÿ èíäèêàòîðà

extern int Kletka=50; //ðàçìåð êëåòêè â ïóíêòàõ
extern int RazvorotKletka=2; //øóì - êîë-âî êëåòîê, ñ÷èòàþùèõñÿ øóìàìè ðûíêà
static int     Shum=0; //Âåëè÷èíà Øóìà ïðè íàõîæäåíèè íàïðàâëåíèÿ
static int     ExtHandle=-1; //Óêàçàòåëü íà ôàéë êîòèðîâîê èíäèêàòîðà
static int     Kurs=0; //òåêóùèé êóðñ â ïóíêòàõ
static int     i_digits, i_time, i_open, i_low, i_high, i_close, i_last_close, last_fpos;
static double  d_point,d_volume=10.0;
static int     hwnd=0,cnt=0;
static int     ind_period=2; //Ïåðèîä ãðàôèêà èíäèêàòîðà
static int     i_period=0; //ïåðèîä òåêóùåãî ãðàôèêà â ìèíóòàõ
static string  c_symbol; //ñèìâîë òåêóùåãî ãðàôèêà
static bool b_work=false; //fals - ïèøåì èñòîðèþ; true - ðàáîòàåì

//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()
{
//---- Çàãîëîâî÷íûå äàííûå
   int    version=400;
   string c_copyright;
   c_copyright="(C)opyright 2003, MetaQuotes Software Corp.";
   c_symbol=Symbol();
   
   int i_unused[13];
   i_digits=Digits;   
   d_point=Point;
   i_period=Period()*60; //ïåðèîä òåêóùåãî ãðàôèêà â ìèíóòàõ
   Shum=Kletka*RazvorotKletka;
  
//----  Cîçäàåì íîâûé ôàéë èíäèêàòîðà (äâóõìèíóòíûé ïî òåêóùåìó ñèìâîëó)
   ExtHandle=FileOpenHistory(c_symbol+ind_period+".hst", FILE_BIN|FILE_WRITE);
   if(ExtHandle < 0) return(-1); //åñëè íå îòêðûëñÿ òî âûõîä ñ îøèáêîé       
   //---------Çàïèñûâàåì çàãîëîâî÷íûå äàííûå
   FileWriteInteger(ExtHandle, version, LONG_VALUE);  // 4 áàéòà âåðñèÿ
   FileWriteString(ExtHandle, c_copyright, 64);       //64 áàéòà êîïèðàéò
   FileWriteString(ExtHandle, c_symbol, 12);          //12 áàéò  ñèìâîë
   FileWriteInteger(ExtHandle, ind_period, LONG_VALUE); // 4 áàéòà ïåðèîä ãðàôèêà
   FileWriteInteger(ExtHandle, i_digits, LONG_VALUE); // 4 áàéòà êîë-âî çíàêîâ ïîñëå çàïÿòîé
   FileWriteInteger(ExtHandle, 0, LONG_VALUE);        // 4 áàéòà timesign
   FileWriteInteger(ExtHandle, 0, LONG_VALUE);        // 4 áàéòà last_sync
   FileWriteArray(ExtHandle, i_unused, 0, 13);        //52 áàéò 
                                                 // âñåãî 148 áàéò 
   WriteHistory();                                    //ïèøåì èñòîðèþ.   
   if(hwnd==0)hwnd=WindowHandle(Symbol(),i_period);   //íàéäåì îêíî èíäèêàòîðà
   if(hwnd!=0) PostMessageA(hwnd,WM_COMMAND,33324,0); //åñëè åñòü îêíî, òî îáíîâèì åãî  
   Comment("\nÈíäèêàòîð Êðåñòèêè-Íîëèêè v",s_ver," çàïóùåí. Êëåòêà: ",Kletka,"p. Ðàçâîðîò ", Shum, "p.",
           "\nÎòêðîéòå àâòîíîìíûé ãðàôèê ",c_symbol,",M",ind_period,
           "\n(Ôàéë -> Îòêðûòü àâòîíîìíî -> ",c_symbol,",M",ind_period," -> Îòêðûòü)");
   RefreshRates();                                    //îáíîâèì êîòèðîâêó
   Kurs=(Bid/d_point)-MathMod(Bid/d_point,Kletka);    //íîðìàëèçóåì êóðñ ê êëåòêå
   CalculateBar();                                    //äîáàâèì òåêóùóþ êîòèðîâêó â ôàéë        
//---------------- îñíîâíîé öèêë
   while(IsStopped()==false) //Ðàáîòàåì ïîêà íå ïîëó÷åíà êîìàíäà çàâåðøåíèÿ
     { 
      if(RefreshRates())         //åñëè åñòü íîâàÿ êîòèðîâêà 
        {
         Kurs=(Bid/d_point)-MathMod(Bid/d_point,Kletka);    //íîâûé íîðìàëèçîâàííûé ê êëåòêå êóðñ
         CalculateBar();                                    //äîáàâèì òåêóùóþ êîòèðîâêó â ôàéë        
        } 
     } 
//--------------------------------------
   return(0);
}
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+

void CalculateBar() //Ôóíêöèÿ îáðàáîòêè òåêóùèõ êîòèðîâîê (êîòèðîâêè â ïóíêòàõ)
{ 
   if (i_open>i_last_close)      //åñëè îòêðûòèå òåêóùåãî áàðà èíäèêàòîðà áîëüøå çàêðûòèÿ, òî íàïð.âíèç
     {            
      if (i_last_close>Kurs)        //åñëè ïðåäûäóùåå çàêðûòèå áîëüøå íîðìàëèçîâàííîãî êóðñà
        {                           // òî äâèæåíèå âíèç ïðîäîëæàåòñÿ. ñîõðàíèì êîòèðîâêó
         i_time=TimeCurrent();         //âðåìÿ çàêðûòèÿ òåêóùåãî áàðà èíäèêàòîðà ðàâíî òåêóùåìó âðåìåíè ñåðâåðà
         i_close=Kurs;                 //çàêðûòèå òåêóùåãî áàðà èíäèêàòîðà ðàâíî êóðñó
         i_low=i_close;                //ìèíèìóì òåêóùåãî áàðà èíäèêàòîðà ðàâåí çàêðûòèþ
         i_last_close=i_low;           //ñîõðàíèì ìèíèìóì òåêóùåãî áàðà èíäèêàòîðà
         WriteBar();                   //ïåðåïèøåì òåêóùèé áàð èíäèêàòîðà
        } 
      else                          //èíà÷å ïðîâåðÿåì íà ðàçâîðîò 
        { 
         if (Kurs-i_last_close>Shum)   //åñëè ðàçíèöà íîâîãî êóðñà è çàêðûòèÿ òåêóùåãî áàðà èíäèêàòîðà áîëüøå øóìà
           {                           //òî ðàçâîðîò (íîâûé áàð ââåðõ)
            i_close=i_last_close;         //çàêðûòèå òåêóùåãî áàðà èíäèêàòîðà ðàâíî ðàâíî åãî ìèíèìóìó
            WriteBar();                   //ïåðåïèøåì òåêóùèé áàð èíäèêàòîðà
            i_open=i_last_close+Kletka;   //îòêðûòèå íîâîãî áàðà èíäèêàòîðà íà êëåòêó ââåðõ
            i_low=i_open;                 //ìèíèìóì íîâîãî áàðà èíäèêàòîðà ðàâåí åãî îòêðûòèþ
            i_close=Kurs;                 //çàêðûòèå íîâîãî áàðà èíäèêàòîðà ðàâíî êóðñó            
            i_high=i_close;               //ìàêñèìóì íîâîãî áàðà èíäèêàòîðà ðàâåí åãî çàêðûòèþ
            i_last_close=i_high;          //ñîõðàíèì ìàêñèìóì íîâîãî áàðà èíäèêàòîðà
            i_time=TimeCurrent();         //âðåìÿ çàêðûòèÿ íîâîãî áàðà èíäèêàòîðà ðàâíî òåêóùåìó âðåìåíè ñåðâåðà
            WriteNewBar();                //çàïèøåì íîâûé áàð èíäèêàòîðà
           } 
         else                          //èíà÷å øóì íå ïðåâûøåí, íàðèñóåì òåíü
           {
            if (i_close!=Kurs)         //åñëè çàêðûòèå òåêóùåãî áàðà èíäèêàòîðà íå ðàâíî êóðñó
              {                        //òî ïåðåïèøåì òåêóùèé áàð èíäèêàòîðà ñ òåíüþ
               i_close=Kurs;              //çàêðûòèå òåêóùåãî áàðà èíäèêàòîðà ðàâíî êóðñó       
               WriteBar();                //ïåðåïèøåì òåêóùèé áàð èíäèêàòîðà
              }
           } 
        }             
     }
   else                            //èíà÷å îòêðûòèå òåêóùåãî áàðà èíäèêàòîðà ìåíüøå çàêðûòèÿ (íàïð.ââåðõ)
     {            
      if (i_last_close<Kurs)           //åñëè ïðåäûäóùåå çàêðûòèå ìåíüøå íîðìàëèçîâàííîãî êóðñà    
        {                              // òî äâèæåíèå ââåðõ ïðîäîëæàåòñÿ. ñîõðàíèì êîòèðîâêó
         i_time=TimeCurrent();            //âðåìÿ çàêðûòèÿ òåêóùåãî áàðà èíäèêàòîðà ðàâíî òåêóùåìó âðåìåíè ñåðâåðà
         i_close=Kurs;                    //çàêðûòèå òåêóùåãî áàðà èíäèêàòîðà ðàâíî êóðñó           
         i_high=i_close;                  //ìàêñèìóì íîâîãî áàðà èíäèêàòîðà ðàâåí åãî çàêðûòèþ      
         i_last_close=i_high;             //ñîõðàíèì ìàêñèìóì íîâîãî áàðà èíäèêàòîðà
         WriteBar();                      //ïåðåïèøåì òåêóùèé áàð èíäèêàòîðà
        } 
      else                             //èíà÷å ïðîâåðÿåì íà ðàçâîðîò  
         if (i_last_close-Kurs>Shum)      //åñëè ðàçíèöà çàêðûòèÿ òåêóùåãî áàðà èíäèêàòîðà è íîâîãî êóðñà áîëüøå øóìà
           {                              //òî ðàçâîðîò (íîâûé áàð âíèç)
            i_close=i_last_close;         //çàêðûòèå òåêóùåãî áàðà èíäèêàòîðà ðàâíî ðàâíî åãî ìàêñèìóìó
            WriteBar();                   //ïåðåïèøåì òåêóùèé áàð èíäèêàòîðà                      
            i_open=i_close-Kletka;        //îòêðûòèå íîâîãî áàðà èíäèêàòîðà íà êëåòêó âíèç
            i_high=i_open;                //ìàêñèìóì íîâîãî áàðà èíäèêàòîðà ðàâåí îòêðûòèþ ïðåäûäóùåãî
            i_close=Kurs;                 //çàêðûòèå íîâîãî áàðà èíäèêàòîðà ðàâíî êóðñó
            i_low=i_close;                //ìèíèìóì íîâîãî áàðà èíäèêàòîðà ðàâåí åãî çàêðûòèþ
            i_last_close=i_low;           //ñîõðàíèì ìèíèìóì òåêóùåãî áàðà èíäèêàòîðà
            i_time=TimeCurrent();         //âðåìÿ çàêðûòèÿ íîâîãî áàðà èíäèêàòîðà ðàâíî òåêóùåìó âðåìåíè ñåðâåðà
            WriteNewBar();                //çàïèøåì íîâûé áàð èíäèêàòîðà                 
           }   
         else                          //èíà÷å øóì íå ïðåâûøåí, íàðèñóåì òåíü
           {                           
            if (i_close!=Kurs)            //åñëè çàêðûòèå òåêóùåãî áàðà èíäèêàòîðà íå ðàâíî êóðñó
              {                           //òî ïåðåïèøåì òåêóùèé áàð èíäèêàòîðà ñ òåíüþ
               i_close=Kurs;              //çàêðûòèå òåêóùåãî áàðà èíäèêàòîðà ðàâíî êóðñó
               WriteBar();                //ïåðåïèøåì òåêóùèé áàð èíäèêàòîðà
              }
           } 
     }
   return(0);
}
     
void WriteNewBar() //ôóíêöèÿ çàïèñè íîâîãî áàðà
{ 
   FileSeek(ExtHandle, last_fpos+44, SEEK_SET); //ïåðåìåùàåìñÿ â êîíåö ôàéëà   
   WriteBar();                                  //Çàïèñûâàåì íîâûé áàð 
   return(0);
}
   
void WriteBar() //ôóíêöèÿ ïåðåçàïèñè òåêóùåãî áàðà
{
   last_fpos=FileTell(ExtHandle); //ïîëó÷àåì ïîçèöèþ ïîñëåäíåãî áàðà â ôàéëå
   FileWriteInteger(ExtHandle, i_time, LONG_VALUE);            //4 áàéòà òåêóùåå âðåìÿ ñåðâåðà
   FileWriteDouble(ExtHandle, i_open*d_point, DOUBLE_VALUE);     //8 áàéò îòêðûòèå
   FileWriteDouble(ExtHandle, i_low*d_point, DOUBLE_VALUE);      //8 áàéò ìèíèìóì
   FileWriteDouble(ExtHandle, i_high*d_point, DOUBLE_VALUE);     //8 áàéò ìàêñèìóì
   FileWriteDouble(ExtHandle, i_close*d_point, DOUBLE_VALUE);    //8 áàéò çàêðûòèå   
   FileWriteDouble(ExtHandle, i_high-i_low, DOUBLE_VALUE);     //8 áàéò âûñîòà áàðà â ïóíêòàõ
   FileFlush(ExtHandle);                     //ñáðîñ áóôåðà â ôàéë
   FileSeek(ExtHandle, last_fpos, SEEK_SET); //ïåðåìåùàåìñÿ íà íà÷àëî çàïèñàííîãî áàð
   if (b_work) //åñëè íå ïèøåì èñòîðèþ, òî îáíîâèì èíäèêàòîð
     {
      if(hwnd==0)hwnd=WindowHandle(Symbol(),ind_period);   //íàéäåì îêíî èíäèêàòîðà
      if(hwnd!=0) PostMessageA(hwnd,WM_COMMAND,33324,0); //åñëè åñòü îêíî, òî îáíîâèì åãî
     }   
   //Print ("Çàïèñü: âðåìÿ ",TimeToStr(i_time,TIME_DATE|TIME_MINUTES|TIME_SECONDS)," i_open ",i_open," i_low ",i_low," i_high ",i_high," i_close ",i_close," ðàçìàõ ",d_volume);
   return(0);
}
  
int WriteHistory() //ôóíêöèÿ çàïèñè èñòîðèè
{ 
   b_work=false;                          //ñíîñèì ôëàã ðàáîòû (ïèøåì èñòîðèþ)
   int i=0;                               //èíäåêñ ñàìîãî ñòàðîãî áàðà íà òåêóùåì ãðàôèêå
   int t=0;                               //ñ÷åò÷èê çàïèñàííûõ áàðîâ â ôàéë èíäèêàòîðà
   int l,h;                               //ìèíèìóì è ìàêñèìóì òåêóùåãî áàðà íà òåêóùåì ãðàôèêå
   i=Bars-2;                              //áåðåì èíäåêñ ñàìîãî ñòàðîãî áàðà íà òåêóùåì ãðàôèêå   
//----------------------Ïèøåì ñàìûé ïåðâûé áàð
   i_time=Time[i]+i_period;               //âðåìÿ çàêðûòèÿ áàðà
   i_low=Low[i]/d_point;                  //ìèíèìóì áàðà â ïóíêòàõ
   i_low=i_low-MathMod(i_low,Kletka);     //íîðìàëèçóåì ìèíèìóì ê êëåòêå
   i_high=High[i]/d_point;                //ìàêñèìóì áàðà â ïóíêòàõ
   i_high=i_high-MathMod(i_high,Kletka);  //íîðìàëèçóåì ìàêñèìóì ê êëåòêå
   if (Open[i]>Close[i])                  //åñëè îòêðûòè ñàìîãî ñòàðîãî áàðà ãðàôèêà áîëüøå çàêðûòèÿ
     {                                    //òî áàð âíèç
      i_open=i_high;                         //îòêðûòèå ïåðâîãî áàðà èíäèêàòîðà ðàâíî ìàêñèìóìó áàðà ãðàôèêà
      i_close=i_low;                         //çàêðûòèå ïåðâîãî áàðà èíäèêàòîðà ðàâíî ìèíèìóìó áàðà ãðàôèêà
     }
   else                                   //èíà÷å ñàìûé ñòàðûé áàð ãðàôèêà ââåðõ
     {
      i_open=i_low;                          //îòêðûòèå ïåðâîãî áàðà èíäèêàòîðà ðàâíî ìèíèìóìó áàðà ãðàôèêà
      i_close=i_high;                        //çàêðûòèå ïåðâîãî áàðà èíäèêàòîðà ðàâíî ìàêñèìóìó áàðà ãðàôèêà
     }  
   WriteBar();                            //çàïèøåì ïåðâûé áàð
//----------------------------------------------   
   
   for (i=i-1; i>=0; i--) //äëÿ âñåx áàðîâ ãðàôèêà íà÷èíàÿ ñî 2-ãî ñòàðåéøåãî
     { 
      i_time=Time[i]+i_period;   //âðåìÿ çàêðûòèÿ òåêóùåãî áàðà íà ãðàôèêå
      if (i_open>i_close)        //åñëè ïðåäûäóùèé áàð èíäèêàòîðà âíèç
        {
         l=Low[i]/d_point;          //ìèíèìóì òåêóùåãî áàðà íà ãðàôèêå â ïóíêòàõ
         l=l-MathMod(l,Kletka);     //íîðìàëèçóåì ìèíèìóì ê êëåòêå
         if (l<i_close)             //åñëè ìèíèìóì òåêóùåãî áàðà ìåíüøå ïîñëåäíåãî áàðà èíäèêàòîðà
           {                        // òî äâèæåíèå âíèç ïðîäîëæàåòñÿ. ñîõðàíèì êîòèðîâêó           
            i_close=l;                 //çàêðûòèå áàðà èíäèêàòîðà ðàâíî ìèíèìóìó òåêóùåãî áàðà
            i_low=l;                   //ìèíèìóì áàðà èíäèêàòîðà ðàâåí ìèíèìóìó òåêóùåãî áàðà        
            WriteBar();                //ïåðåïèøåì áàð èíäèêàòîðà
           } 
         else                       //èíà÷å âîçìîæíî ðàçâîðîò 
           {
            h=High[i]/d_point;         //ìàêñèìóì òåêóùåãî áàðà íà ãðàôèêå â ïóíêòàõ
            h=h-MathMod(h,Kletka);     //íîðìàëèçóåì ìàêñèìóì ê êëåòêå   
            if (h-i_close>Shum)        //åñëè ðàçíèöà ìàêñèìóìà òåêóùåãî áàðà è çàêðûòèÿ ïîñëåäíåãî áàðà èíäèêàòîðàè áîëüøå øóìà                 
              {                        //òî ðàçâîðîò ââåðõ
               i_open=i_close+Kletka;     //îòêðûòèå íîâîãî áàðà èíäèêàòîðà íà êëåòêó ââåðõ
               i_low=i_open;              //ìèíèìóì íîâîãî áàðà èíäèêàòîðà ðàâåí îòêðûòèþ ïðåäûäóùåãî áàðà èíäèêàòîðà
               i_close=h;                 //çàêðûòèå íîâîãî áàðà èíäèêàòîðà ðàâíî ìàêñèìóìó òåêóùåãî áàðà ãðàôèêà
               i_high=h;                  //ìàêñèìóì íîâîãî áàðà èíäèêàòîðà ðàâíî ìàêñèìóìó òåêóùåãî áàðà ãðàôèêà
               WriteNewBar();             //çàïèøåì íîâûé áàð èíäèêàòîðà
              } 
           }
        }
      else                       //èíà÷å ïðåäûäóùèé áàð èíäèêàòîðà ââåðõ
        {
         h=High[i]/d_point;         //ìàêñèìóì òåêóùåãî áàðà íà ãðàôèêå
         h=h-MathMod(h,Kletka);     //íîðìàëèçóåì ìàêñèìóì ê êëåòêå  
         if (h>i_close)             //åñëè ìàêñèìóì òåêóùåãî áàðà áîëüøå ïîñëåäíåãî áàðà èíäèêàòîðà
           {                        // òî äâèæåíèå ââåðõ ïðîäîëæàåòñÿ. ñîõðàíèì êîòèðîâêó           
            i_close=h;                 //çàêðûòèå áàðà èíäèêàòîðà ðàâíî ìàêñèìóìó òåêóùåãî áàðà
            i_high=h;                  //ìàêñèìóì áàðà èíäèêàòîðà ðàâåí ìàêñèìóìó òåêóùåãî áàðà
            WriteBar();                //ïåðåïèøåì áàð èíäèêàòîðà
           }
         else                       //èíà÷å âîçìîæíî ðàçâîðîò 
           {
            l=Low[i]/d_point;          //ìèíèìóì òåêóùåãî áàðà íà ãðàôèêå â ïóíêòàõ
            l=l-MathMod(l,Kletka);     //íîðìàëèçóåì ìèíèìóì ê êëåòêå 
            if (i_close-l>Shum)        // åñëè ðàçíèöà çàêðûòèÿ ïîñëåäíåãî áàðà èíäèêàòîðàè è ìèíèìóìà òåêóùåãî áàðà áîëüøå øóìà                 
              {                        //òî ðàçâîðîò âíèç
               i_open=i_close-Kletka;     //îòêðûòèå íîâîãî áàðà èíäèêàòîðà íà êëåòêó âíèç
               i_high=i_open;             //ìàêñèìóì íîâîãî áàðà èíäèêàòîðà ðàâåí îòêðûòèþ ïðåäûäóùåãî áàðà èíäèêàòîðà
               i_close=l;                 //çàêðûòèå íîâîãî áàðà èíäèêàòîðà ðàâíî ìèíèìóìó òåêóùåãî áàðà ãðàôèêà
               i_low=l;                   //ìèíèìóì íîâîãî áàðà èíäèêàòîðà ðàâåí ìèíèìóìó òåêóùåãî áàðà ãðàôèêà
               WriteNewBar();             //çàïèøåì íîâûé áàð èíäèêàòîðà
              } 
           }
        }   
 //----------÷åðåç êàæäûå 1000 çàïèñåé  îáíîâèì îêíî èíäèêàòîðà åñëè åñòü è íàðèñóåì êîìåíòàðèé
      t++;           //óâåëè÷èì ñ÷åò÷èê çàïèñè áàðîâ èíäèêàòîðà
      if (t>1000)
        {
         t=0;
         if(hwnd==0)hwnd=WindowHandle(Symbol(),ind_period);   //íàéäåì îêíî èíäèêàòîðà
         if(hwnd!=0) PostMessageA(hwnd,WM_COMMAND,33324,0); //åñëè åñòü îêíî, òî îáíîâèì åãî
         Comment ("\nÈíäèêàòîð Êðåñòèêè-Íîëèêè v",s_ver," çàïóùåí. Êëåòêà: ",Kletka,"p. Ðàçâîðîò ", Shum, "p.",
                     "\nÎòêðîéòå àâòîíîìíûé ãðàôèê ",c_symbol,",M",ind_period,
                     "\n(Ôàéë -> Îòêðûòü àâòîíîìíî -> ",c_symbol,",M",ind_period," -> Îòêðûòü)",
                     "\n\nÏèøåì èñòîðèþ: Âðåìÿ ",TimeToStr(i_time,TIME_DATE|TIME_MINUTES|TIME_SECONDS));         
        }
     }   
   i_last_close=i_close;   // ñîõðàíèì çàêðûòèå ïîñëåäíåãî áàðà èíäèêàòîðà
   b_work=true;            //óñòàíîâèì ôëàã ðàáîòû (çàêîí÷èëè ïèñàòü èñòîðèþ: ðàáîòàåì)
   return(0);
} 
      
void deinit() //âûãðóçêà ñêðèïòà èíäèêàòîðà
{
   if(ExtHandle>=0) { FileClose(ExtHandle); ExtHandle=-1; } //çàêðîåì ôàéë èíäèêàòîðà åñëè åñòü
   Comment("\nÑêðèïò Êðåñòèêè-íîëèêè v",s_ver," âûãðóæåí");
}






Sample





Analysis



Market Information Used:

Series array that contains open time of each bar
Series array that contains the lowest prices of each bar
Series array that contains the highest prices of each bar
Series array that contains close prices for each bar
Series array that contains open prices of each bar


Indicator Curves created:


Indicators Used:



Custom Indicators Used:

Order Management characteristics:

Other Features:


It writes information to file