iBrokerInfo_v1.2

Author: Copyright 2014-2017, Nikolaos Pantzos
0 Views
0 Downloads
0 Favorites
iBrokerInfo_v1.2
//===================================================================================================================================================//
#property copyright   "Copyright 2014-2017, Nikolaos Pantzos"
#property link        "https://www.mql5.com/en/users/pannik"
#property version     "1.2"
#property description "iBrokerInfo"
#property strict
//===================================================================================================================================================//
#property indicator_chart_window
//===================================================================================================================================================//
extern int SizeBackground=160;
extern int PositionUpDn=150;
//===================================================================================================================================================//
string SymbolExtension="";
int MYpoint=1;
int CornerLabel=3;
int PositionSpread=20;
int PositionLotStep=20;
int PositionMinLot=20;
int PositionMaxLot=5;
int PositionStopLevel=20;
int DigitLot=2;
int PositionLeverage=20;
int Leverage;
int PositionOrders=33;
long MaximumAcceptedOrders;
long ChartColor;
double MinLot;
double MaxLot;
double LotStep;
double StopLevel;
color InformationsColor;
string BackgroundName;
string MaxOrdersStr;
//===================================================================================================================================================//
int OnInit()
  {
   BackgroundName="Background-"+WindowExpertName();
//---------------------------------------------------------------------
   ChartColor=ChartGetInteger(0,CHART_COLOR_BACKGROUND,0);
   if(ObjectFind(BackgroundName)==-1) ChartBackground(BackgroundName,(color)ChartColor,0,16,SizeBackground,SizeBackground);
//------------------------------------------------------
   if(ChartColor==16777215)
     {
      InformationsColor=clrDodgerBlue;
     }
   else
     {
      InformationsColor=clrLightBlue;
     }
//------------------------------------------------------
   if(StringLen(Symbol())>6) SymbolExtension=StringSubstr(Symbol(),6,0);
   if(MarketInfo("EURUSD"+SymbolExtension,MODE_DIGITS)==5) MYpoint=10;
//------------------------------------------------------
   EventSetMillisecondTimer(10);
//------------------------------------------------------
   return(INIT_SUCCEEDED);
//------------------------------------------------------
  }
//===================================================================================================================================================//
void OnDeinit(const int reason)
  {
//------------------------------------------------------
   ObjectDelete("gmt1");
   ObjectDelete("gmt2");
   ObjectDelete("bro1");
   ObjectDelete("bro2");
   ObjectDelete("Leverage1");
   ObjectDelete("Leverage2");
   ObjectDelete("MaxLot1");
   ObjectDelete("MaxLot2");
   ObjectDelete("MinLot1");
   ObjectDelete("MinLot2");
   ObjectDelete("LotStep1");
   ObjectDelete("LotStep2");
   ObjectDelete("StopLevel1");
   ObjectDelete("StopLevel2");
   ObjectDelete("MaxOrders1");
   ObjectDelete("MaxOrders2");
   ObjectDelete("Spread Monitor1");
   ObjectDelete("Spread Monitor2");
   ObjectDelete(BackgroundName);
//------------------------------------------------------
   EventKillTimer();
//------------------------------------------------------
  }
//===================================================================================================================================================//
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[])
  {
//------------------------------------------------------
   MaximumAcceptedOrders=AccountInfoInteger(ACCOUNT_LIMIT_ORDERS);
   MinLot=MarketInfo(Symbol(),MODE_MINLOT);
   MaxLot=MarketInfo(Symbol(),MODE_MAXLOT);
   LotStep=MarketInfo(Symbol(),MODE_LOTSTEP);
   StopLevel=MarketInfo(Symbol(),MODE_STOPLEVEL)/MYpoint;
   Leverage=AccountLeverage();
//------------------------------------------------------
   if(MaximumAcceptedOrders==0) MaxOrdersStr="Unlim.";
   if(MaximumAcceptedOrders>0) MaxOrdersStr=IntegerToString(MaximumAcceptedOrders);
//------------------------------------------------------
   return(rates_total);
//------------------------------------------------------
  }
