Marketvision

Author: Copyright � 2009, MetaQuotes Software Corp.
Marketvision
14 Views
0 Downloads
0 Favorites
Marketvision
//+------------------------------------------------------------------+
//|                                                 Marketvision.mq4 |
//|                      Copyright © 2009, MetaQuotes Software Corp. |
//|                                                       Èìÿ: Ñàøà  |
//|                                mailto: marketadviser@rambler.ru  |
//|                                                                  |
//|   Èíäèêàòîð Marketvision.mq4 èñïîëíåí â îñíîâíîì îêíå ãðàôèêà    |
//| êîòèðîâîê è ìîæåò ïðèìåíÿòüñÿ êàê ñîâåòíèê â òîðãîâëå ðàçëè÷íûìè |
//| ôèíàíñîâûìè èíñòðóìåíòàìè. Äëÿ èñïîëüçîâàíèÿ èíäèêàòîðà          |
//| íåîáõîäèìî ñêîïèðîâàòü Marketvision.mq4 â êàòàëîã                |
//| C:\Program Files\ - Òåðìèíàë - \experts\indicators\              |
//| Òåõíè÷åñêèé àíàëèç êóðñà âàëþòíûõ ïàð âûïîëíÿåòñÿ ïî ñðåäñòâàì   |
//| ôóíäàìåíòàëüíîé ñòàòèñòèêè. Íà ðÿäó ñ îñíîâíûìè ñòàòèñòè÷åñêèìè  |
//| ïîêàçàòåëÿìè èñïîëüçóþòñÿ ñðåäñòâà êîíòðîëÿ âîëàòèëüíîñòè,       |
//| ìàðêèðîâêè è óâåäîìëåíèÿ ïî ñðåäñòâàì îòïðàâêè ñîîáùåíèÿ íà      |
//| ýëåêòðîííûé àäðåñ. Äëèííà èñõîäíîé âûáîðêè âûáèðàåòñÿ            |
//| ïîëüçîâàòåëåì â ìåíþ «Íàñòðîéêà èíäèêàòîðà» è çàäà¸òñÿ òî÷íîé    |
//| äàòîé è âðåìåíåì, ñ ïðèõîäîì íîâîé êîòèðîâêè öåí äëèííà âûáîðêè  |
//| óâåëè÷èâàåòñÿ. Åñëè âûáèðàåòñÿ ïåðèîä â «Bar» òî äëèííà âûáîðêè  |
//| îñòàåòñÿ íåèçìåííîé. Ïåðèîäè÷íîñòü ðàñ÷¸òà óñòàíàâëèâàåòñÿ â     |
//| òèêàõ, ãäå êàæäûé òèê ýòî íîâàÿ ïîñòóïèâøàÿ öåíà èíñòðóìåíòà, ïðè|
//| äîñòèæåíèè êîòîðîé ñ÷¸ò÷èê ñáðàñûâàåòñÿ, ñîõðàíÿÿ ðàññ÷èòàííûå   |
//| ïîêàçàòåëè â ôàéëå:                                              |
//| C:\Program Files\ Òåðìèíàë \experts\files\File Statistica.csv.   |
//| Åñëè âûïîëíÿåòñÿ óñëîâèå è âîëàòèëüíîñòü «Bara» ïðåâûøàåò        |
//| äîïóñòèìûå íîðìû, âûïîëíÿåòñÿ ìàðêèðîâêà áàðà è îòïðàâêà         |
//| óâåäîìëåíèÿ íà ýëåêòðîííûé àäðåñ.                                |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2009, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

#property indicator_chart_window


// Ââîä ïåðâîíà÷àëüíûõ äàííûõ.
   extern int ExBar=60;                        // Âûáîðêà â áàðàõ.
   extern string ExTime="2009.09.14 00:00";    // Âûáîðêà ïî âðåìåíè, åñëè ExBar=0.
   extern int ExTic=1200;                      // Âðåìÿ ïåðåðàñ÷¸òà ñòàòèñòèêè, â òèêàõ.
   extern int ExPoint=6;                       // Ìàðêåð âàëàòèëüíîñòè â ïóíêòàõ.
   extern bool ExSanction=false;               // Ðàçðåøèòü/Çàïðåòèòü îòïðàâêó íà ïî÷òîâûé ÿùèê (ïðîãðàììà, íàñòðîéêè, ïî÷òà).

