Open_Interest_IndicatorXR_online_beta_V2

Author: Copyright � 2009, Xrust Solution.
Miscellaneous
It issuies visual alerts to the screenUses files from the file systemIt writes information to fileIt reads information from a file
0 Views
0 Downloads
0 Favorites
Open_Interest_IndicatorXR_online_beta_V2
//+------------------------------------------------------------------+
//|                                              +OPTIONS_VOLUME.mq4 |
//|                                Copyright © 2009, Xrust Solution. |
//|                                         http://www.xrust.uco.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2009, Xrust Solution."
#property link      "http://www.xrust.uco.net"
#import "user32.dll"
   int GetWindowDC(int dc);
   int ReleaseDC(int h, int dc);
  bool GetWindowRect(int h, int& pos[4]);
#import
#import "gdi32.dll"
   int GetPixel(int dc, int x, int y);
#import
#import "wininet.dll"
int InternetAttemptConnect (int x);
  int InternetOpenA(string sAgent, int lAccessType, string sProxyName = "", string sProxyBypass = "", int lFlags = 0);
  int InternetOpenUrlA(int hInternetSession, string sUrl, string sHeaders = "", int lHeadersLength = 0,int lFlags = 0, int lContext = 0);
  int InternetReadFile(int hFile, int& sBuffer[], int lNumBytesToRead,int& lNumberOfBytesRead[]);
  int InternetCloseHandle(int hInet);
