//+------------------------------------------------------------------+
//|                                                Visual_spread.mq4 |
//|                                                         assurkov |
//|                                    assurkov@mail.ru, assurkov.ru |          
//+------------------------------------------------------------------+
//      Индикатор визуально на графике отображает величину текущего 
//      спреда, рисуя две линии от текущей цены (Bid). Верхняя -  
//      это цена покупки (Ask), нижняя - это уровень, равный величине
//      спреда. Две этих линии показывают трейдеру, какого уровня должна 
//      достигнуть цена при открытии им сделки, дабы выйти в безубыток. 
//      Нижняя - при сделке на продажу, верхняя - при сделке на покупку. 
//      Также в левом верхнем углу индикатор отображает численное 
//      значение спреда. Оно помогает определить лучшее время для 
//      торговли, дабы не переплачивать лишнего за спред.
#property copyright "assurkov"
#property link      "http://assurkov.ru/"
#property indicator_chart_window
extern string  _1="// --- Place settings ---";
extern int     Corner=0;
extern string  Corner_tips="// 0 - upper left, 1 - upper right, 2 - lower left, 3 - lower right";
extern int     XMargin=7;
extern int     YMargin=12;
extern string  _2="// --- Font settings ---";
extern string  Font="Arial";
extern color   Color=Blue;
extern int     Size=10;
//+------------------------------------------------------------------+
//| Глобальные переменные                                            |
//+------------------------------------------------------------------+
int init()
  {
//+------------------------------------------------------------------+
//| Индикаторы                                                       |
//+------------------------------------------------------------------+
   ObjectCreate("HIGH",OBJ_HLINE,0,0,Bid);
   ObjectCreate("LOW",OBJ_HLINE,0,0,Ask);
//---
   ObjectSet("HIGH",6,Blue); ObjectSet("Label",8,2);
   ObjectSet("LOW",6,Blue); ObjectSet("Label",8,2);
   ObjectSet("HIGH",15,OBJ_PERIOD_W1+OBJ_PERIOD_D1+OBJ_PERIOD_H4+OBJ_PERIOD_H1+OBJ_PERIOD_M30+OBJ_PERIOD_M15+OBJ_PERIOD_M5+OBJ_PERIOD_M1);
   ObjectSet("LOW",15,OBJ_PERIOD_W1+OBJ_PERIOD_D1+OBJ_PERIOD_H4+OBJ_PERIOD_H1+OBJ_PERIOD_M30+OBJ_PERIOD_M15+OBJ_PERIOD_M5+OBJ_PERIOD_M1);
   WindowRedraw();
//---
   if((Corner==1 || Corner==3) && XMargin<1) XMargin=1;
   if(XMargin<0) XMargin=0;
//---
   if(Corner>1 && YMargin<1) YMargin=1;
   if(YMargin<0) YMargin=0;
//---
   ObjectCreate("spread",OBJ_LABEL,0,0,0);
   ObjectSet("spread",OBJPROP_CORNER,Corner);
   ObjectSet("spread",OBJPROP_XDISTANCE,XMargin);
   ObjectSet("spread",OBJPROP_YDISTANCE,YMargin);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
   ObjectDelete("HIGH");
   ObjectDelete("LOW");
   ObjectDelete("spread");
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int    counted_bars=IndicatorCounted();
//----
   ObjectSet("HIGH",1,Ask);
   ObjectSet("LOW",1,Bid-(Ask-Bid));
   WindowRedraw();
   ObjectSetText("spread","spread = "+DoubleToStr(MarketInfo(Symbol(),MODE_SPREAD),1),Size,Font,Color);
//----
   return(0);
  }
//+------------------------------------------------------------------+
