Create a verticle line at certain hour for every certain hour | Forex Factory

HeroPoker_HeroPoker扑克_HeroPoker德扑圈官网

Attachments: Create a verticle line at certain hour for every certain hour

Create a verticle line at certain hour for every certain hour

Hello, I am trying to create an indicator that draws a line at the beginning and end of each session, that means three times out the day it will draw a vertical line. How can I make code it so that it draws this line at those certain hour from now on?


Thanks,

Nip
Nothing is hard, some things just take more time and discipline.
Hello, I am trying to create an indicator that draws a line at the beginning and end of each session, that means three times out the day it will draw a vertical line. How can I make code it so that it draws this line at those certain hour from now on?


Thanks,

Nip
Is this what you're looking for? - it has 4 lines / day or you can superimpose them to reduce the number shown....
Attached File(s)
File Type: ex4 Trading Session vLines.ex4   8 KB | 1,162 downloads
Trading Levels with WRBs
Is this what you're looking for? - it has 4 lines / day or you can superimpose them to reduce the number shown....
Thnx for the indicator...but it only display UK open and close and the US open, as well as a day separator. You wouldnt happen to have the mq4 file to it? I would like to look at the code and see if I can tweak it to what I like.


Thnx
Nothing is hard, some things just take more time and discipline.
Here's the indicator I did for the DIBS method and it draws two lines for open and close of session. You can take a look at the code and see how I did it.

Hope it helps.

Lux
Attached File(s)
File Type: mq4 DIBS_TriggerLines1.2.mq4   9 KB | 1,227 downloads
MT4 EA, Indicator and Alert Coder Since 2006
Thnx for the indicator...but it only display UK open and close and the US open, as well as a day separator. You wouldnt happen to have the mq4 file to it? I would like to look at the code and see if I can tweak it to what I like.


Thnx
you can set the times to any hour you like - open the indy, edit and double click on any line to highlight the hour and then change it....
Trading Levels with WRBs
you can set the times to any hour you like - open the indy, edit and double click on any line to highlight the hour and then change it....
yea i got that part...but it still only displays 3 lines...would liek it to show all sessions at once...
Nothing is hard, some things just take more time and discipline.
NipthePips,

Here is something to play with.
Attached File(s)
File Type: mq4 mMktOpen.mq4   7 KB | 1,094 downloads
yea i got that part...but it still only displays 3 lines...would liek it to show all sessions at once...
mm - actually there are 4 lines.....
Trading Levels with WRBs
mm - actually there are 4 lines.....

LOL ok and the day separator....my point still stands lol....but thnx anyways
Nothing is hard, some things just take more time and discipline.
NipthePips,

Here is something to play with.

Love it!, so far it looks right...thnx!
Nothing is hard, some things just take more time and discipline.
NipthePips,

Here is something to play with.
1.historical line for this indicator too short...can it have longer period historical line?example we can backtest for 365day (year)

2.can it have abillity to switch on/off for market open line and switch on/off for market close?

thanks
1.historical line for this indicator too short...can it have longer period historical line?example we can backtest for 365day (year)

2.can it have abillity to switch on/off for market open line and switch on/off for market close?

thanks

Umm what i did was added a variable called "BarsToCount" as an extern

changed the function where it counts bars and sets the total number to be that variable.. so that way the user can enter in how many bars they want it to calculate until....



here is a snippet of each place where i edited code that way you can find it and add it in


Inserted Code
extern int SydneyOpenDataTime=1;
extern int TokyoOpenDataTime=2;
extern int HongKongOpenDataTime=3;

[b]extern int BarsToCount=1000;[/b]

extern color NYColor=Sienna;


