// Набор утилит для различных математических операций #property copyright "Scriptong" #property link "http://scriptong.myqip.ru/" //+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ //| Больше ли первое число, чем второе? | //+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ bool IsFirstMoreThanSecond(double first,double second,double delta) { return (first - second > delta); } //+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ //| Равны ли указанные значения? | //+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ bool IsValuesEquals(double first,double second,double delta) { return (MathAbs(first - second) < delta); } //+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ //| Приведение объема к ближайшему допустимому значению | //+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ double VolumeCast(double volume,double volumeMin,double volumeMax,double volumeStep) { if(volumeStep==0.0) return volumeMin; return (MathFloor(MathMin(MathMax(volume, volumeMin), volumeMax) / volumeStep) * volumeStep); } //+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ //| Приведение объема к ближайшему допустимому значению путем математического округления | //+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ double VolumeRound(double volume,double volumeMin,double volumeMax,double volumeStep) { if(volumeStep==0.0) return volumeMin; return (MathRound(MathMin(MathMax(volume, volumeMin), volumeMax) / volumeStep) * volumeStep); } //+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ //| Приведение значения к точности одного тика | //+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ double NP(double value,double tickSize) { if(tickSize==0) return (0); return (MathRound(value / tickSize) * tickSize); } //+------------------------------------------------------------------+