// Îòñëåæèâàåìûå âàëþòíûå ïàðû.
   string Trac[]={"EURUSD","AUDCAD","AUDCHF","AUDJPY","AUDUSD","CADCHF","GOLD"};

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
   int init()
   {
    return(0);
   }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
   int deinit()
   {
    ObjectsDeleteAll();
   }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
   int start()
   {
    static int Tic;
    double SymPoint,Beg,End,Total;
// Îïðåäåëåíèå ïóíêòà âàëþòíîé êîòèðîâêè.
        if(SymPoint==0)
        SymPoint=MarketInfo(Symbol(),MODE_POINT);
// Ïîèñê áàðà.
        if(ExBar==0) 
        Beg=iBarShift(NULL,0,iTime(NULL,0,iBarShift(NULL,0,StrToTime(ExTime))));
        else
        Beg=ExBar;
// Îïðåäåëåíèå íà÷àëüíûõ è êîíå÷íûõ òî÷åê, äëèííû âûáîðêè.
        if(Period()==1)
        {
         End=1;
         Total=Beg;
        }
        else
        {
         End=0;
         Total=Beg+1;
        }
// Èíäèêàòîð ïåðåðàñ÷¸òà ñòàòèñòèêè, â òèêàõ.
        Tic++; 
        Indexing(Tic);
// Ìàðêèðîâêà ãðàôèêà ïî óñëîâèþ âîëàòèëüíîñòè.
        Marker(SymPoint,Beg,End,ExPoint,ExSanction);  
// Èíäèêàòîð êîòèðîâîê.
        News(Trac,Beg,End);
// Óñëîâèå è ðàñ÷¸ò ñòàòèñòèêè.
        if(Tic==ExTic)
        Tic=1;
        if(Tic==1)
        Statistica(Beg,End,Total,ExSanction);
   }    
//+------------------------------------------------------------------+
//| Ñ÷¸ò÷èê ïðèõîäÿùèõ êîòèðîâîê.                                    |
//+------------------------------------------------------------------+
   void Indexing(int Tic)
   {
        ObjectCreate("Tic",OBJ_LABEL,0,0,0,0,0);
       ObjectSetText("Tic",DoubleToStr(Tic,0),8,"Times New Roman",Red);
           ObjectSet("Tic",OBJPROP_CORNER,3);
           ObjectSet("Tic",OBJPROP_XDISTANCE,10);
           ObjectSet("Tic",OBJPROP_YDISTANCE,5);
   }