#import
extern  string      ïðåôèêñ       = "";
extern  string      ñóôôèêñ       = "";
extern  bool     Ïîêàçûâàòü_òåêñò = true;
extern  bool     Ïîêàçûâàòü_ôîíîì = true;
extern  bool     Ëèíèÿ_èëè_Êâàäðàò= false;
extern  int         ðàçìåð_øðèôòà = 14;
extern  string      èìÿ_øðèôòà    = "Arial";
extern  int         Òîëùèíà_ëèíèé = 7;
extern  int      Ñìåùåíèå_â_áàðàõ = 0;
extern  color    Öâåò_ïðåäëîæåíèÿ = Coral;
extern  color    Öâåò_ñïðîñà      = CornflowerBlue;
color    Öâ_ñìåùåíèå ;
double in[15][3];
double hist[1000][61];
double prom[61];
double mno=1;
int Win_color;
int prewtime;
string inetpacth="http://xrust.land.ru//";
string name="";
#property indicator_chart_window
//+------------------------------------------------------------------+
void init(){
int len=0,strlen=0;
if(ïðåôèêñ!=""){len=StringLen(ïðåôèêñ)-1;name=StringSubstr(Symbol(),len,0);}
if(ñóôôèêñ!=""){len=StringLen(ñóôôèêñ);strlen=StringLen(Symbol());name=StringSubstr(Symbol(),0,(strlen-len+1));}
prewtime=0;
IndicatorShortName("Open Interest indicatorXR © ");
return;}
//+------------------------------------------------------------------+
void deinit(){
if(UninitializeReason()==REASON_REMOVE||UninitializeReason()==REASON_CHARTCLOSE){FileDelete(Symbol()+"_OI.csv");delgr();}
return;}
//+------------------------------------------------------------------+
void start(){static int prewmno,bpch;
   int indco=IndicatorCounted();
   if(indco-Bars<-1){return;}
//----
   if(prewtime<TimeCurrent()-1800){
   prewtime=TimeCurrent();
   readinet(name);
   ReadFile();
   }
   if(GetWndColor(Symbol())>0){Öâ_ñìåùåíèå=Blue;color txcol=Black;}else{txcol=White;Öâ_ñìåùåíèå=Green;}
   int b1=5,b2=6;
   if(bpch!=WindowBarsPerChart()){bpch=WindowBarsPerChart();}
   if(bpch>1000){b1=50;b2=150;}
   if(bpch>500&&bpch<1000){b1=23;b2=75;}
   if(bpch>200&&bpch<500){b1=13;b2=38;}
   if(bpch>100&&bpch<220){b1=8;b2=20;}
   if(bpch>50&&bpch<100){b1=5;b2=11;}
   if(bpch<50){b1=3;b2=6;}
   int barst=Time[Ñìåùåíèå_â_áàðàõ]+Period()*b1*60;
   int baren=Time[Ñìåùåíèå_â_áàðàõ]+Period()*b2*60;
   int dl=baren-barst;
   double razn=MathAbs(in[0][1]-in[1][1]);
   double sumbuy,sumsell;
   for(int i=0;i<15;i++){
     double prise=in[i][1];
     int sell= in[i][0];
     int buy = in[i][2];
     if(buy==0){buy=1;}
     if(sell==0){sell=1;}     
     sumbuy=sumbuy+buy;
     sumsell=sumsell+sell;
     double bs  = buy+sell;
     if(bs<1)bs=1;
     double kf  = dl/bs;
     int _sell=kf*sell;
     int _buy=kf*buy;
     if(Ëèíèÿ_èëè_Êâàäðàò){
       if(Ïîêàçûâàòü_òåêñò)SetText("sell",Öâåò_ïðåäëîæåíèÿ,barst,prise,DoubleToStr(sell,0),ðàçìåð_øðèôòà);
       if(sell>0)SetTLine(Öâåò_ïðåäëîæåíèÿ,"sell",barst+_sell,prise,barst,prise," "+sell);
     }else{  
       if(Ïîêàçûâàòü_òåêñò)SetText("sell",Öâåò_ïðåäëîæåíèÿ+Öâ_ñìåùåíèå,barst,prise,DoubleToStr(sell,0),ðàçìåð_øðèôòà);
       SetRestangle(Öâåò_ïðåäëîæåíèÿ,"sell",barst+_sell,prise,barst,prise-razn," "+sell);
     }  
     if(Ëèíèÿ_èëè_Êâàäðàò){
       if(Ïîêàçûâàòü_òåêñò)SetText("buy",Öâåò_ñïðîñà,baren,prise,DoubleToStr(buy,0),ðàçìåð_øðèôòà);
       if(buy>0)SetTLine(Öâåò_ñïðîñà,"buy",baren,prise,baren-_buy,prise,buy);
     }else{  
       if(Ïîêàçûâàòü_òåêñò)SetText("buy",Öâåò_ñïðîñà+Öâ_ñìåùåíèå,baren,prise,DoubleToStr(buy,0),ðàçìåð_øðèôòà);
       SetRestangle(Öâåò_ñïðîñà,"buy",baren,prise,baren-_buy,prise-razn,buy);
     }  
   }  
   string data="Total oi = "+DoubleToStr(sumbuy+sumsell,0)+" oi buy = "+DoubleToStr(sumbuy,0)+" oi sell = "+DoubleToStr(sumsell,0)+"  sell/buy = "+DoubleToStr(sumsell/sumbuy,2);
   string copyrite="Open Interest indicatorXR ©  ";
   SetLabel("Times new roman","cp",copyrite,txcol,1,1,1,9);
   SetLabel(èìÿ_øðèôòà,"oi",data,txcol,1,12,1,ðàçìåð_øðèôòà);
//----
return;}
//+------------------------------------------------------------------+
void readinet(string nm="")
  {if(nm==""){nm=Symbol()+"_OI.csv";}else{nm=nm+"_OI.csv";}
   if(!IsDllsAllowed()){
     Alert("Íåîáõîäèìî â íàñòðîéêàõ ðàçðåøèòü èñïîëüçîâàíèå DLL");
     return(0);
   }
   int rv = InternetAttemptConnect(0);
   if(rv != 0){
     Print("Îøèáêà ïðè âûçîâå InternetAttemptConnect()");
     return(0);
   }
   int hInternetSession = InternetOpenA("Microsoft Internet Explorer",0, "", "", 0);
   if(hInternetSession <= 0){
     Print("Îøèáêà ïðè âûçîâå InternetOpenA()");
     return(0);         
   }
   int hURL = InternetOpenUrlA(hInternetSession,inetpacth+nm, "", 0, 0, 0);
   if(hURL <= 0){
     Print("Îøèáêà ïðè âûçîâå InternetOpenUrlA()");
     InternetCloseHandle(hInternetSession);
     return;
   }      
   int cBuffer[256];
   ArrayInitialize(cBuffer,0);
   int dwBytesRead[1]; 
   ArrayInitialize(dwBytesRead,0);
   string TXT = "";
   while(!IsStopped()){
       bool bResult = InternetReadFile(hURL, cBuffer, 1024, dwBytesRead);
       if(dwBytesRead[0] == 0)break;
       string text = "";   
       for(int i = 0; i < 256; i++){
           text = text + CharToStr(cBuffer[i] & 0x000000FF);
        	  if(StringLen(text) == dwBytesRead[0])break;
        	  text = text + CharToStr(cBuffer[i] >> 8 & 0x000000FF);
        	  if(StringLen(text) == dwBytesRead[0])break;
           text = text + CharToStr(cBuffer[i] >> 16 & 0x000000FF);
           if(StringLen(text) == dwBytesRead[0])break;
           text = text + CharToStr(cBuffer[i] >> 24 & 0x000000FF);
         }
       TXT = TXT + text;
       Sleep(1);
     }
   if(TXT != ""){
       int h = FileOpen(nm, FILE_CSV|FILE_WRITE);
       if(h>0){
           FileWrite(h,TXT);
           FileClose(h);
         }else{
           int err=GetLastError();
           Print("Îøèáêà ïðè âûçîâå FileOpen()  ¹ ",err);
         }
     }else{Print("Íåò ñ÷èòàííûõ äàííûõ");}
   InternetCloseHandle(hInternetSession);
   return;}
