#property copyright "ANG3110@latchess.com" //----------------------------------------- #property show_inputs //-------------------- extern int m = 2; extern double ksq=2; //------------------------------------------ double fx,fx1; double a[10,10],b[10],x[10],sx[20]; double sum,sum1,sq; int p,nn,kt; //--------------------- int i0,ip,pn,i0n,ipn; int t0,tp,te,te1; //---------------------------------------- void init() { //---------------------- p=50; kt=Period()*60; nn=m+1; //---------------------- t0=TimeOnDropped(); i0=iBarShift(Symbol(),Period(),t0); ip=i0+p; tp=Time[ip]; pn=p; //----------------------ar------------------------------ for (int j=-p/2; j<p; j++) { ObjectCreate("ar"+j,2,0,Time[i0+1+j],0,Time[i0+j],0); ObjectSet("ar"+j,OBJPROP_RAY,0); ObjectCreate("arH"+j,2,0,Time[i0+1+j],0,Time[i0+j],0); ObjectSet("arH"+j,OBJPROP_RAY,0); ObjectCreate("arL"+j,2,0,Time[i0+1+j],0,Time[i0+j],0); ObjectSet("arL"+j,OBJPROP_RAY,0); } //----------------------LR------------------------------ ObjectCreate("LR",4,0,Time[ip],0,Time[i0],0); ObjectSet("LR",OBJPROP_COLOR,SkyBlue); ObjectSet("LR",OBJPROP_RAY,1); } //************************************************ int start() { int i,n,k; //---- while(IsStopped()==false) { if (i0n!=i0 || ipn!=ip) { p=ip-i0; i0n=ip; ipn=ip; //-------------------------------------------------------- if (pn<p) { for(int j=pn; j<=p; j++) {ObjectCreate("ar"+j,2,0,Time[i0+1+j],0,Time[i0+j],0); ObjectSet("ar"+j,OBJPROP_RAY,0); ObjectCreate("arH"+j,2,0,Time[i0+1+j],0,Time[i0+j],0); ObjectSet("arH"+j,OBJPROP_RAY,0); ObjectCreate("arL"+j,2,0,Time[i0+1+j],0,Time[i0+j],0); ObjectSet("arL"+j,OBJPROP_RAY,0);} for (j=-pn/2; j>=-p/2; j--) {ObjectCreate("ar"+j,2,0,Time[i0+1+j],0,Time[i0+j],0); ObjectSet("ar"+j,OBJPROP_RAY,0); ObjectCreate("arH"+j,2,0,Time[i0+1+j],0,Time[i0+j],0); ObjectSet("arH"+j,OBJPROP_RAY,0); ObjectCreate("arL"+j,2,0,Time[i0+1+j],0,Time[i0+j],0); ObjectSet("arL"+j,OBJPROP_RAY,0);} pn=p; } if (pn>p) { for(j=pn; j>=p; j--) {ObjectDelete("ar"+j); ObjectDelete("arH"+j); ObjectDelete("arL"+j);} for (j=-p/2; j>=-pn/2; j--){ObjectDelete("ar"+j); ObjectDelete("arH"+j); ObjectDelete("arL"+j);} pn=p; } } //===========================PR============================================================ sx[1]=p+1; //----------------------sx--------------------------------------------------------------- for(i=1; i<=nn*2-2; i++) { sum=0.0; for(n=i0; n<=i0+p; n++) sum+=MathPow(n,i); sx[i+1]=sum; } //----------------------syx--------------------------------------------------------------- for(i=1; i<=nn; i++) { sum=0.0; for(n=i0; n<=i0+p; n++) { if (i==1) sum+=Close[n]; else sum+=Close[n]*MathPow(n,i-1); } b[i]=sum; } //===============Matrix==================================================================================================== for(j=1; j<=nn; j++) { for(i=1; i<=nn; i++) {k=i+j-1; a[i,j]=sx[k];} } //===============Gauss=================================================== af_Gauss(nn,a,b,x); //=======================SQ============================================== sq=0.0; for (n=p; n>=0; n--) { sum=0.0; for(k=1; k<=m; k++) {sum+=x[k+1]*MathPow(i0+n,k); sum1+=x[k+1]*MathPow(i0+n+1,k);} fx=x[1]+sum; sq+=MathPow(Close[n+i0]-fx,2); } sq=ksq*MathSqrt(sq/(p+1)); //======================================================================= for (n=p; n>=-p/2; n--) { sum=0.0; sum1=0.0; for(k=1; k<=m; k++) {sum+=x[k+1]*MathPow(i0+n,k); sum1+=x[k+1]*MathPow(i0+n+1,k);} fx=x[1]+sum; fx1=x[1]+sum1; if (n>=0 && n<p) { ObjectMove("ar"+n,0,Time[n+i0+1],fx1); ObjectMove("ar"+n,1,Time[n+i0],fx); ObjectMove("arH"+n,0,Time[n+i0+1],fx1+sq); ObjectMove("arH"+n,1,Time[n+i0],fx+sq); ObjectMove("arL"+n,0,Time[n+i0+1],fx1-sq); ObjectMove("arL"+n,1,Time[n+i0],fx-sq); if (fx>fx1) {ObjectSet("ar"+n,OBJPROP_COLOR,Lime); ObjectSet("arH"+n,OBJPROP_COLOR,Lime); ObjectSet("arL"+n,OBJPROP_COLOR,Lime);} if (fx<fx1) {ObjectSet("ar"+n,OBJPROP_COLOR,Yellow); ObjectSet("arH"+n,OBJPROP_COLOR,Yellow); ObjectSet("arL"+n,OBJPROP_COLOR,Yellow);} } if (n<0) { if ((n+i0)>=0) { ObjectMove("ar"+n,0,Time[n+i0+1],fx1); ObjectMove("ar"+n,1,Time[n+i0],fx); ObjectMove("arH"+n,0,Time[n+i0+1],fx1+sq); ObjectMove("arH"+n,1,Time[n+i0],fx+sq); ObjectMove("arL"+n,0,Time[n+i0+1],fx1-sq); ObjectMove("arL"+n,1,Time[n+i0],fx-sq); } if ((n+i0)<0) { te=Time[0]-(n+i0)*kt; te1=Time[0]-(n+i0+1)*kt; ObjectMove("ar"+n,0,te1,fx1); ObjectMove("ar"+n,1,te,fx); ObjectMove("arH"+n,0,te1,fx1+sq); ObjectMove("arH"+n,1,te,fx+sq); ObjectMove("arL"+n,0,te1,fx1-sq); ObjectMove("arL"+n,1,te,fx-sq); } if (fx>fx1) {ObjectSet("ar"+n,OBJPROP_COLOR,Blue); ObjectSet("arH"+n,OBJPROP_COLOR,Blue); ObjectSet("arL"+n,OBJPROP_COLOR,Blue);} if (fx<fx1) {ObjectSet("ar"+n,OBJPROP_COLOR,Red); ObjectSet("arH"+n,OBJPROP_COLOR,Red); ObjectSet("arL"+n,OBJPROP_COLOR,Red);} } } //==========================ObjMove=================================== if (fx!=0) { ObjectMove("LR",0,Time[ip],0); ObjectMove("LR",1,Time[i0],0); } //========================Comment===================================== Comment ( "t0 = ",TimeToStr(t0,TIME_DATE|TIME_MINUTES),"\n", "tp = ",TimeToStr(tp,TIME_DATE|TIME_MINUTES),"\n", "2*SQ = ",DoubleToStr(2*sq/Point,1) ); //==================================================================== t0=ObjectGet("LR",OBJPROP_TIME2); if (t0>Time[0]) t0=Time[0]; tp=ObjectGet("LR",OBJPROP_TIME1); if (tp>Time[i0+2]) tp=Time[i0+2]; i0=iBarShift(Symbol(),Period(),t0); ip=iBarShift(Symbol(),Period(),tp); //==================================================================== Sleep(500); }//---while--- //---- return(0); } //************************************************************************ void deinit() { for (int j=p; j>=-p/2; j--) { ObjectDelete("ar"+j); ObjectDelete("arH"+j); ObjectDelete("arL"+j); } ObjectDelete("LR"); Comment(""); } //*************************************************************** void af_Gauss(int n, double& a[][],double& b[], double& x[]) { int i,j,k,l; double q,m,t; for(k=1; k<=n-1; k++) { l=0; m=0; for(i=k; i<=n; i++) { if (MathAbs(a[i,k])>m) {m=MathAbs(a[i,k]); l=i;} } if (l==0) return(0); if (l!=k) { for(j=1; j<=n; j++) { t=a[k,j]; a[k,j]=a[l,j]; a[l,j]=t; } t=b[k]; b[k]=b[l]; b[l]=t; } for(i=k+1;i<=n;i++) { q=a[i,k]/a[k,k]; for(j=1;j<=n;j++) { if (j==k) a[i,j]=0; else a[i,j]=a[i,j]-q*a[k,j]; } b[i]=b[i]-q*b[k]; } } x[n]=b[n]/a[n,n]; for(i=n-1;i>=1;i--) { t=0; for(j=1;j<=n-i;j++) { t=t+a[i,i+j]*x[i+j]; x[i]=(1/a[i,i])*(b[i]-t); } } return; } //**********************************************************************
Sample
Analysis
Market Information Used:
Series array that contains open time of each bar
Series array that contains close prices for each bar
Indicator Curves created:
Indicators Used:
Custom Indicators Used:
Order Management characteristics:
Other Features: