Divination__MA

Indicators Used
Moving average indicator
0 Views
0 Downloads
0 Favorites
Divination__MA
//+------------------------------------------------------------------+
//|                                                   Divination _MA |
//|                                                           vorese |
//|                                                 vorese@yandex.ru |
//+------------------------------------------------------------------+
#property indicator_chart_window
extern string s1="-----Ïåðèîä ÌÀ-----";
extern int Period_MA1=5;
extern int Period_MA2=34;
extern int Period_MA3=45;
extern string s2="-----Ìåòîä ðàñ÷åòà ÌÀ-----";
extern int metod_MA1=0;
extern int metod_MA2=0;
extern int metod_MA3=0;
extern string s3="-----Öåíîâàÿ êîíñòàíòà ÌÀ-----";
extern int price_MA1=5;
extern int price_MA2=5;
extern int price_MA3=5;
extern string s4="===========================================";
extern string s5="---êîëè÷åñòâî áàðîâ-----";
extern int Max_bar = 6000;
extern string s6="öåíîâàÿ êîíñòàíòà áàðà";
extern int price_const=5;
extern string s7="äîïóñò. îòêëîíåíèå öåíû %-----";
extern double deviation_perc=15;
extern string s8="===========================================";
extern string s9="-----öâåò ëèíèé-----";
extern color Line1_color=Red;
extern color Line2_color=Gold;
extern string s10="N äëÿ íåñê. èíäèêàòîðîâ â îêíå";
extern int indicator_num=0;
extern string s11="ïå÷àòàòü ñîîáùåíèÿ";
extern bool active_Print=false;
extern string s12="êîììåíòàðèè";
extern bool active_Comment=true;
//+--------------------------------------------------------------------
 int count_bar;
 int  limit;
 int process;
 int shift;
 //===================================================================
int init()
  {      
      if(Max_bar>=Bars)limit=Bars;
      else
      limit=Max_bar;      
 //-------------------------------------------------------------------
         ObjectCreate(indicator_num+"1_line_bar", OBJ_VLINE, 0,Time[shift],0,0); 
         ObjectSet(indicator_num+"1_line_bar",OBJPROP_COLOR,Line1_color); 
 //-------------------------------------------------------------------       
   return(0);
  }
//====================================================================
int deinit()
  {
                 for(int i=0;i<count_bar;i++)
             {  ObjectDelete(indicator_num+"2_line_bar"+i);  }
             ObjectDelete(indicator_num+"1_line_bar");
   return(0);
  }                       