//+------------------------------------------------------------------+
int GetWndColor(string sy)
   { 
     int hWnd = WindowHandle(sy, Period());
     int hDC = GetWindowDC(hWnd);
     int rect[4];
     GetWindowRect(hWnd, rect);
     int wW = rect[2] - rect[0];         // øèðèíà îêíà
     int wH = rect[3] - rect[1];         // âûñîòà îêíà
     
     int col = GetPixel(hDC, 2, 2);
     if(col==-1)                         // ëåâûé âåðõíèé óãîë íå âèäåí
     {
       col = GetPixel(hDC, wW-3, wH-3); 
       if(col==-1)                       // ïðàâûé íèæíèé óãîë íå âèäåí
       col = GetPixel(hDC, 2, wH-3); 
       if(col==-1)                       // ëåâûé íèæíèé óãîë íå âèäåí
       col = GetPixel(hDC, wW-3, 2);     
       if(col==-1)                       // ïðàâûé âåðõíèé óãîë íå âèäåí
       {
         ReleaseDC(hWnd, hDC);
         return(Win_color);
       }
      }
     ReleaseDC(hWnd, hDC);
     return(col);
   }
//+------------------------------------------------------------------+
void SetLabel(string fn,string nm, string tx, color cl, int xd, int yd, int cr=0, int fs=9) {
  if (ObjectFind(nm)<0) ObjectCreate(nm, OBJ_LABEL, 0, 0,0);
  ObjectSetText(nm, tx,fs,fn, cl);
  ObjectSet(nm, OBJPROP_COLOR    , cl);
  ObjectSet(nm, OBJPROP_XDISTANCE, xd);
  ObjectSet(nm, OBJPROP_YDISTANCE, yd);
  ObjectSet(nm, OBJPROP_CORNER   , cr);
  ObjectSet(nm, OBJPROP_FONTSIZE , fs);
  ObjectSet(nm, OBJPROP_BACK , false);
}
//+------------------------------------------------------------------+ 
void delgr(){
   for(int i=ObjectsTotal();i>=0;i--){
     if("sumoi"==StringSubstr(ObjectName(i),0,5)){ObjectDelete(ObjectName(i));}
     if("opint"==StringSubstr(ObjectName(i),0,5)){ObjectDelete(ObjectName(i));}
   }
   ObjectDelete("oi");
   ObjectDelete("cp");
return;
}
//+------------------------------------------------------------------+   
void SetText(string op,color cl,int t1,double p1,string tx="",int razm=8){
  string nm="sumoi"+op+DoubleToStr(p1,Digits);
  if(ObjectFind(nm)<0)ObjectCreate(nm, OBJ_TEXT, 0, 0,0, 0,0);
  ObjectSet(nm, OBJPROP_TIME1 , t1);
  ObjectSet(nm, OBJPROP_PRICE1, p1);
  ObjectSetText(nm,tx,razm,èìÿ_øðèôòà,cl);
  ObjectSet(nm, OBJPROP_BACK , Ïîêàçûâàòü_ôîíîì);
return;
}   
//+------------------------------------------------------------------+
void SetTLine(color cl, string nm="",
              datetime t1=0, double p1=0, datetime t2=0, double p2=0,string vol="") {
  nm="opint "+nm+p1;
  if(ObjectFind(nm)<0)ObjectCreate(nm, OBJ_TREND, 0, 0,0, 0,0);
  ObjectSet(nm, OBJPROP_TIME1 , t1);
  ObjectSet(nm, OBJPROP_PRICE1, p1);
  ObjectSet(nm, OBJPROP_TIME2 , t2);
  ObjectSet(nm, OBJPROP_PRICE2, p2);
  ObjectSet(nm, OBJPROP_COLOR , cl);
  ObjectSet(nm, OBJPROP_RAY   , false);
  ObjectSet(nm, OBJPROP_STYLE , 0);
  ObjectSet(nm, OBJPROP_WIDTH , Òîëùèíà_ëèíèé);
  ObjectSetText(nm,vol,3,"Arial",White);
  ObjectSet(nm, OBJPROP_BACK , Ïîêàçûâàòü_ôîíîì);
}
//+------------------------------------------------------------------+
void SetRestangle(color cl, string nm="",datetime t1=0, double p1=0, 
                  datetime t2=0, double p2=0,string vol=""){
  nm="opint "+nm+p1;
  if(ObjectFind(nm)<0)ObjectCreate(nm, OBJ_RECTANGLE, 0, 0,0, 0,0);
  ObjectSet(nm, OBJPROP_TIME1 , t2);
  ObjectSet(nm, OBJPROP_PRICE1, p1);
  ObjectSet(nm, OBJPROP_TIME2 , t1);
  ObjectSet(nm, OBJPROP_PRICE2, p2);
  ObjectSet(nm, OBJPROP_COLOR , cl);
  ObjectSet(nm, OBJPROP_RAY   , false);
  ObjectSet(nm, OBJPROP_STYLE , 0);
  ObjectSet(nm, OBJPROP_WIDTH , Òîëùèíà_ëèíèé);
  ObjectSetText(nm,vol,3,"Arial",White);
  ObjectSet(nm, OBJPROP_BACK , Ïîêàçûâàòü_ôîíîì);
}     
//+------------------------------------------------------------------+  
bool ReadFile(){int i,x,y;int hd;
   string fn=Symbol()+"_OI.csv";
   double spr=MarketInfo(Symbol(),MODE_SPREAD)*Point;  
   hd=FileOpen(fn,FILE_CSV|FILE_READ); 
   if(hd<0){
     Print(GetLastError(),"  ",fn,"  File not found",hd);   
     return(false);
   }else{
   for(i=0;i<50;i++){
     string out=FileReadString(hd);
     for(x=0;x<4;x++){
     int pos=StringFind(out,",",0);
     in[i][x]=StrToDouble(StringSubstr(out,0,pos+1));
     out=StringSubstr(out,pos+1,0);
     }
     if(FileIsEnding(hd)){break;}
   }  
   ArrayResize(in,i);
   FileClose(hd);
   return(true);
   }
   return(true);
}

Comments