I forgot to mention that I have the graph with the M15 period. Even so, count the number of bars correctly and get the other data correctly if the period is changed.
I forgot to mention that I have the graph with the M15 period. Even so, count the number of bars correctly and get the other data correctly if the period is changed.
void OnStart() { int day_shift = 1; // yesterday MqlRates rate[]; CopyRates(Symbol(),PERIOD_D1,day_shift,1,rate); Print("Yesterday: O=",rate[0].open," C=",rate[0].close); }
Thank you very much, the data is correct. I started doing it with arrays but with your method it is simpler.
There are two ways.
- If you use the D1 chart (CopyRates or iClose, etc) Unless the current chart is the specific pair/TF referenced, you must handle
4066/4073 errors
Download history in MQL4 EA - MQL4 and MetaTrader 4 - MQL4 programming forum
or check your return codes (CopyRates) for errors and report them.
What are Function return values ? How do I use them ? - MQL4 and MetaTrader 4 - MQL4 programming forum
Common Errors in MQL4 Programs and How to Avoid Them - MQL4 Articles - Alternatively, just manipulate time to get beginning of the day, beginning of yesterday, etc., get the shifts, get the data.
Draw rectangle around range of bars by hours - MQL4 and MetaTrader 4 - MQL4 programming forum
There are two ways.
- If you use the D1 chart (CopyRates or iClose, etc) Unless the current chart is the specific pair/TF referenced, you must handle
4066/4073 errors
Download history in MQL4 EA - MQL4 and MetaTrader 4 - MQL4 programming forum
or check your return codes (CopyRates) for errors and report them.
What are Function return values ? How do I use them ? - MQL4 and MetaTrader 4 - MQL4 programming forum
Common Errors in MQL4 Programs and How to Avoid Them - MQL4 Articles - Alternatively, just manipulate time to get beginning of the day, beginning of yesterday, etc., get the shifts, get the data.
Draw rectangle around range of bars by hours - MQL4 and MetaTrader 4 - MQL4 programming forum
Would something like this not work?
void OnStart() { int day_shift = 1; // yesterday MqlRates rate[1]={0}; MqlDateTime time; TimeCurrent(time); time.hour=0; time.min=0; time.sec=0; datetime yesterday = StructToTime(time) - PeriodSeconds(PERIOD_D1); datetime tdp = yesterday - PeriodSeconds(PERIOD_D1); int retries = 10; for(int i=0; i<retries && rate[0].time!=yesterday && rate[0].time!=tdp; i++) { CopyRates(Symbol(),PERIOD_D1,day_shift,1,rate); Sleep(10); } if(rate[0].time!=yesterday && rate[0].time!=tdp) Print(__FUNCTION__," Error: ",GetLastError()); Print("Yesterday: O=",rate[0].open," C=",rate[0].close); }
- nicholishen: Would something like this not work?
It probably will not. What part of "you must handle 4066/4073 errors or check your return codes (CopyRates)" was unclear?
rate[0].time!=yesterday
The LHS will be start of the day (00:00) the RHS will usually be a time. These checks are unnecessary if CopyRates returns one. They are bogus if CopyRates returns an error.
Why do you ask for help and then ignore the answers, thus wasting everyone's time and effort?
Why do you have to be such a rude curmudgeon when replying to questions?
"Wasting everyone's time and effort" is rude and inconsiderate. All I did was point it out. Your protestations and name calling make you curmudgeon. I've now added you to my do not help list, have a nice life.
![MQL5 - Language of trade strategies built-in the MetaTrader 5 client terminal](https://c.mql5.com/i/registerlandings/logo-2.png)
- 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, how are you ? A few days ago I published this subject, but I did not get answers that would help me. Then I made a script that gets the highest price all day and also the lowest, showing the information in message boxes. But I also want to get the opening price of the 0 hours and the closing price of the 23 hours, although I do not know how to do it this time. Here is the code:
//+------------------------------------------------------------------+
//| precioPrincipal.mq4 |
//| Copyright 2017, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link "https://www.mql5.com"
#property version "1.00"
#property strict
int numBars,searchH,searchL;
int boxH,boxL,boxT;
double h,l;
string msgH,msgL,msgT;
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart()
{
//---
numBars = iBarShift(NULL,0,iTime(NULL,PERIOD_D1,0));
searchH = iHighest(NULL,0,MODE_HIGH,numBars,0);
searchL = iLowest(NULL,0,MODE_LOW,numBars,0);
if(searchH && searchL != -1)
{
h = High[searchH];
l = Low[searchL];
msgH = DoubleToString(h) + " high price in the bar " + IntegerToString(searchH);
msgL = DoubleToString(l) + " low price in the bar " + IntegerToString(searchL);
msgT = IntegerToString(numBars) + " bars";
boxH = MessageBox(msgH, "High price", MB_OK);
boxL = MessageBox(msgL, "Low price", MB_OK);
boxT = MessageBox(msgT, "Total bars",MB_OK);
}
else
{
boxH = MessageBox("Error", "Not found", MB_OK);
boxL = MessageBox("Error", "Not found", MB_OK);
boxT = MessageBox("Error", "Not found", MB_OK);
}
}
//+------------------------------------------------------------------+
Can you help me ?