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

Re: [amibroker] Equity curve tracking



PureBytes Links

Trading Reference Links




Hi Ed,
 
Here is an example of the double initialization I 
think Gary refers to:
 
    BuyAdjusted = <FONT 
color=#000000>Buy; BuyAdjusted = <FONT 
color=#ff00ff>0<FONT color=#000000 
size=2>; 
<FONT color=#000000 
size=2> 
<FONT 
face=Arial>-john

<BLOCKQUOTE dir=ltr 
>
  ----- Original Message ----- 
  <DIV 
  >From: 
  ed nl 
  To: <A title=amibroker@xxxxxxxxxxxxxxx 
  href="">amibroker@xxxxxxxxxxxxxxx 
  Sent: Sunday, August 08, 2004 9:42 
  AM
  Subject: Re: [amibroker] while/for loop 
  compiler error 3 question
  
  hi 
  Gary,
   
  I'm not sure what you mean that I 
  initialize these arrays twice. Please show me where. The reason I initialize 
  the arrays is to make sure the arrays exist and have the same length as the 
  Buy array and are filled with only zeros. 
   
  I add the rest of the program which is a 
  LONG only test program for a N-Bar stop procedure included in a system 
  (instead of the Applystop).
   
  Could be I initialised them twice so I 
  like to see how to avoid that, but this way I know for sure the arrays exist 
  and that they are empty.
   
  regards, Ed
  <FONT 
  color=#800000> 
  <FONT 
  color=#800000> 
  <FONT 
  color=#800000> 
  <FONT 
  color=#800000>procedure ttt(<FONT 
  color=#000000>Buy,<FONT 
  color=#000000>BuyPrice,<FONT 
  color=#000000>Open,<FONT 
  color=#000000>High,<FONT 
  color=#000000>Low,<FONT 
  color=#000000>Close<FONT face="Courier New" 
  color=#000000 size=2>,nbar) { <FONT face="Courier New" 
  color=#008000 size=2>/* Jul 2004 */<FONT 
  face="Courier New"> <FONT 
  color=#800000>global <FONT 
  color=#000000>Sell<FONT 
  size=2>; <FONT 
  color=#800000>global <FONT 
  color=#000000>SellPrice<FONT 
  face="Courier New">; <FONT 
  color=#800000>global<FONT 
  size=2> BuyAdjusted; <FONT 
  color=#800000>global<FONT 
  size=2> BuyPriceAdjusted; <FONT 
  color=#008000>// initialise arrays <FONT 
  color=#000000><FONT 
  color=#000000>SellPrice = <FONT 
  color=#000000>BuyPrice; <FONT 
  color=#000000>SellPrice = <FONT 
  color=#ff00ff>0<FONT 
  size=2>; <FONT 
  color=#000000>Sell = <FONT 
  color=#000000>Buy; <FONT 
  color=#000000>Sell = <FONT 
  color=#ff00ff>0<FONT 
  size=2>; BuyAdjusted = <FONT 
  color=#000000>Buy; BuyAdjusted = 
  0<FONT 
  face="Courier New">; BuyPriceAdjusted = 
  BuyPrice; 
  BuyPriceAdjusted = 0<FONT 
  face="Courier New">; <FONT 
  color=#800000>for (i = <FONT 
  color=#ff00ff>0; i < <FONT 
  color=#000000>BarCount<FONT 
  face="Courier New">; i++) { 
     // <FONT 
  color=#000000>   
  <FONT 
  color=#800000>if (<FONT 
  color=#000000>Buy[ i ] == <FONT 
  color=#ff00ff>1<FONT 
  size=2>) {     
       
        // buy at 
  open <FONT face="Courier New" 
  size=2>      BuyAdjusted[ i ] = 
  1<FONT 
  face="Courier New">; 
        BuyPriceAdjusted[ i ] = <FONT 
  color=#000000>Open<FONT 
  size=2>[ i ];        
        // find a 
  sell position + sellprice <FONT 
  face="Courier New" 
  size=2>      <FONT 
  face="Courier New">for<FONT 
  color=#000000> (j = i; j < <FONT 
  color=#000000>BarCount<FONT 
  face="Courier New">; j++) { 
       
           <FONT 
  color=#008000>// nbar stop exit at the open <FONT 
  color=#000000><FONT face="Courier New" 
  size=2>         <FONT 
  face="Courier New" color=#800000 size=2>if<FONT 
  face="Courier New"> ((j - i) == nbar) { 
                     
              <FONT 
  color=#000000>Sell[ j ] = <FONT 
  color=#ff00ff>5<FONT 
  size=2>; 
              <FONT 
  color=#000000>SellPrice[ j ] = <FONT 
  color=#000000>Close<FONT 
  size=2>[ j ]; 
               
              <FONT 
  color=#008000>// enter i-loop starting from the last sell 
  <FONT face="Courier New" 
  size=2>            i 
  = j; 
                   
              <FONT 
  face="Courier New" color=#008000 size=2>// escape from loop <FONT 
  color=#000000><FONT face="Courier New" 
  size=2>            j 
  = <FONT face="Courier New" color=#000000 
  size=2>BarCount<FONT 
  color=#000000>; 
               
           } 
             
        } 
            } 
                   
  } } // end procedure 
  <FONT 
  face="Courier New" color=#008000 size=2>// initial settings for portfolio 
  trading (also see Settings window) <FONT 
  face="Courier New"><FONT 
  color=#0000ff>SetBarsRequired(<FONT 
  color=#ff00ff>10000,<FONT 
  color=#ff00ff>10000<FONT 
  size=2>); <FONT 
  color=#0000ff>SetOption(<FONT 
  color=#ff00ff>"MaxOpenPositions", <FONT 
  color=#ff00ff>250<FONT 
  size=2> ); <FONT 
  color=#000000>PositionSize = -<FONT 
  color=#ff00ff>15<FONT 
  size=2>; <FONT 
  color=#0000ff>SetTradeDelays(<FONT 
  color=#ff00ff>1,<FONT 
  color=#ff00ff>1,<FONT 
  color=#ff00ff>1,<FONT 
  color=#ff00ff>1<FONT 
  size=2>); <FONT 
  color=#0000ff>SetOption(<FONT 
  color=#ff00ff>"AllowSameBarExit",<FONT 
  color=#000000>True<FONT 
  size=2>); <FONT 
  color=#0000ff>SetOption(<FONT 
  color=#ff00ff>"AllowPositionShrinking",<FONT 
  color=#000000>True<FONT 
  size=2> ); <FONT 
  color=#0000ff>SetOption(<FONT 
  color=#ff00ff>"ActivateStopsImmediately"<FONT 
  color=#000000>,<FONT 
  color=#000000>True<FONT 
  size=2> ); // 
  initial settings of the variables <FONT 
  color=#000000>nb = <FONT 
  face="Courier New" color=#ff00ff size=2>1<FONT 
  size=2>; tt = NumDownBars = <FONT 
  color=#0000ff>BarsSince( <FONT 
  color=#000000>C >= <FONT 
  color=#0000ff>Ref(<FONT 
  color=#000000>C,-<FONT 
  color=#ff00ff>1<FONT 
  size=2>) ); <FONT 
  color=#000000>Buy = tt >= <FONT 
  color=#ff00ff>3<FONT 
  size=2>; // build in 
  the trade delay <FONT 
  face="Courier New">Buy<FONT 
  color=#000000> = Ref<FONT 
  color=#000000>(Buy<FONT 
  color=#000000>,-1<FONT 
  face="Courier New">); <FONT 
  color=#000000>BuyPrice = <FONT 
  color=#000000>Open<FONT 
  size=2>; // calculate 
  sell positions <FONT 
  face="Courier New" size=2>ttt(<FONT 
  size=2>Buy,<FONT 
  color=#000000>BuyPrice,<FONT 
  color=#000000>Open,<FONT 
  color=#000000>High,<FONT 
  color=#000000>Low,<FONT 
  color=#000000>Close<FONT 
  size=2>,nb); <FONT 
  color=#000000>Buy<FONT 
  size=2> = BuyAdjusted; <FONT 
  color=#000000>BuyPrice<FONT 
  face="Courier New"> = BuyPriceAdjusted; 
  // move back the 
  arrays<FONT 
  color=#000000> Buy<FONT 
  color=#000000> = Ref<FONT 
  color=#000000>(Buy<FONT 
  color=#000000>,1<FONT 
  face="Courier New">); <FONT 
  color=#000000>Sell = <FONT 
  color=#0000ff>Ref(<FONT 
  color=#000000>Sell,<FONT 
  color=#ff00ff>1<FONT 
  size=2>); <FONT 
  color=#0000ff>Plot(<FONT 
  color=#000000>C,<FONT 
  color=#ff00ff>"C",<FONT 
  color=#ff00ff>1,<FONT 
  color=#ff00ff>64<FONT 
  size=2>); <FONT 
  color=#0000ff>PlotShapes(<FONT 
  color=#000000>shapeUpArrow*<FONT 
  color=#000000>Buy,<FONT 
  color=#000000>colorWhite, layer = 
  0, yposition = 
  BuyPrice, offset 
  = 0<FONT 
  face="Courier New"> ); <FONT 
  color=#0000ff>PlotShapes(<FONT 
  color=#000000>shapeDownArrow*<FONT 
  color=#000000>Sell,<FONT 
  color=#000000>colorYellow, layer = 
  0, yposition = 
  SellPrice, offset 
  = 0<FONT 
  face="Courier New"> ); <FONT 
  color=#000000>Title=<FONT 
  color=#0000ff>Name()+ ", 
  O: "+<FONT 
  color=#0000ff>WriteVal(<FONT 
  color=#000000>O)+ <FONT 
  color=#ff00ff>", H: "+<FONT 
  color=#0000ff>WriteVal(<FONT 
  color=#000000>H)+ <FONT 
  color=#ff00ff>", L: "+<FONT 
  color=#0000ff>WriteVal(<FONT 
  color=#000000>L)+ <FONT 
  color=#ff00ff>", C: "+<FONT 
  color=#0000ff>WriteVal(<FONT 
  color=#000000>C<FONT 
  size=2>); <FONT 
  color=#000000>PositionScore = tt * 
  (50-<FONT 
  color=#0000ff>StochK(<FONT 
  color=#ff00ff>8<FONT 
  size=2>)); <FONT 
  color=#000000>Filter = <FONT 
  color=#ff00ff>1<FONT 
  size=2>; <FONT 
  color=#0000ff>AddColumn(<FONT 
  color=#000000>Buy,<FONT 
  color=#ff00ff>"Buy"<FONT 
  size=2>); <FONT 
  color=#0000ff>AddColumn(<FONT 
  color=#000000>Sell,<FONT 
  color=#ff00ff>"Sell"<FONT 
  size=2>); <FONT 
  color=#0000ff>AddColumn(<FONT 
  color=#000000>PositionScore,<FONT 
  color=#ff00ff>"PositionScore"<FONT 
  size=2>); 
  
  <BLOCKQUOTE 
  >
    ----- Original Message ----- 
    <DIV 
    >From: 
    <A title=serkhoshian777@xxxxxxxxx 
    href="">Gary A. Serkhoshian 
    To: <A title=amibroker@xxxxxxxxxxxxxxx 
    href="">amibroker@xxxxxxxxxxxxxxx 
    Sent: Sunday, August 08, 2004 4:31 
    PM
    Subject: Re: [amibroker] while/for loop 
    compiler error 3 question
    
    Ed,
     
    I enjoyed reading through your code, but was confused as to why you 
    initialized the following arrays twice.  Can't they all be set to zero 
    from the start?
     
    Thanks,
    Gary
     
    // initialise arrays 
    SellPrice<FONT 
    color=#000000> = BuyPrice<FONT 
    color=#000000>; SellPrice<FONT 
    color=#000000> = 0<FONT 
    size=2>; <FONT 
    color=#000000>Sell = <FONT 
    color=#000000>Buy; <FONT 
    color=#000000>Sell = <FONT 
    color=#ff00ff>0<FONT 
    face="Courier New">; BuyAdjusted = <FONT 
    color=#000000>Buy; BuyAdjusted = 
    0<FONT 
    face="Courier New">; BuyPriceAdjusted = 
    BuyPrice; 
    BuyPriceAdjusted = 0<FONT 
    size=2>; ed nl 
    <ed2000nl@xxxxxxx> wrote:
    <BLOCKQUOTE class=replbq 
    >
      
      

      hi,
       
      the error you get is because you use whole 
      arrays in the loop. So your exitcondition is probably defined as an array. 
      For instance if you define:
       
      exitCondition = StochK(8) > 90; 
      
       
      then exitCondition is an array and in the 
      loop you have to specify the element using exitCondition[ i ]
       
      For your second question I add an example. 
      You see that I have a j-loop within the 
      i-loop. To exit the j-loop is put j = BarCount. Before I 
      do that I change i to the value I want it to be. So the answer is 
      yes one can change i within the loop.
       
      rgds, Ed
       
       
      <FONT 
      color=#800000>procedure ttt(<FONT 
      color=#000000>Buy,<FONT 
      color=#000000>BuyPrice,<FONT 
      color=#000000>Open,<FONT 
      color=#000000>High,<FONT 
      color=#000000>Low,<FONT 
      color=#000000>Close<FONT face="Courier New" 
      color=#000000 size=2>,nbar) { <FONT face="Courier New" 
      color=#008000 size=2>/* Jul 2004 */<FONT 
      face="Courier New"> <FONT 
      color=#800000>global <FONT 
      color=#000000>Sell<FONT 
      face="Courier New">; <FONT 
      color=#800000>global <FONT 
      color=#000000>SellPrice<FONT 
      face="Courier New">; <FONT 
      color=#800000>global<FONT 
      face="Courier New"> BuyAdjusted; 
      global<FONT 
      face="Courier New"> BuyPriceAdjusted; 
      // initialise arrays 
      <FONT 
      face="Courier New"><FONT 
      color=#000000>SellPrice = <FONT 
      color=#000000>BuyPrice; <FONT 
      color=#000000>SellPrice = <FONT 
      color=#ff00ff>0<FONT 
      size=2>; <FONT 
      color=#000000>Sell = <FONT 
      color=#000000>Buy; <FONT 
      color=#000000>Sell = <FONT 
      color=#ff00ff>0<FONT 
      size=2>; BuyAdjusted = <FONT 
      color=#000000>Buy; BuyAdjusted = 
      0<FONT 
      face="Courier New">; BuyPriceAdjusted 
      = BuyPrice; 
      BuyPriceAdjusted = 0<FONT 
      face="Courier New">; <FONT 
      color=#800000>for (i = <FONT 
      color=#ff00ff>0; i < <FONT 
      color=#000000>BarCount<FONT 
      face="Courier New">; i++) { 
         // 
      <FONT 
      face="Courier
 New" size=2>   <FONT 
      face="Courier New">if<FONT 
      color=#000000> (Buy<FONT 
      color=#000000>[ i ] == <FONT 
      color=#ff00ff>1<FONT 
      size=2>) {     
           
            // buy 
      at open <FONT 
      face="Courier New" size=2>      BuyAdjusted[ 
      i ] = <FONT face="Courier New" color=#ff00ff 
      size=2>1; 
            BuyPriceAdjusted[ i ] = 
      Open<FONT 
      face="Courier New">[ i ]; 
             
            // find 
      a sell position + sellprice <FONT 
      color=#000000><FONT face="Courier New" 
      size=2>      <FONT 
      face="Courier New">for<FONT 
      color=#000000> (j = i; j < <FONT 
      color=#000000>BarCount<FONT 
      face="Courier New">; j++) { 
           
               <FONT 
      color=#008000>// nbar stop exit at the open <FONT 
      color=#000000><FONT face="Courier New" 
      size=2>         
      <FONT face="Courier New" color=#800000 
      size=2>if<FONT 
      color=#000000> ((j - i) == nbar) { 
                         
                  <FONT 
      color=#000000>Sell[ j ] = <FONT 
      color=#ff00ff>5<FONT 
      size=2>; 
                  <FONT 
      color=#000000>SellPrice[ j ] = 
      Close<FONT 
      face="Courier New">[ j ]; 
                   
                  <FONT 
      color=#008000>// enter i-loop starting from the last sell 
      <FONT face="Courier New" 
      size=2>            i 
      = j; 
                       
                  <FONT 
      face="Courier New" color=#008000 size=2>// escape from loop <FONT 
      color=#000000><FONT face="Courier New" 
      size=2>            j 
      = <FONT face="Courier New" color=#000000 
      size=2>BarCount<FONT 
      color=#000000>; 
                   
               } 
                 
            } 
                } 
                       
      } } // end procedure 
      
      <BLOCKQUOTE 
      >
        OK, this compiler/interpreter 
        behaviour is confusing me:here is a part of my code that is 
        generating compile Error 3, "for, while, if statement can only use 
        boolean or numeric variables" etc.
        The strange part is that the for loop is ok but the while 
        generates this error as shown AND also if I comment the (exitCond == 
        False) part and uncomment the (n < BarCount) part. (error goes 
        away if I change BarCount to 10, e.g., with (exitCond == False) 
        commented out).2nd Question has to do with being able to change 
        i in the middle of the for loop, as I do in the last statement. Is 
        this possible or will i continue from where it left 
        off????for (i = Length+1; i < BarCount; 
        i++){                
        exitCond = 
        False;                
        n = 
        i;                
        inTrade = False;        
              while ((exitCond == False))// AND (n < 
        BarCount))                
        {                   
        n = n + 
        1;                
        }//while        
              i = n;}// forCheck 
      AmiBroker web page at:<A 
      href="">http://www.amibroker.com/Check 
      group FAQ at: <A 
      href="">http://groups.yahoo.com/group/amibroker/files/groupfaq.html 
      
    
    
    Do you Yahoo!?Express yourself with Y! Messenger! Free. <A 
    href="">Download 
    now. Check AmiBroker web page at:<A 
    href="">http://www.amibroker.com/Check 
    group FAQ at: <A 
    href="">http://groups.yahoo.com/group/amibroker/files/groupfaq.html 
    Check AmiBroker web page at:<A 
    href="">http://www.amibroker.com/Check 
    group FAQ at: <A 
    href="">http://groups.yahoo.com/group/amibroker/files/groupfaq.html 
    


Check AmiBroker web page at:
http://www.amibroker.com/

Check group FAQ at: http://groups.yahoo.com/group/amibroker/files/groupfaq.html








Yahoo! Groups Sponsor


  ADVERTISEMENT 












Yahoo! Groups Links
To visit your group on the web, go to:http://groups.yahoo.com/group/amibroker/ 
To unsubscribe from this group, send an email to:amibroker-unsubscribe@xxxxxxxxxxxxxxx 
Your use of Yahoo! Groups is subject to the Yahoo! Terms of Service.