Same here. FWIW, my take on this: the crucial difference is in terms of what expandFirst does in a chart vs a backtest. In general, if you use it in a backtest, it will "look into the future" and thus make any results useless. In a chart, for some of us, this is what you actually prefer, because the focus is on the latest "evolving" period (in whatever terms this is defined via TF), i.e. you want to use the most recent bar/tick as your last value for any TF-period, rather than wait for the official full fill of any of the TF-defined periods.
At the end of the day, using formal or assumed last values, TF philosophy basically boils down to efficiently capturing convergence/divergence of multiple cycles. PS --- In [email protected], "sidhartha70" <sidharth...@...> wrote: > > I'm not an expert on this, but I have been following this thread with some > interest (because I day trade using multiple timeframes, and currently simply > switch all my interval linked charts from one timeframe to another - I have a > hunch there may be a better way of operating). > > Anyway, if what you have written below is correct, if seems in complete > conflict with what AF wrote on this post in reply to TJ, > > http://finance.groups.yahoo.com/group/amibroker/message/141366 > > Perhaps the experts (Jorgen & AF - or indeed TJ) could clear this one up...? > > --- In [email protected], "gunoicb" <gunoicb@> wrote: > > > > Hi guys, > > > > I want to be sure that I understood correctly the use of higher timeframes > > in my backtesting, so here is my question: > > > > TimeFrameSet( -1);//I'm using for backtesting tick data > > //I compute below emas for each time frame > > TimeFrameSet( in1Minute); > > EMA5_1m= EMA (C,5); > > TimeFrameRestore(); > > TimeFrameSet( in5Minute); > > EMA5_5m= EMA (C,5); > > TimeFrameRestore(); > > TimeFrameSet( 15*60); > > EMA5_15m= EMA (C,5); > > TimeFrameRestore(); > > > > The following will give me the values for each ema updated for each tick, > > tick by tick, not waiting for the candle to be completed (1min, 5 min or 15 > > min)? > > TimeFrameExpand( Ref(EMA5_1m,0),in1Minute) > > TimeFrameExpand( Ref(EMA5_5m,0),in5Minute) > > TimeFrameExpand( Ref(EMA5_15m,0),in15Minute) > > I mean, if I have 200 ticks during a 15 minute candle, I get 200 values for > > TimeFrameExpand( Ref(EMA5_15m,0),in15Minute)? > > > > while the following will give me the emas values based on complete previous > > candle (1min candle, 5 min candle and respectively 15 min candle)? > > TimeFrameExpand( Ref(EMA5_1m,-1),in1Minute) > > TimeFrameExpand( Ref(EMA5_5m,-1),in5Minute) > > TimeFrameExpand( Ref(EMA5_15m,-1),in15Minute) > > > > I'm using the same principle as Jorgen for backtesting, but I'm not sure > > that I'm using correctly. I don't want to use the higher emas as > > staircases, but rather as "irregular" as Jorgen pointed out that image > > loaded by him. I don't want to wait for 15 min candle to be completed, but > > rather to take a decision based on its value at each tick. > > > > Am I right? Or should I read again > > http://www.amibroker.com/guide/h_timeframe.html ? :-) > > > > Thank you > > > > > > --- In [email protected], "af_1000000" <af_1000000@> wrote: > > > > > > I have not tried more complex indicators for one simple reason. If the > > > higher timeframe compressed data contains all values I need (including > > > incomplete last bar) I do not have to do anything . Build in indicators > > > and my scripts will do everything for me. You calculate indicators on > > > higher timeframe and expand them on a lower timeframe. If data > > > compression on higher timeframe does not include everything you need you > > > have to combine somehow data on higher timeframe with data on lower > > > timeframe and invent new implementation of the indicators or create new > > > intelligently combined weekly and data array, so build in indicators can > > > use this array. That's why my preference is to fix data compression on > > > the higher timeframe first before I start thinking about an exotic stuff. > > > So far, I have used multiple charts to avoid unnecessary programming. > > > I do not understand why you would use "expandFirst". Create two charts > > > higher and lower timeframe in a layout and play bar by bar. I believe the > > > code is correct. Of course, I did not test every possible case, that's > > > why you found few mistakes. The main objective was to prove the concept > > > and highlight the differences between "traditional" method and your > > > method. > > > Sometimes loops are more efficient than array processing especially when > > > you use lastvalue, nested barssince, nested valuewhen,.. etc. Every > > > situation is unique, so it is hard to say in advance what is the best > > > implementation. Always check "Code check $ Profile" and "Display chart > > > timing". > > > > > > Regards, > > > > > > AF > > > > > >