//+------------------------------------------------------------------+
//| Ðàñ÷¸ò ñòàòèñòè÷åñêèõ ïîêàçàòåëåé                                |
//+------------------------------------------------------------------+
   void Statistica(double Beg,double End,double Total,bool ExSanction)
   {
    int SC11,i;
    double Min,Max,Stdev,Var,Slop,intercept,Regress,Stderr,Er,Corr,Corr2,Cvar,Kurt,Skew;
    double SC1,SC2,SC3,SC4,SC5,SC6,SC7,SC8,SC9; 
    string SC10; 
    datetime SC12,SC13,SC14,SC17;
// Ðàñ÷¸ò ñêîëüçÿùåãî ñðåäíåãî, ìàêñèìóìà è ìèíèìóìà.
        for(i=Beg;i>=End;i--)
        {
         SC2=iMA(NULL,0,Beg,0,MODE_SMA,PRICE_MEDIAN,End);
         SC1+=i/Total;
         Min=Low[iLowest(0,0,MODE_LOW,Beg,End)];
         Max=High[iHighest(0,0,MODE_HIGH,Beg,End)];
        }
// Ðàñ÷¸ò ñðåäíåêâàäðàòè÷íîãî îòêëîíåíèÿ, äèñïåðñèè.
        for(i=Beg;i>=End;i--)
        {
         SC3+=MathPow(((iHigh(NULL,0,i)+iLow(NULL,0,i))/2)-SC2,2);
         SC4+=MathPow(i-SC1,2);
         Stdev=MathSqrt(SC3/(Total-1));
         Var=SC3/(Total-1);
        }
// Ðàñ÷¸ò êîýôôèöèåíòîâ óðàâíåíèÿ ðåãðåññèè.  
        for(i=Beg;i>=End;i--)
        {
         SC5+=(((iHigh(NULL,0,i)+iLow(NULL,0,i))/2)-SC2)*(i- SC1);
         Slop=SC5/SC4; 
         intercept=SC2-Slop*SC1;
        }
// Ðàñ÷¸ò ðåãðåññèè, àïïðîêñèìàöèè, ñòàíäàðòíîé îøèáêè óðàâíåíèÿ ðåãðåññèè. 
        for(i=Beg;i>=End;i--)
        {
         Regress=intercept+Slop*(i);
         Stderr=MathSqrt((SC3-(MathPow(SC5,2)/SC4))*(1/(Total-2)));
         Er+=(MathAbs(((iHigh(NULL,0,i)+iLow(NULL,0,i))/2)-Regress)/((iHigh(NULL,0,i)+iLow(NULL,0,i))/2))*(1/Total)*100;
        } 
// Ðàñ÷åò êîððåëÿöèè, êîâàðèàöèè, àñèììåòðèè, ýêñöåññà.
        for(i=Beg;i>=End;i--)
        {
         Corr=SC5/(MathSqrt(SC4*SC3));
         Corr2=MathPow(Corr,2);
         Cvar+=((i-SC1)*(((iHigh(NULL,0,i)+iLow(NULL,0,i))/2)-SC2)*1/Total);
         SC6+=MathPow((((iHigh(NULL,0,i)+iLow(NULL,0,i))/2)-SC2)/Stdev,4);
         Kurt=((Total*(Total+1))/((Total-1)*(Total-2)*(Total-3)))*SC6-((3*MathPow(Total-1,2))/((Total-2)*(Total-3)));
         SC7+=MathPow((((iHigh(NULL,0,i)+iLow(NULL,0,i))/2)-SC2)/Stdev,3);
         Skew=(Total/((Total-1)*(Total-2)))*SC7;
        }
// Ðàñ÷åò êîîðäèíàò ðåãðåññèè.
        SC9=intercept+Slop*(Beg);
        SC8=intercept+Slop*(End);
// Êîîðäèíàòû ñðåäíåé àðèôìåòè÷åñêîé ëèíèè.
        SC12=iTime(NULL,0,Beg);
        SC13=iTime(NULL,0,End);
// Ãðàôèê ëèíåéíîé ðåãðåññèè.
        ObjectCreate("LR",OBJ_TREND,0,SC12,SC9,SC13,SC8);
        ObjectSet("LR",OBJPROP_COLOR,Blue);
// Ãðàôèê ñðåäíåé àðèôìåòè÷åñêîé ëèíèè.
        ObjectCreate("AVG",OBJ_TREND,0,SC12,SC2,SC13,SC2);
        ObjectSet("AVG",OBJPROP_RAY,false); 
        ObjectSet("AVG",OBJPROP_COLOR,Red);
// Òàáëèöà ñòàòèñòèêè.
        SC10=StringConcatenate("Name ",Symbol(),"\n",
             "Time A ",TimeToStr(SC13),"\n",
             "Time B ",TimeToStr(SC12),"\n",
             "Bar = ",Total,"\n",
             "----------------------- ","\n",
             "Min = ",DoubleToStr(NormalizeDouble(Min,4),4),"\n",
             "Mean = ",DoubleToStr(NormalizeDouble(SC2,4),4),"\n",
             "Max = ",DoubleToStr(NormalizeDouble(Max,4),4),"\n",
             "Slop = ",DoubleToStr(NormalizeDouble(Slop,6),6),"\n",
             "Intercept = ",DoubleToStr(NormalizeDouble(intercept,6),6),"\n",  
             "Stderr = ",DoubleToStr(NormalizeDouble(Stderr,6),6),"\n",
             "Er = ",DoubleToStr(NormalizeDouble(Er,6),6),"\n",
             "Stdev = ",DoubleToStr(NormalizeDouble(Stdev,6),6),"\n",
             "Var = ",DoubleToStr(NormalizeDouble(Var,6),6),"\n",
             "Corr = ",DoubleToStr(NormalizeDouble(Corr,6),6),"\n",
             "Corr2 = ",DoubleToStr(NormalizeDouble(Corr2,6),6),"\n",  
             "Cvar = ",DoubleToStr(NormalizeDouble(Cvar,6),6),"\n",
             "Kurt = ",DoubleToStr(NormalizeDouble(Kurt,6),6),"\n",
             "Skew = ",DoubleToStr(NormalizeDouble(Skew,6),6),"\n",
             "R/tA = ",DoubleToStr(NormalizeDouble(SC8,4),4),"\n",
             "R/tB = ",DoubleToStr(NormalizeDouble(SC9,4),4),"\n",
             "R-m = ",DoubleToStr(NormalizeDouble(SC8-SC2,4),4));
// Îòïðàâêà ïî÷òîé.
        if(ExSanction==true)
           SendMail(StringConcatenate("Statistical information"," ",
                    TimeToStr(TimeCurrent(),TIME_DATE)," ",Hour(),"`",Minute()),SC10);
// Çàïèñü ñòàòèñòèêè â ôàèë (C:\Program Files\ - Òåðìèíàë - \experts\files).
        SC11=FileOpen(StringConcatenate("File Statistica"," ",
                      TimeToStr(TimeCurrent(),TIME_DATE)," ",Hour(),"`",Minute(),".csv"),
             FILE_CSV|FILE_WRITE,"\t");
        FileWrite(SC11,SC10);
        FileClose(SC11);
// Ïåðåðèñîâêà êîîðäèíàò ñðåäíåé àðèôìåòè÷åñêîé ëèíèè.
        SC14=ObjectGet("AVG",OBJPROP_TIME2); 
        if(SC14!=SC13)
        {
         ObjectMove("AVG",0,SC12,SC2);
         ObjectMove("AVG",1,SC13,SC2);
         WindowRedraw();
        }
// Ïåðåðèñîâêà êîîðäèíàò ëèíåéíîé ðåãðåññèè.
        SC17=ObjectGet("LR",OBJPROP_TIME2); 
        if(SC17!=SC13)
        {
         ObjectMove("LR",0,SC12,intercept+Slop*(Beg));
         ObjectMove("LR",1,SC13,intercept+Slop*(End));
         WindowRedraw();
        }
   }
