//+------------------------------------------------------------------+
//| NotOnlySpread.mq4 |
//| Spread, its moving average (ema), its maximum and minimum,|
//| and ticks per second (market speed) on comment.|
//+------------------------------------------------------------------+
#property copyright "Fabrizio"
#property link "fajuzi@yahoo.it"
#property version "1.00"
#property indicator_chart_window
input int digi=1;//digits format
input int sec=30;//seconds to refresh
input bool clear=false;//if true clears comment after closing indicator
double newspread,emaspread,cost,maxpread,minspread;
int tickscount;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
void OnInit()
{
EventSetTimer(sec);
emaspread=MarketInfo(Symbol(),MODE_SPREAD);
cost=(sec+1.0)/2.0;
newspread=emaspread; maxpread=emaspread; minspread=emaspread;
tickscount=0;
Comment("INSTANT SPREAD = ",DoubleToString(emaspread,digi),
"; PLEASE WAIT ",IntegerToString(sec)," SECONDS...");
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
EventKillTimer();
if(clear==true) Comment("");
}
//+------------------------------------------------------------------+
//| On timer function |
//+------------------------------------------------------------------+
void OnTimer()
{
Comment("INSTANT SPREAD = ",DoubleToString(newspread,digi),
"; EMA AVERAGE = ",DoubleToString(emaspread,digi),
"; MAX = ",DoubleToString(maxpread,digi),
"; MIN = ",DoubleToString(minspread,digi),
"; TICKS/MINUTE SPEED = ",IntegerToString(60*tickscount/sec),
"; ",IntegerToString(sec)," SECONDS TO REFRESH...");
newspread=emaspread; maxpread=emaspread; minspread=emaspread;
tickscount=0;
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
tickscount++;
newspread=MarketInfo(Symbol(),MODE_SPREAD);
maxpread=MathMax(maxpread,newspread);
minspread=MathMin(minspread,newspread);
emaspread=emaspread+(newspread-emaspread)/cost;
return(rates_total);
}
//+------------------------------------------------------------------+
Comments