Fractals_v2

Author: Copyright � 2009, ������� �������
Price Data Components
Series array that contains tick volumes of each bar
Indicators Used
FractalsMACD HistogramMoney flow indexBill Williams Market Facilitation index
2 Views
0 Downloads
0 Favorites
Fractals_v2
//+------------------------------------------------------------------+
//|                                                     Fractals.mq4 |
//|                                Copyright © 2009, Õëûñòîâ Âëàäèìð |
//|                                                ñmillion@narod.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2009, Õëûñòîâ Âëàäèìð"
#property link      "ñmillion@narod.ru"
 
#property indicator_chart_window
//double Fr_Buffer[];
double Fr_UPPER,Fr_LOWER,High_Fr_LOWER,High_Fr_LOWER_2;
double High_Win,Low_Win,shift_X,shift_Y;
   int per,T_Fr_LOWER,T_Fr_UPPER,Low_Fr_UPPER,Low_Fr_UPPER_2,Level_new;
string òåêñò,ÏÅÐÈÎÄ;
extern color ÖÂÅÒ_UP=Yellow;
extern color ÖÂÅÒ_DN=Magenta;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   del();
   Level_new=MarketInfo(Symbol(),MODE_STOPLEVEL);           //Íàõîäèì ìèíèìàëüíî äîïóñòèìûé TakeProft è StopLoss
   per =Period();
   ÏÅÐÈÎÄ=string_ïåð(per);
   Comment("ÔÐÀÊÒÀËÛ    "+ÏÅÐÈÎÄ+"    "+âðåìÿ(CurTime()));
   return(0);
  }
//+------------------------------------------------------------------+
 
//æææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ
//////////////////////////////////////////////////////////////////////
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int start()
  {
   Fr_UPPER=0;
   Fr_LOWER=100000;
   High_Win = WindowPriceMax();
   Low_Win  = WindowPriceMin();
   shift_X = WindowBarsPerChart()/80*per;
   shift_Y = (High_Win-Low_Win) / 50;
   int s=0;
   for(int n=WindowBarsPerChart(); n>=0; n--)
      Fractal(n);
      
 
/*      if (Fractal(n)!=0)
      {
         s++;
         ObjectDelete ("Name1 "+s);
         ObjectCreate ("Name1 "+s, OBJ_LABEL, 0, 0, 0);// Ñîçäàíèå îáú.
         ObjectSetText("Name1 "+s, n+" "+DoubleToStr(Fr_UPPER,Digits)+" "+DoubleToStr(Fr_LOWER,Digits)     ,8,"Arial");
         ObjectSet    ("Name1 "+s, OBJPROP_CORNER, 3);
         ObjectSet    ("Name1 "+s, OBJPROP_XDISTANCE, 10);
         ObjectSet    ("Name1 "+s, OBJPROP_YDISTANCE, 10+10*s);
         ObjectSet    ("Name1 "+s, OBJPROP_COLOR, White);    // Öâåò 
      }*/
 
   return;                                      // Âûõîä èç deinit()
}
//*////////////////////////////////////////////////////////////////*//
//æææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ
 
//æææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ
//////////////////////////////////////////////////////////////////////
int Fractal(int br)
{
   double Fr_Up = iFractals(NULL, 0, MODE_UPPER, br+3);
   double Fr_Dn = iFractals(NULL, 0, MODE_LOWER, br+3);
   if (Fr_Dn==0 && Fr_Up==0) return(0);
   string sTime = âðåìÿ(Time[br+3])+" "+ÏÅÐÈÎÄ;
   int ñèëà=0,ðû÷àã=0,i;
   //----------------------------------- íèæíèé ôðàêòàë ---------------------------------------------------------------------------------------------------   
   if (Fr_Dn!=0 && Fr_LOWER > Fr_Dn)
   {
      Fr_LOWER = Fr_Dn;      High_Fr_LOWER=High[br+3];      High_Fr_LOWER_2=High[br+2];      T_Fr_LOWER=Time[br+3];
      if (Fr_UPPER>0 && (Fr_UPPER-Open[br])>(Open[br]-Fr_LOWER))//ôîðìèðîâàíèå ïåðåëîìà
      {
         ObjectCreate("Fr "+sTime+" LOWER ", OBJ_ARROW,0,Time[br+3],Fr_Dn-shift_Y*2,0,0,0,0);
         ObjectSet   ("Fr "+sTime+" LOWER ", OBJPROP_ARROWCODE,218);
         ObjectSet   ("Fr "+sTime+" LOWER ", OBJPROP_COLOR,ÖÂÅÒ_DN );
         ObjectCreate("Fr sl "+sTime+" start_LOWER", OBJ_TREND, 0 ,T_Fr_UPPER,Fr_UPPER, T_Fr_LOWER,Fr_LOWER);      
         ObjectSet   ("Fr sl "+sTime+" start_LOWER", OBJPROP_COLOR, ÖÂÅÒ_DN);    // Öâåò   
         ObjectSet   ("Fr sl "+sTime+" start_LOWER", OBJPROP_STYLE, STYLE_DOT);// Ñòèëü   
         ObjectSet   ("Fr sl "+sTime+" start_LOWER", OBJPROP_BACK, true);
         ObjectSet   ("Fr sl "+sTime+" start_LOWER", OBJPROP_RAY,   false);     // Ëó÷   
         ñèëà=0;
         for (i=1; i<=5; i++) {color_bar(per,br+i,Fr_Dn-shift_Y); if (Ñâå÷a_öâåò(per,br+i)==1||Ñâå÷a_öâåò(per,br+i)==4) ñèëà++;}
         ðû÷àã=(Fr_UPPER-Fr_LOWER)/Point/Level_new;
         òåêñò =  "Fr "+sTime+" LOWERñèëà"+"  ð "+DoubleToStr(ðû÷àã,0)+"-"+DoubleToStr((Open[br]-Fr_LOWER)/Point/Level_new,0)+" áàð "+DoubleToStr((T_Fr_LOWER-T_Fr_UPPER)/per/60,0)+" MACD "+DoubleToStr(iMACD(NULL,per,5,34,5,PRICE_CLOSE,MODE_MAIN  ,br+3),Digits)+ " ñ "+DoubleToStr(ñèëà,0)+" "+string_ïåð(per);
         ObjectDelete (òåêñò);
         ObjectCreate (òåêñò, OBJ_TEXT,0,Time[br+3],Fr_Dn-shift_Y*3.2,0,0,0,0);
         ObjectSetText(òåêñò,DoubleToStr(iMACD(NULL,per,5,34,5,PRICE_CLOSE,MODE_MAIN  ,br+3),Digits)+" "+DoubleToStr(iMFI(NULL,per,15,br+3),0),8,"Arial");
         ObjectSet    (òåêñò, OBJPROP_COLOR, ÖÂÅÒ_DN);
         Fr_UPPER=0;T_Fr_UPPER=0;Low_Fr_UPPER=0;Low_Fr_UPPER_2=0;
         return(1);
      }
   }
   //----------------------------------- âåðõíèé ôðàêòàë ---------------------------------------------------------------------------------------------------   
   if (Fr_Up!=0 && Fr_UPPER < Fr_Up)
   {
      Fr_UPPER=Fr_Up;      Low_Fr_UPPER=Low[br+3];      Low_Fr_UPPER_2=Low[br+2];      T_Fr_UPPER=Time[br+3];
      if (Fr_LOWER<100000 && (Fr_UPPER-Open[br])<(Open[br]-Fr_LOWER))//ôîðìèðîâàíèå ïåðåëîìà
      {
         ObjectCreate("Fr "+sTime+" UPPER", OBJ_ARROW,0,Time[br+3],Fr_Up+shift_Y*2,0,0,0,0);
         ObjectSet   ("Fr "+sTime+" UPPER", OBJPROP_ARROWCODE,217);
         ObjectSet   ("Fr "+sTime+" UPPER", OBJPROP_COLOR,ÖÂÅÒ_UP );
         ObjectCreate("Fr su "+sTime+" start_UPPER", OBJ_TREND, 0, T_Fr_LOWER,Fr_LOWER ,T_Fr_UPPER,Fr_UPPER);      
         ObjectSet   ("Fr su "+sTime+" start_UPPER", OBJPROP_COLOR, ÖÂÅÒ_UP);    // Öâåò   
         ObjectSet   ("Fr su "+sTime+" start_UPPER", OBJPROP_STYLE, STYLE_SOLID);// Ñòèëü   
         ObjectSet   ("Fr su "+sTime+" start_UPPER", OBJPROP_BACK, true);
         ObjectSet   ("Fr su "+sTime+" start_UPPER", OBJPROP_RAY,   false);     // Ëó÷   
         ñèëà=0;
         for (i=1; i<=5; i++) {color_bar(per,br+i,Fr_Up+shift_Y);if (Ñâå÷a_öâåò(per,br+i)==1||Ñâå÷a_öâåò(per,br+i)==4) ñèëà++;}
         ðû÷àã=(Fr_UPPER-Fr_LOWER)/Point/Level_new;
         òåêñò="Fr "+sTime+" UPPERñèëà"+"  ð "+DoubleToStr(ðû÷àã,0)+"-"+DoubleToStr((Fr_UPPER-Open[br])/Point/Level_new,0)+" áàð "+DoubleToStr((T_Fr_UPPER-T_Fr_LOWER)/per/60,0)+" MACD "+" ñ "+DoubleToStr(ñèëà,0)+" "+string_ïåð(per);
         ObjectDelete (òåêñò);
         ObjectCreate (òåêñò, OBJ_TEXT,0,Time[br+3],Fr_Up+shift_Y*3.0,0,0,0,0);
         ObjectSetText(òåêñò, DoubleToStr(iMACD(NULL,per,5,34,5,PRICE_CLOSE,MODE_MAIN  ,br+3),Digits)+" "+DoubleToStr(iMFI(NULL,per,15,br+3),0)   ,8,"Arial");
         ObjectSet    (òåêñò, OBJPROP_COLOR, ÖÂÅÒ_UP);
         Fr_LOWER=100000;T_Fr_LOWER=0;High_Fr_LOWER=0;High_Fr_LOWER_2=0;
         return(-1);
      }
   }
//----------------------------
return(0);
}
//////////////////////////////////////////////////////////////////////
// Fractal
//////////////////////////////////////////////////////////////////////
//æææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ
 
//æææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ
//*////////////////////////////////////////////////////////////////*//
 
int deinit()                                    // Ñïåö. ô-èÿ deinit()
{
   del();
   return;                                      // Âûõîä èç deinit()
}
//*////////////////////////////////////////////////////////////////*//
//æææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ
 
//æææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ
//*////////////////////////////////////////////////////////////////*//
int del()                                    // Ñïåö. ô-èÿ deinit()
{
   for(int n=ObjectsTotal()-1; n>=0; n--) 
     {
      string Obj_Name=ObjectName(n);
      if (StringFind(Obj_Name,"Fr",0) != -1)
      {
         ObjectDelete(Obj_Name);
      }
   }
   return;                                      // Âûõîä èç deinit()
}
//*////////////////////////////////////////////////////////////////*//
//æææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ
 
//æææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ
///////////////////////////////////////////////////////////////////
string âðåìÿ(int taim)
{
   string sTaim;
   //int YY=TimeYear(taim);   // Year         
   int MN=TimeMonth(taim);  // Month                  
   int DD=TimeDay(taim);    // Day         
   int HH=TimeHour(taim);   // Hour                  
   int MM=TimeMinute(taim); // Minute   
 
   if (DD<10) sTaim = "0"+DoubleToStr(DD,0);
   else sTaim = DoubleToStr(DD,0);
   sTaim = sTaim+"/";
   if (MN<10) sTaim = sTaim+"0"+DoubleToStr(MN,0);
   else sTaim = sTaim+DoubleToStr(MN,0);
   sTaim = sTaim+" ";
   if (HH<10) sTaim = sTaim+"0"+DoubleToStr(HH,0);
   else sTaim = sTaim+DoubleToStr(HH,0);
   if (MM<10) sTaim = sTaim+":0"+DoubleToStr(MM,0);
   else sTaim = sTaim+":"+DoubleToStr(MM,0);
   return(sTaim);
}
//*////////////////////////////////////////////////////////////////*//
//æææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ
 
//æææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ
//////////////////////////////////////////////////////////////////////
// ðàñêðàñêà áàðà
//-------------------------------------------------------------------
int color_bar(int per, int br, double Y)
{
   int X           = iTime ( NULL, per, br);
   string sTime = âðåìÿ(Time[br]);
   color ÖÂÅÒ;
   switch(Ñâå÷a_öâåò(per,br))//öâåò ñâå÷è MFI 
   {
      case 1 ://Çåëåíûé
         ÖÂÅÒ=Lime;break;
      case 2 ://Óâÿäàþùèé
         ÖÂÅÒ=Sienna;break;
      case 3 ://Ôàëüøèâûé
         ÖÂÅÒ=Blue;break;
      case 4 ://Ïðèñåäàþùèé}
         ÖÂÅÒ=DeepPink;break;
      default:
         ÖÂÅÒ=White;
   }
   ObjectDelete("Fr color_bar "+sTime);
   ObjectCreate("Fr color_bar "+sTime, OBJ_ARROW,0,X,Y,0,0,0,0);
   ObjectSet   ("Fr color_bar "+sTime, OBJPROP_ARROWCODE,117);
   ObjectSet   ("Fr color_bar "+sTime, OBJPROP_COLOR,ÖÂÅÒ );
   ObjectSet   ("Fr color_bar "+sTime, OBJPROP_WIDTH, 0);
   ObjectSet   ("Fr color_bar "+sTime, OBJPROP_BACK, true);
}
//////////////////////////////////////////////////////////////////////
//æææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ
 
//æææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ
//////////////////////////////////////////////////////////////////////
int Ñâå÷a_öâåò(int per, int br)
{
   if ( iVolume(NULL, per, br) > iVolume(NULL, per, br+1) && iBWMFI(NULL, per, br) > iBWMFI(NULL, per, br+1) ) return(1); //Çåëåíûé
   if ( iVolume(NULL, per, br) < iVolume(NULL, per, br+1) && iBWMFI(NULL, per, br) < iBWMFI(NULL, per, br+1) ) return(2); //Óâÿäàþùèé
   if ( iVolume(NULL, per, br) < iVolume(NULL, per, br+1) && iBWMFI(NULL, per, br) > iBWMFI(NULL, per, br+1) ) return(3); //Ôàëüøèâûé
   if ( iVolume(NULL, per, br) > iVolume(NULL, per, br+1) && iBWMFI(NULL, per, br) < iBWMFI(NULL, per, br+1) ) return(4); //Ïðèñåäàþùèé
   return(0);//îøèáêà
}
//////////////////////////////////////////////////////////////////////
//æææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ
 
//æææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ
//*////////////////////////////////////////////////////////////////*//
string string_ïåð(int per)
{
   switch(per)
   {
      case 1    : return("M_1");   //1 ìèíóòà
         break;
      case 5    : return("M_5");   //5 ìèíóò 
         break;
      case 15   : return("M15");  //15 ìèíóò
         break;
      case 30   : return("M30");  //30 ìèíóò
         break;
      case 60   : return("H 1");   //1 ÷àñ
         break;
      case 240  : return("H_4");   //4 ÷àñà
         break;
      case 1440 : return("D_1");   //1 äåíü
         break;
      case 10080: return("W_1");   //1 íåäåëÿ
         break;
      case 43200: return("MN1");  //1 ìåñÿö
         break;
   }
return("îøèáêà ïåðèîäà");
}
//*////////////////////////////////////////////////////////////////*//
//æææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ

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