Inserted Code
int start()
   {
   int counted_bars=IndicatorCounted();
   int bars_count=BarsToCount,i,h,m;
   bool drawvl;
   if (Period()>PERIOD_H1) 
      {
         return(0);    //If time > 1 hour clutters up screen
      }
   for (i=0;i<bars_count;i++)

Then when you run it, when you are editing the inputs, change the barstocount variable to whatever, i usually set mine at between 1000-3000 depending on how much data you have.

Then again, i guess i can upload the indicator lmao...
Attached File(s)
File Type: mq4 mMktOpen.mq4   7 KB | 1,249 downloads
Nothing is hard, some things just take more time and discipline.
thanks nip..everything work nicely..
Here's the indicator I did for the DIBS method and it draws two lines for open and close of session. You can take a look at the code and see how I did it.

Hope it helps.

Lux
Hi Luxinterior,

Thanks for the indicator. Can you please tell me how to trade on that ??

Cheers
The One Who Makes The Thunder Roar Also Hears A Butterfly Sigh - Ruzbeh
Umm what i did was added a variable called "BarsToCount" as an extern

changed the function where it counts bars and sets the total number to be that variable.. so that way the user can enter in how many bars they want it to calculate until....



here is a snippet of each place where i edited code that way you can find it and add it in


Inserted Code
extern int SydneyOpenDataTime=1;
extern int TokyoOpenDataTime=2;
extern int HongKongOpenDataTime=3;
 
[b]extern int BarsToCount=1000;[/b]
 
extern color NYColor=Sienna;


[code]int start()...

mMktOpen.mq4
Is there any way of having this indicator shift forward? I would like it to display 1 day ahead... at least as much as I can see.

Thanks for the help!
Is there any way to have this indicator project time forward??? I would like to see the opens before they occur.

Inserted Code
#property indicator_chart_window
extern bool NY=true;
extern bool London=true;
extern bool Auckland=false;
extern bool Sydney=false;
extern bool Tokyo=true;
extern bool HongKong=false;
extern bool t30MinAdvanceNotice=false;     //display dashed line 30 minutes before opening?
//Data provider times for openings
extern int NYOpenDataTime=15;
extern int LondonOpenDataTime=10;
extern int AucklandOpenDataTime=21;
extern int SydneyOpenDataTime=24;
extern int TokyoOpenDataTime=2;
extern int HongKongOpenDataTime=4;
extern color NYColor=DimGray;
extern color LondonColor=DimGray;
extern color AucklandColor=DimGray;
extern color SydneyColor=DimGray;
extern color TokyoColor=DimGray;
extern color HKColor=DimGray;
double val1,val2;
int deinit()
  {
   int bars_count=BarsPerWindow(), i;
   for (i=0;i<bars_count;i++)
      {
      ObjectDelete("MMt"+DoubleToStr(i,0));
      ObjectDelete("MMl"+DoubleToStr(i,0));
      }
   return(0);
  }
//----------------------------------------------------------------------------------------
int start()
   {
   int counted_bars=IndicatorCounted();
   int bars_count=BarsPerWindow(),i,h,m;
   bool drawvl;
   if (Period()>PERIOD_D1) 
      {
         return(0);    //If time > 1 day clutters up screen
      }
   for (i=0;i<bars_count;i++)
      {
      ObjectDelete("MMt"+DoubleToStr(i,0));
      ObjectDelete("MMl"+DoubleToStr(i,0));
      }
   for (i=0;i<bars_count;i++)
      {
         drawvl=false;
         h=TimeHour(Time[i]);
         m=TimeMinute(Time[i]);
         if (London==true)
            {
               if ((h==LondonOpenDataTime) && (m==0)) {drawvl=true;VerticalLine("LO",i,STYLE_SOLID,LondonColor);}
               if ((h==TimeAdjust(LondonOpenDataTime,0)) && (m==0)) {drawvl=true;VerticalLine("LC",i,STYLE_DASH,LondonColor);}
               if (t30MinAdvanceNotice==true)
                  {
                     if ((h==TimeAdjust(LondonOpenDataTime,1)) && (m==30)) {drawvl=true;VerticalLine("",i,STYLE_DOT,LondonColor);}
                     if ((h==TimeAdjust(LondonOpenDataTime,2)) && (m==30)) {drawvl=true;VerticalLine("",i,STYLE_DOT,LondonColor);}
                  }
            }
         if (NY==true)
            {
               if ((h==NYOpenDataTime) && (m==0)) {drawvl=true;VerticalLine("NYO",i,STYLE_SOLID,NYColor);}
               if ((h==TimeAdjust(NYOpenDataTime,0)) && (m==0)) {drawvl=true;VerticalLine("NYC",i,STYLE_DASH,NYColor);}
               if (t30MinAdvanceNotice==true)
                  {
                     if ((h==TimeAdjust(NYOpenDataTime,1)) && (m==30)) {drawvl=true;VerticalLine("",i,STYLE_DOT,NYColor);}
                     if ((h==TimeAdjust(NYOpenDataTime,2)) && (m==30)) {drawvl=true;VerticalLine("",i,STYLE_DOT,NYColor);}
                  }
            }
         if (Auckland==true)
            {
               if ((h==AucklandOpenDataTime) && (m==0)) {drawvl=true;VerticalLine("Auck O",i,STYLE_SOLID,AucklandColor);}
               if ((h==TimeAdjust(AucklandOpenDataTime,0)) && (m==0)) {drawvl=true;VerticalLine("Auck C",i,STYLE_DASH,AucklandColor);}
               if (t30MinAdvanceNotice==true)
                  {
                     if ((h==TimeAdjust(AucklandOpenDataTime,1)) && (m==30)) {drawvl=true;VerticalLine("",i,STYLE_DOT,AucklandColor);}
                     if ((h==TimeAdjust(AucklandOpenDataTime,2)) && (m==30)) {drawvl=true;VerticalLine("",i,STYLE_DOT,AucklandColor);}
                  }
            }
         if (Sydney==true)
            {
               if ((h==SydneyOpenDataTime) && (m==0)) {drawvl=true;VerticalLine("Syd O",i,STYLE_SOLID,SydneyColor);}
               if ((h==TimeAdjust(SydneyOpenDataTime,0)) && (m==0)) {drawvl=true;VerticalLine("Syd C",i,STYLE_DASH,SydneyColor);}
               if (t30MinAdvanceNotice==true)
                  {
                     if ((h==TimeAdjust(SydneyOpenDataTime,1)) && (m==30)) {drawvl=true;VerticalLine("",i,STYLE_DOT,SydneyColor);}
                     if ((h==TimeAdjust(SydneyOpenDataTime,2)) && (m==30)) {drawvl=true;VerticalLine("",i,STYLE_DOT,SydneyColor);}
                  }
            }
         if (Tokyo==true)
            {
               if ((h==TokyoOpenDataTime) && (m==0)) {drawvl=true;VerticalLine("Tokyo O",i,STYLE_SOLID,TokyoColor);}
               if ((h==TimeAdjust(TokyoOpenDataTime,0)) && (m==0)) {drawvl=true;VerticalLine("Tokyo C",i,STYLE_DASH,TokyoColor);}
               if (t30MinAdvanceNotice==true)
                  {
                     if ((h==TimeAdjust(TokyoOpenDataTime,1)) && (m==30)) {drawvl=true;VerticalLine("",i,STYLE_DOT,TokyoColor);}
                     if ((h==TimeAdjust(TokyoOpenDataTime,2)) && (m==30)) {drawvl=true;VerticalLine("",i,STYLE_DOT,TokyoColor);}
                  }
            }
         if (HongKong==true)
            {
               if ((h==HongKongOpenDataTime) && (m==0)) {drawvl=true;VerticalLine("HK O",i,STYLE_SOLID,HKColor);}
               if ((h==TimeAdjust(HongKongOpenDataTime,0)) && (m==0)) {drawvl=true;VerticalLine("HK C",i,STYLE_DASH,HKColor);}
               if (t30MinAdvanceNotice==true)
                  {
                     if ((h==TimeAdjust(HongKongOpenDataTime,1)) && (m==30)) {drawvl=true;VerticalLine("",i,STYLE_DOT,HKColor);}
                     if ((h==TimeAdjust(HongKongOpenDataTime,2)) && (m==30)) {drawvl=true;VerticalLine("",i,STYLE_DOT,HKColor);}
                  }
            }
      }
   return(0);
   }
//----------------------------------------------------------------------------------------------
int VerticalLine(string s,int i,int st,int Col)    //s=Text Label, i = bar, st=Line Style, Col = color
   {
   ObjectDelete("MMl"+DoubleToStr(i,0));
   val1=Low[Lowest(NULL,0,MODE_LOW,BarsPerWindow(),0)];
   val2=High[Highest(NULL,0,MODE_HIGH,BarsPerWindow(),0)];
   ObjectCreate("MMl"+DoubleToStr(i,0),OBJ_TREND,0,Time[i],0,Time[i],900);
   ObjectSet("MMl"+DoubleToStr(i,0),OBJPROP_COLOR,Col);
   ObjectSet("MMl"+DoubleToStr(i,0),OBJPROP_WIDTH,1);
   ObjectSet("MMl"+DoubleToStr(i,0),OBJPROP_STYLE,st);
   ObjectSet("MMl"+DoubleToStr(i,0),OBJPROP_RAY,0);
   ObjectDelete("MMt"+DoubleToStr(i,0));
   ObjectCreate("MMt"+DoubleToStr(i,0),OBJ_TEXT,0,Time[i],val2+Point*3);
   ObjectSetText("MMt"+DoubleToStr(i,0),s,8,"Arial",Col);
   ObjectSet("MMt"+DoubleToStr(i,0), OBJPROP_ANGLE, 90);          //Rotates text 90 degrees
   ObjectsRedraw();
   return(0);
   }
int TimeAdjust(int TimeIn, int ProcessType)  
   {
      if (ProcessType==0)     //Calculate Closing Hour.  Open Hour + 9 hours
         {
            if ((TimeIn>=0) && (TimeIn<=14)){return(TimeIn+9);}
            return(TimeIn-15);
         }   
      if (ProcessType==1)     //Calculate 30MinAdvanceNotice for Opening Hour
         {
            if (TimeIn==0) {return(23);}
            return(TimeIn-1);
         }
      if (ProcessType==2)     //Calculate 30MinAdvanceNotice for Closing Hour
         {
            if ((TimeIn>=0) && (TimeIn<=15)) {return(TimeIn+8);}
            return(TimeIn-16);
         }
   }