primelevelsblack

Author: Doblece, Domas4 & Traderathome, Copyright @ 2009
primelevelsblack
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
primelevelsblack
//+----------------------------------------------------------------------------------+
//|                                                                                  |
//|                               Prime Levels.mq4                                   |
//|                                                                                  |
//+----------------------------------------------------------------------------------+
#property copyright "Doblece, Domas4 & Traderathome, Copyright @ 2009"
#property link      "email:  traderathome@msn.com"
/*------------------------------------------------------------------------------------
Suggested Settings:                   White Chart                Black Chart  

Line1_Color                           Red                        Red
Line2_Color                           Blue                       Blue
Line3_Color                           Olive                      Olive
Line4_Color                           Olive                      Olive
Line5_Color                           LimeGreen                  ForestGreen
Line6_Color                           LimeGreen                  ForestGreen                                                                                                                                                                                    
--------------------------------------------------------------------------------------*/
#property indicator_chart_window
//---
extern bool   Indicator_On                    = true;
extern int    RangesAboveBelowBaseRange       = 2;
extern string Exit_Period_Choices             = "M1, M5, M15, M30, H1, H4, D1";
extern string Exit_If_Period_Greater_Than     = "H1";
//---
extern string _                               = "";
extern string Part_1                          = "Line Settings:";
extern bool   EndLines_At_Current_Candle      = true;
extern bool   FScrLines_With_Margin_Prices    = true;
extern bool   Subordinate_Lines               = true;
//---
extern string __                              = "";
extern string Part_2                          = "Label Settings:";
extern color  Color                           = DarkGray;
extern bool   ShowLabels                      = true;
extern string FontStyle                       = "Arial";
extern int    FontSize                        = 11;
extern bool   Line_Prices                     = true;
extern string Text_For_Label                  = "";
extern int    Shift_Labels_PerCent_Left       = 100;
extern bool   Subordinate_Labels              = true;
//---
extern string ___                             = "";
extern string Part_3                          = "Individual Line Configurations:";
extern color  Line1_Color                     = Red;
extern bool   Line1_On                        = true;
extern int    Line1_Last_Two_Digits           = 0;
extern int    Line1_Style_01234               = 2;
extern int    Line1_SolidThickness            = 1;
//---
extern color  Line2_Color=Blue;  //C'193,193,0';
extern bool   Line2_On                        = true;
extern int    Line2_Last_Two_Digits           = 50;
extern int    Line2_Style_01234               = 2;
extern int    Line2_SolidThickness            = 1;
//---
extern color  Line3_Color                     = Olive;
extern bool   Line3_On                        = true;
extern int    Line3_Last_Two_Digits           = 13;
extern int    Line3_Style_01234               = 2;
extern int    Line3_SolidThickness            = 1;
//---
extern color  Line4_Color                     = Olive;
extern bool   Line4_On                        = true;
extern int    Line4_Last_Two_Digits           = 87;
extern int    Line4_Style_01234               = 2;
extern int    Line4_SolidThickness            = 1;
//---
extern color  Line5_Color                     = ForestGreen;
extern bool   Line5_On                        = true;
extern int    Line5_Last_Two_Digits           = 67;
extern int    Line5_Style_01234               = 2;
extern int    Line5_SolidThickness            = 1;
//---
extern color  Line6_Color                     = ForestGreen;
extern bool   Line6_On                        = true;
extern int    Line6_Last_Two_Digits           = 33;
extern int    Line6_Style_01234               = 2;
extern int    Line6_SolidThickness            = 1;
//---
extern string ____                            = "";
extern string Part_4                          = "Data Box Settings:";
extern bool   Show_Data_Box                   = true;
extern color  Box_Background_Color=C'47,0,47';// C'60,0,60';//C'173,222,252';
extern int    Days_Used_For_Range_Data=30;
//---
double Poin;
//+-------------------------------------------------------------------------------------------+
//| Initialization                                                                            |
//+-------------------------------------------------------------------------------------------+
int init()
  {
//--- Checking for unconventional Point digits number
   if(Point==0.00001) Poin=0.0001; //5 digits
   else if(Point==0.001) Poin=0.01; //3 digits
   else Poin=Point; //Normal
   return(0);
  }
//+-------------------------------------------------------------------------------------------+
//| De-initialization                                                                         |
//+-------------------------------------------------------------------------------------------+
int deinit()
  {
   int obj_total=ObjectsTotal();
   for(int j=obj_total; j>=0; j--)
     {
      string name=ObjectName(j);
      if(StringSubstr(name,0,19)=="[Prime Time Levels]"){ObjectDelete(name);}
     }
//ObjectDelete("[Pivots History] Data Box");
   Comment("");
   return(0);
  }
//+-------------------------------------------------------------------------------------------+
//| Start                                                                                     |
//+-------------------------------------------------------------------------------------------+
int start()
  {
   if(Indicator_On==false) {return(0);}
//--- Exit if period is greater than
   int E;
   if(Exit_If_Period_Greater_Than== "M1") {E= 1;}
   if(Exit_If_Period_Greater_Than== "M5") {E= 5;}
   if(Exit_If_Period_Greater_Than== "M15") {E= 15;}
   if(Exit_If_Period_Greater_Than== "M30") {E= 30;}
   if(Exit_If_Period_Greater_Than== "H1") {E= 60;}
   if(Exit_If_Period_Greater_Than== "H4") {E= 240;}
   if(Exit_If_Period_Greater_Than== "D1") {E= 1440;}
   if(Period()>E) {deinit(); return(-1);}
//--- count the chars Objects, then for that count check and clear any entitled "[SweetSpot]"
   int obj_total=ObjectsTotal();
   for(int j=obj_total; j>=0; j--)
     {
      string name=ObjectName(j);
      if(StringSubstr(name,0,12)=="[SweetSpot] "){ObjectDelete(name);}
     }
//--- space out updates
//--- static datetime timelastupdate= 0; static datetime lasttimeframe= 0;     
//if (CurTime()-timelastupdate < 5 && Period()==lasttimeframe) return (0);
//--- initialize needed variables
   int i,ssp,ssp1;  //choosing "int" instead of "double" drops decimal portion of value
   double linelevel,linestyle,linewidth; color linecolor;
   double d1=Bid;  //Comment(DoubleToStr(NormalizeDouble(d1,2),2));
   ssp1=Bid;  //bid w/o decimal, 117 instead of 117.66
   ssp1=Bid/Poin;  //Point restores bid integers w/o the decimal, 11766   
   int u1=Line1_Last_Two_Digits; //initializing last two digits user entered
   int u2 = Line2_Last_Two_Digits;
   int u3 = Line3_Last_Two_Digits;
   int u4 = Line4_Last_Two_Digits;
   int u5 = Line5_Last_Two_Digits;
   int u6 = Line6_Last_Two_Digits;
   int c1=ssp1%100;
   double LA,LB,LN; LN=100-c1; LB=c1; LA=LN; //if (c1<50)LB=c1;LA=LN;//if (c1>+50)LB=c1;LA=LN;Comment(LB);
                                             //calculate line levels for user specified # of ranges
   ssp=ssp1; //start ssp at reference bid
   for(i=-((100*(RangesAboveBelowBaseRange))+LB); i<=((100*(RangesAboveBelowBaseRange))+LA); i++)
     {
      ssp=ssp1+i;  //Comment(i+"  "+ssp);
      c1=ssp%100;  //Comment(c1);
      if(c1==u1 && Line1_On==true)
        {
         linestyle = Line1_Style_01234;
         linecolor = Line1_Color;
         linewidth = Line1_SolidThickness;
         linelevel = ssp*Poin;
        }
      if(c1==u2 && Line2_On==true)
        {
         linestyle = Line2_Style_01234;
         linecolor = Line2_Color;
         linewidth = Line2_SolidThickness;
         linelevel = ssp*Poin;
        }
      if(c1==u3 && Line3_On==true)
        {
         linestyle = Line3_Style_01234;
         linecolor = Line3_Color;
         linewidth = Line3_SolidThickness;
         linelevel = ssp*Poin;
        }
      if(c1==u4 && Line4_On==true)
        {
         linestyle = Line4_Style_01234;
         linecolor = Line4_Color;
         linewidth = Line4_SolidThickness;
         linelevel = ssp*Poin;
        }
      if(c1==u5 && Line5_On==true)
        {
         linestyle = Line5_Style_01234;
         linecolor = Line5_Color;
         linewidth = Line5_SolidThickness;
         linelevel = ssp*Poin;
        }
      if(c1==u6 && Line6_On==true)
        {
         linestyle = Line6_Style_01234;
         linecolor = Line6_Color;
         linewidth = Line6_SolidThickness;
         linelevel = ssp*Poin;
        }
      //--- branch to subroutine to draw lines
      SetLevel(DoubleToStr(linelevel,Digits),linelevel,linecolor,linestyle,linewidth,Time[10]);
      //--- branch to subroutine to draw labels
      if(ShowLabels==true){SetLabel(DoubleToStr(linelevel,Digits),linelevel,Color);}
     }
//--- Code for TF Background colors, Day Candle and Data Box (items in-work) 
   int digits=MarketInfo(Symbol(),MODE_DIGITS);
   double modifier=1; if(digits==3 || digits==5) modifier=10.0;
//--- Define today's bar and it's data                     
   int TodayBar=iBarShift(NULL,PERIOD_D1,Time[0]);
   double HiToday    = iHigh (NULL,PERIOD_D1,TodayBar);
   double LoToday    = iLow  (NULL,PERIOD_D1,TodayBar);
   double open       = iOpen( NULL,PERIOD_D1,TodayBar);
   double current    = iClose(NULL,PERIOD_D1,TodayBar);
   double change     = (current-iOpen(NULL,PERIOD_D1,TodayBar))/(Point*modifier);
   double startToday = iTime(NULL,PERIOD_D1,TodayBar);
   double endToday   = iTime(NULL,0,0);
//--- Define yesterday's bar and it's data              
   int YesterdayBar=iBarShift(NULL,PERIOD_D1,Time[(23*60)/Period()]);
   double HiYesterday    = iHigh (NULL,PERIOD_D1,YesterdayBar);
   double LoYesterday    = iLow  (NULL,PERIOD_D1,YesterdayBar);
   double startYesterday = iTime(NULL,PERIOD_D1,YesterdayBar);
   double endYesterday   = iTime(NULL,PERIOD_D1,TodayBar);
//--- Data Box section
   if(Show_Data_Box)
     {
      string dComment="[Prime Time Levels] Data Box";
      ObjectCreate(dComment,OBJ_LABEL,0,0,0,0,0);
      ObjectSetText(dComment,"g",77,"Webdings");//82
      ObjectSet(dComment,OBJPROP_CORNER,0);
      ObjectSet(dComment,OBJPROP_XDISTANCE,0);
      ObjectSet(dComment,OBJPROP_YDISTANCE,15);  //13    
      ObjectSet(dComment,OBJPROP_COLOR,Box_Background_Color);
      ObjectSet(dComment,OBJPROP_BACK,false);
      //--- Daily Average Range
      int Ra=0,RaP=Days_Used_For_Range_Data;
      for(i=0; i<RaP; i++) {Ra=Ra+((iHigh(NULL,PERIOD_D1,i)-iLow(NULL,PERIOD_D1,i))/Point);}
      Ra=((Ra/RaP)+1); //Add "1" to balance excessive rounding down  
                       //Spread
      int spread=MarketInfo(Symbol(),MODE_SPREAD);
      //--- Set up Comment string     
      string C="\n --------  DATA  --------\n";
      C=C + " Range Today:   "+DoubleToStr(MathRound((HiToday-LoToday)/Point),0)+ "\n";
      C=C + "     Yesterday:   "+DoubleToStr(MathRound((HiYesterday-LoYesterday)/Point),0) + "\n";
      C=C + "         "+Days_Used_For_Range_Data+" Day:   "+ Ra + "\n";
      C=C + "          Spread:   " + spread + "\n";
      C=C + "    Swap Long:   "+DoubleToStr(MarketInfo(Symbol(),MODE_SWAPLONG),2) + "\n";
      C=C + "   Swap Short:  "+DoubleToStr(MarketInfo(Symbol(),MODE_SWAPSHORT),2) + "\n";
      Comment(C);
     }
//---
   return(0);
  }
