//+------------------------------------------------------------------+
//| PROvidets.mq4 |
//| budimir |
//| tartar27@bigmir.net |
//+------------------------------------------------------------------+
#property copyright "budimir"
#property link "tartar27@bigmir.net"
#property show_inputs
//oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
extern int Count_bars=12;
extern int Year_PRO=2009;
extern int Month_PRO=3;
extern int Day_PRO=3;
extern int Hour_PRO=3;
//ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
string ss="Incorrect data input !",
st="Not that timeframe !",
sz="?",
sp=" ___:___ ";
int i,z,num,x;
//+------------------------------------------------------------------+
//| script program start function |
//+------------------------------------------------------------------+
int start()
{
//----
if(Period()== 60) sz="H1";
if(Period()==240) sz="H4";
if (sz=="?") { Alert(st);
return (0);
}
bool hour_correct=false;
if(Period()== 60 && Hour_PRO>-1 && Hour_PRO <24) hour_correct=true;
if(Period()==240 && Hour_PRO>-1 && Hour_PRO < 6) hour_correct=true;
//ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
if( Year_PRO <1970 || Year_PRO >2037 ||
Month_PRO <1 || Month_PRO >12 ||
Day_PRO <1 || Day_PRO >31 ||
Hour_PRO <0 || Hour_PRO >23 ||
Count_bars<3 )
{ Alert(ss);
return (0);
}
//ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
bool correct=false; if (Period()== 60) {x=1;} else { x=4;}
for(i=Bars;i>=1;i--) {
if( Year_PRO== TimeYear (Time[i]) &&
Month_PRO== TimeMonth(Time[i]) &&
Day_PRO== TimeDay (Time[i]) &&
Hour_PRO*x== TimeHour (Time[i]) &&
hour_correct &&
Count_bars<=i)
{ correct=true;num=i;
}
if (correct) break;
} // -----end_for------
//oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
if (!correct) { Alert(ss);
return (0);
}
//ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
double s1=0,s2=0,a1=0,a2=0,b1=0,b2= Count_bars;
for ( z=1; z<=b2; z++) { s1=s1+Close[num+1-z]*z;
s2=s2+Close[num+1-z];
a1=a1+z*z;
a2=a2+z;
}
b1=a2; double dif=Op(a1,b1,a2,b2);
//oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
Alert(sp+Symbol()+sp+sz+sp+Bars+sp+"a="+
DoubleToStr(Op(s1,b1,s2,b2)/dif,8)+sp+"b="+DoubleToStr(Op(a1,s1,a2,s2)/dif,4)+sp);
//ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
//----
return(0);
}
//oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
double Op( double c1,double d1,double c2,double d2) { return (c1*d2-c2*d1);}
Comments