Jump to content

Welcome to the new Traders Laboratory! Please bear with us as we finish the migration over the next few days. If you find any issues, want to leave feedback, get in touch with us, or offer suggestions please post to the Support forum here.

  • Welcome Guests

    Welcome. You are currently viewing the forum as a guest which does not give you access to all the great features at Traders Laboratory such as interacting with members, access to all forums, downloading attachments, and eligibility to win free giveaways. Registration is fast, simple and absolutely free. Create a FREE Traders Laboratory account here.

bharatk8

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

Recommended Posts

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/15/discretionarytradingmis.png/

 

Uploaded with ImageShack.us

Share this post


Link to post
Share on other sites

_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();

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.