//+------------------------------------------------------------------+ //| VR---EURUSD.mq4 | //| Copyright 2013, MetaQuotes Software Corp. | //| http://www.trading-go.ru" | //+------------------------------------------------------------------+ #property copyright "trading-go." #property link "http://www.trading-go.ru" extern color COLOR_RECTANGLE = Black ; extern color COLOR_UP = Green ; extern color COLOR_DW = Red ; extern int Masshtab = 3 ; extern int MasshtabAll = 40 ; #property indicator_chart_window int start() { //========================================================================================// // Расчет стартовых координат для основного бокса //========================================================================================// int cor1=iTime(Symbol(),0,WindowFirstVisibleBar()-3); int cor2=iTime(Symbol(),0,WindowFirstVisibleBar()-72); double cor11 = WindowPriceMax()-((WindowPriceMax()-WindowPriceMin())/100); double cor22 = cor11-((WindowPriceMax()-WindowPriceMin())/100); double ras = (WindowPriceMax()-WindowPriceMin())/100*MasshtabAll; //========================================================================================// // Отрисовка основного бокса и его модификация //========================================================================================// ObjectCreate("Rec",OBJ_RECTANGLE,0,cor1,cor11,cor2,cor22); ObjectSet ("Rec",OBJPROP_PRICE1,ObjectGet ("Rec",OBJPROP_PRICE2)-ras ); ObjectSet ("Rec",OBJPROP_BACK,false); ObjectSet ("Rec",OBJPROP_COLOR,COLOR_RECTANGLE); ObjectSet ("Rec",OBJPROP_WIDTH,2); //========================================================================================// // Модификация основного при изменении положения на графике по времени //========================================================================================// int bi1=iBarShift(Symbol(),0,ObjectGet ("Rec",OBJPROP_TIME1)); int bi2=iBarShift(Symbol(),0,ObjectGet ("Rec",OBJPROP_TIME2)); if (bi1-bi2!=69) ObjectSet ("Rec",OBJPROP_TIME2,iTime(Symbol(),0,bi1-69)); //========================================================================================// // Запрос координат основного бокса //========================================================================================// double d.cor1=ObjectGet ("Rec",OBJPROP_PRICE1); double d.cor2=ObjectGet ("Rec",OBJPROP_PRICE2); int i.tim1=ObjectGet ("Rec",OBJPROP_TIME1); int i.tim2=ObjectGet ("Rec",OBJPROP_TIME2); //========================================================================================// // Модификация основного при изменении положения на графике по цене //========================================================================================// if (cor1>i.tim1) { ObjectSet ("Rec",OBJPROP_TIME1,cor1); ObjectSet ("Rec",OBJPROP_TIME2,cor2); } //========================================================================================// // отрисовка центрадьной линии //========================================================================================// ObjectCreate("Line",OBJ_TREND,0,0,0 ); ObjectSet ("Line",OBJPROP_PRICE1,d.cor2+(d.cor1-d.cor2)/2 ); ObjectSet ("Line",OBJPROP_PRICE2,d.cor2+(d.cor1-d.cor2)/2 ); ObjectSet ("Line",OBJPROP_TIME1,i.tim1+60*60*2 ); ObjectSet ("Line",OBJPROP_TIME2,i.tim2-60*60*2 ); ObjectSet ("Line",OBJPROP_COLOR,COLOR_RECTANGLE ); ObjectSet ("Line",OBJPROP_RAY,false ); ObjectSet ("Line",OBJPROP_WIDTH,2 ); //========================================================================================// //Запрос координат центральной линии //========================================================================================// double l.pl = ObjectGet("Line",OBJPROP_PRICE1); double l.pr = ObjectGet("Line",OBJPROP_PRICE2); int l.tl = ObjectGet("Line",OBJPROP_TIME1); int l.tr = ObjectGet("Line",OBJPROP_TIME2); //========================================================================================// //Отрисовка боксов гистограммы валют //========================================================================================// int l.b=iBarShift(Symbol(),0,l.tl); int o = 0 ; for(int i=0;i<=10;i++) { if (i==0) o=5; else o+=6; int l.b3=iTime(Symbol(),0,l.b-o+5); int l.b4=iTime(Symbol(),0,l.b-o); ObjectCreate("Rec"+i,OBJ_RECTANGLE,0,0,0,0,0 ); ObjectSet ("Rec"+i,OBJPROP_PRICE1,l.pl ); ObjectSet ("Rec"+i,OBJPROP_TIME1,l.b3 ); ObjectSet ("Rec"+i,OBJPROP_TIME2,l.b4 ); ObjectSet ("Rec"+i,OBJPROP_BACK,true ); ObjectSet ("Rec"+i,OBJPROP_WIDTH,2 ); } //========================================================================================// //Отрисовка имени основной валюты //========================================================================================// ObjectCreate ("Name1",OBJ_TEXT,0,0,0,0,0 ); ObjectSet ("Name1",OBJPROP_PRICE1,d.cor2+0.0020 ); ObjectSet ("Name1",OBJPROP_TIME1 ,iTime(Symbol(),0,bi1-(bi1-bi2)/2) ); ObjectSetText("Name1", " EUR ", 20, "Times New Roman", COLOR_RECTANGLE); //========================================================================================// //Отрисовка имен валют и их процентов //========================================================================================// for(int x=0;x<=10;x++) { string dd ="EUR"+ val2(x); double pp = (d.cor2-d.cor1)*rez(dd)/Masshtab; ObjectSet ("Rec"+x,OBJPROP_PRICE2,NormalizeDouble(l.pl+pp,Digits) ); int t = ObjectGet("Rec"+x,OBJPROP_TIME1)+60*60*3 ; ObjectCreate ("tet"+x,OBJ_TEXT,0,0,0,0,0 ); ObjectSet ("tet"+x,OBJPROP_PRICE1,d.cor2 ); ObjectSet ("tet"+x,OBJPROP_TIME1,t ); ObjectCreate ("teta"+x,OBJ_TEXT,0,0,0,0,0 ); ObjectSet ("teta"+x,OBJPROP_PRICE1,d.cor2-0.0008); ObjectSet ("teta"+x,OBJPROP_TIME1,t ); //========================================================================================// //Изменение цветов текстов //========================================================================================// if (rez(dd)>0) { ObjectSet ("Rec"+x,OBJPROP_COLOR,COLOR_UP ); ObjectSetText("tet"+x, val2(x), 8, "Times New Roman", COLOR_UP); ObjectSetText("teta"+x, " "+DoubleToStr(rez(dd),2)+" ", 8, "Times New Roman", COLOR_UP); } else { ObjectSet ("Rec"+x,OBJPROP_COLOR,COLOR_DW ); ObjectSetText("tet"+x, val2(x), 8, "Times New Roman", COLOR_DW); ObjectSetText("teta"+x, " "+DoubleToStr(rez(dd),2)+" ", 8, "Times New Roman", COLOR_DW); } } } //========================================================================================// //Список валют //========================================================================================// string val2(int num) { string txt; switch(num) { case 0: txt="USD"; break; case 1: txt="CAD"; break; case 2: txt="GBP"; break; case 3: txt="NOK"; break; case 4: txt="DKK"; break; case 5: txt="SEK"; break; case 6: txt="CHF"; break; case 7: txt="AUD"; break; case 8: txt="JPY"; break; case 9: txt="NZD"; break; case 10: txt="SGD"; break; } return(txt); } //========================================================================================// //Удаление всех обьектов //========================================================================================// int deinit() { ObjectDelete("Rec"); for(int i=0;i<=10;i++) { ObjectDelete("Rec"+i); ObjectDelete("tet"+i); ObjectDelete("teta"+i); } } //========================================================================================// //Расчет процентов //========================================================================================// double rez (string sys) { double price=iOpen(sys,1440,0); double cena =(MarketInfo(sys,MODE_ASK)+MarketInfo(sys,MODE_BID))/2; double itog =cena*100/price-100; return(itog); }