//+------------------------------------------------------------------+ //| Exp-StatusBar.mq4 | //| Copyright © 2009, expforex | //| http://www.expforex.at.ua | //+------------------------------------------------------------------+ #property copyright "Copyright © 2009, expforex" #property link "http://www.expforex.at.ua" #include #property indicator_separate_window #property indicator_maximum 2.5 #property indicator_minimum 0 #property show_inputs string N; int k; int X=10; int Y=10; int r; extern bool ИнформацияОСчете=true; extern bool ИнформацияОВалютах=true; extern bool ИнформацияПоТФ=true; extern bool ИнформацияПрибыльАрхив=true; extern bool Сессия=true; extern string te="Валюты для статуса:"; extern string val1="EURUSD"; extern string val2="GBPUSD"; extern string val3="USDCHF"; extern string val4="USDJPY"; int wind; int init() { //---- indicators Stamp2(); start(); wind=WindowsTotal(); if (wind==1)wind=2; return(0); } void Stamp2(){ ObjectCreate("Original", OBJ_LABEL, 0, 0, 0); ObjectSetText("Original", " ---http://Expforex.at.ua---", 10, "Arial Bold", Red); ObjectSet("Original", OBJPROP_CORNER, 2); ObjectSet("Original", OBJPROP_XDISTANCE, 200); ObjectSet("Original", OBJPROP_YDISTANCE, 10); } int deinit2(string val222) { ObjectsDeleteAll(1,OBJ_LABEL); ObjectCreate("ma", OBJ_LABEL, wind-1, 0, 0); ObjectSetText("ma", val222, 15 , "Arial", Yellow); ObjectSet("ma", OBJPROP_CORNER, 2); ObjectSet("ma", OBJPROP_XDISTANCE, 200); ObjectSet("ma", OBJPROP_YDISTANCE, 85); ObjectCreate("ma2", OBJ_LABEL, wind-1, 0, 0); ObjectSetText("ma2", "Индикатор Остановлен!!!", 15 , "Arial", Red); ObjectSet("ma2", OBJPROP_CORNER, 2); ObjectSet("ma2", OBJPROP_XDISTANCE, 200); ObjectSet("ma2", OBJPROP_YDISTANCE, 20); ObjectCreate("ma22", OBJ_LABEL, wind-1, 0, 0); ObjectSetText("ma22", "Ошибка в настройках валютных пар", 15 , "Arial", Blue); ObjectSet("ma22", OBJPROP_CORNER, 2); ObjectSet("ma22", OBJPROP_XDISTANCE, 200); ObjectSet("ma22", OBJPROP_YDISTANCE, 120); return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { double a1=MarketInfo(val1, MODE_ASK); double a2=MarketInfo(val2, MODE_ASK); double a3=MarketInfo(val3, MODE_ASK); double a4=MarketInfo(val4, MODE_ASK); if (a1==0) {deinit2("Проверьте наличие символа "+val1+" В панели инструментов.");} if (a2==0) {deinit2("Проверьте наличие символа "+val2+" В панели инструментов.");} if (a3==0) { deinit2("Проверьте наличие символа "+val3+" В панели инструментов.");} if (a4==0) { deinit2("Проверьте наличие символа "+val4+" В панели инструментов.");} int counted_bars=IndicatorCounted(); k=0; ObjectsDeleteAll(1,OBJ_LABEL); ObjectCreate("mail12", OBJ_LABEL, wind-1, 0, 0); ObjectSetText("mail12", "mailto: expforex@meta.ua", 8 , "Arial", Yellow); ObjectSet("mail12", OBJPROP_CORNER, 2); ObjectSet("mail12", OBJPROP_XDISTANCE, 320); ObjectSet("mail12", OBJPROP_YDISTANCE, 85); if (Сессия==true)session(); if (ИнформацияОСчете==true)infoToWindow(); if (ИнформацияПоТФ==true){ drawper(); Status(val1,0); Status(val2,20); Status(val3,40); Status(val4,60); } if(ИнформацияОВалютах==true){ ramka(1,Red); ramka(170,Blue); ramka(340,Indigo); ramka(510,Yellow); ramka(680,Aqua); valutainfo(val1,1); valutainfo(val2,171); valutainfo(val3,342); valutainfo(val4,513); } if (ИнформацияПрибыльАрхив==true){ profvalHistory(val1,0); profvalHistory(val2,20); profvalHistory(val3,40); profvalHistory(val4,60); profval(val1,0); profval(val2,20); profval(val3,40); profval(val4,60); } return(0); } //+------------------------------------------------------------------+ //+----------------------------------------------------------------------------+ //| Автор : Владислав, Expforex http://expforex.at.ua | //+----------------------------------------------------------------------------+ void Stamp(){ ObjectCreate("Original", OBJ_LABEL, 0, 0, 0); ObjectSetText("Original", " ---http://Expforex.at.ua---", 10, "Arial Bold", Red); ObjectSet("Original", OBJPROP_CORNER, 2); ObjectSet("Original", OBJPROP_XDISTANCE, 600); ObjectSet("Original", OBJPROP_YDISTANCE, 200); } //+----------------------------------------------------------------------------+ //| Автор : Владислав, Expforex http://expforex.at.ua | //+----------------------------------------------------------------------------+ void Up(int x, int y,int punkt){ N="Up"+k; string K="с"; string up="("+punkt+")"; ObjectCreate(N+"1", OBJ_LABEL, wind-1, 0, 0); ObjectSetText(N+"1", K, 10, "Wingdings", Green); ObjectSet(N+"1", OBJPROP_CORNER, 2); ObjectSet(N+"1", OBJPROP_XDISTANCE, x); ObjectSet(N+"1", OBJPROP_YDISTANCE, y); ObjectCreate(N, OBJ_LABEL, wind-1, 0, 0); ObjectSetText(N, up, 10, "Arial Bold", Green); ObjectSet(N, OBJPROP_CORNER, 2); ObjectSet(N, OBJPROP_XDISTANCE, x+15); ObjectSet(N, OBJPROP_YDISTANCE, y); N=""; k++; } //+----------------------------------------------------------------------------+ //| Автор : Владислав, Expforex http://expforex.at.ua | //+----------------------------------------------------------------------------+ void Down(int x, int y,int punkt){ N="Down"+k; string K="т"; string down="("+punkt+")"; ObjectCreate(N+"1", OBJ_LABEL, wind-1, 0, 0); ObjectSetText(N+"1", K, 10, "Wingdings", Red); ObjectSet(N+"1", OBJPROP_CORNER, 2); ObjectSet(N+"1", OBJPROP_XDISTANCE, x); ObjectSet(N+"1", OBJPROP_YDISTANCE, y); ObjectCreate(N, OBJ_LABEL, wind-1, 0, 0); ObjectSetText(N, down, 10, "Arial Bold", Red); ObjectSet(N, OBJPROP_CORNER, 2); ObjectSet(N, OBJPROP_XDISTANCE, x+15); ObjectSet(N, OBJPROP_YDISTANCE, y); k++; N=""; } //+----------------------------------------------------------------------------+ //| Автор : Владислав, Expforex http://expforex.at.ua | //+----------------------------------------------------------------------------+ void Valuta(string val, int y, int x){ string K; K="Valuta"+k; string lot="("+DoubleToStr(Lotsumma(val),2)+")"; ObjectCreate(K, OBJ_LABEL, wind-1, 0, 0); ObjectSetText(K, val, 10, "Arial Bold", Red); ObjectSet(K, OBJPROP_CORNER, 2); ObjectSet(K, OBJPROP_XDISTANCE, x); ObjectSet(K, OBJPROP_YDISTANCE, y); if (Lotsumma(val)<0){ ObjectCreate(K+"1", OBJ_LABEL, wind-1, 0, 0); ObjectSetText(K+"1", lot, 10, "Arial Bold", Red); ObjectSet(K+"1", OBJPROP_CORNER, 2); ObjectSet(K+"1", OBJPROP_XDISTANCE, x+60); ObjectSet(K+"1", OBJPROP_YDISTANCE, y); } if (Lotsumma(val)>0){ ObjectCreate(K+"1", OBJ_LABEL, wind-1, 0, 0); ObjectSetText(K+"1", lot, 10, "Arial Bold", Green); ObjectSet(K+"1", OBJPROP_CORNER, 2); ObjectSet(K+"1", OBJPROP_XDISTANCE, x+60); ObjectSet(K+"1", OBJPROP_YDISTANCE, y); } if (Lotsumma(val)==0){ ObjectCreate(K+"1", OBJ_LABEL, wind-1, 0, 0); ObjectSetText(K+"1", lot, 10, "Arial Bold", Blue); ObjectSet(K+"1", OBJPROP_CORNER, 2); ObjectSet(K+"1", OBJPROP_XDISTANCE, x+60); ObjectSet(K+"1", OBJPROP_YDISTANCE, y); } } //+----------------------------------------------------------------------------+ //| Автор : Владислав, Expforex http://expforex.at.ua | //+----------------------------------------------------------------------------+ void unchanged(int x, int y,int punkt){ N="unchanged"+k; string unchanged="ф"; ObjectCreate(N, OBJ_LABEL, wind-1, 0, 0); ObjectSetText(N, unchanged, 13, "Wingdings", Blue); ObjectSet(N, OBJPROP_CORNER, 2); ObjectSet(N, OBJPROP_XDISTANCE, x); ObjectSet(N, OBJPROP_YDISTANCE, y); k++; N=""; } //+----------------------------------------------------------------------------+ //| Автор : Владислав, Expforex http://expforex.at.ua | //+----------------------------------------------------------------------------+ void period(int x,string per){ N="period"+k; string unchanged="UNCHANGED"; ObjectCreate(N, OBJ_LABEL, wind-1, 0, 0); ObjectSetText(N, per, 10, "Arial Bold", Green); ObjectSet(N, OBJPROP_CORNER, 2); ObjectSet(N, OBJPROP_XDISTANCE, x); ObjectSet(N, OBJPROP_YDISTANCE, 100); k++; N=""; } //+----------------------------------------------------------------------------+ //| Автор : Владислав, Expforex http://expforex.at.ua | //+----------------------------------------------------------------------------+ string GetNameTF(int TimeFrame) { if (TimeFrame==0) TimeFrame=Period(); switch (TimeFrame) { case PERIOD_M1: return("M1"); case PERIOD_M5: return("M5"); case PERIOD_M15: return("M15"); case PERIOD_M30: return("M30"); case PERIOD_H1: return("H1"); case PERIOD_H4: return("H4"); case PERIOD_D1: return("Daily"); case PERIOD_W1: return("Weekly"); case PERIOD_MN1: return("Monthly"); default: return("UnknownPeriod"); } } //+----------------------------------------------------------------------------+ //| Автор : Владислав, Expforex http://expforex.at.ua | //+----------------------------------------------------------------------------+ void stat(string valuta,int period, int x, int y){ if (iClose(valuta,period,0)>iOpen(valuta,period,0)){Up(X+x,Y+y,(iClose(valuta,period,0)-iOpen(valuta,period,0))/MarketInfo(valuta,MODE_POINT));} if (iClose(valuta,period,0)10)wq="Unknown"; info("info11", wq,105,198,White); info("info12",AccountNumber(),105,188,White); info("info13",K,105,178,White); info("info18",AccountCurrency(),105,168,White); info("info14",DoubleToStr(AccountBalance(),2),105,158,White); if (AccountBalance()AccountEquity()){info("info15",DoubleToStr(AccountEquity(),2),105,148,Red);} info("info16","1/"+AccountLeverage(),105,138,White); info("info17",DoubleToStr(AccountMargin(),2),105,128,White); info("info711",AccountStopoutLevel( ) +"%",105,118,White); } //----------------------------------------------------------------------------------------- void valutainfo(string val,int x){ info("insfo","Валюта ",x+172,198,White); info("insfo1","Своп Buy ",x+172,188,White); info("insfo2","Своп Sell ",x+172,178,White); info("infso3","Спрэд ",x+172,168,White); info("insfo8","Точность ",x+172,158,White); info("insfo4","Уровень Стопов ",x+172,148,White); info("insfo43","Доступно лотов: ",x+172,138,White); info("insfo43","Пунктов до StopOut ",x+172,128,White); info("insfo1",val,x+272,198,Red); info("insfo11",DoubleToStr(MarketInfo(val,MODE_SWAPLONG),2),x+272,188,White); info("insfo12",DoubleToStr(MarketInfo(val,MODE_SWAPSHORT),2),x+272,178,White); info("insfo13",DoubleToStr(MarketInfo(val,MODE_SPREAD),0),x+272,168,White); info("insfo18",DoubleToStr(MarketInfo(val,MODE_DIGITS),0),x+272,158,White); info("insfo14",DoubleToStr(MarketInfo(val,MODE_STOPLEVEL),0),x+272,148,White); double free; if (MarketInfo(val,MODE_DIGITS)==4)free=AccountFreeMargin()/(MarketInfo(val,MODE_BID)*1000); if (MarketInfo(val,MODE_DIGITS)==5)free=AccountFreeMargin()/(MarketInfo(val,MODE_BID)*10000); if (MarketInfo(val,MODE_DIGITS)==3)free=AccountFreeMargin()/(MarketInfo(val,MODE_BID)*100); if (MarketInfo(val,MODE_DIGITS)==2)free=AccountFreeMargin()/(MarketInfo(val,MODE_BID)*10); info("insfo443",DoubleToStr(free,2),x+272,138,White); double punkttostop=AccountMargin()/100*AccountStopoutLevel( ); double ras4et; if(val=="EURUSD"||val=="GBPUSD")ras4et=AccountEquity()-punkttostop; if(val=="USDCHF"){ras4et=AccountEquity()-punkttostop; ras4et=ras4et*(MarketInfo(val,MODE_BID)/1);} if(val=="USDJPY"){ras4et=AccountEquity()-punkttostop; ras4et=ras4et*(MarketInfo(val,MODE_BID)/100);} info("insfo4423",DoubleToStr(ras4et,0),x+272,128,White); } void ramka(int x, color c){ info("1","|",x,200,c); info("2","|",x,192,c); info("3","|",x,184,c); info("4","|",x,176,c); info("5","|",x,168,c); info("6","|",x,160,c); info("7","|",x,152,c); info("8","|",x,144,c); info("9","|",x,136,c); info("10","|",x,128,c); info("11","|",x,120,c); info("14","___________________________",x+1,209,c); info("15","___________________________",x+1,119,c); info("1a","|",x+160,200,c); info("2a","|",x+160,192,c); info("3a","|",x+160,184,c); info("4a","|",x+160,176,c); info("5a","|",x+160,168,c); info("6a","|",x+160,160,c); info("7a","|",x+160,152,c); info("8a","|",x+160,144,c); info("9a","|",x+160,136,c); info("10a","|",x+160,128,c); info("11a","|",x+160,120,c); } void session() { //------- Внешние параметры индикатора ----------------------------------------+ int NumberOfDays = 5; // Количество дней int AsiaBegin = 1; // Открытие азиатской сессии int AsiaEnd = 10; // Закрытие азиатской сессии color AsiaColor = Yellow; // Цвет азиатской сессии int EurBegin = 7; // Открытие европейской сессии int EurEnd = 16; // Закрытие европейской сессии color EurColor = Red; // Цвет европейской сессии int USABegin = 14; // Открытие американской сессии int USAEnd = 23; // Закрытие американской сессии color USAColor = Blue; // Цвет американской сессии string t1=" Азия "; string t2=" Европа "; string t3=" Америка "; int yy=230; if (ИнформацияОСчете==false&&ИнформацияОВалютах==false)yy=130;else yy=230; ObjectCreate("t1", OBJ_LABEL, wind-1, 0, 0); ObjectSetText("t1", t1, 8, "Arial Bold", AsiaColor); ObjectSet("t1", OBJPROP_CORNER, 2); ObjectSet("t1", OBJPROP_XDISTANCE, 20); ObjectSet("t1", OBJPROP_YDISTANCE, yy); //if (Hour()>=AsiaBegin&&Hour()=EurBegin&&Hour()=USABegin&&Hour()EurBegin&&Hour()USABegin)ObjectSet("t5", OBJPROP_XDISTANCE, 400); ramka2(AsiaColor,EurColor,USAColor); } void ramka2(color AsiaColor,color EurColor, color USAColor ){ int yy=230; if (ИнформацияОСчете==false&&ИнформацияОВалютах==false)yy=130;else yy=230; info("1r","|",18,yy,AsiaColor); info("11r","//////|",0+218,yy,AsiaColor); info("14r","_________________________________",18+1,yy+10,AsiaColor); info("15r","_________________________________",18+1,yy-1,AsiaColor); info("1r","|//////",200,yy,EurColor); info("11r","//////|",200+218,yy,EurColor); info("14r","_________________________________",218+1,yy+10,EurColor); info("15r","_________________________________",218+1,yy-1,EurColor); info("1r","|//////",400,yy,USAColor); info("11r","|",418+198,yy,USAColor); info("14r","_________________________________",418+1,yy+10,USAColor); info("15r","_________________________________",418+1,yy-1,USAColor); } double Lotsumma(string val) { double lot=0; for (int cnt = 1 ; cnt <= OrdersTotal(); cnt++) { OrderSelect(cnt-1,SELECT_BY_POS,MODE_TRADES); if (OrderSymbol()==val){ if (OrderType()==OP_BUY)lot=lot+OrderLots(); if (OrderType()==OP_SELL)lot=lot-OrderLots(); } } return(lot); }