Specification





//+------------------------------------------------------------------+
//|                                                Specification.mq4 |
//|                      Copyright © 2007, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.ru/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2007, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.ru/"

//---- indicator settings
#property  indicator_separate_window


extern color  backColor=White;
extern color  textColor=Black;
extern int fontSize=10;

int Yshift=20;
int Xshift=10;
string objectNameMask="spec";
string shortName;
string accountCompany="";
bool toDeleteObjects=false;

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void DeleteObjects()
   {
//----
   Print("Óäàëÿåì");
   int win = WindowFind(shortName);
   if (win>=0) 
      {
      int deleted=ObjectsDeleteAll(win,OBJ_LABEL);
      if (deleted>0) 
         {
         Print("Óäàëåíî ",deleted," îáúåêòîâ");
         toDeleteObjects=false;
         }
      }
//----
   return;
   }

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int init()
   {
   shortName=AccountCompany()+": "+Symbol();
   IndicatorShortName(shortName);
   }
//+------------------------------------------------------------------+
//| âûâîäèò çíà÷åíèå â ìåòêó                                         |
//+------------------------------------------------------------------+
void SetValue(int line,int column ,string value, int windowHandle)
   {
//----
   string objectName = objectNameMask+"_"+line+"_"+column;
   int objWin = ObjectFind(objectName);
   if (objWin==-1) // òàêîãî îáúåêòà íåò
      {
      ObjectCreate(objectName,OBJ_LABEL,windowHandle,0,0,0);// ñîçäàåì ìåòêó â îêíå íîìåð windowHandle
      ObjectSet(objectName,OBJPROP_CORNER,0);               // êîîðäèíàòû ïðèâÿçûâàåì ê ëåâîìó óãëó
      ObjectSet(objectName,OBJPROP_XDISTANCE,Xshift+column*200);      // îòñòóï ïî âåðòèêàëè â ïèêñåëàõ
      ObjectSet(objectName,OBJPROP_YDISTANCE,Yshift+line*20);   // îòñòóï ïî ãîðèçîíòàëè â ïèêñåëàõ
      ObjectSetText(objectName, value, fontSize, "Arial", textColor) ;

      }
   else  // îáúåêò åñòü, ïîñìîòðèì â êàêîì îí îêíå
      {
      if (objWin==windowHandle) return;
      else // îáúåêò íå â òîì îêíå, óäàëèì åãî
         {
         ObjectDelete(objectName);
         }
      }         
//----
   return;
   }
