For further improvement you could setup the window as sort of as a "binary tree of windows" type thing. Clearly it would be a little bit complicated. I would figure out the smallest subwindow that makes sense, and align it to absolute time clock, such as the 1 minute mark, or the 10 minute mark, etc.
On Sat, Mar 23, 2013 at 10:20 AM, Eugene Kononov <[email protected]> wrote: > Thanks, Klaus. Yes, your solution is a good improvement. > > > On Sat, Mar 23, 2013 at 1:04 PM, Klaus <[email protected]> wrote: >> >> Dear Eugene, >> >> here is my take on this. >> It predates your question, as I ran into this problem some time back. >> (Thus, the interface does not match yours exactly) >> It contains an improvement insofar, as updating is only necessary if a max >> or min >> value is removed. >> One could go beyond this in case value repetition occurs (rather likely >> for >> base data, less for indicators as they change based on history) >> In this case several max or min values may be at the same time part of the >> window. >> One could count them and wait with updating until the last one drops out. >> As I focussed on indicators, this optimization is not contained. >> >> I hope it is what you are looking for. >> If there are further optimizations, I would be interested as well, of >> course. >> >> Cheers >> Klaus >> >> >> >> Am Samstag, 23. März 2013 10:47:43 UTC-3 schrieb Eugene Kononov: >>> >>> Hello JBTers, >>> >>> Consider this challenge: over a time window of fixed length (let's say 2 >>> hour time window), I'd like to know the high price and low price in that >>> window. The straightforward solution is to iterate over the prices in the >>> window and compute the min and max values, which has to be done every time >>> an old price drops from the window and the new price is added to the window. >>> This works, but it's very inefficient. It requires N operations where N is >>> the length of the time window. This makes strategy optimization which uses >>> this indicator painfully slow. All other indicators in JBT require just one >>> operation to update the indicator. >>> >>> So, the challenge is to to make the min/max calculation in a moving >>> window more computationally efficient. I attached the inefficient solution, >>> where the update() method has to be called every time before min or max can >>> be returned. >>> >>> Any takers to improve this? >>> >>> Thanks, >>> Eugene. >>> >>> >>> >> -- >> You received this message because you are subscribed to the Google Groups >> "JBookTrader" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected]. >> To post to this group, send email to [email protected]. >> Visit this group at http://groups.google.com/group/jbooktrader?hl=en. >> For more options, visit https://groups.google.com/groups/opt_out. >> >> > > > -- > You received this message because you are subscribed to the Google Groups > "JBookTrader" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To post to this group, send email to [email protected]. > Visit this group at http://groups.google.com/group/jbooktrader?hl=en. > For more options, visit https://groups.google.com/groups/opt_out. > > -- You received this message because you are subscribed to the Google Groups "JBookTrader" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/jbooktrader?hl=en. For more options, visit https://groups.google.com/groups/opt_out.
