What about the following:
double price1 = 1.23456; double price2 = 0; price2 = MathFloor(price1 / 0.0001) * 0.0001;
Hello
I try to find a way to eliminate the Tick from a given price without rounding.
For example: 1.29346, I'd like to work with the figure 1.2934
However, whatever command, NormalizeDouble, MathRound, DoubleToStr seams to work according to rounding rules.
In this case I receive a value 1.2935. My intention is to just eliminate (ignore) the 5th digit.
The desired result is 1.2934.
Any idea how I can achieve this ?
You can multiply up by MathPow(10, Digits-1) then use MathFloor and then divide by MathPow(10, Digits-1) Maths Functions
RaptorUK how come we can't do this
int integer; double doubling; integer = 1.23456 *10000; doubling = integer/10000 ; Alert (integer," to ",DoubleToStr (doubling, 10)); // the result is 1
RaptorUK how come we can't do this
Thanks guys, what you told me here delivers the desired result.
Now perhaps you can help me out with the oposit problem.
To round a value up from a value 1.29341 to a value 1.2935.
Is there a trick to do that ?
Thanks guys, what you told me here delivers the desired result.
Now perhaps you can help me out with the oposit problem.
To round a value up from a value 1.29341 to a value 1.2935.
Is there a trick to do that ?
To round a value up from a value 1.29341 to a value 1.2935.
Is there a trick to do that ?
You might try using MathCeil, using similar code that I posted in above answer. I believe MathCeil is the opposite of MathFloor, so code accordingly.
You need to be more specific about what you want to do . . . you post isn't specific enough.
I agree with Raptor for the most part. First, try to understand the problem, research the problem to find a solution (research also means trial and error), and then if you haven't found an acceptable solution, quantify the problem (with enough specifity so people here can give you appropriate answers; remember, garbage in, garbage out) here so someone (or several someones) can guide you in the right direction.
Thanks guys for the comments and support.
And Yes, the MathCeil is doing what I'm looking for. Just figured that out.
double price1 = 1.23456; double price2 = 0; price2 = MathCeil(price1 / 0.0001) * 0.0001;
double price1 = 1.23456; double price2 = MathCeil( price1 / pips2dbl) * pips2dbl; // 1.2346 double price3 = MathFloor(price1 / pips2dbl) * pips2dbl; // 1.2345 double price4 = MathRound(price1 / pips2dbl) * pips2dbl; // 1.2346 /////////// //++++ These are adjusted for 5 digit brokers. int pips2points; // slippage 3 pips 3=points 30=points double pips2dbl; // Stoploss 15 pips 0.015 0.0150 int Digits.pips; // DoubleToStr(dbl/pips2dbl, Digits.pips) int init(){ OptInitialization(); if (Digits % 2 == 1){ // DE30=1/JPY=3/EURUSD=5 forum.mql4.com/43064#515262 pips2dbl = Point*10; pips2points = 10; Digits.pips = 1; } else { pips2dbl = Point; pips2points = 1; Digits.pips = 0; } // OrderSend(... Slippage.Pips * pips2points, Bid - StopLossPips * pips2dbl //---- These are adjusted for 5 digit brokers. /* On ECN brokers you must open first and THEN set stops int ticket = OrderSend(..., 0,0,...) if (ticket < 0) Alert("OrderSend failed: ", GetLastError()); else if (!OrderSelect(ticket, SELECT_BY_TICKET)) Alert("OrderSelect failed: ", GetLastError()); else if (!OrderModify(OrderTicket(), OrderOpenPrice(), SL, TP, 0) Alert("OrderModify failed: ", GetLastError()); */
- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
You agree to website policy and terms of use
Hello
I try to find a way to eliminate the Tick from a given price without rounding.
For example: 1.29346, I'd like to work with the figure 1.2934
However, whatever command, NormalizeDouble, MathRound, DoubleToStr seams to work according to rounding rules.
In this case I receive a value 1.2935. My intention is to just eliminate (ignore) the 5th digit.
The desired result is 1.2934.
Any idea how I can achieve this ?
Thanks