Price Data Components
Indicators Used
Miscellaneous
0
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
Markdown Formatting Guide
# H1
## H2
### H3
**bold text**
*italicized text*
[title](https://www.example.com)

`code`
```
code block
```
> blockquote
- Item 1
- Item 2
1. First item
2. Second item
---