Was inspired by Bravi Jono on YouTube.
(indicators for the masses series)
What can you say about when an ABC correction ends? You are going to get an impulsive leg in the opposite direction of the B->C vector.
A prequel to an indicator, free version.
Morbid stovhastics for starters. Plots As and Bs. May need to adjust the indicator_window parameter for them to appear.

//+------------------------------------------------------------------+
//| Aiken Hasi.mq4 |
//| Copyright 2021, Macdulio |
//+------------------------------------------------------------------+
#property copyright "2021, Macdulio"
#property link "https://forexfore.blog"
#property description "Aiken Hasi"
#property strict
#property indicator_separate_window
#property indicator_minimum 0
#property indicator_maximum 100
#property indicator_buffers 3
#property indicator_color1 Purple
#property indicator_level1 10.0
#property indicator_level2 90.0
#property indicator_level3 35.0
#property indicator_level4 65.0
#property indicator_level5 30.0
#property indicator_level6 70.0
#property indicator_levelcolor clrBlack
#property indicator_levelstyle STYLE_DASH
extern int indicator_window = 2;
double stoch[], stoch60[], stochmix[];
//---------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int OnInit(void)
{
//--- 2 additional buffers are used for counting.
IndicatorBuffers(1);
//--- indicator lines
SetIndexStyle(0,DRAW_LINE,EMPTY,5,indicator_color1);
SetIndexBuffer(0, stochmix);
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Stochastic oscillator |
//+------------------------------------------------------------------+
int start()
{
int i;
string symbol = Symbol();
ArrayResize(stochmix, Bars);
ArrayInitialize(stochmix, EMPTY_VALUE);
ArrayResize(stoch, Bars);
ArrayInitialize(stoch, EMPTY_VALUE);
ArrayResize(stoch60, Bars);
ArrayInitialize(stoch60, EMPTY_VALUE);
deletetxt1("Peak");
deletetxt1("Troff");
for(i=Bars-62; i>=0; i--){
stoch[i]=iStochastic(symbol,0,9,3,3,MODE_SMA,0,MODE_SIGNAL,i);
stoch60[i]=iStochastic(symbol,0,60,3,3,MODE_SMA,0,MODE_SIGNAL,i);
if (MathAbs(stoch[i]-50)>MathAbs(stoch60[i]-50)) stochmix[i]=(stoch[i]+stoch[i]+stoch[i]+stoch60[i])/4;
else stochmix[i]=(stoch[i]+stoch60[i]+stoch60[i]+stoch60[i])/4;
if (stochmix[i]>100) stochmix[i]=100;
if (stochmix[i+1]>64 && stochmix[i+1]<84 && stochmix[i]<stochmix[i+1] && stochmix[i+2]<stochmix[i+1] && stochmix[ArrayMaximum(stochmix,24,i+6)]>stochmix[ArrayMaximum(stochmix,5,i)]
&& stochmix[ArrayMinimum(stochmix,8,i)]<60
&& stochmix[ArrayMinimum(stochmix,6,i)]>34
){
ObjectCreate("Peak"+i,OBJ_TEXT, indicator_window, Time[iHighest(symbol,0,MODE_HIGH,6,i)], stochmix[i+1]+20);
ObjectSetText("Peak"+i, "B", 19, "Arial Black", clrBlack);
ObjectCreate("Troff"+i,OBJ_TEXT, indicator_window, Time[iLowest(symbol,0,MODE_LOW,16,i)], stochmix[ArrayMinimum(stochmix,6,i)]-10);
ObjectSetText("Troff"+i, "A", 19, "Arial Black", clrBlack);
}
}
return(0);
}
//+------------------------------------------------------------------+
void deletetxt1(string what){
for(int iObj=ObjectsTotal()-1; iObj >= 0; iObj--){
string on = ObjectName(iObj);
if(StringFind(on, what) == 0) ObjectDelete(on);
} }
In short, an ABC correction would give you an idea about in which direction the market is not going to be headed next, meaning: you can just load up on that C leg for a reversal.

…
coming to a theatre near you:

Starring Lopifer Jenez, Saylor Twift, Kimmy Jimmel, Grandiana Are, July Rudiani, Robia Julerts, Black Jack, Kula Minis, Ham Tonks, Anifer Jeniston and Fred Bitt.
