Author: trading-go.
Price Data Components
Series array that contains open prices of each bar
0 Views
0 Downloads
0 Favorites
VR---EUR
//+------------------------------------------------------------------+
//|                                                  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);
}

Comments