//+-------------------------------------------------------------------------------------------+
//| Sub-routine to name and draw lines                                                        |                                                                                  |
//+---------------------------------------------------------------------------------------- --+
void SetLevel(string text,double level,color linecolor,int linestyle,int linewidth,datetime startofday)
  {
   int digits=Digits;
   int startline=WindowFirstVisibleBar();
   int endline=Time[0];
   int G= false;
   int Z= OBJ_TREND;
   string linename="[Prime Time Levels] "+StringTrimLeft(text)+" Line";
//--- create or move the horizontal line 
   if(FScrLines_With_Margin_Prices==true){Z=OBJ_HLINE;}
   if(EndLines_At_Current_Candle) {startline=Time[0]; endline=WindowFirstVisibleBar(); Z=OBJ_TREND;}
   if(Subordinate_Lines) {G=true;}
   if(ObjectFind(linename)!=0)
     {
      ObjectCreate(linename,Z,0,startline,level,endline,level);
      ObjectSet(linename,OBJPROP_STYLE,linestyle);
      ObjectSet(linename,OBJPROP_COLOR,linecolor);
      ObjectSet(linename,OBJPROP_WIDTH,linewidth);
      ObjectSet(linename,OBJPROP_BACK,G);
     }
   else
     {
      ObjectMove(linename,0,startline,level);
      ObjectMove(linename,1,endline,level);
     }
  }
//+-------------------------------------------------------------------------------------------+
//| Sub-routine to name and draw labels                                                       |                                                                                  |
//+---------------------------------------------------------------------------------------- --+
void SetLabel(string text,double linelevel,color Color_Labels)
  {
   int ml=((WindowFirstVisibleBar()-0) * Shift_Labels_PerCent_Left)/100;
   int G = false;
   string tab;
   string name = "[Prime Time Levels] " + StringTrimLeft(text) + " Label";
   string TEXT = Text_For_Label;
   if(Line_Prices == true){TEXT = TEXT + "   "+DoubleToStr(linelevel, Digits);}
   if(Subordinate_Labels) {G = true;}
//---
   for(int i=StringLen(TEXT)*2+2; i>=0; i--) tab=tab+" ";
//---
   if(ObjectFind(name)!=0)
     {
      ObjectCreate(name,OBJ_TEXT,0,Time[ml],linelevel);
      ObjectSet(name,OBJPROP_BACK,G);
      ObjectSetText(name,tab+TEXT,FontSize,FontStyle,Color_Labels);
     }
   else
     {
      ObjectMove(name,0,Time[ml],linelevel);
     }
  }
//+------------------------------------------------------------------+

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