//+------------------------------------------------------------------+
//| ãîòîâèò ìàññèâ ñ èíôîðìàöèåé                                     |
//+------------------------------------------------------------------+
void PrepareInfo(string & array[][])
   {
//----
   ArrayResize(array,21);
/*
MODE_POINT 11 Ðàçìåð ïóíêòà â âàëþòå êîòèðîâêè. Äëÿ òåêóùåãî èíñòðóìåíòà õðàíèòñÿ â ïðåäîïðåäåëåííîé ïåðåìåííîé Point 
MODE_DIGITS 12 Êîëè÷åñòâî öèôð ïîñëå äåñÿòè÷íîãî òî÷êè â öåíå èíñòðóìåíòà. Äëÿ òåêóùåãî èíñòðóìåíòà õðàíèòñÿ â ïðåäîïðåäåëåííîé ïåðåìåííîé Digits 
MODE_SPREAD 13 Ñïðýä â ïóíêòàõ 
MODE_STOPLEVEL 14 Ìèíèìàëüíî äîïóñòèìûé óðîâåíü ñòîï-ëîññà/òåéê-ïðîôèòà â ïóíêòàõ 
MODE_LOTSIZE 15 Ðàçìåð êîíòðàêòà â áàçîâîé âàëþòå èíñòðóìåíòà 
MODE_TICKVALUE 16 Ðàçìåð ìèíèìàëüíîãî èçìåíåíèÿ öåíû èíñòðóìåíòà â âàëþòå äåïîçèòà 
MODE_TICKSIZE 17 Ìèíèìàëüíûé øàã èçìåíåíèÿ öåíû èíñòðóìåíòà â ïóíêòàõ 
MODE_SWAPLONG 18 Ðàçìåð ñâîïà äëÿ äëèííûõ ïîçèöèé 
MODE_SWAPSHORT 19 Ðàçìåð ñâîïà äëÿ êîðîòêèõ ïîçèöèé 
MODE_TRADEALLOWED 22 Ðàçðåøåíèå òîðãîâ ïî óêàçàííîìó èíñòðóìåíòó 
MODE_MINLOT 23 Ìèíèìàëüíûé ðàçìåð ëîòà 
MODE_LOTSTEP 24 Øàã èçìåíåíèÿ ðàçìåðà ëîòà 
MODE_MAXLOT 25 Ìàêñèìàëüíûé ðàçìåð ëîòà 
MODE_SWAPTYPE 26 Ìåòîä âû÷èñëåíèÿ ñâîïîâ. 0 - â ïóíêòàõ; 1 - â áàçîâîé âàëþòå èíñòðóìåíòà; 2 - â ïðîöåíòàõ; 3 - â âàëþòå çàëîãîâûõ ñðåäñòâ. 
MODE_PROFITCALCMODE 27 Ñïîñîá ðàñ÷åòà ïðèáûëè. 0 - Forex; 1 - CFD; 2 - Futures 
MODE_MARGINCALCMODE 28 Ñïîñîá ðàñ÷åòà çàëîãîâûõ ñðåäñòâ. 0 - Forex; 1 - CFD; 2 - Futures; 3 - CFD íà èíäåêñû 
MODE_MARGININIT 29 Íà÷àëüíûå çàëîãîâûå òðåáîâàíèÿ äëÿ 1 ëîòà 
MODE_MARGINMAINTENANCE 30 Ðàçìåð çàëîãîâûõ ñðåäñòâ äëÿ ïîääåðæêè îòêðûòûõ ïîçèöèé â ðàñ÷åòå íà 1 ëîò 
MODE_MARGINHEDGED 31 Ìàðæà, âçèìàåìàÿ ñ ïåðåêðûòûõ ïîçèöèé â ðàñ÷åòå íà 1 ëîò 
MODE_MARGINREQUIRED 32 Ðàçìåð ñâîáîäíûõ ñðåäñòâ, íåîáõîäèìûõ äëÿ îòêðûòèÿ 1 ëîòà íà ïîêóïêó 
MODE_FREEZELEVEL 33 Óðîâåíü çàìîðîçêè îðäåðîâ â ïóíêòàõ. Åñëè öåíà èñïîëíåíèÿ íàõîäèòñÿ â ïðåäåëàõ, îïðåäåëÿåìûõ óðîâíåì çàìîðîçêè, òî îðäåð íå ìîæåò áûòü ìîäèôèöèðîâàí, îòìåíåí èëè çàêðûò. 

*/
   int temp,digits=MarketInfo(Symbol(),MODE_DIGITS);
   
   array[0][0]="MODE_POINT";
   array[0][1]=DoubleToStr(MarketInfo(Symbol(),MODE_POINT),digits);

   array[1][0]="MODE_DIGITS";
   temp=MarketInfo(Symbol(),MODE_DIGITS);
   array[1][1]=temp;

   array[2][0]="MODE_SPREAD";
   temp=MarketInfo(Symbol(),MODE_SPREAD);
   array[2][1]=temp;
   
   array[3][0]="MODE_STOPLEVEL";
   temp=MarketInfo(Symbol(),MODE_STOPLEVEL);
   array[3][1]=temp;

   array[4][0]="MODE_LOTSIZE";
   temp=MarketInfo(Symbol(),MODE_LOTSIZE);
   array[4][1]=temp;

   array[5][0]="MODE_TICKVALUE";
   array[5][1]=DoubleToStr(MarketInfo(Symbol(),MODE_TICKVALUE),digits);

   array[6][0]="MODE_TICKSIZE";
   array[6][1]=MarketInfo(Symbol(),MODE_TICKSIZE);

   array[7][0]="MODE_SWAPLONG";
   array[7][1]=MarketInfo(Symbol(),MODE_SWAPLONG);

   array[8][0]="MODE_SWAPSHORT";
   array[8][1]=MarketInfo(Symbol(),MODE_SWAPSHORT);

   array[9][0]="MODE_TRADEALLOWED";
   temp=MarketInfo(Symbol(),MODE_TRADEALLOWED);
   if (temp==0) array[9][1]="diasbled"; else array[9][1]="allowed";

   array[10][0]="MODE_MINLOT";
   array[10][1]=DoubleToStr(MarketInfo(Symbol(),MODE_MINLOT),digits);

   array[11][0]="MODE_LOTSTEP";
   array[11][1]=DoubleToStr(MarketInfo(Symbol(),MODE_LOTSTEP),digits);

   array[12][0]="MODE_MAXLOT";
   temp=MarketInfo(Symbol(),MODE_MAXLOT);
   array[12][1]=temp;

   array[13][0]="MODE_SWAPTYPE";
   temp=MarketInfo(Symbol(),MODE_SWAPTYPE);
   switch (temp)
      {
      case 0: array[13][1]="points"; break;
      case 1: array[13][1]="base currency"; break;
      case 2: array[13][1]="percent"; break;
      case 3: array[13][1]="margin currency"; break;
      }

   array[14][0]="MODE_PROFITCALCMODE";
   temp=MarketInfo(Symbol(),MODE_PROFITCALCMODE);
   switch (temp)
      {
      case 0: array[14][1]="Forex"; break;
      case 1: array[14][1]="CFD"; break;
      case 2: array[14][1]="Futures"; break;
      }

   array[15][0]="MODE_MARGINCALCMODE";
   temp=MarketInfo(Symbol(),MODE_MARGINCALCMODE);
   switch (temp)
      {
      case 0: array[15][1]="Forex"; break;
      case 1: array[15][1]="CFD"; break;
      case 2: array[15][1]="Futures"; break;
      case 2: array[15][1]="CFD on Index"; break;
      }

   array[16][0]="MODE_MARGININIT";
   array[16][1]=DoubleToStr(MarketInfo(Symbol(),MODE_MARGININIT),2);

   array[17][0]="MODE_MARGINMAINTENANCE";
   array[17][1]=DoubleToStr(MarketInfo(Symbol(),MODE_MARGINMAINTENANCE),2);

   array[18][0]="MODE_MARGINHEDGED";
   array[18][1]=DoubleToStr(MarketInfo(Symbol(),MODE_MARGINHEDGED),2);

   array[19][0]="MODE_MARGINREQUIRED";
   array[19][1]=DoubleToStr(MarketInfo(Symbol(),MODE_MARGINREQUIRED),2);

   array[20][0]="MODE_FREEZELEVEL";
   temp=MarketInfo(Symbol(),MODE_FREEZELEVEL);
   array[20][1]=temp;


//   MarketInfo


//----
   return;   
   }
