MATLAB Answers

Problem with retime function

8 views (last 30 days)
Sonima
Sonima on 26 Aug 2019
Edited: Cris LaPierre on 27 Aug 2019
Hello all.
I want to use retime to convert a M15 time table to for example a H1 table.
DateTime Open High Low Close Volume
____________________ _______ _______ _______ _______ ______
26-Aug-2019 00:00:00 0.89545 0.89638 0.89529 0.89638 199
26-Aug-2019 00:15:00 0.89638 0.89641 0.89589 0.896 187
26-Aug-2019 00:30:00 0.8962 0.89632 0.89574 0.89603 139
26-Aug-2019 00:45:00 0.89569 0.89594 0.89542 0.89546 157
In this case, I should get the followings:
Open = open@26-Aug-2019 00:00:00
Close = close@26-Aug-2019 00:45:00
High = (max(High))
Low = (min(Low))
resulting the below table.
DateTime Open High Low Close Volume
____________________ _______ _______ _______ _______ ______
26-Aug-2019 01:00:00 0.89545 0.89641 0.89529 0.89546 682
However whatever method I used within the retime function, it won't return what I described above.
Any solution to this?!

Accepted Answer

Cris LaPierre
Cris LaPierre on 27 Aug 2019
Edited: Cris LaPierre on 27 Aug 2019
It can be done in pieces. retime applies the same method to all timetable variables. You'll need to create new timetables (only containing the variables you need for each method) and call retime for each method you want to use (first value, max, min, last value, sum) . At the end, combine the smaller time tables together. See this example from the documentation.
If I were to do this with the table you show above, I'd do something like this.
% Create a timetable for each method only containing the variables that method is applied to
M15_open = M15(:,"Open");
M15_high = M15(:,"High");
M15_low = M15(:,"Low");
M15_close = M15(:,"Close");
M15_vol = M15(:,"Volume");
% Retime each timetable
H1_open = retime(M15_open,'hourly','firstvalue');
H1_high = retime(M15_high,'hourly','max');
H1_low = retime(M15_low,'hourly','min');
H1_close = retime(M15_close,'hourly','lastvalue');
H1_vol = retime(M15_vol,'hourly','sum');
% Combine the individual timetables back into a single time table
H1 = [H1_open H1_high H1_low H1_close H1_vol]

More Answers (0)

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!