Hello, Nowadays I have few time for these issues. I will check and report back soon.
Thanks again. Ilhan On Mon, Nov 17, 2008 at 10:51 PM, Thomas Z. <[EMAIL PROTECTED]> wrote: > Hello, > > yes, the code is shorter. However... you get different values at the > beginning of the testing period. > > The CBI is aligned to the testing period. This means if you want for > example > access a 250 day moving average and you start your backtest at the first > january you get the correct value of the moving about 1 full year later, > while in real trading you would have the correct value instantly at the > first day. > > You can confirm this behaviour through a comparison of the indicator values > with different backtest start dates, even with higher indicator periods. > > > Thomas > www.PatternExplorer.com <http://www.patternexplorer.com/> > > > From: [email protected] [mailto:[EMAIL PROTECTED] On > Behalf > Of Ilhan Ketrez > Sent: Monday, November 17, 2008 8:50 PM > To: [email protected] > Subject: Re: [amibroker] Adding custom metrics > > Hello Thomas, > > Thank you very much for your close interest. I will also try your solution. > Today, I have found my answer in the group mail archive. I am sorry for > taking your time before completely investigating the solution in the > previous e-mails. Here's what I have found (it works- with one letter > correction as enrybar-entrybar): > > > ---------------------------------------------------------------------------- > -- > /*Custom Backtesting*/ > SetCustomBacktestProc(""); > > if (Status("action") == actionPortfolio){ > bo=GetBacktesterObject(); > bo.Backtest(1); > dt = DateTime(); > bi = BarIndex(); > > > for (trade = bo.GetFirstTrade(); trade; trade = bo.GetNextTrade()) > { > SetForeign( trade.Symbol ); // need to switch the symbol > > entrybar = LastValue( ValueWhen( dt == > trade.EntryDateTime, bi ) ); > test= C[ enrybar ]; // we need scalar value > test1= HHV(C,20) ; > test1 = test1[ entrybar ]; // we need scalar value > trade.AddCustomMetric("test",test); > trade.AddCustomMetric("test1",test1); > } > > bo.AddCustomMetric("Marker","Marker"); > bo.ListTrades(); > > } > > > Best regards, > Tomasz Janeczko > amibroker.com > > ---------------------------------------------------------------------------- > -- > Here is the link: > http://finance.groups.yahoo.com/group/amibroker/message/119866 > > Thank you again to everybody for sharing their knowloedge in the group. > > Best regards, > Ilhan Ketrez > > > > On Mon, Nov 17, 2008 at 8:30 PM, Thomas Z. <[EMAIL PROTECTED]> > wrote: > Hi, > > I have fixed your code: > > > Buy = Cross( C, MA( C, 10 ) ); > Sell = Cross( MA( C, 10 ), C ); > > trend = EMA( C, 5 ) / EMA( C, 21 ); > AddToComposite( C, "~MyTrend_" + Name(), "X", atcFlagEnableInBacktest | > atcFlagDefaults ); > > > function FindValueAtDateTime( input, dt, Value ) > { > found = -1; > > for ( i = 0; i < BarCount AND found == -1; i++ ) > { > if ( dt[ i ] == Value ) > found = i; > } > > return IIf( found != -1, input[ found ], Null ); > } > > SetCustomBacktestProc( "" ); > > if ( Status( "action" ) == actionPortfolio ) > { > bo = GetBacktesterObject(); > bo.PreProcess(); > dt = DateTime(); > sc = 1; > > for ( i = 1; i < BarCount; i++ ) > { > for ( sig = bo.GetFirstSignal( i ); sig; sig = bo.GetNextSignal( i ) > ) > { > if ( sig.IsEntry() ) > { > //VarSet("trendd"+sc,Foreign("~MyTrend", "C")); > sc = sc + 1; > } > } > > bo.ProcessTradeSignals( i ); > } > > tc = 1; > > for ( trade = bo.GetFirstTrade(); trade; trade = bo.GetNextTrade() ) > { > TrendArray = Foreign( "~MyTrend_" + trade.Symbol, "C" ); > //tr = VarGet("trendd"+tc); > Trend = FindValueAtDateTime( TrendArray, dt, trade.ExitDateTime ); > trade.AddCustomMetric( "Trend", Trend ); //tr should be here instead > of a > tc = tc + 1; > } > > bo.PostProcess(); > } > > Thomas > www.PatternExplorer.com <http://www.patternexplorer.com/> > > > > From: [email protected] [mailto:[EMAIL PROTECTED] On > Behalf > Of Ilhan Ketrez > Sent: Sunday, November 16, 2008 9:17 PM > To: [email protected] > Subject: Re: [amibroker] Adding custom metrics > > Hello, > > I still couldn't achieve... Below please find a work summary and my code. I > will be glad to see your comments&help. Thanks in advance. > > 1- The operation is to examine the trades of a single ticker in depth. > 2- Passing of one formula (trend) to composite is OK. I can see it appear > in > tickers. > 3- I desired to check Buy signals with a loop. And insert the values of the > composite to a static array buy VarSet. This should be added by date > sequence by the signals loop. > 4- Then, get the new static array variables in the trades loop by varget > and > add the custom metrics. > > The problem is: Getting the composite array values into CB doesn't seem > possible. > Here is the code: > > trend = EMA(C,5) / EMA(C,21); > AddToComposite > (C, "~MyTrend", "X", atcFlagEnableInBacktest| atcFlagDefaults ); > SetCustomBacktestProc > (""); > if > ( Status("action") == actionPortfolio) > { > bo = > GetBacktesterObject(); > bo.PreProcess(); > // > sc = > 1; > for (i = 1; i < BarCount; i++) > { > for (sig = bo.GetFirstSignal(i); sig; sig = bo.GetNextSignal(i)) > { > if( sig.IsEntry() ) > { > //VarSet("trendd"+sc,Foreign("~MyTrend", "C")); > a = > Foreign("~MyTrend", "C"); //for testing purpose > sc = sc + > 1; > } > } > bo.ProcessTradeSignals(i); > } > tc = > 1; > for( trade = bo.GetFirstTrade(); trade; trade = bo.GetNextTrade() ) > { > //tr = VarGet("trendd"+tc); > trade.AddCustomMetric( > "Trend", a); //tr should be here instead of a > tc = tc + > 1; > } > bo.PostProcess(); > } > System... > 2008/11/16 İlhan Ketrez <[EMAIL PROTECTED]> > Hello, > > Not complete yet but "AddToComposite" hint seems to be enough for me.. > Thank you very much. > 2008/11/16 Thomas Z. <[EMAIL PROTECTED]> > > Hello, > > it is be possible. > > You have to store the CCI Value through AddToComposite for each symbol and > have to load it in the CBI through the foreign function. > Additionally you have to use a loop to iterate through all bars and all > closed trades to add the CCI value from the bar where the trade has been > closed. > > > Thomas > www.PatternExplorer.com <http://www.patternexplorer.com/> > > > From: [email protected] [mailto:[EMAIL PROTECTED] On > Behalf > Of Ilhan Ketrez > Sent: Saturday, November 15, 2008 11:05 PM > To: [email protected] > Subject: Re: [amibroker] Adding custom metrics > > Still no replies. > > I wonder if this is possible in Amibroker. > > A yes/no response or a link to an example document can also be very > helpful. > > Thank you. > > > > 2008/11/14 İlhan Ketrez <[EMAIL PROTECTED]> > Thank you but it doesn't work that way, i.e. it doesn't give the entry CCI. > To clarify, I want to see the entry CCI values in the yellow areas of the > attached picture. > Could you please elaborate your response by providing an example? > > Thank you very much. > On Fri, Nov 14, 2008 at 10:04 PM, Ara Kaloustian <[EMAIL PROTECTED]> wrote: > Entry for "CCI" should be just "CCI" - not "trade.CCI" > > ----- Original Message ----- > From: İlhan Ketrez > To: [email protected] > Sent: Friday, November 14, 2008 12:00 PM > Subject: [amibroker] Adding custom metrics > > Dear friends, > > Regarding the addition of custom metrics to the backtest report, to > simplify > my question please find below a script from the AB documentation. Simply, I > want to add, for example, CCI value, RSI value and various entry bar > conditions instead of Initial risk or R multiple below. > > In other words, just like trade.score gives entry score, I want to add > "trade.cci" as entry cci to the backtest report. > > Thank you in advance for your help. > > Best regards, > Ilhan > > SetCustomBacktestProc(""); > MaxLossPercentStop = 10; // 10% max. loss stop > /* Now custom-backtest procedure follows */ > if > ( Status("action") == actionPortfolio ) > { > bo = > GetBacktesterObject(); > bo.Backtest( > 1); // run default backtest procedure > SumProfitPerRisk = > 0; > NumTrades = > 0; > // iterate through closed trades first > for( trade = bo.GetFirstTrade(); trade; trade = bo.GetNextTrade() ) > { > // risk is calculated as the maximum value we can loose per trade > // in this example we are using max. loss stop > // it means we can not lose more than (MaxLoss%) of invested amount > // hence ris > Risk = ( MaxLossPercentStop / > 100 ) * trade.GetEntryValue(); > RMultiple = trade.GetProfit()/Risk; > trade.AddCustomMetric( > "Initial risk $", Risk ); > trade.AddCustomMetric( > "R-Multiple", RMultiple ); > trade.AddCustomMetric( > "Trend", trend ); > SumProfitPerRisk = SumProfitPerRisk + RMultiple; > NumTrades++; > } > expectancy3 = SumProfitPerRisk / NumTrades; > bo.AddCustomMetric( > "Expectancy (per risk)", expectancy3 ); > bo.ListTrades(); > } > > > > > ------------------------------------ > > **** IMPORTANT **** > This group is for the discussion between users only. > This is *NOT* technical support channel. > > ********************* > TO GET TECHNICAL SUPPORT from AmiBroker please send an e-mail directly to > SUPPORT {at} amibroker.com > ********************* > > For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG: > http://www.amibroker.com/devlog/ > > For other support material please check also: > http://www.amibroker.com/support.html > > ********************************* > Yahoo! Groups Links > > > > > > > > ------------------------------------ > > **** IMPORTANT **** > This group is for the discussion between users only. > This is *NOT* technical support channel. > > ********************* > TO GET TECHNICAL SUPPORT from AmiBroker please send an e-mail directly to > SUPPORT {at} amibroker.com > ********************* > > For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG: > http://www.amibroker.com/devlog/ > > For other support material please check also: > http://www.amibroker.com/support.html > > ********************************* > Yahoo! Groups Links > > > > > > > ------------------------------------ > > **** IMPORTANT **** > This group is for the discussion between users only. > This is *NOT* technical support channel. > > ********************* > TO GET TECHNICAL SUPPORT from AmiBroker please send an e-mail directly to > SUPPORT {at} amibroker.com > ********************* > > For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG: > http://www.amibroker.com/devlog/ > > For other support material please check also: > http://www.amibroker.com/support.html > > ********************************* > Yahoo! Groups Links > > > >