//+------------------------------------------------------------------+
//|   âûâåñòè â îêíî èíäèêàòîðà                                      |
//+------------------------------------------------------------------+
void Show(string valueArray[][])
   {
   int win = WindowFind(shortName);
   //Print("win=",win);

   if (win==-1) return;
//----
   
   int i,l,size=ArrayRange(valueArray,0);
   int length=ArrayRange(valueArray,1);
   for (i=0;i<size;i++)
      {
      for (l=0;l<length;l++) SetValue(i,l,valueArray[i][l],win);
      }
//----
   return;
   }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void  RefreshAccountInfo()
   {
//----
   static int acc=0;
   if (accountCompany!=AccountCompany()|| acc!=AccountNumber()) 
      {
      //Print("AccountNumber()=",AccountNumber());
      //Print("AccountCompany()=",AccountCompany());
      accountCompany=AccountCompany();
      acc=AccountNumber();
      init();
      DeleteObjects();
      }
//----
   }

//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()
  {
//----
   string specifications[][2];
   RefreshAccountInfo();
   if (toDeleteObjects)
      {
      //Print("toDeleteObjects=",toDeleteObjects);
      toDeleteObjects=false;
      DeleteObjects();
      }
   PrepareInfo(specifications);
   //Print("Ðàçìåð ìàññèâà ñïåöèôèêàöèè ðàâåí ",ArrayRange(specifications,0));
   Show(specifications);
//----
   return(0);
  }
//+------------------------------------------------------------------+



Sample





Analysis



Market Information Used:



Indicator Curves created:


Indicators Used:



Custom Indicators Used:

Order Management characteristics:

Other Features: