PureBytes Links
Trading Reference Links
|
Thank you all for your help.EMP,i copied your code and ran it as i still am getting very odd # of shares on the initial scale out,and its certainly not a consistent ratio.I will read what i can,but this is puzzling..
hi,
i tested your code on HANS. I added some code to display what is going on. I always like to visualize the system and this is easy to do with Amibroker.
What you see in the image I added is that the initial Buy signal is already in July. In november it scales out followed by a sell signal. If I run the backtest I find that scaling out sells half of the initial amount.
Between the initial buy and the scale out there are multiple buy signals. However these are ignored by the backtester since the initial position is eneterd in July. So maybe your problem has something to do with the range you use in your backtest. Try to backtest all quotations.
Buy = Cross(C, MA( C,21) );
Sell = 0;
// the system will exit
// 50% of position if FIRST PROFIT TARGET stop is hit
// 50% of position is SECOND PROFIT TARGET stop is hit
// 100% of position if TRAILING STOP is hit
FirstProfitTarget = 20; // profit
SecondProfitTarget =30; // in percent
TrailingStop = 50; // also in percent
priceatbuy=0;
highsincebuy = 0;
exit = 0;
for( i = 0; i < BarCount; i++ )
{
if( priceatbuy == 0 AND Buy[ i ] )
{
priceatbuy = BuyPrice[ i ];
}
if( priceatbuy > 0 )
{
highsincebuy = Max( High[ i ], highsincebuy );
if( exit == 0 AND
High[ i ] >= ( 1 + FirstProfitTarget * 0.01 ) *
priceatbuy )
{
// first profit target hit - scale-out
exit = 1;
Buy[ i ] = sigScaleOut;
}
if( exit == 1 AND
High[ i ] >= ( 1 + SecondProfitTarget * 0.01 ) *
priceatbuy )
{
// second profit target hit - exit
exit = 2;
SellPrice[ i ] = Max( Open[ i ], ( 1 + SecondProfitTarget *
0.01 ) * priceatbuy );
}
if( Low[ i ] <= ( 1 - TrailingStop * 0.01 ) * highsincebuy )
{
// trailing stop hit - exit
exit = 3;
SellPrice[ i ] = Min( Open[ i ], ( 1 - TrailingStop *
0.01 ) * highsincebuy );
}
if( exit >= 2 )
{
Buy[ i ] = 0;
Sell[ i ] = exit + 1; // mark appropriate exit code
exit = 0;
priceatbuy = 0; // reset price
highsincebuy = 0;
}
}
}
SetPositionSize( 10, spsPercentOfEquity );
SetPositionSize( 50, spsPercentOfPosition * ( Buy == sigScaleOut ) ); // scale out 50% of position
SetBarsRequired(10000,10000);
SetChartOptions(0, chartShowDates);
Plot(C,"",colorWhite,64);
PlotShapes(IIf(Buy == 1,shapeUpArrow,0),colorWhite, layer = 0, yposition = BuyPrice, offset = 0 );
PlotShapes(IIf(Buy == sigScaleOut,shapeDownTriangle,0),colorAqua, layer = 0, yposition = BuyPrice, offset = 0 );
PlotShapes(IIf(Sell,shapeDownArrow,0),colorYellow, layer = 0, yposition = SellPrice, offset = 0 );
//PlotShapes(IIf(Short,shapeHollowDownArrow,0),colorLightBlue, layer = 0, yposition = ShortPrice, offset = 0 );
----- Original Message -----
From: allansn@xxxxxxxxxxxxx
To: amibroker@xxxxxxxxxxxxxxx
Sent: Saturday, July 15, 2006 4:23 PM
Subject: Re: [amibroker] Re: I am lost
Tomasz,
that is certainly not the answer I was expecting.I am making a diligent effort to learn the coding and I have a specific NEED....Perhaps you didnt bother to read my prior message to the board
I posted the code that I was working with and can NOT get the results expected from the code descriptions.It is not like I asked the board to code me a system.I supplied the system which I copied from either the manual or a user file.I had no problems whatsoever,but when I went into the detailed trade report and went over the output,I discovered that the supposed scale out of 50% was not occuring.but rather 86%.After spending several hours on it,I thought that I may find some help
"I don't have any experience as a pilot but please give me simple
one-page instruction how to fly jumbo-jet from New York to London"
Sorry but this is NOT doable"
Tomasz,your analogy is way off base and I really dont appreciate it.
Allan
----- Original Message -----
From: Tomasz Janeczko <groups@xxxxxxxxxxxxx>
Date: Saturday, July 15, 2006 8:49 am
Subject: Re: [amibroker] Re: I am lost
> Hello,
>
> What you are asking for can be compared to:
> .
> It takes time and effort to learn how to fly as it takes time and
> effort to learn how to use any tool more sophisticated than a hammer.
>
> Sorry guys but of you have no experience you should start with
> something simple and make your system
> simple not using pyramiding and such stuff. Then go slowly
> learning AFL. THere is a plenty of material posted to this list,
> in the knowledge base and in the manual.
>
> Best regards,
> Tomasz Janeczko
> amibroker.com
> ----- Original Message -----
> From: allansn@xxxxxxxxxxxxx
> To: amibroker@xxxxxxxxxxxxxxx
> Sent: Saturday, July 15, 2006 2:04 PM
> Subject: Re: [amibroker] Re: I am lost
>
>
>
> Thanks OT,
>
> I will take you up on your offer.Ami is great program,but is in
> desparate need of a simplied" Dummy" manual for those that have
> very little programming experience.
>
> As I did not write this code,and was using it to learn "AFL",I
> am having a difficult time pinpointing what is causing an 86%
> scale out,when it should be 50%..
>
> If there are any power users who have a simple code that
> involves "scaling in/out of positions"and replacing stops,or a
> pyramyiding example would really appreciate seeing it.
>
> Allan
>
>
>
>
>
> ----- Original Message -----
>
>
> From: orionsturtle <orionsturtle@xxxxxxxxx>
>
> Date: Friday, July 14, 2006 10:20 pm
>
> Subject: [amibroker] Re: I am lost
>
>
> > I don't have the expertise in programming but I have been
> > struggling
> > with this same bit of code for the past 2 weeks. I have made
> it
> > work
> > on the long only side and would be glad to send you the EOD
> sys
> > file
> > I have that works. Between the detail log and the trade report
> you
> > should be able to see what is going on and make adjustments to
> > suite
> > your needs. The switches in the backtest settings will screw
> you
> > up
> > if not set properly and may account for your weird results.
> make
> > sure in the backtest settings>portfolio tab, that the limit
> trade
> > size as % of entry bar is set to zero and just the "Trade size
> > limit
> > when..." is the only thing checked. i have my max positions
> set to
> > one for now until I get the code fully to my liking. If you
> want
> > the
> > SYS file reach me at orionsturtle@xxxxxxxxx
> >
> > peace
> >
> > OT
> >
> > --- In amibroker@xxxxxxxxxxxxxxx, "matrix10014" <allansn@xxx>
> wrote:
> > >
> > > Hi,
> > > Been playing with a code that I copied to familairize myself
> > with
> > > some of the functionality of Amibroker...As you can see,the
> > entry
> > is
> > > a simple moving average crossover,that exits 50% of the
> position
> > up
> > > 20% and the remaining 50% up 30%.There is also a trailing
> stop..
> > >
> > > When i check a detailed log of the trade,I get very bizzare
> > results.
> > >
> > > An example is HANS..On 10/31/2005 I go long 205 shares of
> HANS@
> > 48.59
> > >
> > > On 11/3,I scale out of 176 shares@xxx is 86% of my
> > > position,when i am supposed to scale out of half.As its not
> my
> > > code,and i am trying to learn Ami code,i really dont know
> what
> > went
> > > wrong..
> > >
> > >
> > >
> > >
> > > 10/31/2005
> > > Enter Long, HANS, Price: 48.59, Shares: 205,
> > > Commission: 0, Rank: 1, Equity 100000, Margin Loan: 0, Fx
> rate: 1
> > >
> > >
> > > 11/3/2005
> > > Exit signals:HANS=Scale-Out,
> > > Scale-Out Long HANS, Price 59.74, Shares 176, Fx Rate 1,
> > > Number of shares - Current: 29, Exited: 176, Max: 205, Avg.
> > Entry
> > > Price 48.59, Avg. Exit Price 59.74, Avg Fx. Rate Entry 1,
> Exit
> > 1,
> > >
> > >
> > >
> > > The code is as follows
> > >
> > > Buy = Cross(C, MA( C,21) );
> > > Sell = 0;
> > >
> > > // the system will exit
> > > // 50% of position if FIRST PROFIT TARGET stop is hit
> > > // 50% of position is SECOND PROFIT TARGET stop is hit
> > > // 100% of position if TRAILING STOP is hit
> > >
> > > FirstProfitTarget = 20; // profit
> > > SecondProfitTarget =30; // in percent
> > > TrailingStop = 50; // also in percent
> > >
> > >
> > > priceatbuy=0;
> > > highsincebuy = 0;
> > >
> > > exit = 0;
> > >
> > > for( i = 0; i < BarCount; i++ )
> > > {
> > > if( priceatbuy == 0 AND Buy[ i ] )
> > > {
> > > priceatbuy = BuyPrice[ i ];
> > > }
> > >
> > > if( priceatbuy > 0 )
> > > {
> > > highsincebuy = Max( High[ i ], highsincebuy );
> > >
> > > if( exit == 0 AND
> > > High[ i ] >= ( 1 + FirstProfitTarget * 0.01 ) *
> > > priceatbuy )
> > > {
> > > // first profit target hit - scale-out
> > > exit = 1;
> > > Buy[ i ] = sigScaleOut;
> > > }
> > >
> > > if( exit == 1 AND
> > > High[ i ] >= ( 1 + SecondProfitTarget * 0.01 ) *
> > > priceatbuy )
> > > {
> > > // second profit target hit - exit
> > > exit = 2;
> > > SellPrice[ i ] = Max( Open[ i ], ( 1 +
> > SecondProfitTarget
> > *
> > > 0.01 ) * priceatbuy );
> > > }
> > >
> > > if( Low[ i ] <= ( 1 - TrailingStop * 0.01 ) *
> highsincebuy
> > )
> > > {
> > > // trailing stop hit - exit
> > > exit = 3;
> > > SellPrice[ i ] = Min( Open[ i ], ( 1 - TrailingStop
> *
> > > 0.01 ) * highsincebuy );
> > > }
> > >
> > > if( exit >= 2 )
> > > {
> > > Buy[ i ] = 0;
> > > Sell[ i ] = exit + 1; // mark appropriate exit code
> > > exit = 0;
> > > priceatbuy = 0; // reset price
> > > highsincebuy = 0;
> > > }
> > > }
> > > }
> > >
> > > SetPositionSize( 10, spsPercentOfEquity );
> > > SetPositionSize( 50, spsPercentOfPosition * ( Buy ==
> > > sigScaleOut ) ); // scale out 50% of position
> > >
> >
> >
> >
> >
> >
> >
>
|