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

[amibroker] Re: Rounding up the BuyPrice to the nearest 0.25 point



PureBytes Links

Trading Reference Links

> BuyPrice = something - ( something % 0.25 );

> Multiply your number by 4.
> Round it to an integer
> Divide it by 4 to a decimal.

These two operations give exactly the same result (within the limits
of possible float rounding errors) but in a slightly different way.

The modulo operator (%) gives the remainder after dividing by the
modulus (0.25), so the first statement is saying take the number and
remove any remainder after dividing the number by 0.25. That will
force the number to be a multiple of 0.25. To make it more obvious,
imagine the modulus is 10 and the number 363. 363%10 is 3 and 363-3 is
360, a multiple of 10 as expected.

The second method does the same thing but involves a multiplication as
well as a division, whereas the modulo method only involves a division
and a subtraction. Subtraction is generally less computationally
expensive than multiplication, and depending on how it's implemented,
the modulo operation may not require doing the full division just to
get the remainder (it's been quite a while though since I looked at
how things like division and modulo are implemented at a low level,
and here it's with floating point numbers as well).

If you want it to round up or down depending on the next decimal
place, the second method is probably more obvious, since you just add
0.5 before taking the integer part. For the first expression, you need
to add half the modulus before doing the modulo operation:

somethingElse = something + 0.125;
BuyPrice = somethingElse - ( somethingElse % 0.25 );

Again, it's easier to see with a modulus of 10, where half would be 5:

363+5=368, 368-8=360
364+5=369, 369-9=360
365+5=370, 370-0=370
366+5=371, 371-1=370

Regards,
GP


--- In amibroker@xxxxxxxxxxxxxxx, "sslack88" <jzzpiano88@xxx> wrote:
>
> I actually found it in the "AFL Reference Manual - Basics", it's in 
> the same section where all of the operators are being discussed "++, -
> -, [], ^, etc."
> 
> I still don't understand Tomasz code, but at least I know what "%" 
> operator does now.
> 
> 
> --- In amibroker@xxxxxxxxxxxxxxx, "dingo" <dingo@> wrote:
> >
> > Ok duude!
> > 
> > Here's a minor gripe of mine: In the help file how can I find out 
> where the
> > "%" operator is discussed?   A search on the % character does not 
> work.
> > 
> > d 
> > 
> > > -----Original Message-----
> > > From: amibroker@xxxxxxxxxxxxxxx 
> > > [mailto:amibroker@xxxxxxxxxxxxxxx] On Behalf Of Tomasz Janeczko
> > > Sent: Friday, July 20, 2007 1:21 PM
> > > To: amibroker@xxxxxxxxxxxxxxx
> > > Subject: Re: [amibroker] Rounding up the BuyPrice to the 
> > > nearest 0.25 point
> > > 
> > > something = Param("Test", 10, 9, 11, 0.01 ); 
> > > BuyPrice = something - ( something % 0.25 ); 
> > > 
> > > Title = ""+BuyPrice; 
> > > 
> > > Best regards,
> > > Tomasz Janeczko
> > > amibroker.com
> > > ----- Original Message ----- 
> > > From: "dingo" <dingo@>
> > > To: <amibroker@xxxxxxxxxxxxxxx>
> > > Sent: Friday, July 20, 2007 6:12 PM
> > > Subject: RE: [amibroker] Rounding up the BuyPrice to the 
> > > nearest 0.25 point
> > > 
> > > 
> > > > You write the AFL:
> > > > 
> > > > Multiply your number by 4.
> > > > 
> > > > Round it to an integer
> > > > 
> > > > Divide it by 4 to a decimal.
> > > > 
> > > > d 
> > > > 
> > > >> -----Original Message-----
> > > >> From: amibroker@xxxxxxxxxxxxxxx 
> > > >> [mailto:amibroker@xxxxxxxxxxxxxxx] On Behalf Of dingo
> > > >> Sent: Friday, July 20, 2007 12:00 PM
> > > >> To: amibroker@xxxxxxxxxxxxxxx
> > > >> Subject: RE: [amibroker] Rounding up the BuyPrice to the 
> > > >> nearest 0.25 point
> > > >> 
> > > >> Oops = that was less than helpful..  I didn't see the .25... 
> > > >> I'll look into
> > > >> my math magic resources..
> > > >> 
> > > >> d 
> > > >> 
> > > >> > -----Original Message-----
> > > >> > From: amibroker@xxxxxxxxxxxxxxx 
> > > >> > [mailto:amibroker@xxxxxxxxxxxxxxx] On Behalf Of dingo
> > > >> > Sent: Friday, July 20, 2007 11:56 AM
> > > >> > To: amibroker@xxxxxxxxxxxxxxx
> > > >> > Subject: RE: [amibroker] Rounding up the BuyPrice to the 
> > > >> > nearest 0.25 point
> > > >> > 
> > > >> > Multiply by 100 and use the round function then divide by 
> 100.
> > > >> > 
> > > >> > d 
> > > >> > 
> > > >> > > -----Original Message-----
> > > >> > > From: amibroker@xxxxxxxxxxxxxxx 
> > > >> > > [mailto:amibroker@xxxxxxxxxxxxxxx] On Behalf Of sslack88
> > > >> > > Sent: Friday, July 20, 2007 10:05 AM
> > > >> > > To: amibroker@xxxxxxxxxxxxxxx
> > > >> > > Subject: [amibroker] Rounding up the BuyPrice to the 
> nearest 
> > > >> > > 0.25 point
> > > >> > > 
> > > >> > > How do you round your BuyPrice up to the nearest 0.25 
> > > point?  For 
> > > >> > > example:
> > > >> > > 
> > > >> > > I want to buy (intraday) when the price breaks the 
> (Open+Some 
> > > >> > > Value) so 
> > > >> > > my formula states to buy when the price is 1280.53 or 
> higher. 
> > > >> > >  However, 
> > > >> > > I am trading the ES so I can only buy at 1280.75.  
> > > >> > > 
> > > >> > > How do I set the BuyPrice to 1280.75?  Right now the 
> BuyPrice 
> > > >> > > is being 
> > > >> > > set to the (Open+Some Value) price (1280.53) which is not 
> > > >> > possible in 
> > > >> > > real trading.
> > > >> > > 
> > > >> > > Thanks,
> > > >> > > Steve
> > > >> > > 
> > > >> > > 
> > > >> > > 
> > > >> > > 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
> > > >> > 
> > > >> > 
> > > >> > 
> > > >> > 
> > > >> 
> > > >> 
> > > >> 
> > > >> 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
> > > > 
> > > > 
> > > > 
> > > > 
> > > >
> > > 
> > > 
> > > 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/