Bending_MA24H1v2

Author: Pipkin Artem
Indicators Used
Moving average indicator
0 Views
0 Downloads
0 Favorites
Bending_MA24H1v2
//+------------------------------------------------------------------+
//|                                               Bending_MA24H1.mq4 |
//|                                                     Pipkin Artem |
//|                           http://sites.google.com/site/forexsbs/ |
//+------------------------------------------------------------------+
#property copyright "Pipkin Artem"
#property link      "http://sites.google.com/site/forexsbs/"

//########################################################################
//-------------- Èíäèêàòîð îòîáðàæàåòñÿ â îêíå ãðàôèêà ------------------#
#property indicator_chart_window                                       //#
//                                                                       #
//########################################################################



//########################################################################
//         Â Â Î Ä  Ï À Ð À Ì Å Ò Ð Î Â  È Í Ä È Ê À Ò Ð À
extern int       Rounding      = 5;      // Îêðóãëåíèå äî "õ" çíàêîâ ïîñëå çàïÿòîé â öåíå âàëþòíîé ïàðû
extern int       PERIOD        = 480;    // Ïåðèîä, êîòîðûé áåðåòñÿ äëÿ ðàñ÷åòà èíäèêàòîðà (480 = 1 ìåñÿöà)
extern int       MATrendPeriod = 24;     // Ïåðèîä ñêîëüçÿùåé ñðåäíåé äëÿ H1 (24 = 1 äåíü)
extern int       Slayders      = 0;      // Ïðîñêàëüçûâàíèå, äëÿ èñêëþ÷åíèÿ "øóìà" MA
extern int       StepMin       = 0;      // Ìèíèìàëüíûé îòñòóï, îò òåêóùåé öåíû, ïîñëå êîòîðîãî îòîáðàæàþòñÿ ëèíèè èíäèêàòîðà (â ïóíêòàõ)
extern int       StepMax       = 3000;   // Ìàêñèìàëüíûé îòñòóï, îò òåêóùåé öåíû, ïîñëå êîòîðîãî ëèíèè èíäèêàòîðà íå îòîáðàæàþòñÿ (â ïóíêòàõ)
extern color     Color_D       = Red;    // Öâåò ëèíèè çà ïðîøåäøèé äåíü
extern color     Color_W       = Green;  // --//-- íåäåëþ
extern color     Color_M       = Yellow; // --//-- ìåñÿö
extern color     Color_Y       = Aqua;   // --//-- ãîä

//########################################################################


//########################################################################
//Í À × À Ë Î   Ñ Ï È Ñ Ê À    Ã Ë Î Á À Ë Ü Í Û Õ    Ï Å Ð Å Ì Å Í Í Û Õ

int i, l, b, Stil, c, e;
double MA1, MA2, MA3;
color COLOR;
double LS;
double LP;
double max, min;
string S, P;

//   Ê Î Í Å Ö   Ñ Ï È Ñ Ê À   Ã Ë Î Á À Ë Ü Í Û Õ  Ï Å Ð Å Ì Å Í Í Û Õ
//########################################################################


