First, the having gone too far function gets a new filter.

Like so.

The x + numbers print is 10 pips back from that candle’s high/low to make sure to get a fill
#property copyright "Copyright © 2022, Macdulio"
#property link "https://forexfore.blog"
#property description "V1.0"
#property description "Counter Force 52 pimps"
#property description "18-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 = 100;
extern int indicator_window = 3;
extern int sample = 18;
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[];
bool red[], orange[], blue[];
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);
return(INIT_SUCCEEDED);
//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);
ArrayResize(red, Bars);
ArrayInitialize(red, false);
ArrayResize(orange, Bars);
ArrayInitialize(orange, false);
ArrayResize(blue, Bars);
ArrayInitialize(blue, false);
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");
deletetxt1("Titus");
deletetxt1("Scalein");
deletetxt1("Bod");
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);
blue[i]=true;
}
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);
red[i]=true;
}
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);
orange[i]=true;
}
ExtATRBuffer[i]= -1*(iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,sample-1,i+1))-Low[i])*10000;
if (ExtATRBuffer[i]<-93) ExtATRBuffer[i]=-93;
ExtATRBuffer2[i]=(High[i]-iLow(symbol,0,iLowest(symbol,0,MODE_LOW,sample-1,i+1)))*10000;
if (ExtATRBuffer2[i]>93) ExtATRBuffer2[i]=93;
ExtATRBuffer4[i]=ExtATRBuffer2[i];
if (ExtATRBuffer[i]<-91 && Low[i]<iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,10,i))-820*Point) ExtATRBuffer3[i]=ExtATRBuffer[i];
else if (ExtATRBuffer2[i]>91 && High[i]>iLow(symbol,0,iLowest(symbol,0,MODE_LOW,10,i))+820*Point) ExtATRBuffer3[i]=ExtATRBuffer2[i];
///NDF SCALE INS
///NDF SELL
if (i>0 && ExtATRBuffer3[i+4]==EMPTY_VALUE && ExtATRBuffer3[i+2]==EMPTY_VALUE && ExtATRBuffer3[i+3]==EMPTY_VALUE &&
ExtATRBuffer3[i+1]>0 && ExtATRBuffer3[i+1]<200 && Close[i+2]>iMA(symbol,0,17,0,MODE_SMA,PRICE_MEDIAN,i+2)){
ObjectCreate("Scalein"+IntegerToString(i), OBJ_RECTANGLE, 0, Time[i+7], High[i+1], Time[i+3], High[i]+200*Point);
ObjectSetInteger(0,"Scalein"+IntegerToString(i),OBJPROP_COLOR,clrRed);
ObjectSet("Scalein"+IntegerToString(i),OBJPROP_BACK,0);
ObjectSet("Scalein"+IntegerToString(i),OBJPROP_WIDTH,5);
ObjectCreate("Scaleind"+IntegerToString(i), OBJ_TEXT, 0, Time[i+5], High[i+1]-30*Point);
ObjectSetText("Scaleind"+IntegerToString(i), "x "+DoubleToStr(NormalizeDouble(High[i+1]-100*Point,4),4), 19, "Impact", DarkBlue);
}
if (i>0 && ExtATRBuffer3[i+4]==EMPTY_VALUE && ExtATRBuffer3[i+3]==EMPTY_VALUE && ExtATRBuffer3[i+2]==EMPTY_VALUE &&
ExtATRBuffer3[i+1]>0 && ExtATRBuffer3[i+1]<200 && Close[i+2]>iMA(symbol,0,17,0,MODE_SMA,PRICE_MEDIAN,i+2) && High[i+1]-Low[i+1]<1100*Point ){
ObjectCreate("Bod"+IntegerToString(i), OBJ_TEXT, 2, Time[i+4], 80);
ObjectSetText("Bod"+IntegerToString(i), "NDS1:"+DoubleToStr(NormalizeDouble(High[i+1]+80*Point,4),4), 14, "Impact", DarkBlue);
ObjectCreate("Bodo"+IntegerToString(i), OBJ_TEXT, 2, Time[i+4], 40);
ObjectSetText("Bodo"+IntegerToString(i), "NDS2:"+DoubleToStr(NormalizeDouble(High[i+1]+160*Point,4),4), 14, "Impact", DarkBlue);
ObjectCreate("Boda"+IntegerToString(i), OBJ_TEXT, 2, Time[i+4], 20);
ObjectSetText("Boda"+IntegerToString(i), "NDS3:"+DoubleToStr(NormalizeDouble(High[i+1]+240*Point,4),4), 14, "Impact", DarkBlue); }
///NDF Buy
if (i>0 && ExtATRBuffer3[i+4]==EMPTY_VALUE && ExtATRBuffer3[i+3]==EMPTY_VALUE && ExtATRBuffer3[i+2]==EMPTY_VALUE &&
ExtATRBuffer3[i+1]<0 && ExtATRBuffer3[i+1]>-200 && High[i+2]-Low[i+2]<1100*Point && High[i+1]<iMA(symbol,0,17,0,MODE_SMA,PRICE_MEDIAN,i+1) && High[i+1]-Low[i+1]<1100*Point){
ObjectCreate("Bod"+IntegerToString(i), OBJ_TEXT, 2, Time[i+4], 80);
ObjectSetText("Bod"+IntegerToString(i), "NDB1:"+DoubleToStr(NormalizeDouble(Low[i+1]-40*Point,4),4), 14, "Impact", DarkBlue);
ObjectCreate("Bodo"+IntegerToString(i), OBJ_TEXT, 2, Time[i+4], 40);
ObjectSetText("Bodo"+IntegerToString(i), "NDB2:"+DoubleToStr(NormalizeDouble(Low[i+1]-80*Point,4),4), 14, "Impact", DarkBlue);
ObjectCreate("Boda"+IntegerToString(i), OBJ_TEXT, 2, Time[i+4], 20);
ObjectSetText("Boda"+IntegerToString(i), "NDB3:"+DoubleToStr(NormalizeDouble(Low[i+1]-120*Point,4),4), 14, "Impact", DarkBlue);
}
if (i>0 && ExtATRBuffer3[i+4]==EMPTY_VALUE && ExtATRBuffer3[i+3]==EMPTY_VALUE &&
ExtATRBuffer3[i+1]<0 && ExtATRBuffer3[i+1]>-200 && High[i+2]-Low[i+2]<1100*Point && High[i+1]<iMA(symbol,0,17,0,MODE_SMA,PRICE_MEDIAN,i+1) ){
if (High[i+1]-Low[i+1]>1100*Point) ObjectCreate("Scalein"+IntegerToString(i), OBJ_RECTANGLE, 0, Time[i+7], Close[i+1], Time[i+3], Close[i+1]-150*Point);
else ObjectCreate("Scalein"+IntegerToString(i), OBJ_RECTANGLE, 0, Time[i+7], Low[i+1], Time[i+3], Low[i+1]-150*Point);
ObjectSetInteger(0,"Scalein"+IntegerToString(i),OBJPROP_COLOR,clrGreen);
ObjectSet("Scalein"+IntegerToString(i),OBJPROP_BACK,0);
ObjectSet("Scalein"+IntegerToString(i),OBJPROP_WIDTH,5);
ObjectCreate("Scaleind"+IntegerToString(i), OBJ_TEXT, 0, Time[i+5], Low[i+1]+90*Point);
ObjectSetText("Scaleind"+IntegerToString(i), "x "+DoubleToStr(NormalizeDouble(Low[i+1]+100*Point,4),4), 19, "Impact", DarkBlue);
}
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;
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;
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>80) ObjectSetText("AverD",jointstring,40,"Wingdings",Gold);
if (twodigits>93) ObjectSetText("AverD",jointstring,40,"Wingdings",DeepPink);
deletetxt1("Crush");
deletetxt1("Leap");
deletetxt1("Grog");
deletetxt1("Countess");
deletetxt1("Missing");
deletetxt1("KAROLY");
int counter = 9;
for(i=lookback; i>=0; i--){
if (red[i+2]==true && red[i+1]==true && red[i]==false && Close[i]<iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_UPPER,i) ){
if (iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_UPPER,i)-iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_UPPER,i+3)>iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_LOWER,i)-iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_LOWER,i+3)
&& Close[i+1]>iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_LOWER,i+1)
&& Open[i+1]<iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_UPPER,i+1)
&& Close[i+1]<iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_UPPER,i+1)
)
{ObjectCreate(0,"TitusX"+IntegerToString(i),OBJ_TREND, 0, Time[i], High[i], Time[i], High[i]+370*Point);
ObjectSet("TitusX"+IntegerToString(i), OBJPROP_COLOR, clrRed );
}
else if(Close[i]<iMA(symbol,0,30,0,MODE_SMA,PRICE_MEDIAN,i)
&& Close[i+2]>iMA(symbol,0,30,0,MODE_SMA,PRICE_MEDIAN,i+2)
) {ObjectCreate(0,"TitusX"+IntegerToString(i),OBJ_TREND, 0, Time[i], High[i], Time[i], High[i]+370*Point);
ObjectSet("TitusX"+IntegerToString(i), OBJPROP_COLOR, clrRed );
}
else if (Close[i]>iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_LOWER,i)
&& i>0 && RSI2[i-1]>80
) {ObjectCreate(0,"TitusX"+IntegerToString(i),OBJ_TREND, 0, Time[i], Low[i], Time[i], Low[i]-370*Point);
ObjectSet("TitusX"+IntegerToString(i), OBJPROP_COLOR, clrGreen );
}
ObjectSet("TitusX"+IntegerToString(i), OBJPROP_WIDTH, 6 );
ObjectSet("TitusX"+IntegerToString(i), OBJPROP_STYLE, 1 );
ObjectSetInteger(0,"TitusX"+IntegerToString(i), OBJPROP_RAY_RIGHT, false );
}
if (orange[i+2]==true && orange[i+1]==true && orange[i]==false && orange[i+5]==false && Close[i+1]<iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_UPPER,i+1) ){
if (iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_UPPER,i)-iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_UPPER,i+3)>iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_LOWER,i)-iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_LOWER,i+3))
{ObjectCreate(0,"TitusX"+IntegerToString(i),OBJ_TREND, 0, Time[i], High[i], Time[i], High[i]+370*Point);
ObjectSet("TitusX"+IntegerToString(i), OBJPROP_COLOR, clrRed );
}
else if(Close[i]<iMA(symbol,0,30,0,MODE_SMA,PRICE_MEDIAN,i)
&& Close[i+2]>iMA(symbol,0,30,0,MODE_SMA,PRICE_MEDIAN,i+2)
) {ObjectCreate(0,"TitusX"+IntegerToString(i),OBJ_TREND, 0, Time[i], High[i], Time[i], High[i]+370*Point);
ObjectSet("TitusX"+IntegerToString(i), OBJPROP_COLOR, clrRed );
}
else {ObjectCreate(0,"TitusX"+IntegerToString(i),OBJ_TREND, 0, Time[i], Low[i], Time[i], Low[i]-370*Point);
ObjectSet("TitusX"+IntegerToString(i), OBJPROP_COLOR, clrGreen );
}
ObjectSet("TitusX"+IntegerToString(i), OBJPROP_WIDTH, 6 );
ObjectSet("TitusX"+IntegerToString(i), OBJPROP_STYLE, 1 );
ObjectSetInteger(0,"TitusX"+IntegerToString(i), OBJPROP_RAY_RIGHT, false );
}
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 (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,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);
}
