OR - on the other hand, assuming you want to use market hours bars only, do you want to use todays (intraday) first bar (0900) + say, the last 13 bars from yesterdays (intraday) closing period to give you the continuous (rolling) CCI on 14 * 5 minute bar basis?
brian_z --- In [email protected], "brian_z111" <brian_z...@...> wrote: > > Seede, > > Well, at least we are making some progress (we seem to have isolated the > problem)? > > Thanks for the effort and detail you put into your response ... that > certainly makes it easier for people to help. > > I can't dig in right now but I will go over it at some stage, if the > challenge isn't meet successfully before then. > > I haven't run any code, or anything like that, but off the top of my head I > would have thought that the periods are dynamic so you need to use periods = > barssince(NewDay); instead of a static number i.e. 14. > > I also expect out of hours bars to cause trouble with this kind of > 'indicator' used in this way (with RT). > > To confirm: > > - who is your data provider (I have eS and can get AAPL current 5 min if I > need to matchup to you)? > - your data must have out of hours bars (especially if it is AAPL or any > other US major? > - for, say, the US market (AAPL) .... when do you want to start, and end, > your intraday .... 1630 hr previous day, midnight, 0930 etc? > - say you want the CCI intraday build to work in market hours only then you > want it to start with bar 0930 + bar 0935 and then progress from there 0930 + > 0935 + 0940 -----> 1600 hours? > > > > --- In [email protected], "murthysuresh" <money@> wrote: > > > > Brian > > Thanks for your input. Let me throw more light on the prob by giving an > > example. > > > > I have AAPL on the bar replay running 5 minute step on daily chart. i am > > outputting the HLC and CCI values to file so i know how the cci was > > evolving during the day. > > I now compared the results with the custom cci value formula that i derived > > it with your earlier post using 5 minute timeframe filter. you can see the > > results that the daily HLC values matched but not the cci values > > left hand side is the file output from the barreplay. RHS is the result > > from analysis window. > > http://screencast.com/t/21WjjMiT > > > > IMHO: A true backtesting process should use the actual prices as possible. > > I just dont know what to do. > > > > The code used: > > > > Analysis: > > > > > > newday= Day()!=Ref(Day(),-1); > > > > highestofday=HighestSince(newday,H,1); > > LowestOfDay=LowestSince(newday,L,1); > > > > > > Typical = (highestofday + LowestOfDay + Close)/3; //use the current close > > SMATP=MA(typical,14); > > meanDeviation=0; > > for(i=-1;i>-14;i--){ > > meanDeviation += abs(SMATP-Ref(Typical,i)); > > } > > > > > > CustomCCI=(Typical-SMATP)/(.015*meanDeviation); > > > > AddColumn(highestofday,"highestofdayarray"); > > AddColumn(LowestOfDay,"LowestOfDayarray"); > > AddColumn(C,"currentclose"); > > AddColumn(CustomCCI,"CustomCCI"); > > > > > > > > Filter=True; > > > > barreplaycode > > write2file = ParamToggle( "Write 2 file ", "false|True", 0 ); > > > > if ( write2file ) > > { > > pt = GetPlaybackDateTime(); // new function to retrieve playback > > position date/time, > > //returns zero if bar replay is NOT active > > > > if ( pt ) > > { > > pt = DateTimeToStr( pt ); > > } > > else > > { > > pt = ""; > > } > > > > > > > > string2write = pt + StrFormat( "Interval %6.0f,high %3.2f , low > > %3.2f,close %3.2f, CCI %3.4f\n", Interval(), LastValue( H ), LastValue( L > > ), LastValue( C ), LastValue( CCI( 14 ) ) ); > > > > if ( StaticVarGetText( "prevwrite" ) != string2write ) > > { > > // prevent duplicte lines becauase the write processis faster than > > barreplay. > > > > // string2write ="Interval=" + Interval() + "Date" + > > NumToStr(LastValue( DateNum() ),8,False) + " Time" + LastValue( TimeNum() ) > > + "CCI=" + LastValue( CCI( 14 ) + "/n" ) ; > > fh = fopen( "c:\\temp\\myfile.txt", "a" ); > > > > if ( fh ) > > { > > fputs( string2write, fh ); > > fclose( fh ); > > StaticVarSetText( "prevwrite", string2write ); > > } > > else > > { > > _TRACE( "cannot open file" ); > > } > > > > } > > > > > > > > --- In [email protected], "brian_z111" <brian_z111@> wrote: > > > > > > If that is what you want to do then I think that the following is the > > > easy way to do that: > > > > > > Periods = BarsSince(NewDay); > > > YourIndicator = CCI(Periods); > > > > > > OR maybe something along these lines will work: > > > > > > Newday = TimeNum() >= 093000;//assumes market normal trading hours starts > > > at 0930. > > > > > > Periods = BarsSince(NewDay); > > > YourIndicator = CCI(Periods); > > > > > > This is for RT charts ... you might have to make it a condition that the > > > first two bars have been built, in RT, because deviation from the mean, > > > for one bar, will be zero which might crash the maths at the start of the > > > (intra) day. > > > > > > Compression only comes into it if you want to see the intraday CCI build > > > in daily view. > > > > > > > > > Here is a link with a reasonable explanation of CCI and an Excel example > > > for anyone who is interested. > > > > > > http://stockcharts.com/school/doku.php?id=chart_school:technical_indicators:commodity_channel_index_cci > > > > > > --- In [email protected], "brian_z111" <brian_z111@> wrote: > > > > > > > > I am finding it difficult to respond because your logic doesn't match > > > > what you are trying to do (unless I am misunderstanding what it is that > > > > you are aiming for). > > > > > > > > > basically, i cam trying to get the Daily CCI value as it evolves > > > > > >during the intraday chart. > > > > > > > > To achieve this: > > > > > > > > 1) (use the code as suggested by Rajiv, or similar) > > > > > > > > > > > > newday= day()!=ref(day(),-1); > > > > highestoftheday=highestsince(newday,H,1); > > > > > > > > 2) do the same for the low > > > > 3) Calculate the progressive intraday typical value > > > > > > > > Typical = (highestoftheday + lowestoftheday + close)/3;//use the > > > > current close > > > > > > > > 4) manually calculate CCI using the steps outlined in the AB > > > > helpmanual/indicators/CCI notes - > > > > > > > > - calculate MA(typical) > > > > - calculate deviation from mean typical value > > > > - * 0.15 > > > > - divide relevant steps above > > > > > > > > Bingo! > > > > > > > > If your RT data contains out of hour trades you might need to add a > > > > caveat to exclude bars with after hours timestamps. > > > > > > > > Is that what you want to do? > > > > > > > > If you are trying to do something else I am sorry but I can't > > > > understand what it is from your statements. > > > > > > > > > > > > > > > > --- In [email protected], "murthysuresh" <money@> wrote: > > > > > > > > > > I am in desperate need of some help here. i dont want to think that > > > > > it is impossible. > > > > > > > > > > basically, i cam trying to get the Daily CCI value as it evolves > > > > > during the intraday chart. > > > > > > > > > > my attempt is below. > > > > > > > > > > So i came up with the idea that i can build the daily cci values > > > > > using run time > > > > > values from intraday. i can build it using > > > > > CCIa formula > > > > > > > > > > TimeFrameSet( inDaily ); // switch to 5 minute frame > > > > > Typical=(C+H+L)/3; > > > > > > > > > > TimeFrameRestore(); > > > > > > > > > > realtimecci=CCIa( Typical, 14 ); > > > > > here i did not expand the Typical to 5 minute bars and so the array > > > > > has the > > > > > daily bars values. > > > > > > > > > > As long as i can update the last bar with the intraday =(C+H+L)/3 i > > > > > will keep > > > > > getting realtime CCI daily values as the bar progresses for > > > > > backtesting. > > > > > > > > > > Hope this explains why i am looking for the HLC values as a number as > > > > > i need to > > > > > use it as a number > > > > > > > > > > > > > > > --- In [email protected], "murthysuresh" <money@> wrote: > > > > > > > > > > > > In the case you have shown, the valuewhen returns an array. i want > > > > > > the actual low value as a number. > > > > > > > > > > > > The background behind this is that i am trying to plot the daily > > > > > > CCI value as the bar progresses during the day while backtesting. > > > > > > For a true backtesting of the strategy, i need to know the values > > > > > > of the indicators as the bar progresses over time. there is not way > > > > > > that i can get it automaticlaly with ab. > > > > > > > > > > > > Accoring to AB support > > > > > > If you want to calculate "what daily CCI would be on each of the > > > > > > intraday bars" - then you can't use TimeFrame functions for that, > > > > > > as they return EOD values of the OHLC arrays (of course daily Open > > > > > > is known since the start of the day). So you would need to > > > > > > calculate such indiators in some form of a FOR loop (or perhaps 2 > > > > > > nested loops). Unfortunatelly I don't have any ready-to-use > > > > > > example of such code I could share and writing such fomrula on > > > > > > demand from scratch exceeds the range of free support we are able > > > > > > to offer (see: http://www.amibroker.com/freesupport.html). > > > > > > > > > > > > > > > > > > > > > > > > after breaking my head over it for more than weeks, here is my > > > > > > almost completed code except for a small bit. > > > > > > > > > > > > use CCIa to do the cci formula and pass in a array with daily > > > > > > prices. so i get the daily price from timeframeset and do not > > > > > > expand it so that i will have the daily price arrays. > > > > > > my idea is to change the last value of the daily array with the > > > > > > current HLC values from daily bar. > > > > > > > > > > > > So i came up with the idea that i can build the daily cci values > > > > > > using run time values from intraday. i can build it using > > > > > > CCIa formula > > > > > > > > > > > > TimeFrameSet( inDaily ); // switch to 5 minute frame > > > > > > Typical=(C+H+L)/3; > > > > > > > > > > > > TimeFrameRestore(); > > > > > > > > > > > > realtimecci=CCIa( Typical, 14 ); > > > > > > here i did not expand the Typical to 5 minute bars and so the array > > > > > > has the daily bars values. > > > > > > > > > > > > As long as i can update the last bar with the intraday =(C+H+L)/3 i > > > > > > will keep getting realtime CCI daily values as the bar progresses > > > > > > for backtesting. > > > > > > > > > > > > Hope this explains why i am looking for the HLC values as a number > > > > > > as i need to use it as a number > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > --- In [email protected], "brian_z111" <brian_z111@> wrote: > > > > > > > > > > > > > > Hi Seede, > > > > > > > > > > > > > > Does this help. > > > > > > > > > > > > > > (I think you can substitute the High or Low, or any required bar > > > > > > > specific value, for TimeNum()) > > > > > > > > > > > > > > //AA Settings should be on an intraday timeframe e.g. 5 min > > > > > > > //Run the scan then use X_ATC_IntradayHLL to report on the data > > > > > > > //and export it to a spreadsheet for graphing > > > > > > > > > > > > > > Buy = Sell = 0; > > > > > > > > > > > > > > Sym = Name(); > > > > > > > > > > > > > > DL = TimeFrameGetPrice( "L",inDaily,0); > > > > > > > BSL = BarsSince(L == DL); > > > > > > > ILT = ValueWhen(BSL == 0, TimeNum()/10000,1); > > > > > > > > > > > > > > I uded it at the Zboard and the full code is downloadable via > > > > > > > file links there. > > > > > > > > > > > > > > http://zboard.wordpress.com/2009/03/02/342/ > > > > > > > > > > > > > > --- In [email protected], "murthysuresh" <money@> wrote: > > > > > > > > > > > > > > > > An additional question. the highestoftheday returns a array. i > > > > > > > > want to get the specific value of the highestoftheday. i tried > > > > > > > > lastvalue but it was returning the values incorectly. > > > > > > > > appreciate any additional help. > > > > > > > > Seede > > > > > > > > > > > > > > > > --- In [email protected], "murthysuresh" <money@> wrote: > > > > > > > > > > > > > > > > > > thanks a lot. u are a genius. > > > > > > > > > --- In [email protected], Rajiv Arya <rajivarya87@> > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > newday= day()!=ref(day(),-1); > > > > > > > > > > > > > > > > > > > > highestoftheday=highestsince(newday,H,1); > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Rajiv > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > To: [email protected] > > > > > > > > > > From: money@ > > > > > > > > > > Date: Thu, 21 May 2009 12:48:34 +0000 > > > > > > > > > > Subject: [amibroker] Re: find today's dailybar high and low > > > > > > > > > > from intraday bar > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > As per the docs below , it will give the last bar of the > > > > > > > > > > range in the AA window. I am looking for the highest high > > > > > > > > > > of the day from the intraday bars as the bar progreses. > > > > > > > > > > > > > > > > > > > > http://www.amibroker.com/guide/afl/afl_view.php?name=SELECTEDVALUE > > > > > > > > > > > > > > > > > > > > --- In [email protected], "jorgen_wallgren" > > > > > > > > > > <jorgen.wallgren@> wrote: > > > > > > > > > > > > > > > > > > > > > > I am relatively new at this, but shouldn't this give you > > > > > > > > > > > what you want: > > > > > > > > > > > > > > > > > > > > > > H0 = SelectedValue(TimeFrameGetPrice("H", inDaily, 0)); > > > > > > > > > > > L0 = SelectedValue(TimeFrameGetPrice("L", inDaily, 0)); > > > > > > > > > > > > > > > > > > > > > > Regards, > > > > > > > > > > > > > > > > > > > > > > Jorgen > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > _________________________________________________________________ > > > > > > > > > > Insert movie times and more without leaving Hotmail®. > > > > > > > > > > http://windowslive.com/Tutorial/Hotmail/QuickAdd?ocid=TXT_TAGLM_WL_HM_Tutorial_QuickAdd1_052009 > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
