notonlyspread

Author: Fabrizio
notonlyspread
0 Views
0 Downloads
0 Favorites
notonlyspread
//+------------------------------------------------------------------+
//|                                                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