//+------------------------------------------------------------------+
//| Ìàðêåð êðèòè÷åñêîé âîëàòèëüíîñòè                                 |
//+------------------------------------------------------------------+
   void Marker(double SymPoint,double Beg,double End,int ExPoint,bool ExSanction)
   {
    color MRc;
    int MR1,MRp,t;
    string MRt,MR2,MR3;
    datetime MRs5,MR4;
    double MRs1,MRs2,MRs3,MRs4;
// Ðàñ÷¸ò êðèòè÷åñêîé âîëàòèëüíîñòè.
        for(t=Beg;t>=End;t--)
        {
         MRs1=iOpen(NULL,0,t);
         MRs2=iClose(NULL,0,t);
         MRs3=iHigh(NULL,0,t);
         MRs4=iLow(NULL,0,t);
         MRs5=iTime(NULL,0,t); 
         MR1=NormalizeDouble((MRs3-MRs4)/SymPoint,8);
// Öâåòíàÿ è òåêñòîâàÿ ìàðêèðîâêà.        
         if(MR1>=ExPoint)
         {
          if(MRs1<MRs2)
          {
           MRc=Red;
           MRt="Up";
           MRp=NormalizeDouble((MRs2-MRs1)/SymPoint,8);
          }
          if(MRs1>MRs2)
          {
           MRc=Blue;
           MRt="Down";
           MRp=NormalizeDouble((MRs2-MRs1)/SymPoint,8);
          }
          if(MRs1==MRs2)
          {
           MRc=Gold;
           MRt="<>";
           MRp=0.0;
          }
          MR2=StringConcatenate(Symbol(),"\n",
              TimeToStr(MRs5),"\n",MRs2,"  ",MRt,"  ",MRp,"\n","High/Low","  ",MR1);
// Ïðîðèñîâêà ìàðêèðîâêè.
          ObjectCreate(MR2,OBJ_TREND,0,MRs5,MRs3,MRs5,MRs4);
             ObjectSet(MR2,OBJPROP_WIDTH,2);
             ObjectSet(MR2,OBJPROP_COLOR,MRc);
             ObjectSet(MR2,OBJPROP_RAY,false);
          if(t==1)
          {
           MR3=TimeToStr(MRs5)+" "+Symbol()+" "+
               DoubleToStr(MRs2,4)+" "+MRt+" "+MRp+" High/Low "+MR1;
// Ðèñóíîê êîíâåðòà íà ãðàôèêå.
               ObjectCreate("Mail",OBJ_ARROW,0,MRs5,MRs4);
                  ObjectSet("Mail",OBJPROP_ARROWCODE,43);
                  ObjectSet("Mail",OBJPROP_COLOR,Gold);
// Ïåðåðèñîâêà êîíâåðòà.
           MR4=ObjectGet("Mail",OBJPROP_TIME1);
           if(MR4!=MRs5)
           {
            ObjectMove("Mail",0,MRs5,MRs4);
            if(ExSanction==true)
            SendMail(MR3,"");
            WindowRedraw();
           }
          }
         }
        }
   }
