[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[amibroker] Re: I am lost



PureBytes Links

Trading Reference Links

Allen,

Would you mind posting the final working code?

Rick

--- In amibroker@xxxxxxxxxxxxxxx, allansn@xxx wrote:
>
> Too late Tomasz,you have already solved the mystery...
> you were right on in your assessment
> 
> "I forgot to add that your problems may be also due to setting non 
> zero buy delays
> (because then buy array is shifted while position size array is 
not).
> If you use advanced position sizing, set trade delays to zero and 
>  delay entries directly in the code
>  (using Ref() function)."
> When I changed the settings from 1 day delay/ open,to Zero/close,I 
get the 50% scale out that was coded.It makes a HUGE difference as I 
was scaling out as much as 97% and was clueless as to why..
> Thank you and everyine else who are leading me from the path of 
programming darkness
> 
> Allan
> 
> 
> 
> ----- Original Message -----
> From: Tomasz Janeczko <groups@xxx>
> Date: Saturday, July 15, 2006 8:16 pm
> Subject: Re: [amibroker] Re: I am lost
> > Hello, 
> > 
> > As I wrote you through support channel: you need to provide 
> > settings file (.abs) and all other details needed to reproduce 
> > your setup. 
> > 
> > Without that it's guessing game: it may be because of delays set 
> > in the settings, 
> > or round lot sizing effect or other things. 
> > Anyway without looking on your settings file, ticker list and 
> > trade list one can not tell. 
> > 
> > Best regards, 
> > Tomasz Janeczko 
> > amibroker.com 
> >  ----- Original Message ----- 
> >  From: allansn@xxx 
> >  To: amibroker@xxxxxxxxxxxxxxx 
> >  Sent: Saturday, July 15, 2006 10:21 PM 
> >  Subject: Re: [amibroker] Re: I am lost 
> > 
> > 
> >  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@xxx 
> >    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@xxx> 
> > 
> >    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@xxx 
> >    >  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@xxx> 
> >    > 
> >    >  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@xxx 
> >    >  > 
> >    >  > peace 
> >    >  > 
> >    >  > OT 
> >    >  > 
> >    >  > --- In amibroker@xxxxxxxxxxxxxxx, "matrix10014" 
> > <allansn@> 
> >    > 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@ 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 
> >    >  > > 
> >    >  > 
> >    >  > 
> >    >  > 
> >    >  > 
> >    >  > 
> >    >  >  
> >    > 
> > 
> >
>