//+------------------------------------------------------------------+
//| Ôóíêöèÿ init()                                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
b=Bars; // Êîëëè÷åñòâî áàðîâ â èñòîðèè (äëÿ îáíîâëåíèÿ èíäèêàòîðà ïîñëå ïîÿâëåíèÿ íîâîãî áàðà)
   for(int a=0; a<=l; a++) // Öèêë, óäàëÿåò ñòàðûå ëèíèè
     {
      ObjectDelete("Line"+a);
     }
   l=0; // Çíà÷åíèå "êîëëè÷åñòâà ëèíèÿ" ïðèðàâíèâàåòñÿ ê íóëþ
   
   ObjectDelete("TextS"); // Óäàëÿåò çíà÷åíèå ñîïðîòèâëåíèÿ â ïðàâîì âåðõíåì óãëó
   ObjectDelete("TextP"); // Óäàëÿåò çíà÷åíèå ïîääåðæêè â ïðàâîì íèæíåì óãëó
   
   
   for(i=1,c=0; i<=PERIOD; i++,c=0) // Öèêë ðàñ÷åòà è ïîñòðàåíèÿ ëèíèé
    {
    MA1=iMA(NULL,PERIOD_H1,MATrendPeriod,0,MODE_SMA,PRICE_MEDIAN,i); // Çíà÷åíèå ñðåäíåé áåç ñäâèãà (i)
    MA2=iMA(NULL,PERIOD_H1,MATrendPeriod,0,MODE_SMA,PRICE_MEDIAN,i+1); // Çíà÷åíèå ñðåäíåé ñî ñäâèãîì íà 1 ñâå÷ó (i+1)
    MA3=iMA(NULL,PERIOD_H1,MATrendPeriod,0,MODE_SMA,PRICE_MEDIAN,i+2); // Çíà÷åíèå ñðåäíåé ñî ñäâèãîì íà 2 ñâå÷è (i+2)
    
    if(i<=24) {COLOR=Color_D; Stil=3;}           // Ñòèëü è öâåò ëèíèé âûñòàâëÿåìûõ çà òåêóùèé äåíü
    if(i>24 && i<=120) {COLOR=Color_W; Stil=3;}  // --//-- íåäåëþ
    if(i>120 && i<=528) {COLOR=Color_M; Stil=2;} // --//-- ìåñÿö
    if(i>528) {COLOR=Color_Y; Stil=1;}           // --//-- ãîä
    
    for(int e=0; e<=l; e++) // Öèêë èñêëþ÷àåò ïîâòîðåíèå ëèíèé ñ îäèíàêîâûì çíà÷åíèåì Y (öåíû)
     {
      double ma2=NormalizeDouble(MA2,Rounding);
      if(ma2==ObjectGet("Line"+e, OBJPROP_PRICE1)) c=c+1;
     }
    
    if(c==0 && ((MA1>MA2 && MA3>MA2) || (MA1<MA2 && MA3<MA2))) // Óñëîâèå, îïðåäåëÿåò âåðøèíó ðàçâîðîòà ñðåäíåé
      {
       MA2=NormalizeDouble(MA2,Rounding); // Îêðóãëåíèå çíà÷åíèå ñðåäíåé
       if((MA2-Ask>StepMin*Point && MA2-Ask<StepMax*Point) || // Óñëîâèå, âûïîëíåíèå êîòîðîãî, ðèñóåò ëèíèþ â ïåðäåëàõ ìàêñèìóìà è ìèíèìóìà
          (Bid-MA2>StepMin*Point && Bid-MA2<StepMax*Point))
           {
            Line();
            i=i+Slayders;
           }
      }
    }
  TextS(); // Îïðåäåëåíèå ôóíêöèè, ïîêàçûâàþùàÿ çíà÷åíèå "ñîïðîòèâëåíèÿ" â ïðàâîì âåðõíåì óãëó
  TextP(); // Îïðåäåëåíèå ôóíêöèè, ïîêàçûâàþùàÿ çíà÷åíèå "ïîääåðæêè" â ïðàâîì íèæíåì óãëó
//----
   return(0);
  }
//--------------------------------------------------------------------


