//+------------------------------------------------------------------+ //| 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); } //+------------------------------------------------------------------+