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

Re: [amibroker] Re: I am lost



PureBytes Links

Trading Reference Links

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@xxxxxxxxxxxxx>
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@xxxxxxxxxxxxx 
>  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@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 
>    >  > > 
>    >  > 
>    >  > 
>    >  > 
>    >  > 
>    >  > 
>    >  >  
>    > 
> 
>