//===================================================================================================================================================//
void OnTimer()
  {
//------------------------------------------------------
   if(PositionUpDn<100) PositionUpDn=150;
   int top=PositionUpDn;
//------------------------------------------------------
   string GMTs=TimeToStr(TimeGMT(),TIME_MINUTES);
   string BROKERs=TimeToStr(TimeCurrent(),TIME_MINUTES);
   double Spread=MarketInfo(Symbol(),MODE_SPREAD)/MYpoint;
//------------------------------------------------------
   if(MaxLot>0) PositionMaxLot=38;
   if(MaxLot>9) PositionMaxLot=30;
   if(MaxLot>99) PositionMaxLot=25;
   if(MaxLot>999) PositionMaxLot=18;
   if(MaxLot>9999) PositionMaxLot=10;
   if(MaxLot>99999) PositionMaxLot=2;
   if(MaxLot>999999) PositionMaxLot=-2;
   if(MinLot<0.01) PositionMinLot=10;
   if(StopLevel>=10) PositionStopLevel=12;
   if(Spread>=10) PositionSpread=13;
   if(Leverage>99) PositionLeverage=10;
   if(Leverage>999) PositionLeverage=5;
   if(MaxLot==0.0) PositionMaxLot=38;
   if(MinLot==0.0) PositionMinLot=20;
   if(Leverage==0) PositionLeverage=25;
   if(MaximumAcceptedOrders>0) PositionOrders=33;
   if(MaximumAcceptedOrders==0) PositionOrders=17;
//------------------------------------------------------
   ObjectMakeLabel("gmt1",70,top);
   ObjectMakeLabel("gmt2",23,top);
   ObjectMakeLabel("bro1",70,top-17);
   ObjectMakeLabel("bro2",23,top-17);
   ObjectMakeLabel("MaxOrders1",70,top-34);
   ObjectMakeLabel("MaxOrders2",PositionOrders,top-34);
   ObjectMakeLabel("Leverage1",70,top-51);
   ObjectMakeLabel("Leverage2",PositionLeverage+23,top-51);
   ObjectMakeLabel("MaxLot1",70,top-68);
   ObjectMakeLabel("MaxLot2",PositionMaxLot+10,top-68);
   ObjectMakeLabel("MinLot1",70,top-85);
   ObjectMakeLabel("MinLot2",PositionMinLot+10,top-85);
   ObjectMakeLabel("LotStep1",70,top-102);
   ObjectMakeLabel("LotStep2",PositionLotStep+10,top-102);
   ObjectMakeLabel("StopLevel1",70,top-119);
   ObjectMakeLabel("StopLevel2",PositionStopLevel+10,top-119);
   ObjectMakeLabel("Spread Monitor1",70,top-136);
   ObjectMakeLabel("Spread Monitor2",PositionSpread+10,top-136);
//------------------------------------------------------
   ObjectSetText("gmt1","GMTtime:",10,"Arial",InformationsColor);
   ObjectSetText("gmt2",GMTs,10,"Arial",clrOrangeRed);
   ObjectSetText("bro1","BROKERtime:",10,"Arial",InformationsColor);
   ObjectSetText("bro2",BROKERs,10,"Arial",clrOrangeRed);
   ObjectSetText("MaxOrders1","MaxOrders:",10,"Arial",InformationsColor);
   ObjectSetText("MaxOrders2",MaxOrdersStr,10,"Arial",clrOrange);
   ObjectSetText("Leverage1","Leverage:",10,"Arial",InformationsColor);
   ObjectSetText("Leverage2",DoubleToStr(Leverage,0),10,"Arial",clrOrange);
   ObjectSetText("MaxLot1","MaximumLot:",10,"Arial",InformationsColor);
   ObjectSetText("MaxLot2",DoubleToStr(MaxLot,0),10,"Arial",clrOrange);
   ObjectSetText("MinLot1","MinimumLot:",10,"Arial",InformationsColor);
   ObjectSetText("MinLot2",DoubleToStr(MinLot,2),10,"Arial",clrOrange);
   ObjectSetText("LotStep1","LotStep:",10,"Arial",InformationsColor);
   ObjectSetText("LotStep2",DoubleToStr(LotStep,2),10,"Arial",clrOrange);
   ObjectSetText("StopLevel1","StopLevel:",10,"Arial",InformationsColor);
   ObjectSetText("StopLevel2",DoubleToStr(StopLevel,2),10,"Arial",clrOrange);
   ObjectSetText("Spread Monitor1","SpreadPips:",10,"Arial",InformationsColor);
   ObjectSetText("Spread Monitor2",DoubleToStr(Spread,2),10,"Arial",clrRed);
//------------------------------------------------------
  }
//====================================================================================================================================================//
void ChartBackground(string StringName,color ImageColor,int Xposition,int Yposition,int Xsize,int Ysize)
  {
//---------------------------------------------------------------------
   ObjectCreate(0,StringName,OBJ_RECTANGLE_LABEL,0,0,0,0,0);
   ObjectSetInteger(0,StringName,OBJPROP_CORNER,CornerLabel);
   ObjectSetInteger(0,StringName,OBJPROP_XDISTANCE,165);
   ObjectSetInteger(0,StringName,OBJPROP_YDISTANCE,PositionUpDn+18);
   ObjectSetInteger(0,StringName,OBJPROP_XSIZE,Xsize);
   ObjectSetInteger(0,StringName,OBJPROP_YSIZE,Ysize);
   ObjectSetInteger(0,StringName,OBJPROP_BGCOLOR,ImageColor);
   ObjectSetInteger(0,StringName,OBJPROP_BORDER_TYPE,BORDER_FLAT);
   ObjectSetInteger(0,StringName,OBJPROP_BORDER_COLOR,clrBlack);
   ObjectSetInteger(0,StringName,OBJPROP_BACK,false);
   ObjectSetInteger(0,StringName,OBJPROP_SELECTABLE,false);
   ObjectSetInteger(0,StringName,OBJPROP_SELECTED,false);
   ObjectSetInteger(0,StringName,OBJPROP_HIDDEN,true);
   ObjectSetInteger(0,StringName,OBJPROP_ZORDER,0);
//---------------------------------------------------------------------
  }
//===================================================================================================================================================//
int ObjectMakeLabel(string Label,int xoff,int yoff)
  {
//------------------------------------------------------
   ObjectCreate(Label,OBJ_LABEL,0,0,0);
   ObjectSet(Label,OBJPROP_CORNER,CornerLabel);
   ObjectSet(Label,OBJPROP_XDISTANCE,xoff);
   ObjectSet(Label,OBJPROP_YDISTANCE,yoff);
   ObjectSet(Label,OBJPROP_BACK,false);
   ObjectSet(Label,OBJPROP_SELECTABLE,false);
   ObjectSet(Label,OBJPROP_SELECTED,false);
   ObjectSet(Label,OBJPROP_HIDDEN,true);
   ObjectSet(Label,OBJPROP_ZORDER,0);
//------------------------------------------------------
   ObjectsRedraw();
//------------------------------------------------------
   return(0);
//------------------------------------------------------
  }
//===================================================================================================================================================//

Comments