Author: ht Copyright 2006-2014, Dr. Arhimed
Price Data Components
Series array that contains open prices of each barSeries array that contains close prices for each barSeries array that contains the highest prices of each barSeries array that contains the lowest prices of each bar
2 Views
0 Downloads
0 Favorites
Flet
   //+-- Áëîê 1: Íà÷àëî -----------------------------------------------+
   //|                                                         Flet.mq4|  
   //|                                   Idea - 2006-2014- Dr. Arhimed |
   //|                   Prodaction - Copyright 2006-2014, Dr. Arhimed |
   //|                                             All rights reserved |
   #property copyright "Copyright 2006-2014, Dr. Arhimed"
   #property link      "https://login.mql5.com/ru/users/arhimed1973"
   #property version   "1.00"
   #property description "   Ðàáîòà èíäèêàòîðà îñíîâàíà íà ïîèñêå òî÷åê âõîäà â ðûíîê ïî 2-ì ïîñëåäíèì áàðàì íà ëþáîì ãðàôèêå â ñîîîòâåñòâèè ñ äàííûìè âíåøíèõ ïåðåìåííûõ."
   #property description "   Îáðàùàþ âíèìàíèå, ÷òî èíäèêàòîð îïòèìèçèðîâàí ïîä ëþáûå ãðàôèêè (â òîì ÷èñëå è ïîä çîëîòî), ïîýòîìó ðàñ÷åò çíà÷åíèé â ïóíêòàõ íàäî ïðîâîäèòü  äëÿ 4-õ çíàêîâ ïîñëå çàïÿòîé."
   #property indicator_chart_window
   //+-- Êîíåö áëîêà 1: Íà÷àëî ----------------------------------------+   

   //+-- Áëîê 2: Âíåøíèå ïåðåìåííûå --------------------------------+
   extern string _000="***** ÏÅÐÅÌÅÍÍÛÅ ÄËß ÈÍÄÈÊÀÒÎÐÀ *****";
   extern string _001="----- Max ðàññòîÿíèå ìåæäó High/Low( â ïóíêòàõ) -----";
   extern int    HighLow=3;
   extern string _002="----- Max ðàññòîÿíèå ìåæäó Open/Close( â ïóíêòàõ) -----";
   extern int    OpenClose=2;   
   extern string _003="----- Öâåò ñèãíàëüíîé ëèíèè íà ËÎÍÃ -----";
   extern color  Clr_Bull=clrBlue; 
   extern string _004="----- Öâåò ñèãíàëüíîé ëèíèè íà ØÎÐÒ -----";
   extern color  Clr_Beer=clrRed;    
   extern string _005="----- Äëèíà ñèãíàëüíîé ëèíèè (â áàðàõ)-----";   
   extern int    BarLine=20; 
   extern string _006="----- Ðàññòîÿíèå ëèíèè îò áàðîâ (â ïóíêòàõ) -----";  
   extern double Distance=5;    
   extern string _007="----- Êîëè÷åñòâî áàðîâ â èñòîðèè (íå >20000) -----";  
   extern int    Bar0 = 20000; 
   //+-- Êîíåö áëîêà 2: Âíåøíèå ïåðåìåííûå -------------------------+
    
   //+-- Áëîê 3: Âíóòðåííèå ïåðåìåííûå -----------------------------+
   int      P=Period();                   // Ïåðåìåííàÿ òåêóùåãî òàéìôðåéìà äëÿ ðàáîòû ñ ìàññèâàìè
   int      i, kk, sss;                   // îïðåäåëåíèå öåëî÷èñëåííûõ ïåðìåííûõ 
   datetime dt, dt0, dt1;                 // ïåðåìåííûå âðåìåíè
   double   B_open[20002],B_close[20002];   // Ìàññèâû öåí Open è Close áàðîâ äëÿ îòîáðàæåíèÿ èñòîðèè
   double   B_high[20002],B_low[20002];     // Ìàññèâû öåí High è Low áàðîâ äëÿ îòîáðàæåíèÿ èñòîðèè
   int      HL[20002],OC[20002];            // Ìàññèâû ðàçíèö ìåæäó High è Low, ìåæäó Open è Close äëÿ ïîèñêà ôëåòà
   datetime Date1[200002];                  // Ìàññèâ âðåìåíè îòêðûòèÿ áàðîâ äëÿ ïîëó÷åíèÿ ïåðâîé ëåâîé êîîðäèíàòû ïðÿìîóãîëüíèêà
   int      prevtime;
   //+-- Êîíåö áëîêà 3: Âíóòðåííèå ïåðåìåííûå ----------------------+   
      
   //+-- Áëîê 4: Èíèöèëèçàöèÿ ñîâåòíèêà ----------------------------+
   int init()
      {
         kk=1;
         if (Digits==2 || Digits==5) {kk=10;}
         if (Digits==3) {kk=100;}
         if (Symbol()=="XAUUSD")  {kk=100;}
         if (HighLow<2) {HighLow=2;}
         if (OpenClose<2) {OpenClose=2;}
         if (Distance<2) {Distance=2;}
         if (Bar0>20000) {Bar0=20000;}
         HighLow=HighLow*kk;
         OpenClose=OpenClose*kk;
         Distance=Distance*kk*MathPow(10, -1*Digits);
         sss=0;
         dt=TimeCurrent();
         prevtime = Time[0];
         Starter_History(Bar0);
         return(0);
      }
   //+-- Êîíåö áëîêà 4: Èíèöèëèçàöèÿ ñîâåòíèêà ---------------------+ 

   //+-- Áëîê 5: Äåèíèöèëèçàöèÿ ñîâåòíèêà --------------------------+        
   int deinit()
      {
         Deletes("Ïîääåðæêà");
         Deletes("Ñîïðîòèâëåíèå");
         sss=0;
         return(0); 
      }
   //+-- Êîíåö áëîêà 5: Äåèíèöèëèçàöèÿ ñîâåòíèêà -------------------+ 
   
   //+-- Áëîê 6: Ñòàðò ñîâåòíèêà -----------------------------------+ 
   int start()
      {
         dt=TimeCurrent();
         if (Time[0]==prevtime) {return(0);}
         prevtime = Time[0];
         Starter_History(1);
         RefreshRates();
         return(0);
      }
   //+-- Êîíåö áëîêà 6: Ñòàðò ñîâåòíèêà ----------------------------+ 

   //+- ********************************************************** -+
   //+-             Ñàìîñòîÿòåëüíî íàïèñàííûå ôóíêöèè               + 
   //+- ********************************************************** -+
   
   //+-- Ôóíêöèÿ ïîëó÷åíèÿ èíôîðìàöèè î ôëåòå-----------------------+ 
   void Starter_History(int BarSize)
      {
         // Ïîëó÷àåì äàííûå ïî ïîñëåäíèì äâóì áàðàì â òåêóùåì ÒÔ
            for(i=BarSize+1;i>=0;i--)
               {
                  B_open[i]=iOpen(Symbol(),P,i);
                  B_close[i]=iClose(Symbol(),P,i);
                  B_high[i]=iHigh(Symbol(),P,i);
                  B_low[i]=iLow(Symbol(),P,i);
                  Date1[i]=iTime(Symbol(),P,i);
                  HL[i]=MathAbs(B_high[i]-B_low[i])/MathPow(10, -1*Digits);
                  OC[i]=MathAbs(B_open[i]-B_close[i])/MathPow(10, -1*Digits);
                  // Èùåì ôëåò
                  if (i>0)
                     {
                        if ( (OC[i]<=OpenClose)&&(HL[i]<=HighLow)&&(B_open[i]==B_close[i]) )  
                           {
                              dt0=Date1[i];dt1=Date1[i]+P*60*BarLine;sss++;                                             
                              Create_Line("Ïîääåðæêà"+IntegerToString(sss),iHigh(Symbol(),P,i)+Distance,iHigh(Symbol(),P,i)+Distance+1*kk*MathPow(10, -1*Digits),Clr_Bull);
                              Create_Line("Ñîïðîòèâëåíèå"+IntegerToString(sss),iLow(Symbol(),P,i)-Distance,iLow(Symbol(),P,i)-Distance-1*kk*MathPow(10, -1*Digits),Clr_Beer);
                           }                        
                     }
                  // Êîíåö ïîèñêà ôëåòà
               }    
      }
   //+-- Êîíåö ôóíêöèè ïîëó÷åíèÿ èíôîðìàöèè î ôëåòå-----------------+
   
   //+-- Ôóíêöèÿ ðèñîâàíèÿ ïðÿìîóãîëüíèêà â 1 ïóíêò ----------------+    
   void Create_Line(string ObjName, double PP1, double PP2,color ObjColor)
      {
         RefreshRates();
         if(ObjectFind(0,ObjName)!=-1) {ObjectDelete(ObjName);}      //×òîáû ñëó÷àéíî íå îñòàâèòü ñëåäû îò èíäèêàòîðà, ïðîâåðÿåì åñòü ëè ñòàðûé îáúåêò. Åñëè åñòü, óäàëÿåì åãî.
         ChartRedraw(0);                                             // Ïðåðûñîâûâàåì ýêðàí
         if(ObjectFind(0,ObjName)==-1)                               // Åñëè íåò îáúåêòà ñîçäàåì åãî
            {
               ObjectCreate   (ObjName, OBJ_RECTANGLE, 0,0,0,0,0);   // ñîçäàíèå ïðÿìîóãîëüíèêà
               ObjectSet      (ObjName, OBJPROP_STYLE, STYLE_SOLID); // Òèï ëèíèè
               ObjectSet      (ObjName, OBJPROP_COLOR, ObjColor);    // Öâåò ëèíèé ïðÿìîóãîëüíèêà
               ObjectSet      (ObjName, OBJPROP_FILL, ObjColor);     // çàëèâêà ïðÿìîóãîëüíèêà
               ObjectSet      (ObjName, OBJPROP_BACK, true);         // ôîíîâûé ðèñóíîê
               ObjectSet      (ObjName, OBJPROP_TIME1 , dt0);        // 1-ÿ âðåìåííàÿ êîîðäèíàòà ïðÿìîóãîëüíèêà   (ñëåâà)
               ObjectSet      (ObjName, OBJPROP_PRICE1, PP1);        // 1-ÿ öåíîâàÿ êîîðäèíàòà ïðÿìîóãîëüíèêà     (ñëåâà)
               ObjectSet      (ObjName, OBJPROP_TIME2 , dt1);        // 2-ÿ âðåìåííàÿ êîîðäèíàòà ïðÿìîóãîëüíèêà   (ñïðàâà)
               ObjectSet      (ObjName, OBJPROP_PRICE2, PP2);        // 2-ÿ öåíîâàÿ êîîðäèíàòà ïðÿìîóãîëüíèêà     (ñïðàâà)
               ObjectSetInteger(0,ObjName,OBJPROP_SELECTABLE,false); //--- çàïðåò âûäåëåíèÿ îáúåêòà ìûøêîé
               ObjectSetInteger(0,ObjName,OBJPROP_TIMEFRAMES,OBJ_PERIOD_M1|OBJ_PERIOD_M5|OBJ_PERIOD_M15|OBJ_PERIOD_M30|OBJ_PERIOD_H1); // Îòîáðàæàåì íà ÒÔ îò Ì1 äî Í1
            }
         ChartRedraw(0); 
   } 
   //+-- Êîíåö ôóíêöèè ðèñîâàíèÿ ïðÿìîóãîëüíèêà â 1 ïóíêò ----------+
     
   //+-- Ôóíêöèÿ óäàëåíèÿ îáúåêòîâ, íàðèñîâàííûõ èíäèêàòîðîì -------+      
   void Deletes(string prefix)
      {
         for (i = ObjectsTotal() - 1; i >= 0; i--)
	         {
		         string name = ObjectName(i);
               if (StringFind(name, prefix) == 0) {ObjectDelete(name);}
	         }      
      }
   //+-- Êîíåö ôóíêöèÿ óäàëåíèÿ îáúåêòîâ, íàðèñîâàííûõ èíäèêàòîðîì -+ 
          
   //+-          Êîíåö ñàìîñòîÿòåëüíî íàïèñàííûõ ôóíêöèé            +    

Comments

Markdown supported. Formatting help

Markdown Formatting Guide

Element Markdown Syntax
Heading # H1
## H2
### H3
Bold **bold text**
Italic *italicized text*
Link [title](https://www.example.com)
Image ![alt text](image.jpg)
Code `code`
Code Block ```
code block
```
Quote > blockquote
Unordered List - Item 1
- Item 2
Ordered List 1. First item
2. Second item
Horizontal Rule ---