//+------------------------------------------------------------------+
//| Íàáëþäåíèå çà ñîñòîÿíèåì ðûíêà ôèíàíñîâûõ èíñòðóìåíòîâ           |
//+------------------------------------------------------------------+
   void News(string Trac[],double Beg,double End)
   {
    string NW1;
    double NW2,NW3;
// Óñëîâèå äëÿ ðàñ÷¸òà íàïðàâëåíèÿ äâèæåíèÿ ðûíêà.
        for(int x=0;x<ArraySize(Trac);x++)
        {
         NW1=Trac[x];
         NW2=iClose(NW1,0,End);
         NW3=iMA(NW1,0,Beg,0,0,4,End);
// Ñèìâîëû ôèíàíñîâûõ èíñòðóìåíòîâ íà ãðàôèêå.
         ObjectCreate("Symbol"+x,OBJ_LABEL,0,0,0,0,0);
        ObjectSetText("Symbol"+x,NW1,8,"Times New Roman",SlateGray);
            ObjectSet("Symbol"+x,OBJPROP_CORNER,2);
            ObjectSet("Symbol"+x,OBJPROP_XDISTANCE,x*50+10);
            ObjectSet("Symbol"+x,OBJPROP_YDISTANCE,5);
// Ñèãíàë íàïðàâëåíèÿ äâèæåíèÿ ðûíêà.
         ObjectCreate("Signal"+x,OBJ_LABEL,0,0,0,0,0);
        ObjectSetText("Signal"+x,CharToStr(85),11,"Wingdings",Gold);
            ObjectSet("Signal"+x,OBJPROP_CORNER,2);
            ObjectSet("Signal"+x,OBJPROP_XDISTANCE,x*50+25);
            ObjectSet("Signal"+x,OBJPROP_YDISTANCE,20);
         if(NW2>NW3)
         ObjectSetText("Signal"+x,CharToStr(241),11,"Wingdings",OrangeRed); 
         else 
         ObjectSetText("Signal"+x,CharToStr(242),11,"Wingdings",SlateBlue);
        }
   }
//+------------------------------------------------------------------+

Comments