//####################################################################
//                  Í À × À Ë Î  Ô Ó Í Ê Ö È È  start()
int start()
  {
//----

if(Bars-b>1) init(); // Ïðè ïîÿâëåíèè íîâîãî áàðà ïåðåñ÷èòûâàþòñÿ âñå ëèíèè

for(i=0; i<=l; i++) {max=MathMax(max, ObjectGet("Line"+i, OBJPROP_PRICE1));} // Ïðèñâîåíèå çíà÷åíèþ max çíà÷åíèå Y ñàìîé âåðõíåé ëèíèè
for(i=0; i<=l; i++) {min=MathMin(min, ObjectGet("Line"+i, OBJPROP_PRICE1));}

for(i=0; i<=l; i++) // Öèêë, îïðåäåëÿåò ñîïðîòèâëåíèå è ïîääåðæêó
{
if(Ask<ObjectGet("Line"+i, OBJPROP_PRICE1))
   {
    max=MathMin(max, ObjectGet("Line"+i, OBJPROP_PRICE1));
   }
if(Bid>ObjectGet("Line"+i, OBJPROP_PRICE1))
   {
    min=MathMax(min, ObjectGet("Line"+i, OBJPROP_PRICE1));
   }
}

S = DoubleToStr(max,Rounding); // Ïðåîáðàçîâàíèå ÷èñëîâîãî âûðàæåíèÿ "max" â òåêñòîâîå
P = DoubleToStr(min,Rounding); // Ïðåîáðàçîâàíèå ÷èñëîâîãî âûðàæåíèÿ "min" â òåêñòîâîå

ObjectSetText("TextS","Ñîïðîòèâëåíèå: "+S,15,"Arial",Red); // Èçìåíåíèå òåêñòîâîé ÷àñòè ôóíêöèè TextS()
ObjectSetText("TextP","Ïîääåðæêà: "+P,15,"Arial",Blue);    // Èçìåíåíèå òåêñòîâîé ÷àñòè ôóíêöèè TextP()
i=0;
//----
   return(0);
  }
//                    Ê Î Í Å Ö  Ô Ó Í Ê Ö È È  start()
//####################################################################


//+------------------------------------------------------------------+
//| Ôóíêöèÿ deinit()                                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   for(int a=0; a<=l; a++)
     {
      ObjectDelete("Line"+a);
     }
    l=0;
   ObjectDelete("TextS");
   ObjectDelete("TextP");
   
   Print ("Èíäèêàòîð MA_MAXMIN_h1 óäàëåí");
//----
   return(0);
  }
//+------------------------------------------------------------------+



//####################################################################
//                      Ì Î È     Ô Ó Í Ê Ö È È
//####################################################################

//+------------------------------------------------------------------+
//| Ôóíêöèÿ Line()                                                   |
//+------------------------------------------------------------------+

int Line()
   {
    ObjectCreate("Line"+l, OBJ_HLINE, 0,0,0,0,0);
    ObjectSet("Line"+l, OBJPROP_PRICE1, MA2);
    ObjectSet("Line"+l, OBJPROP_COLOR, COLOR);
    ObjectSet("Line"+l, OBJPROP_WIDTH, Stil);
    ObjectSet("Line"+l, OBJPROP_BACK, false);
    WindowRedraw();
    l=l+1;
   }

//-------------------------------------------------------------------+

//+------------------------------------------------------------------+
//| Ôóíêöèÿ TextS()                                                   |
//+------------------------------------------------------------------+

int TextS()
   {
    ObjectCreate("TextS", OBJ_LABEL, 0, 0, 0); // Ñîçäàíèå îáú.
    ObjectSet("TextS", OBJPROP_CORNER, 1);     // Ïðèâÿçêà ê óãîëó (1 ïðàâûé âåðõíèé)
    ObjectSet("TextS", OBJPROP_XDISTANCE, 2);  // Êîîðäèíàòà Õ
    ObjectSet("TextS", OBJPROP_YDISTANCE, 2);  // Êîîðäèíàòà Y
   }

//-------------------------------------------------------------------+

//+------------------------------------------------------------------+
//| Ôóíêöèÿ TextP()                                                   |
//+------------------------------------------------------------------+

int TextP()
   {
    ObjectCreate("TextP", OBJ_LABEL, 0, 0, 0); // Ñîçäàíèå îáú.
    ObjectSet("TextP", OBJPROP_CORNER, 3);     // Ïðèâÿçêà ê óãîëó (3 ïðàâûé íèæíèé)
    ObjectSet("TextP", OBJPROP_XDISTANCE, 2);  // Êîîðäèíàòà Õ
    ObjectSet("TextP", OBJPROP_YDISTANCE, 2);  // Êîîðäèíàòà Y
   }

//-------------------------------------------------------------------+

//#######################################################################

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 ---