math_utils/unnormalized_quotes.mq5
2025-09-19 20:21:16 +00:00

74 lines
6.2 KiB
MQL5

//+------------------------------------------------------------------+
//| unnormalized_quotes.mq5 |
//| Copyright © 2018, Amr Ali |
//| https://www.mql5.com/en/users/amrali |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2018, Amr Ali"
#property link "https://www.mql5.com/en/users/amrali"
#property version "4.0"
#property script_show_inputs
#include <math_utils.mqh>
input int InpBarsToScan = 100; // bars to scan
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
#define PRINT(A) Print(#A + " = ", (A))
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void OnStart()
{
for(int bar = 0; bar < InpBarsToScan; bar++)
{
double price = iClose(_Symbol, PERIOD_CURRENT, bar);
datetime time = iTime(_Symbol, PERIOD_CURRENT, bar);
// check if the price is not rounded correctly to digits.
if(!IsRound(price, _Digits))
{
// round the price correctly to digits.
double should_be = Round(price, _Digits);
//--- Print the un-normalized quote price.
PRINT( time );
PRINT( price );
PRINT( should_be );
PRINT( UlpDiff(price, should_be) );
Print("");
}
}
//--- Showing information about the number of ticks and spent time
PrintFormat("Processed %d bars for symbol %s",InpBarsToScan,_Symbol);
}
//+------------------------------------------------------------------+
// Sample output:
/*
unnormalized_quotes (EURUSD,M1) time = 2022.05.04 13:45:00
unnormalized_quotes (EURUSD,M1) price = 1.0524499999999999
unnormalized_quotes (EURUSD,M1) should_be = 1.05245
unnormalized_quotes (EURUSD,M1) UlpDiff(price,should_be) = -1
unnormalized_quotes (EURUSD,M1)
unnormalized_quotes (EURUSD,M1) time = 2022.05.04 13:27:00
unnormalized_quotes (EURUSD,M1) price = 1.0526200000000001
unnormalized_quotes (EURUSD,M1) should_be = 1.05262
unnormalized_quotes (EURUSD,M1) UlpDiff(price,should_be) = 1
unnormalized_quotes (EURUSD,M1)
unnormalized_quotes (EURUSD,M1) time = 2022.05.04 12:20:00
unnormalized_quotes (EURUSD,M1) price = 1.0524499999999999
unnormalized_quotes (EURUSD,M1) should_be = 1.05245
unnormalized_quotes (EURUSD,M1) UlpDiff(price,should_be) = -1
unnormalized_quotes (EURUSD,M1)
unnormalized_quotes (EURUSD,M1) time = 2022.05.04 12:18:00
unnormalized_quotes (EURUSD,M1) price = 1.0524499999999999
unnormalized_quotes (EURUSD,M1) should_be = 1.05245
unnormalized_quotes (EURUSD,M1) UlpDiff(price,should_be) = -1
unnormalized_quotes (EURUSD,M1)
unnormalized_quotes (EURUSD,M1) Processed 100 bars for symbol EURUSD
*/