//====================================================================
int start()
  { 
  int i,g,m,bar_num;
  int tilt1,tilt2,tilt3,tilt1i,tilt2i,tilt3i;                           // íàêëîí ÌÀ
  int sign1,sign2,sign3,sign1i,sign2i,sign3i;                           //çíàê öåíû
  int position1,position2,position3,position1i,position2i,position3i;   //ðàñïîë.ÌÀ ìåæäó ñîáîé
  double pips1,pips2,pips3,pips1i,pips2i,pips3i;      //ðàçíîñòü ìåæäó öåíîé ÌÀ è öåíîé áàðà 
  double ma1,ma2,ma3,ma11,ma22,ma33,ma1i,ma2i,ma3i,ma11i,ma22i,ma33i;   //öåíà ÌÀ
 //------------------------------------------------------------------- 
 shift=iBarShift(NULL,0,ObjectGet(indicator_num+"1_line_bar", OBJPROP_TIME1),true);
   
             for( m=0;m<count_bar;m++)
             {  ObjectDelete(indicator_num+"2_line_bar"+m);  }
             //==========================               
               count_bar=0;              
               process=0;                
             //==========================        
         ma1=iMA(NULL,0,Period_MA1,0,metod_MA1,price_MA1,shift);
         ma2=iMA(NULL,0,Period_MA2,0,metod_MA2,price_MA2,shift);
         ma3=iMA(NULL,0,Period_MA3,0,metod_MA3,price_MA3,shift);
        
         ma11=iMA(NULL,0,Period_MA1,0,metod_MA1,price_MA1,shift+1);
         ma22=iMA(NULL,0,Period_MA2,0,metod_MA2,price_MA2,shift+1);
         ma33=iMA(NULL,0,Period_MA3,0,metod_MA3,price_MA3,shift+1);
//--------------------------------------------------------------------     
         pips1=ma1-f_Price_bar( price_const,shift);
         pips2=ma2-f_Price_bar( price_const,shift);
         pips3=ma3-f_Price_bar( price_const,shift); 
//--------------------------------------------------------------------         
         sign1=f_Comparison(pips1,0);
         sign2=f_Comparison(pips2,0);                      
         sign3=f_Comparison(pips3,0);
//--------------------------------------------------------------------        
         position1=f_Comparison(ma1,ma2);
         position2=f_Comparison(ma1,ma3);
         position3=f_Comparison(ma2,ma3);
//--------------------------------------------------------------------              
         tilt1=f_Comparison(ma1,ma11);
         tilt2=f_Comparison(ma2,ma22);
         tilt3=f_Comparison(ma3,ma33);         
//====================================================================            
//--------------------------------------------------------------------              
      for( i=0;i<limit;i++)    
      {                  
                   process++;                 
         ma1i=iMA(NULL,0,Period_MA1,0,metod_MA1,price_MA1,i);
         ma2i=iMA(NULL,0,Period_MA2,0,metod_MA2,price_MA2,i);
         ma3i=iMA(NULL,0,Period_MA3,0,metod_MA3,price_MA3,i);
        
         ma11i=iMA(NULL,0,Period_MA1,0,metod_MA1,price_MA1,i+1);
         ma22i=iMA(NULL,0,Period_MA2,0,metod_MA2,price_MA2,i+1);
         ma33i=iMA(NULL,0,Period_MA3,0,metod_MA3,price_MA3,i+1); 
//--------------------------------------------------------------------                 
         pips1i=ma1i-f_Price_bar( price_const,i);
         pips2i=ma2i-f_Price_bar( price_const,i);
         pips3i=ma3i-f_Price_bar( price_const,i); 
//--------------------------------------------------------------------      
         sign1i=f_Comparison(pips1i,0);
         sign2i=f_Comparison(pips2i,0);                      
         sign3i=f_Comparison(pips3i,0);
//--------------------------------------------------------------------
         position1i=f_Comparison(ma1i,ma2i);
         position2i=f_Comparison(ma1i,ma3i);
         position3i=f_Comparison(ma2i,ma3i);
//--------------------------------------------------------------------         
         tilt1i=f_Comparison(ma1i,ma11i);
         tilt2i=f_Comparison(ma2i,ma22i);
         tilt3i=f_Comparison(ma3i,ma33i);   
//-------------------------------------------------------------------- 
       //óñëîâèÿ äëÿ îòðèñîâêè ëèíèé                   
     if( tilt1==tilt1i && tilt2==tilt2i && tilt3==tilt3i
         && position1==position1i && position2==position2i && position3==position3i   
          && sign1==sign1i && sign2==sign2i && sign3==sign3i          
           && MathAbs(pips1)<=MathAbs(pips1i)+MathAbs(pips1i)*deviation_perc/100 
            && MathAbs(pips1)>=MathAbs(pips1i)-MathAbs(pips1i)*deviation_perc/100
             && MathAbs(pips2)<=MathAbs(pips2i)+MathAbs(pips2i)*deviation_perc/100
              && MathAbs(pips2)>=MathAbs(pips2i)-MathAbs(pips2i)*deviation_perc/100
               && MathAbs(pips3)<=MathAbs(pips3i)+MathAbs(pips3i)*deviation_perc/100
                && MathAbs(pips3)>=MathAbs(pips3i)-MathAbs(pips3i)*deviation_perc/100 )                                       
      {    //îòðèñîâêà ëèíèé
         if( shift!=i)
       { ObjectCreate(indicator_num+"2_line_bar"+count_bar, OBJ_VLINE, 0,Time[i],0,0); 
         ObjectSet(indicator_num+"2_line_bar"+count_bar,OBJPROP_COLOR,Line2_color);  
                   count_bar++; } 
             }                                        
       }   
  //------------------------------------------------------------------       
   if(active_Print) Print(" áàð N  ",shift," ;  ñîâïàäåíèé  ",count_bar,
    " ;   ëèíèé íà ãðàôèêå   ",ObjectsTotal(OBJ_VLINE),
    " ;  áàðîâ â èñòîðèè   ",Bars, " ;  îáðàáîòàíî áàðîâ  ",process); 
   if(active_Comment) 
   Comment(" áàð N ",shift,
  "\n"," ñîâïàäåíèé   ",count_bar,
  "\n"," ëèíèé íà ãðàôèêå   ",ObjectsTotal(OBJ_VLINE),
  "\n"," áàðîâ â èñòîðèè   ",Bars, 
  "\n"," îáðàáîòàíî áàðîâ  ",process);
   
   return(0);
  }
//+------------------------------------------------------------------+
    double f_Price_bar(int constant,int bar)//  öåíà áàðà
      {
         double price;
      switch(constant)      
       { case 0:price=Close[bar]; break;  
          case 1:price=Open[bar]; break;
           case 2:price=High[bar]; break;
            case 3:price=Low[bar]; break;
             case 4:price=(High[bar]+Low[bar])/2; break;
              case 5:price=(Close[bar]+High[bar]+Low[bar])/3; break;
               case 6:price=(Close[bar]+Close[bar]+High[bar]+Low[bar])/4; break;     }
      return(NormalizeDouble(price,Digits));
         }
//====================================================================
int f_Comparison (double variable_1,double variable_2)
     {
       int results;
       if(variable_1==variable_2)results=0;
       else {
         if(variable_1<variable_2)results=(-1);
       else 
           results=1;  } 
         return(results);
         }                              
//==================================================================== 

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