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