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

RE: [amibroker] Re: Simple Programming Language Question



PureBytes Links

Trading Reference Links

Thanks for the translation...

Here is the code portion for just the calculations in his Profit Table
example.  I would like to turn this into an Exploration (and not a gfx
graphical display).  I am darned if I have found where to put in some
AddColumn statements (and whatever else in order to make an Exploration, by
days, which has a yearly change column and a monthly change column.)  Not
asking anyone to show me how to do it (I will succeed, I will succeed,....)
but it is interesting code that I am sure some of you understand in a blink,
but not me...Been working on this for several days now...

SetBarsRequired(1000000,1000000);
//eq = Foreign("~~~EQUITY", "C" );
eq = Foreign("AGEQT", "C");
yr = Year();
mo = Month();

YearChange = yr != Ref( yr, -1 );
MonChange = mo != Ref( mo, -1 );

FirstYr = 0;
LastYr = 0;

startbar = 0;

////////////////////////////
// SKIP non-trading bars
////////////////////////////
for( i = 0; i < BarCount; i++ )
{
  if( eq[ i ] )
  {
    startbar = i;
    break;
  } 
}

////////////////////////////
// collect yearly / monthly changes in equity
// into dynamic variables
////////////////////////////

LastYrValue = eq[ startbar  ];
LastMoValue = eq[ startbar  ];

MaxYrProfit = MinYrProfit = 0;
MaxMoProfit = MinMoProfit = 0;

for( i = startbar + 1; i < BarCount; i++ )
{
  if( YearChange[ i ] || i == BarCount - 1 )
  {
    Chg = 100 * ( -1 + eq[ i ] / LastYrValue );  < < < < < Year's change
    VarSet("ChgYear"+ yr[ i - 1 ], Chg );

    MaxYrProfit = Max( MaxYrProfit, Chg );
    MinYrProfit = Min( MinYrProfit, Chg );

    if( FirstYr == 0 ) FirstYr = yr[ i - 1 ];
    LastYr = yr[ i ];

    LastYrValue = eq[ i ];
  }

  if( MonChange [ i ] || i == BarCount - 1 )
  {
    mon = mo[ i - 1 ];

    Chg = 100 * ( -1 + eq[ i ] / LastMoValue );   < < < < < < Months change 

    VarSet("ChgMon" + yr[ i - 1 ] + "-" + mon, Chg );
    VarSet("SumChgMon"+ mon, Chg + Nz( VarGet("SumChgMon"+ mon ) ) );
    VarSet("SumMon" + mon, 1 + Nz( VarGet("SumMon"+ mon ) ) );
 
    MaxMoProfit = Max( MaxMoProfit, Chg );
    MinMoProfit = Min( MinMoProfit, Chg );

    LastMoValue = eq[ i ];
  }
} 

-----Original Message-----
From: amibroker@xxxxxxxxxxxxxxx [mailto:amibroker@xxxxxxxxxxxxxxx] On Behalf
Of dingo
Sent: Thursday, June 26, 2008 4:51 PM
To: amibroker@xxxxxxxxxxxxxxx
Subject: RE: [amibroker] Re: Simple Programming Language Question

Looks to me like he's saying "if the year has changed" or "we're at the end
of the data .."

d 

> -----Original Message-----
> From: amibroker@xxxxxxxxxxxxxxx
> [mailto:amibroker@xxxxxxxxxxxxxxx] On Behalf Of Ken Close
> Sent: Thursday, June 26, 2008 4:05 PM
> To: amibroker@xxxxxxxxxxxxxxx
> Subject: RE: [amibroker] Re: Simple Programming Language Question
> 
> Thanks for the confirmation.
> The statement makes less sense to me now. 
>   > if( YearChange[ i ] || i == BarCount - 1 ) Oh, well....
> 
> -----Original Message-----
> From: amibroker@xxxxxxxxxxxxxxx
> [mailto:amibroker@xxxxxxxxxxxxxxx] On Behalf Of sidhartha70
> Sent: Thursday, June 26, 2008 12:40 PM
> To: amibroker@xxxxxxxxxxxxxxx
> Subject: [amibroker] Re: Simple Programming Language Question
> 
> Ken,
> 
> You are correct in that it is,
> 
> IF YearChange(i)    OR   i equals BarCount -1 
> 
> the || = OR
> 
> 
> --- In amibroker@xxxxxxxxxxxxxxx, "Ken Close" <ken45140@xxx> wrote:
> >
> > Middle or high level AFL program folks (like me) should not mess
> around in
> > the low level area...
> >  
> > That said, can someone help me with this simple question.
> >  
> > What does the double pipe symbol mean in a comparison statement?
> >  
> > Two on-line references say it is an OR function
> >  
> > But what does this line from the ProftiTable.afl that
> Tomasz wrote mean:
> >  
> > if( YearChange[ i ] || i == BarCount - 1 )
> > 
> > Is this IF YearChange(i)    OR   i equals BarCount -1   ???
> > 
> > It hardly makes sense if this is correct.
> > 
> > I thought it means If YearChange(i) is not equal to BarCount -1,
> saying the
> > if function is executed when this happens.
> > 
> > Any help?   Thanks.
> > 
> > Ken
> >
> 
> 
> 
> ------------------------------------
> 
> Please note that this group is for discussion between users only.
> 
> To get support from AmiBroker please send an e-mail directly to 
> SUPPORT {at} amibroker.com
> 
> For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
> http://www.amibroker.com/devlog/
> 
> For other support material please check also:
> http://www.amibroker.com/support.html
> Yahoo! Groups Links
> 
> 
> 
> 
> ------------------------------------
> 
> Please note that this group is for discussion between users only.
> 
> To get support from AmiBroker please send an e-mail directly to 
> SUPPORT {at} amibroker.com
> 
> For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
> http://www.amibroker.com/devlog/
> 
> For other support material please check also:
> http://www.amibroker.com/support.html
> Yahoo! Groups Links
> 
> 
> 
> No virus found in this incoming message.
> Checked by AVG. 
> Version: 8.0.101 / Virus Database: 270.4.1/1521 - Release
> Date: 6/26/2008 11:20 AM
> 


------------------------------------

Please note that this group is for discussion between users only.

To get support from AmiBroker please send an e-mail directly to 
SUPPORT {at} amibroker.com

For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
http://www.amibroker.com/devlog/

For other support material please check also:
http://www.amibroker.com/support.html
Yahoo! Groups Links




------------------------------------

Please note that this group is for discussion between users only.

To get support from AmiBroker please send an e-mail directly to 
SUPPORT {at} amibroker.com

For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
http://www.amibroker.com/devlog/

For other support material please check also:
http://www.amibroker.com/support.html
Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/amibroker/

<*> Your email settings:
    Individual Email | Traditional

<*> To change settings online go to:
    http://groups.yahoo.com/group/amibroker/join
    (Yahoo! ID required)

<*> To change settings via email:
    mailto:amibroker-digest@xxxxxxxxxxxxxxx 
    mailto:amibroker-fullfeatured@xxxxxxxxxxxxxxx

<*> To unsubscribe from this group, send an email to:
    amibroker-unsubscribe@xxxxxxxxxxxxxxx

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.com/info/terms/