Miscellaneous
Implements a curve of type %1
0 Views
0 Downloads
0 Favorites
Time_Jerk
//gumgum@live.ru))
#property  indicator_separate_window
#property  indicator_buffers 4
#property  indicator_color1 SteelBlue 
#property  indicator_color2 FireBrick 
#property  indicator_color3 MediumVioletRed 
#property  indicator_color4 MediumVioletRed 

extern int window =30;
extern double Delay=10;
extern color Background=LightGray;
extern color ZeroLine=Gray;

double UP[];
double DN[];
double JUP[];
double JDN[];
double preBUF[1];
double ppreBUF[1];
double pjBUF[1];
double jBUF[1];
int max;
double TB=0;
double CB=0;
string w;
string name;
bool str=true;
double tTi;
int init()
{
////////////
ArrayResize(preBUF,window+10);
ArrayResize(ppreBUF,window+10);
ArrayResize(pjBUF,window+10);
ArrayResize(jBUF,window+10);
SetIndexStyle(0,DRAW_HISTOGRAM,0,0);  
SetIndexBuffer(0, UP);
SetIndexStyle(1,DRAW_HISTOGRAM,0,0);  
SetIndexBuffer(1, DN);
SetIndexStyle(2,DRAW_SECTION,0,0);  
SetIndexBuffer(2, JDN);
SetIndexStyle(3,DRAW_SECTION,0,0);  
SetIndexBuffer(3, JUP);
max=Delay*2.;
TB=GetTickCount();  
CB=Close[0];
w="Time Jerk";
IndicatorShortName(w);
name=DoubleToStr(GetTickCount(),8);
////////////
  return(0);
}

int deinit()
{
////////////
   ObjectDelete("SQobjRECT"+name);
   for(int re=0;re<=2*MathFloor(Delay);re++)
   {
   ObjectDelete("SQobjRECT1"+name+DoubleToStr(Delay-re,3));
   }
////////////
  return(0);
}

int start()
  {
////////////
if(str==true){create();}
ObjectMove("SQobjRECT"+name,0,Time[window],-max);
ObjectMove("SQobjRECT"+name,1,Time[0]+(Time[0]-Time[1]),max);
for(int re=0;re<=2*MathFloor(Delay);re++)
{
 ObjectMove("SQobjRECT1"+name+DoubleToStr(Delay-re,3),0,Time[window],(MathFloor(Delay)-re));
 ObjectMove("SQobjRECT1"+name+DoubleToStr(Delay-re,3),1,Time[0]+(Time[0]-Time[1]),(MathFloor(Delay)-re));
}
WindowRedraw();

if(Close[0]!=CB)
{
////////////
tTi=GetTickCount();
for(int a=0;a<=window-1;a++)
{
ppreBUF[a]=preBUF[a];
pjBUF[a]=jBUF[a];
}
for(a=0;a<=window-2;a++)
{
preBUF[a+1]=ppreBUF[a];
jBUF[a+1]=pjBUF[a];
}
double resize=1;
if(GetTickCount()/1000.!=((tTi-TB)/1000.))
{
jBUF[0]=((tTi-TB)/1000.); 
resize=0;
for(a=0;a<=window-1;a++)
{
double bchek=0;
if(jBUF[a]<Delay){bchek=jBUF[a];}
resize=MathMax(bchek,resize);
}
}

if(Close[0]-CB>0)
{
preBUF[0]=1;
}
else if(Close[0]-CB<0)
{
preBUF[0]=-1;
}


if(((tTi-TB)/1000.)>=Delay)
{
preBUF[0]=0;
}

for(a=0;a<=window+9;a++)
{

JUP[a]=jBUF[a];
JDN[a]=-jBUF[a];
if(jBUF[a]>=Delay)
{
JUP[a]=EMPTY_VALUE;
JDN[a]=EMPTY_VALUE;
}
if(a>window-1)
{
JUP[a]=EMPTY_VALUE;
JDN[a]=EMPTY_VALUE;
}
if(preBUF[a]>0)
{
UP[a]=1*resize;
DN[a]=0;
}
else if(preBUF[a]<0)
{
DN[a]=-1*resize;
UP[a]=0;
}
else if(preBUF[a]==0)
{
DN[a]=0;
UP[a]=0;
}


}
TB=tTi;  
CB=Close[0];
////////////
}
  return(0);
}


void create()
{
////////////
ObjectCreate("SQobjRECT"+name,OBJ_RECTANGLE,WindowFind(w),Time[window],-1.1,Time[0]+(Time[0]-Time[1]),1.1);
ObjectSet("SQobjRECT"+name,OBJPROP_COLOR,Background);
ObjectSet("SQobjRECT"+name,OBJPROP_BACK,1);

for(int re=0;re<=2*MathFloor(Delay);re++)
{
 ObjectCreate("SQobjRECT1"+name+DoubleToStr(Delay-re,3),OBJ_RECTANGLE,WindowFind(w),Time[window],(MathFloor(Delay)-re),Time[0]+(Time[0]-Time[1]),(MathFloor(Delay)-re));
 ObjectSet("SQobjRECT1"+name+DoubleToStr(Delay-re,3),OBJPROP_COLOR,ZeroLine);
 ObjectSet("SQobjRECT1"+name+DoubleToStr(Delay-re,3),OBJPROP_BACK,0);
 if(MathFloor(Delay)-re!=0)
 {
 ObjectSet("SQobjRECT1"+name+DoubleToStr(Delay-re,3),OBJPROP_STYLE,2);
 }
}
WindowRedraw();
str=false;
////////////
}


Comments