Welcome to the Traders Laboratory Forums.
Tools of the Trade Discussion forum for software, hardware, and computer related topics.

Reply
Old 12-25-2011, 08:32 AM   #1

Join Date: Mar 2009
Location: ahmedabad
Posts: 24
Ignore this user

Thanks: 2
Thanked 1 Time in 1 Post

Mismatch in Backtesting.....pl. Help...AMIBROKER

I am using a code to test my semi mechanical trading system.

This code marks buy/sell/short/cover arrows when I press appropriate

tab in properties window during bar replay.

And at the end of bar replay,when I run backtest in AA window of AB,it

displays PnL and other statistics.

While checking these results,I found that last trade of 20th Dec. was

marked as loss making trade while it was actually a profitable trade.

When I took close look at chart and back testing results,I found a

mismatch on this bar.However all other trades have been correctly

displayed in BT.

My last trade was just before market close (square off of long

trade).This trade was correctly marked on chart on last bar of the

day.but BT results shows that trade was squared up at 4538 (on 3.15

P.M. bar). I am not able to find reason for mis-match.Pl. guide.

http://img15.imageshack.us/img15/884...tradingmis.png

http://imageshack.us/photo/my-images...radingmis.png/

Uploaded with ImageShack.us
bharatk8 is offline  
Reply With Quote
Old 12-26-2011, 11:58 PM   #2

Join Date: Mar 2009
Location: ahmedabad
Posts: 24
Ignore this user

Thanks: 2
Thanked 1 Time in 1 Post

Re: Mismatch in Backtesting.....pl. Help...AMIBROKER

_SECTION_BEGIN( "USING A TRADE COMPOSITE" );
function DeleteComposite( CompositeName )
{
global Ticker;
oAB = CreateObject( "Broker.Application" );
oStocks = oAB.Stocks();
oStocks.Remove( CompositeName );
oAB.RefreshAll();
}

function AddTradeToComposite( Ticker, Action, LMTPrice )
{
global Ticker;
BI = BarIndex();
LBI = LastValue( BI );

if ( Action != "" )
{
SignalArray = Nz( Foreign( Ticker + "~SignalArrays", "V", False ) );
BuyPriceArray = Nz( Foreign( Ticker + "~SignalArrays", "O", False ) );
SellPriceArray = Nz( Foreign( Ticker + "~SignalArrays", "H", False ) );
ShortPriceArray = Nz( Foreign( Ticker + "~SignalArrays", "L", False ) );
CoverPriceArray = Nz( Foreign( Ticker + "~SignalArrays", "C", False ) );

switch ( Action )
{

case "BUY":
SignalArray[LBI] = SignalArray[LBI] | 1;
BuyPriceArray[LBI] = LMTPrice;
break;

case "SELL":
SignalArray[LBI] = SignalArray[LBI] | 2;
SellPriceArray[LBI] = LMTPrice;
break;

case "SHORT":
SignalArray[LBI] = SignalArray[LBI] | 4;
ShortPriceArray[LBI] = LMTPrice;
break;

case "COVER":
SignalArray[LBI] = SignalArray[LBI] | 8;
CoverPriceArray[LBI] = LMTPrice;
break;

case "REVLONG":
SignalArray[LBI] = SignalArray[LBI] | 8 | 1;
CoverPriceArray[LBI] = BuyPriceArray[LBI] = LMTPrice;
break;

case "REVSHORT":
SignalArray[LBI] = SignalArray[LBI] | 2 | 4;
SellPriceArray[LBI] = ShortPriceArray[LBI] = LMTPrice;
break;
}

AddToComposite( SignalArray, Ticker + "~SignalArrays", "V", 7 | atcFlagEnableInIndicator );
AddToComposite( BuyPriceArray, Ticker + "~SignalArrays", "O", 7 | atcFlagEnableInIndicator );
AddToComposite( SellPriceArray, Ticker + "~SignalArrays", "H", 7 | atcFlagEnableInIndicator );
AddToComposite( ShortPriceArray, Ticker + "~SignalArrays", "L", 7 | atcFlagEnableInIndicator );
AddToComposite( CoverPriceArray, Ticker + "~SignalArrays", "C", 7 | atcFlagEnableInIndicator );
}
}

Ticker = Name();
Action = "";

if ( ParamTrigger( "Buy", "BUY" ) ) Action = "BUY";
if ( ParamTrigger( "Sell", "SELL" ) ) Action = "SELL";
if ( ParamTrigger( "Short", "SHORT" ) ) Action = "SHORT";
if ( ParamTrigger( "Cover", "COVER" ) ) Action = "COVER";
if ( ParamTrigger( "Reverse to Long", "REVLONG" ) ) Action = "REVLONG";
if ( ParamTrigger( "Reverse to Short", "REVSHORT" ) ) Action = "REVSHORT";
if ( ParamTrigger( "Delete Signal Compoiste", "DELETE" ) ) DeleteComposite( Ticker + "~SignalArrays" );
AddTradeToComposite( Ticker, Action, LastValue( Close ) );

RequestTimedRefresh( 0.1 );
if ( SetForeign( Ticker + "~SignalArrays" ) )
{
SignalArray = Nz( Foreign( Ticker + "~SignalArrays", "V", False ) );
Buy = IIf( SignalArray & 1, 1, 0 );
Sell = IIf( SignalArray & 2, 1, 0 );
Short = IIf( SignalArray & 4, 1, 0 );
Cover = IIf( SignalArray & 8, 1, 0 );

BuyPrice = Nz( Foreign( Ticker + "~SignalArrays", "O" ) );
SellPrice = Nz( Foreign( Ticker + "~SignalArrays", "H" ) );
ShortPrice = Nz( Foreign( Ticker + "~SignalArrays", "L" ) );
CoverPrice = Nz( Foreign( Ticker + "~SignalArrays", "C" ) );

PlotShapes( IIf( Buy, shapeSmallUpTriangle, shapeNone ), 5, 0, BuyPrice, 0 );
PlotShapes( IIf( Sell, shapeSmallDownTriangle, shapeNone ), 4, 0, SellPrice, 0 );
PlotShapes( IIf( Short, shapeHollowDownTriangle, shapeNone ), 4, 0, ShortPrice, 0 );
PlotShapes( IIf( Cover, shapeHollowUpTriangle, shapeNone ), 5, 0, CoverPrice, 0 );

}
RestorePriceArrays();

Plot( C, "", 1, 128 );
_SECTION_END();
bharatk8 is offline  
Reply With Quote

Reply

Thread Tools
Display Modes Help Others By Rating This Thread
Help Others By Rating This Thread:


Similar Threads
Thread Thread Starter Forum Replies Last Post
Looking for Some Help About This Amibroker AFl Language felgab Swing Trading and Position Trading 1 05-29-2011 03:22 AM
Amibroker - Tick Data Backtesting Bar Reference Isahnshade Coding Forum 0 02-20-2011 11:13 PM
<> in AFL (AmiBroker) aaa Coding Forum 21 01-03-2010 08:30 AM
AMIbroker Help thunderdogg Coding Forum 1 07-07-2008 10:35 PM
Amibroker hanz Brokers and Data Feeds 5 07-01-2007 04:07 AM

All times are GMT -4. The time now is 09:20 PM.
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
CS to VB integration by DeskLancer
©2006-2011 Traders Laboratory, All Rights Reserved.