The sample size can be changed. I have 8, 12, 18 in use.
My idea of volatility is that it has a direction, a + or a – in front of it.

The dots were an after thought. A play on re-inventing Johannes Cartier’s TPM sneeze.
It is a bit of a challenge combining a histogram with arrow plots when zero is the lit value and EMPTY equals 2147483647 (0x7FFFFFFF). Had to go about it a different way and the displacement may be off depending on resolution / zoom.
#property copyright "Copyright © 2022, Macdulio"
#property link "https://forexfore.blog"
#property description "V1.0"
#property description "Counter Force 52"
#property description "x-sample move maximum."
#property strict
//--- indicator settings
#property indicator_separate_window
#property indicator_buffers 5
#property indicator_color1 clrPink
#property indicator_color2 clrPowderBlue
#property indicator_color3 clrPurple
#property indicator_color4 clrBlue
#property indicator_color5 clrRed
#property indicator_color6 clrDarkKhaki
#property indicator_color7 clrWhite
#property indicator_level1 0
#property indicator_level2 52
#property indicator_level3 -52
#property indicator_levelcolor clrBlue
#property indicator_levelstyle STYLE_DOT
extern double valuetomonitor = 5.5;
extern int lookback = 1000;
extern int indicator_window = 2;
extern int sample = 12;
extern double FSize=32;
double upper[], middle[], lower[];
double avg;
double FMax = FSize*6/5;
double iHi4[];
double iLo4[];
string symbol = Symbol();
double ExtATRBuffer[],ExtATRBuffer2[],ExtATRBuffer3[],ExtATRBuffer4[],ExtATRBuffer5[],stoch60[];
double corr[],corr2[], RSI2[], squeeze[];
int init(){
SetIndexBuffer(0,ExtATRBuffer);
SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_SOLID,4,indicator_color1);
SetIndexBuffer(1,ExtATRBuffer2);
SetIndexStyle(1,DRAW_HISTOGRAM,STYLE_SOLID,4,indicator_color2);
SetIndexBuffer(2,ExtATRBuffer3);
SetIndexStyle(2,DRAW_HISTOGRAM,STYLE_SOLID,4,indicator_color3);
SetIndexBuffer(3,ExtATRBuffer4);
SetIndexStyle(3,DRAW_HISTOGRAM,STYLE_SOLID,4,indicator_color4);
SetIndexBuffer(4,ExtATRBuffer5);
SetIndexStyle(4,DRAW_HISTOGRAM,STYLE_SOLID,4,indicator_color5);
// SetIndexBuffer(5,squeeze);
// SetIndexStyle(5,DRAW_ARROW,EMPTY,18,indicator_color5);
//SetIndexBuffer(1,squeeze);
// SetIndexStyle(1,DRAW_HISTOGRAM,STYLE_SOLID,4,indicator_color5);
// SetIndexArrow(5,100);
// SetIndexEmptyValue(5,0.0);
return(0);
}
//+------------------------------------------------------------------+
//| Average True Range |
//+------------------------------------------------------------------+
int start(){
ArrayResize(ExtATRBuffer, Bars);
ArrayInitialize(ExtATRBuffer, EMPTY_VALUE);
ArrayResize(ExtATRBuffer2, Bars);
ArrayInitialize(ExtATRBuffer2, EMPTY_VALUE);
ArrayResize(ExtATRBuffer3, Bars);
ArrayInitialize(ExtATRBuffer3, EMPTY_VALUE);
ArrayResize(ExtATRBuffer4, Bars);
ArrayInitialize(ExtATRBuffer4, EMPTY_VALUE);
ArrayResize(ExtATRBuffer5, Bars);
ArrayInitialize(ExtATRBuffer5, EMPTY_VALUE);
ArrayResize(iHi4, Bars);
ArrayInitialize(iHi4, EMPTY_VALUE);
ArrayResize(iLo4, Bars);
ArrayInitialize(iLo4, EMPTY_VALUE);
ArrayResize(stoch60, Bars);
ArrayInitialize(stoch60, EMPTY_VALUE);
ArrayResize(RSI2, Bars);
ArrayInitialize(RSI2, EMPTY_VALUE);
ArrayResize(corr, Bars);
ArrayInitialize(corr, EMPTY_VALUE);
ArrayResize(corr2, Bars);
ArrayInitialize(corr2, EMPTY_VALUE);
ArrayResize(middle, Bars);
ArrayInitialize(middle, EMPTY_VALUE);
ArrayResize(squeeze, Bars);
ArrayInitialize(squeeze, 0);
ArrayResize(upper, Bars);
ArrayInitialize(upper, EMPTY_VALUE);
ArrayResize(lower, Bars);
ArrayInitialize(lower, EMPTY_VALUE);
int i,j,k;
for(i=Bars-100; i>=0; i--){
if (Period()==240) iHi4[i]=iMA(NULL,0,52,0,MODE_EMA, PRICE_HIGH,i);
else if (Period()==30) iHi4[i]=iMA(NULL,0,414,0,MODE_EMA, PRICE_HIGH,i);
else if (Period()==60) iHi4[i]=iMA(NULL,0,207,0,MODE_EMA, PRICE_HIGH,i);
if (Period()==240) iLo4[i]=iMA(NULL,0,52,0,MODE_EMA, PRICE_LOW,i);
else if (Period()==30) iLo4[i]=iMA(NULL,0,414,0,MODE_EMA, PRICE_LOW,i);
else if (Period()==60) iLo4[i]=iMA(NULL,0,207,0,MODE_EMA, PRICE_LOW,i);
stoch60[i]=iStochastic(symbol,60,60,3,3,MODE_SMA,0,MODE_SIGNAL,i);
RSI2[i]=iRSI(symbol,0,2,PRICE_MEDIAN,i);
}
deletetxt1("Pepper");
deletetxt1("Panace");
deletetxt1("PLOT");
for(i=lookback; i>=0; i--){
middle[i] = iMA(NULL, 0, 20, 0, MODE_SMA, PRICE_TYPICAL, i);
avg = findAvg(20, i);
upper[i] = middle[i] + avg;
lower[i] = middle[i] - avg;
if (iBands(symbol,0,18,1,0,PRICE_CLOSE,MODE_UPPER,i)<upper[i] && iBands(symbol,0,18,1,0,PRICE_CLOSE,MODE_LOWER,i)>lower[i])
{ ObjectCreate("PLOT"+i,OBJ_TEXT, indicator_window, Time[i], 8.5);
ObjectSetText("PLOT"+i, CharToStr(108), 16, "WingDings", clrDarkBlue);
}
if (iBands(symbol,0,18,1.4,0,PRICE_CLOSE,MODE_UPPER,i)<upper[i] && iBands(symbol,0,18,1.4,0,PRICE_CLOSE,MODE_LOWER,i)>lower[i])
{ ObjectCreate("PLOT"+i,OBJ_TEXT, indicator_window, Time[i], 8.5);
ObjectSetText("PLOT"+i, CharToStr(108), 16, "WingDings", clrRed);
}
if (iBands(symbol,0,18,1.8,0,PRICE_CLOSE,MODE_UPPER,i)<upper[i] && iBands(symbol,0,18,1.8,0,PRICE_CLOSE,MODE_LOWER,i)>lower[i])
{ ObjectCreate("PLOT"+i,OBJ_TEXT, indicator_window, Time[i], 8.5);
ObjectSetText("PLOT"+i, CharToStr(108), 16, "WingDings", clrOrange);
}
ExtATRBuffer[i]= -1*(iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,sample-1,i+1))-Low[i])*10000;
if (ExtATRBuffer[i]<-80) ExtATRBuffer[i]=-80;
ExtATRBuffer2[i]=(High[i]-iLow(symbol,0,iLowest(symbol,0,MODE_LOW,sample-1,i+1)))*10000;
if (ExtATRBuffer2[i]>80) ExtATRBuffer2[i]=80;
if (ExtATRBuffer[i]<-52 && ExtATRBuffer[i]>-58) ExtATRBuffer4[i]=ExtATRBuffer[i];
else if (ExtATRBuffer2[i]>52 && ExtATRBuffer2[i]<58) ExtATRBuffer4[i]=ExtATRBuffer2[i];
if (ExtATRBuffer[i]<-58) ExtATRBuffer3[i]=ExtATRBuffer[i];
else if (ExtATRBuffer2[i]>58) ExtATRBuffer3[i]=ExtATRBuffer2[i];
if (Period()==60){
corr[i]=corr[i+1];
corr2[i]=corr2[i+1];
if (ExtATRBuffer4[i+6]!=EMPTY_VALUE) {corr[i]=iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,60,i))-1360*Point; corr2[i]=iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,60,i))-2100*Point;}
if (ExtATRBuffer5[i+6]!=EMPTY_VALUE) {corr[i]=iLow(symbol,0,iLowest(symbol,0,MODE_LOW,60,i))+1360*Point; corr2[i]=iLow(symbol,0,iLowest(symbol,0,MODE_LOW,60,i))+2100*Point;}
}
}
deletetxt1("AverD");
int twodigits = NormalizeDouble(ExtATRBuffer2[0],0);
if (MathAbs(ExtATRBuffer[0])>ExtATRBuffer2[0]) twodigits = NormalizeDouble(MathAbs(ExtATRBuffer[0]),0);
//string tds = IntegerToString(twodigits);
int tens = round(twodigits/10);
int ones = twodigits-tens*10;
string stens, sones;
//Print("tens=",tens);
//Print("ones=",ones);
switch(tens)
{
case 1: stens=CharToStr(140);
break;
case 2: stens=CharToStr(141);
break;
case 3: stens=CharToStr(142);
break;
case 4: stens=CharToStr(143);
break;
case 5: stens=CharToStr(144);
break;
case 6: stens=CharToStr(145);
break;
case 7: stens=CharToStr(146);
break;
case 8: stens=CharToStr(147);
break;
case 9: stens=CharToStr(148);
break;
default: stens=CharToStr(139);
break;
}
//deletetxt1("AverD");
switch(ones)
{
case 1: sones=CharToStr(140);
break;
case 2: sones=CharToStr(141);
break;
case 3: sones=CharToStr(142);
break;
case 4: sones=CharToStr(143);
break;
case 5: sones=CharToStr(144);
break;
case 6: sones=CharToStr(145);
break;
case 7: sones=CharToStr(146);
break;
case 8: sones=CharToStr(147);
break;
case 9: sones=CharToStr(148);
break;
default: sones=CharToStr(139);
break;
}
string jointstring=stens+sones;
//if (Close[0]>plus[0] && buy[1]) jointstring=jointstring+CharToStr(66);
//else if (Close[0]>plus[0] && sell[1]) jointstring=jointstring+CharToStr(73);
//if (Close[0]<minus[0] && sell[1]) jointstring=jointstring+CharToStr(66);
//else if (Close[0]<minus[0] && buy[1]) jointstring=jointstring+CharToStr(73);
// ObjectCreate("AverD", OBJ_TEXT, indicator_window, Time[16], 1);
//ObjectCreate("AverD",OBJ_LABEL,indicator_window, 0,0);
//ObjectSet("AverD",OBJPROP_CORNER,3);
// ObjectSet("AverD",OBJPROP_XDISTANCE,20);
// ObjectSet("AverD",OBJPROP_YDISTANCE,27);
//ObjectSetText("AverD",jointstring,40,"Wingdings",DimGray);
//if (twodigits>30) ObjectSetText("AverD",jointstring,40,"Wingdings",Yellow);
//if (twodigits>58) ObjectSetText("AverD",jointstring,40,"Wingdings",DeepPink);
deletetxt1("Crush");
deletetxt1("Leap");
deletetxt1("Frog");
deletetxt1("Countess");
deletetxt1("Missing");
deletetxt1("KAROLY");
int counter = 9;
for(i=lookback; i>=0; i--){
if (counter>-1) counter++;
if (( (ExtATRBuffer[i+7]<1.8 && ExtATRBuffer[i+6]<1.8 && ExtATRBuffer[i+5]<1.8 && ExtATRBuffer[i+4]<1.8 && ExtATRBuffer[i+3]<1.8 && ExtATRBuffer[i+2]<1.8 && ExtATRBuffer[i+1]>1.8 && ExtATRBuffer[i]<1.8) ||
(ExtATRBuffer[i+9]>1.1 && ExtATRBuffer[i+8]>1.1 && ExtATRBuffer[i+7]>1.1 && ExtATRBuffer[i+6]>1.1 && ExtATRBuffer[i+5]>1.1 && ExtATRBuffer[i+9]<2.1 && ExtATRBuffer[i+8]<2.1 && ExtATRBuffer[i+7]<2.1 && ExtATRBuffer[i+6]<2.1 && ExtATRBuffer[i+5]<2.1 && ExtATRBuffer[i+4]<2.1 && ExtATRBuffer[i+3]<2.1 && ExtATRBuffer[i+1]>2.1 && ExtATRBuffer[i]<2.1) ||
(ExtATRBuffer[i+9]>1.1 && ExtATRBuffer[i+8]>1.1 && ExtATRBuffer[i+7]>1.1 && ExtATRBuffer[i+6]>1.1 && ExtATRBuffer[i+5]>1.1 && ExtATRBuffer[i+7]<2.4 && ExtATRBuffer[i+5]<2.4 && ExtATRBuffer[i+3]<2.4 && ExtATRBuffer[i+1]>2.4 && ExtATRBuffer[i]<2.4) ||
(ExtATRBuffer[i+5]<3 && ExtATRBuffer[i+3]<3 && ExtATRBuffer[i+1]>3 && ExtATRBuffer[i]<3) || (ExtATRBuffer[i+5]<3.6 && ExtATRBuffer[i+3]<3.6 && ExtATRBuffer[i+1]>3.6 && ExtATRBuffer[i]<3.6) ||
(ExtATRBuffer[i+5]<3.9 && ExtATRBuffer[i+3]<3.9 && ExtATRBuffer[i+1]>3.9 && ExtATRBuffer[i]<3.9) ||
(ExtATRBuffer[i+9]>1.1 && ExtATRBuffer[i+8]>1.1 && ExtATRBuffer[i+7]>1.1 && ExtATRBuffer[i+6]>1.1 && ExtATRBuffer[i+5]>1.1 && ExtATRBuffer[i+7]<valuetomonitor && ExtATRBuffer[i+5]<valuetomonitor && ExtATRBuffer[i+3]<valuetomonitor && ExtATRBuffer[i+1]>valuetomonitor && ExtATRBuffer[i]<valuetomonitor) ||
(ExtATRBuffer[i+3]<4.5 && ExtATRBuffer[i+1]>4.5 && ExtATRBuffer[i]<4.5) || (ExtATRBuffer[i+3]<5 && ExtATRBuffer[i+1]>5 && ExtATRBuffer[i]<5)) && ExtATRBuffer[i]>1.7 ) {
if ((i<80 && Period()==240) || (Period()<240)){
ObjectCreate("Crushi"+i,OBJ_TEXT, indicator_window, Time[i+2], ExtATRBuffer[i]);
ObjectCreate("Crush"+i,OBJ_TEXT, indicator_window, Time[i+2], ExtATRBuffer[i]);
ObjectCreate("Crushy"+i,OBJ_TEXT, indicator_window, Time[i+2], ExtATRBuffer[i]-1);
ObjectCreate("Crushd"+i,OBJ_TEXT, indicator_window, Time[i+2], ExtATRBuffer[i]-1);
if (Close[i]<iLo4[i] ) {ObjectSetText("Crushi"+i, "Vol Crush > ", 21, "Impact", clrWhite); ObjectSetText("Crush"+i, "Vol Crush -> ", 19, "Impact", clrNavy); ObjectSetText("Crushy"+i,DoubleToStr(NormalizeDouble(iHi4[i],4),4), 21, "Impact", clrWhite); ObjectSetText("Crushd"+i, DoubleToStr(NormalizeDouble(iHi4[i],4),4), 19, "Impact", clrNavy); }
else if (Close[i]>iHi4[i] ) { ObjectSetText("Crushi"+i, "Vol Crush > ", 21, "Impact", clrWhite); ObjectSetText("Crush"+i, "Vol Crush -> ", 19, "Impact", clrNavy); ObjectSetText("Crushy"+i, DoubleToStr(NormalizeDouble(iLo4[i],4),4), 21, "Impact", clrWhite); ObjectSetText("Crushd"+i, DoubleToStr(NormalizeDouble(iLo4[i],4),4), 19, "Impact", clrNavy); }
}}
// if (ExtATRBuffer[i]-ExtATRBuffer[i+4]>1 && !(ExtATRBuffer[i+1]-ExtATRBuffer[i+5]>1) && Period()!=240){
// ObjectCreate("Leap"+i,OBJ_TEXT, indicator_window, Time[i], ExtATRBuffer[i]-0.5);
// ObjectSetText("Leap"+i, "+1", 19, "Impact", clrWhite);
// }
// if (ExtATRBuffer[i+4]-ExtATRBuffer[i]>1 && !(ExtATRBuffer[i+5]-ExtATRBuffer[i+1]>1 ) && Period()!=240){
// ObjectCreate("Leap"+i,OBJ_TEXT, indicator_window, Time[i], ExtATRBuffer[i+4]-0.5);
// ObjectSetText("Leap"+i, "-1", 19, "Impact", clrWhite);
// }
// if (Period()==240
//&& ExtATRBuffer[i+4]>ExtATRBuffer[i+3]-1
// && ExtATRBuffer[i+5]<ExtATRBuffer[i+3] && ((ExtATRBuffer[i+6]<ExtATRBuffer[i+3]
// && ExtATRBuffer[i+7]<ExtATRBuffer[i+3] && ExtATRBuffer[i+8]<ExtATRBuffer[i+3]
// ) || (ExtATRBuffer[i+7]==EMPTY_VALUE || ExtATRBuffer[i+6]==EMPTY_VALUE || ExtATRBuffer[i+8]==EMPTY_VALUE ))
//
// && ExtATRBuffer[i+4]<ExtATRBuffer[i+3] && ExtATRBuffer[i+3]>ExtATRBuffer[i+2] && ExtATRBuffer[i+2]>ExtATRBuffer[i+1] && ExtATRBuffer[i+1]>ExtATRBuffer[i] && ExtATRBuffer[i+2]>1 && ExtATRBuffer[i+1]>1 && ExtATRBuffer[i+3]!=EMPTY_VALUE && ExtATRBuffer[i+2]!=EMPTY_VALUE && ExtATRBuffer[i+1]!=EMPTY_VALUE && ExtATRBuffer[i]!=EMPTY_VALUE){
// if (ExtATRBuffer[i+3]-ExtATRBuffer[i]>1.6) { ObjectCreate(0,"Frog"+i,OBJ_TREND,indicator_window,Time[i+3],ExtATRBuffer[i+3]+0.8,Time[i],ExtATRBuffer[i]+0.8); ObjectSet("Frog"+i,OBJPROP_COLOR,indicator_color5);}
// else {ObjectCreate(0,"Frog"+i,OBJ_TREND,indicator_window,Time[i+3],ExtATRBuffer[i+3]+0.2,Time[i],ExtATRBuffer[i]+0.2);
// ObjectSet("Frog"+i,OBJPROP_COLOR,indicator_color4); counter=0;}
// ObjectSetInteger(0,"Frog"+i,OBJPROP_RAY_RIGHT,false);
// ObjectSet("Frog"+i,OBJPROP_WIDTH,8);
// ObjectSet("Frog"+i,OBJPROP_BACK,1);
// }
// else if (Period()==240
// && ExtATRBuffer[i+6]<ExtATRBuffer[i+3]
//&& ExtATRBuffer[i+5]<ExtATRBuffer[i+3]
// && ExtATRBuffer[i+7]<ExtATRBuffer[i+3] && ExtATRBuffer[i+8]<ExtATRBuffer[i+3]
// && ExtATRBuffer[i+4]>ExtATRBuffer[i+1] &&
// ExtATRBuffer[i+2]>ExtATRBuffer[i+1] && ExtATRBuffer[i+1]>ExtATRBuffer[i] && ExtATRBuffer[i+2]>1 && ExtATRBuffer[i+1]>1 && ExtATRBuffer[i+3]!=EMPTY_VALUE && ExtATRBuffer[i+2]!=EMPTY_VALUE && ExtATRBuffer[i+1]!=EMPTY_VALUE && ExtATRBuffer[i]!=EMPTY_VALUE && ExtATRBuffer[i+4]!=EMPTY_VALUE){
// if (ExtATRBuffer[i+4]-ExtATRBuffer[i]>1.5) { ObjectCreate(0,"Frog"+i,OBJ_TREND,indicator_window,Time[i+4],ExtATRBuffer[i+4]+0.8,Time[i],ExtATRBuffer[i]+0.8); ObjectSet("Frog"+i,OBJPROP_COLOR,indicator_color5);}
// else {ObjectCreate(0,"Frog"+i,OBJ_TREND,indicator_window,Time[i+4],ExtATRBuffer[i+4]+0.2,Time[i],ExtATRBuffer[i]+0.2);
// ObjectSet("Frog"+i,OBJPROP_COLOR,indicator_color4); counter=0;}
// ObjectSetInteger(0,"Frog"+i,OBJPROP_RAY_RIGHT,false);
// ObjectSet("Frog"+i,OBJPROP_WIDTH,8);
// ObjectSet("Frog"+i,OBJPROP_BACK,1);
// counter=0;
// }
// else if (Period()==240
//&& ExtATRBuffer[i+4]>ExtATRBuffer[i+3]-1
// && ExtATRBuffer[i]<3.1
//&& ExtATRBuffer[i]>1.6
// && ExtATRBuffer[i+5]<ExtATRBuffer[i+3] && ((ExtATRBuffer[i+6]<ExtATRBuffer[i+3] && ExtATRBuffer[i+7]<ExtATRBuffer[i+3] && ExtATRBuffer[i+8]<ExtATRBuffer[i+3]) || (ExtATRBuffer[i+7]==EMPTY_VALUE || ExtATRBuffer[i+6]==EMPTY_VALUE || ExtATRBuffer[i+8]==EMPTY_VALUE ))
// && ExtATRBuffer[i+2]>ExtATRBuffer[i+1] && ExtATRBuffer[i+1]>ExtATRBuffer[i] && ExtATRBuffer[i+2]>1 && ExtATRBuffer[i+1]>1 && ExtATRBuffer[i+3]!=EMPTY_VALUE && ExtATRBuffer[i+2]!=EMPTY_VALUE && ExtATRBuffer[i+1]!=EMPTY_VALUE && ExtATRBuffer[i]!=EMPTY_VALUE){
// if (ExtATRBuffer[i+2]-ExtATRBuffer[i]>1.8) {ObjectCreate(0,"Frog"+i,OBJ_TREND,indicator_window,Time[i+2],ExtATRBuffer[i+2]+0.8,Time[i],ExtATRBuffer[i]+0.8); ObjectSet("Frog"+i,OBJPROP_COLOR,indicator_color5);}
// else { ObjectCreate(0,"Frog"+i,OBJ_TREND,indicator_window,Time[i+2],ExtATRBuffer[i+2]+0.2,Time[i],ExtATRBuffer[i]+0.2);
// ObjectSet("Frog"+i,OBJPROP_COLOR,indicator_color4); counter=0;}
// ObjectSetInteger(0,"Frog"+i,OBJPROP_RAY_RIGHT,false);
// ObjectSet("Frog"+i,OBJPROP_WIDTH,8);
// ObjectSet("Frog"+i,OBJPROP_BACK,1);
// counter = 0;
// }
if (counter>0 && counter<4){
if (ExtATRBuffer[i]<=2.5 || ExtATRBuffer[i]==EMPTY_VALUE) ObjectCreate("Countess"+i,OBJ_TEXT, indicator_window, Time[i], ExtATRBuffer[i+3]+.25);
else ObjectCreate("Countess"+i,OBJ_TEXT, indicator_window, Time[i], 3.2);
if (counter==3) ObjectSetText("Countess"+i, IntegerToString(counter,1,0), 19, "Arial Black", clrMagenta);
else ObjectSetText("Countess"+i, IntegerToString(counter,1,0), 19, "Arial Black", clrBlack);
}
if (counter==3 && Low[i+3]<iMA(NULL,240,52,0,MODE_EMA, PRICE_MEDIAN,i+3) && ((Low[i]>Low[i+3] && Low[i+1]>Low[i+3] && Low[i+2]>Low[i+3]) || (Low[i]>Low[i+4] && Low[i+1]>Low[i+4] && Low[i+2]>Low[i+4])) ){
//
if (i>1) {
j=i-1;
while (j>0){
if (Low[j]<iLow(symbol,240,iLowest(symbol,240,MODE_LOW,6,i+3))) break;
j--;}
if (j==0) {
ObjectCreate("KAROLY"+DoubleToStr(i), OBJ_RECTANGLE, 0, Time[i+2], iLow(symbol,240,iLowest(symbol,240,MODE_LOW,6,i+3)) , Time[i], iLow(symbol,240,iLowest(symbol,240,MODE_LOW,6,i+3))-FSize/2*10*Point);
ObjectSetInteger(0,"KAROLY"+DoubleToStr(i),OBJPROP_COLOR,indicator_color6);
k=i+3;
while (k<i+40){
if (iFractals(symbol,240,MODE_LOWER,k) && Low[k]<iLow(symbol,240,iLowest(symbol,240,MODE_LOW,3,i))) break;
k++;
}
if (k<i+40){
ObjectCreate("Missingg"+i,OBJ_TEXT, indicator_window, Time[i+3], ExtATRBuffer[i+2]+.5);
ObjectSetText("Missingg"+i, " Missing B: "+DoubleToStr(NormalizeDouble(iLow(symbol,0,iLowest(symbol,0,MODE_LOW,7,i+1)),4),4), 16, "Arial Black", clrWhite);
ObjectCreate("Missing"+i,OBJ_TEXT, indicator_window, Time[i+3], ExtATRBuffer[i+2]+.5);
ObjectSetText("Missing"+i, "Missing B: "+DoubleToStr(NormalizeDouble(iLow(symbol,0,iLowest(symbol,0,MODE_LOW,7,i+1)),4),4), 16, "Arial Black", clrBlack);
ObjectDelete(0,"Trendex3_1"+DoubleToStr(k));
ObjectCreate(0,"Trendex3_1"+DoubleToStr(k),OBJ_TREND,0,Time[k],Low[k],Time[iLowest(symbol,240,MODE_LOW,3,i)],iLow(symbol,240,iLowest(symbol,240,MODE_LOW,3,i)));
ObjectSetInteger(0,"Trendex3_1"+DoubleToStr(k),OBJPROP_RAY_RIGHT,true);
ObjectSet("Trendex3_1"+DoubleToStr(k),OBJPROP_COLOR,indicator_color1);
ObjectSet("Trendex3_1"+DoubleToStr(k),OBJPROP_BACK,1);
ObjectSet("Trendex3_1"+DoubleToStr(k),OBJPROP_WIDTH,6);
ObjectDelete(0,"Trendex3_2"+DoubleToStr(k));
ObjectCreate(0,"Trendex3_2"+DoubleToStr(k),OBJ_TREND,0,Time[k],Low[k],Time[iLowest(symbol,240,MODE_LOW,3,i)],iLow(symbol,240,iLowest(symbol,240,MODE_LOW,3,i)));
ObjectSetInteger(0,"Trendex3_2"+DoubleToStr(k),OBJPROP_RAY_RIGHT,true);
ObjectSet("Trendex3_2"+DoubleToStr(k),OBJPROP_COLOR,indicator_color7);
ObjectSet("Trendex3_2"+DoubleToStr(k),OBJPROP_BACK,1);
ObjectSet("Trendex3_2"+DoubleToStr(k),OBJPROP_WIDTH,3);
}
}
}
}
if (counter==3 && High[i+3]>iMA(NULL,240,52,0,MODE_EMA, PRICE_MEDIAN,i+3) && (( High[i]<High[i+3] && High[i+1]<High[i+3] && High[i+2]<High[i+3]) || (High[i]<High[i+4] && High[i+1]<High[i+4] && High[i+2]<High[i+4])) ){
//
if (i>1) {
j=i-1;
while (j>0){
if (High[j]>iHigh(symbol,240,iHighest(symbol,240,MODE_HIGH,6,i+3))) break;
j--;}
if (j==0) {
ObjectCreate("KAROLY"+DoubleToStr(i), OBJ_RECTANGLE, 0, Time[i+2], iHigh(symbol,240,iHighest(symbol,240,MODE_HIGH,6,i+3)) , Time[i], iHigh(symbol,240,iHighest(symbol,240,MODE_HIGH,6,i+3))+FSize/2*10*Point);
ObjectSetInteger(0,"KAROLY"+DoubleToStr(i),OBJPROP_COLOR,indicator_color6);
k=i+3;
while (k<i+40){
if (iFractals(symbol,240,MODE_UPPER,k) && High[k]>iHigh(symbol,240,iHighest(symbol,240,MODE_HIGH,6,i+3))) break;
k++;
}
if (k<i+40){
ObjectCreate("Missingg"+i,OBJ_TEXT, indicator_window, Time[i+3], ExtATRBuffer[i+2]+.5);
ObjectSetText("Missingg"+i, " Missing B: "+DoubleToStr(NormalizeDouble(iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,7,i+1)),4),4), 16, "Arial Black", clrWhite);
ObjectCreate("Missing"+i,OBJ_TEXT, indicator_window, Time[i+3], ExtATRBuffer[i+2]+.5);
ObjectSetText("Missing"+i, "Missing B: "+DoubleToStr(NormalizeDouble(iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,7,i+1)),4),4), 16, "Arial Black", clrBlack);
ObjectDelete(0,"Trendex3_1"+DoubleToStr(k));
ObjectCreate(0,"Trendex3_1"+DoubleToStr(k),OBJ_TREND,0,Time[k],Low[k],Time[iHighest(symbol,240,MODE_HIGH,3,i)],iHigh(symbol,240,iHighest(symbol,240,MODE_HIGH,3,i)));
ObjectSetInteger(0,"Trendex3_1"+DoubleToStr(k),OBJPROP_RAY_RIGHT,true);
ObjectSet("Trendex3_1"+DoubleToStr(k),OBJPROP_COLOR,indicator_color5);
ObjectSet("Trendex3_1"+DoubleToStr(k),OBJPROP_BACK,1);
ObjectSet("Trendex3_1"+DoubleToStr(k),OBJPROP_WIDTH,6);
ObjectDelete(0,"Trendex3_2"+DoubleToStr(k));
ObjectCreate(0,"Trendex3_2"+DoubleToStr(k),OBJ_TREND,0,Time[k],Low[k],Time[iHighest(symbol,240,MODE_HIGH,3,i)],iHigh(symbol,240,iHighest(symbol,240,MODE_HIGH,3,i)));
ObjectSetInteger(0,"Trendex3_2"+DoubleToStr(k),OBJPROP_RAY_RIGHT,true);
ObjectSet("Trendex3_2"+DoubleToStr(k),OBJPROP_COLOR,indicator_color7);
ObjectSet("Trendex3_2"+DoubleToStr(k),OBJPROP_BACK,1);
ObjectSet("Trendex3_2"+DoubleToStr(k),OBJPROP_WIDTH,3);
}
}
}
}
}
double rou=0;
double rod=0;
if (Period()==30){
deletetxt1("Libec");
i=0;
while(i<10){
if (High[i]-iMA(NULL,0,17,0,MODE_EMA, PRICE_MEDIAN,i)>rou) rou=High[i]-iMA(NULL,0,17,0,MODE_EMA, PRICE_MEDIAN,i);
if (iMA(NULL,0,17,0,MODE_EMA, PRICE_MEDIAN,i)-Low[i]>rod) rod=iMA(NULL,0,17,0,MODE_EMA, PRICE_MEDIAN,i)-Low[i];
i++;
}
ObjectCreate("Libec"+4,OBJ_LABEL,indicator_window, 0,0);
ObjectSetText("Libec"+4, DoubleToStr(rou*10000,2)+" ("+DoubleToStr(iMA(NULL,0,17,0,MODE_EMA, PRICE_MEDIAN,0)+rou,4)+")", 11, "Arial Black", DarkViolet);
ObjectSet("Libec"+4,OBJPROP_CORNER,2);
ObjectSet("Libec"+4,OBJPROP_XDISTANCE,20);
ObjectSet("Libec"+4,OBJPROP_YDISTANCE,67);
if (rou>rod) ObjectSet("Libec"+4,OBJPROP_COLOR,clrDarkGreen);
else if (rou<.0010) ObjectSet("Libec"+4,OBJPROP_COLOR,clrGray);
else ObjectSet("Libec"+4,OBJPROP_COLOR,clrBlack);
ObjectCreate("Libec"+5,OBJ_LABEL,indicator_window, 0,0);
ObjectSetText("Libec"+5,DoubleToStr(rod*10000,2)+" ("+DoubleToStr(iMA(NULL,0,17,0,MODE_EMA, PRICE_MEDIAN,0)-rod,4)+")", 11, "Arial Black", DarkViolet);
ObjectSet("Libec"+5,OBJPROP_CORNER,2);
ObjectSet("Libec"+5,OBJPROP_XDISTANCE,20);
ObjectSet("Libec"+5,OBJPROP_YDISTANCE,47);
if (rod>rou) ObjectSet("Libec"+5,OBJPROP_COLOR,clrCrimson);
else if (rod<.0010) ObjectSet("Libec"+5,OBJPROP_COLOR,clrGray);
else ObjectSet("Libec"+5,OBJPROP_COLOR,clrBlack);
}
//ObjectCreate("Libec"+6,OBJ_LABEL,1, 0,0);
// ObjectSetText("Libec"+6, "W2", 41, "Arial Black", Violet);
// ObjectSet("Libec"+6,OBJPROP_CORNER,3);
// ObjectSet("Libec"+6,OBJPROP_XDISTANCE,20);
// ObjectSet("Libec"+6,OBJPROP_YDISTANCE,67);
// ObjectSet("Libec"+6,OBJPROP_BACK,1);
// ObjectCreate("Libec"+6,OBJ_LABEL,indicator_window, 2,0);
// ObjectSetText("Libec"+6,"Deployment on muted, capped side (30-x)",12,"Impact");
// ObjectSet("Libec"+6,OBJPROP_CORNER,1);
// ObjectSet("Libec"+6,OBJPROP_XDISTANCE,35);
// ObjectSet("Libec"+6,OBJPROP_YDISTANCE,87);
// ObjectSet("Libec"+6,OBJPROP_COLOR,clrTeal);
//ObjectCreate("Libec"+7,OBJ_LABEL,indicator_window, 2,0);
// ObjectSetText("Libec"+7,"Adding on ZERO after D|",12,"Impact");
// ObjectSet("Libec"+7,OBJPROP_CORNER,1);
// ObjectSet("Libec"+7,OBJPROP_XDISTANCE,35);
// ObjectSet("Libec"+7,OBJPROP_YDISTANCE,107);
// ObjectSet("Libec"+7,OBJPROP_COLOR,clrTeal);
return(0);
}
//+------------------------------------------------------------------+
void deletetxt1(string text){
for(int iObj=ObjectsTotal()-1; iObj >= 0; iObj--){
string on = ObjectName(iObj);
if(StringFind(on, text) == 0) ObjectDelete(on);
} }
double findAvg(int period, int shift) {
double sum=0;
for (int x=shift;x<(shift+period);x++) {
sum += High[x]-Low[x];
}
sum = sum/period;
return (sum);
}
My boney is over the whelming.
Where in the world can I get some dirt?