int iBod = iBarShift(NULL,0, bod), nH4 = BarsFromMidnight * 60 / Period(), // Number of bars for 8 hours iH4 = iBod - nH4 + 1; if (iH4 <= 0) return(0);
This assumes every bar every exists. What if there are no ticks during a specific candle period? There can be minutes between ticks during the Asian session, think M1 chart."Free-of-Holes" Charts - MQL4 ArticlesThere can be days between ticks, think weekend, market holiday. Don't assume
No candle if open = close ? - MQL4 and MetaTrader 4 - MQL4 programming forumint iBod = iBarShift(NULL,0, bod), iH4 = iBarShift(NULL,0, bod + BarsFromMidnight * 3600 -1); // Number of bars for 8 hours exclusive nH4 = iH4 - iBod + 1;
Exclusive, you want hour bars [0..7] for a total of eight.double HH = High [iHighest(NULL,0, MODE_HIGH ,nH4,iH4)]; double LL = Low [iLowest (NULL,0, MODE_LOW ,nH4,iH4)]; double HC = Close[iHighest(NULL,0, MODE_CLOSE,nH4,iH4)]; double HO = Close[iHighest(NULL,0, MODE_OPEN ,nH4,iH4)]; double LC = Close[iLowest (NULL,0, MODE_CLOSE,nH4,iH4)]; double LO = Open [iLowest (NULL,0, MODE_OPEN ,nH4,iH4)];
Look closer
- This assumes every bar every exists. What if there are no ticks during a specific candle period? There can be minutes
between ticks during the Asian session, think M1 chart.
"Free-of-Holes" Charts - MQL4 ArticlesThere can be days between ticks, think weekend, market holiday. Don't assume
No candle if open = close ? - MQL4 and MetaTrader 4 - MQL4 programming forum - Look closer
Thanks for your quick response. I corrected the one thing you pointed out. Thanks. I do understand the problem with the no ticks on the weekend and holidays. Coming to this later.
Still can find out how to calculate that it shows me witch one is lower the LC or LO, in the up side the HC or HO.
This code is for learning purpose only
double HH = High [iHighest(NULL,0, MODE_HIGH ,nH4,iH4)]; double LL = Low [iLowest (NULL,0, MODE_LOW ,nH4,iH4)]; double HC = Close[iHighest(NULL,0, MODE_CLOSE,nH4,iH4)]; double HO = Open [iHighest(NULL,0, MODE_OPEN ,nH4,iH4)]; double LC = Close[iLowest (NULL,0, MODE_CLOSE,nH4,iH4)]; double LO = Open [iLowest (NULL,0, MODE_OPEN ,nH4,iH4)];
I just trying your code?????
int iBod = iBarShift(NULL,0, bod), iH4 = iBarShift(NULL,0, bod + BarsFromMidnight * 3600 -1); // Number of bars for 8 hours exclusive nH4 = iH4 - iBod + 1;
Would you please explane whats the different to my code. Thanks
int iBod = iBarShift(NULL,0, bod), nH4 = BarsFromMidnight * 60 / Period(), // Number of Bars From Midnight iH4 = iBod - nH4 + 1;
Your code testing, not showing LL,LC,LO correct from midnight
Any one can help?
That,s what i have so far, i know im totally wrong here . Not getting it to work. not really understanding the else function, was reading it in documentation.
Please help!
Don,t lough to hard about it.
double LLD(double LO,double LC); if(LO>LC) { LC=LLD; return LLD; } else if(LO<LC) { LO=LLD; return LLD; }
So it toke me a few day to solved my problem.
Don't know how to get rid of the warnings, any hint would be nice.
Thanks Piero.
This is a sample for learning purpose only.
double c; int start() { Comment("C0=",(DoubleToStr(c,5))); c = Add(a, b); } double a = 1.99999; double b = 1.88888; double Add(double a,double b) { if(a > b) {c = a;} else if(a < b) {c = b;} return(c); }
double c; int start(){ Comment("C0=",(DoubleToStr(c,5))); c = Add(a, b); }
- Functions can be declared anywhere (outside of other functions.) So Add can be declared below start; no problem.
- c is a global variable, so no problem there.
- a, and b are undefined variable. That is not a warning, that is an error.
Thanks for your help, hope getting it right this time.
double c; double Add(double a,double b) { if(a > b) {c = a;} else if(a < b) {c = b;} else if(a == b){c = b;} return(c); } int start() { { double a = 1.99999; double b = 1.88888; Comment("C0=",(DoubleToStr(c,5))); c = Add(a, b); } return(0); }
And there is the code i have so far. pls comment.
And i was wondering if is possibly to right Comment Function different so it looks more organized on the chart.
//+------------------------------------------------------------------+ //| Piero | //+------------------------------------------------------------------+ #property copyright "Piero" extern int BarsFromMidnight = 8; double LCB; double LowestCandelBody(double LC,double LO) { if(LC > LO) {LCB = LC;} else if(LC < LO) {LCB = LO;} else if(LC == LO) {LCB = LO;} return(LCB); } double HCB; double HighestCandelBody(double HC,double HO) { if(HO > HC) {HCB = HO;} else if(HO < HC) {HCB = HC;} else if(HO == HC) {HCB = HC;} return(HCB); } //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { { string tb = TimeToStr(TimeCurrent(),TIME_SECONDS); datetime now = Time[0], bod = now - now % 86400; // Beginning of the day int iBod = iBarShift(NULL,0, bod), nH4 = BarsFromMidnight * 60 / Period(), // Number of Bars From Midnight iH4 = iBod - nH4 + 1; if (iH4 <= 0) return(0); double HH = High [iHighest(NULL,0, MODE_HIGH ,nH4,iH4)]; double LL = Low [iLowest (NULL,0, MODE_LOW ,nH4,iH4)]; double HC = Close[iHighest(NULL,0, MODE_CLOSE,nH4,iH4)]; double HO = Open [iHighest(NULL,0, MODE_OPEN ,nH4,iH4)]; double LC = Close[iLowest (NULL,0, MODE_CLOSE,nH4,iH4)]; double LO = Open [iLowest (NULL,0, MODE_OPEN ,nH4,iH4)]; } { Comment("Broker Time =",tb, "\n", "High =",(DoubleToStr(HH,5)), "\n", "Low =",(DoubleToStr(LL,5)), "\n", "Highest Close =",(DoubleToStr(HC,5)), "\n", "Highest Open =",(DoubleToStr(HO,5)), "\n", "Lowest Close =",(DoubleToStr(LC,5)), "\n", "Lowest Open =",(DoubleToStr(LO,5)), "\n", "Highest Candle Body =",(DoubleToStr(HCB,5)),"\n", "Lowest Candel Body =",(DoubleToStr(LCB,5))); LCB = LowestCandelBody (LO, LC); HCB = HighestCandelBody(HO, HC); } return(0); }

- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
You agree to website policy and terms of use
Hi Everyone!
Please point me in the right direction!
Trying to get either Lowest_Open or Lowest_Close in Comment, show only the lower of a candle body.
The same to the up side Highest_Open or Highest_Close.