To be in picture, you should have a flow chart made up – and helpful indicators don’t hurt either.
Here is your very first entry.
Strong off the bottom. The larger context was that the market made an omega on the 2nd of January due to excessive selling. (This would be displayed by my 88 Luftballons indicator.) But even if you were not aware any of that, you should still be capable to spot the violent move up that was faster/steeper than the sell off triggered on the NFP Friday. That strong off was the start of the shape.
The Omega was the Alpha of the current move up (multiple hits of the Forest).
The shape covers the scenario where there is no overbought embedding.
It is easiest to have projection values displayed at about 1.5x the length of the initial qualifying move.
I need to start inserting codes in the body for the WordPress new editor does not allow me to upload zips any more.
//Projected_Distance_Lines by Macdulio
#include <stdlib.mqh>
#property copyright "Macdulio"
#property link "https://forexfore.blog"
#property description "Projected Distance Lines Fitted"
#property description ""
#property description "Lines based on 3-hour moves"
#property description "exceeding 1/3 of the last 3-days"
#property description "Average True Range"
#property description ""
#property description "Call them extensions"
#property indicator_chart_window
#property indicator_buffers 15
#property indicator_color1 Black
extern int maxlines = 15;
extern int displaylength = 25;
double lines[];
double mid[];
double line1[];
double line2[];
double line3[];
double line4[];
double line5[];
double line6[];
double line7[];
double line8[];
double line9[];
double line10[];
double line11[];
double line12[];
double line13[];
double line14[];
double vbru[];
double line15[];
int init()
{
SetIndexBuffer(0,line1);
SetIndexBuffer(1,line2);
SetIndexBuffer(2,line3);
SetIndexBuffer(3,line4);
SetIndexBuffer(4,line5);
SetIndexBuffer(5,line6);
SetIndexBuffer(6,line7);
SetIndexBuffer(7,line8);
SetIndexBuffer(8,line9);
SetIndexBuffer(9,line10);
SetIndexBuffer(10,line11);
SetIndexBuffer(11,line12);
SetIndexBuffer(12,line13);
SetIndexBuffer(13,line14);
SetIndexBuffer(14,line15);
SetIndexStyle(0,DRAW_LINE,1,1,indicator_color1);
SetIndexStyle(1,DRAW_LINE,1,1,indicator_color1);
SetIndexArrow(0,140);
SetIndexArrow(1,141);
SetIndexStyle(2,DRAW_LINE,1,1,indicator_color1);
SetIndexStyle(3,DRAW_LINE,1,1,indicator_color1);
SetIndexStyle(4,DRAW_LINE,1,1,indicator_color1);
SetIndexStyle(5,DRAW_LINE,1,1,indicator_color1);
SetIndexStyle(6,DRAW_LINE,1,1,indicator_color1);
SetIndexStyle(7,DRAW_LINE,1,1,indicator_color1);
SetIndexStyle(8,DRAW_LINE,1,1,indicator_color1);
SetIndexStyle(9,DRAW_LINE,1,1,indicator_color1);
SetIndexStyle(10,DRAW_LINE,1,1,indicator_color1);
SetIndexStyle(11,DRAW_LINE,1,1,indicator_color1);
SetIndexStyle(12,DRAW_LINE,1,1,indicator_color1);
SetIndexStyle(13,DRAW_LINE,1,1,indicator_color1);
SetIndexStyle(14,DRAW_LINE,1,1,indicator_color1);
return(0);
}
int start()
{
int i,pos,c_b=IndicatorCounted();;
ArrayResize(lines, maxlines);
ArrayInitialize(lines, 0);
ArrayResize(line1, 100);
ArrayInitialize(line1, 0);
ArrayResize(line2, 100);
ArrayInitialize(line2, 0);
ArrayResize(line3, 100);
ArrayInitialize(line3, 0);
ArrayResize(line4, 100);
ArrayInitialize(line4, 0);
ArrayResize(line5, 100);
ArrayInitialize(line5, 0);
ArrayResize(line6, 100);
ArrayInitialize(line6, 0);
ArrayResize(line7, 100);
ArrayInitialize(line7, 0);
ArrayResize(line8, 100);
ArrayInitialize(line8, 0);
ArrayResize(line9, 100);
ArrayInitialize(line9, 0);
ArrayResize(line10, 100);
ArrayInitialize(line10, 0);
ArrayResize(line11, 100);
ArrayInitialize(line11, 0);
ArrayResize(line12, 100);
ArrayInitialize(line12, 0);
ArrayResize(line13, 100);
ArrayInitialize(line13, 0);
ArrayResize(line14, 100);
ArrayInitialize(line14, 0);
ArrayResize(line15, 100);
ArrayInitialize(line15, 0);
ArrayResize(vbru, Bars);
ArrayInitialize(vbru, 0);
ArrayResize(mid, Bars);
ArrayInitialize(mid, 0);
pos=0;
double ATRAVG=(iATR(NULL,1440,14,1)+iATR(NULL,1440,14,2)+iATR(NULL,1440,14,3))/3;
for(i=30; i>=0; i--) {
if ((iHigh(NULL,60,i+3)-iLow(NULL,60,i))>ATRAVG/3 || (iHigh(NULL,60,i)-iLow(NULL,60,i+3))>ATRAVG/3 ) {
if (iHigh(NULL,60,i)>iHigh(NULL,60,i+3)) {vbru[pos]=iHigh(NULL,60,i)+(iHigh(NULL,60,i)-iLow(NULL,60,i+3))*.55; pos=pos+1; }
else {vbru[pos]=iLow(NULL,60,i)-(iHigh(NULL,60,i+3)-iLow(NULL,60,i))*.55; pos=pos+1; }
}
}
pos=0;
for (i=1; i<=250; i++)
{
if (vbru[i]>0){ mid[pos]= vbru[i]; pos=pos+1;}
}
i=0;
while(i<maxlines && pos>0)
{
if (i==pos) break;
if (mid[i]!=EMPTY_VALUE) lines[i]=mid[i];
i++;
}
for (i=0; i<=displaylength-1; i++) {
if (lines[0]>0) line1[i]=lines[0];
if (lines[1]>0) line2[i]=lines[1];
if (lines[2]>0) line3[i]=lines[2];
if (lines[3]>0) line4[i]=lines[3];
if (lines[4]>0) line5[i]=lines[4];
if (lines[5]>0) line6[i]=lines[5];
if (lines[6]>0) line7[i]=lines[6];
if (lines[7]>0) line8[i]=lines[7];
if (lines[8]>0) line9[i]=lines[8];
if (lines[9]>0) line10[i]=lines[9];
if (lines[10]>0) line11[i]=lines[10];
if (lines[11]>0) line12[i]=lines[11];
if (lines[12]>0) line13[i]=lines[12];
if (lines[13]>0) line14[i]=lines[13];
if (lines[14]>0) line15[i]=lines[14];
}
return(0);
}
With the above routine you could had had a good idea about where the thrust could had arrived at. (You can also find the upside projection value with numbers on the stats screen of the 88 Luftballons, which derives its values from 4H samples vs the one here, that uses 1H data).
(U: lists the last upside projection value, D: the downside, SAR is the 4h parabolic SAR’s next, guestimated value, DP is the Deep Pink or the 4H LEMA.)
In the “Shape” scenario the overbought readings would remain damaging, and do not turn into nurturing.
Now, the other scenario.
You need to define the environment every time coming into the day. Download the free 15-minute ATR targets for getting the daily ATR limits fitted on the chart.
This is a different version, but the same calculation, which is based on the 3-Day Daily Average. N is north, S is south. The closer number is the “overbought”, and the further is the “all out”. Often, the number attained would fall between them. If the “all out” gets exceeded, that may mean a climax / capitulation day. The arrow is merely showing that price is currently above/below the last consolidation mean.
The second very important thing to notice are the (long term) Comfort Levels that I have been citing for quite some time.
The indicator is free, you can find it on the blog.
The purchase of the 10% line points to Institutional buying. The reason was most likely the previous move (that sustained for a while) above the Deep Pink displayed by my LEMA30N indicator (free to download). Such investment would likely have a target at 50% or the very least an additional 25% away from the opening price. 35% is around 1.1680 and 50% is at 1.1890.
Busy image coming up, brace yourself!
The day ended with a break above the time out support and a consolidation just below the time out resistance. By the time price took out the RSI2 divergence teal field, we had multiple break outs on our hand. Sustaining above the overbought level (white line), after the 4th open, price became embedded, which is one way to describe the trending condition (the indicator on the bottom is my _RSI2_ indicator).
Remember that only excessive / climax buying/selling can permanently reverse the price, and time out stalls, head and shoulders would only have short term effect against the current.
It is an atlas ball, that’s right, it is a snow plow…
The market is also a step down voltage regulator.
Here is what I posted upon seeing the weak structure of the sell-off on the 2nd of January:
Now, where did I get those numbers from? (Not the year, that was somehow not updated by me.)
From the market profile that was displayed by my 88 Luftballons indicator.
(I don’t have a better screen shot for the day, sorry).
What you need to understand here is that the single prints (ones, twos) are representing the absence of time spent in the area, which comes with lack of interest. People are holding their trapped positions in the blacks, and they cover in the vacuum for a better than break even.
Price would usually penetrate the vacuum a bit, eat up the little amount of orders there, then would turn back.
The step down idea as follows:
My market profile is displayed on the 30 minute chart. Price can hit another kind of void, the big drop between the step heights. If there is say a 8-10 difference between the numbers, that means that perhaps for close to a length of an entire session (4-5 hours) an are was left out.
Filling in the blue areas is called repair of the structure, for a single prints structure is a weak structure, and is in danger of being re-visited.
Progression in the blue areas is relatively quick because of having not too many orders (but requires continuous buying/selling at market by someone with funds), other than at the step down area, which may cause a reaction first.
Littering the low density space is how the market retraces.
To say something about the future: there is no number above the 6 print, and the upside cannot be considered as finished without an excess (single prints) – that’s another repair to be had.
Perfect timing today; we have just witnessed the soccer / football / consolidation playing both sides yesterday.
A brief gap up – ever so slight – secured the false break on the upside. (Buy the gap fill & go!)
Now, how could you had known that the upside break was doomed?
The market was embedded 4H overbought.
After the 3rd close up in the overbought area, the market developed an overbought safety.
There was 1 close where, the overbought status was briefly lost, but they could save it. Nevertheless, there were chinks showing up in the armor (not a good omen).
But how could you had known if you did not have my _RSI2_ indicator?
For one, you could had downloaded my Comfort Levels 4H for free, to realize that the consolidation was taking place right under the oversold neckline. Not above it.
I kept on mentioning these two numbers on the front page of the blog. The LT (long term) deeply oversold and the LT oversold levels.
The problem with a market that is overbought, that it is not likely to sustain a break, especially not from out of the oversold zone. Granted, the largest and quickest moves come from the zippy commute between the oversold and the overbought necklines – but the consolidation would have to take place in our case above the oversold neckline – which did not happen.
DDI
It stands for Double Driven Ivan (my invention, of course). When the RSI2 starts bending the idle due to a pedal to metal condition, and this persists for at least 1.5 hours or 3 30-minute samples, I call that a drive.
The Double drive is when the Stochastics are also running extra hot (see my Stochastic Bars Mixed – freely downloadable plot and my Wishing on a star article).
The double drive ends up in a taper, a wedge, or a crazy Ivan (same thing). This is why I put the “I” in the title for a reminder.
Please try to figure out what is the common ending of the 3 DDI plots below:
Congratulations, you are not color bind after all, and you may have picked up on the theme of the final burn: the last thrust that is approximately 1.45 hours long. You want to see 3.5 candles alike for the finalé (after a hiccup).
A consolidation range (aka soccer field) is defined by divergences that outline the perimeter.
When liquidity is low and a consolidation is needed, you should be expecting a consolidation and the soccer play to be contained.
On the last day of the year it isn’t a surprise that most players choose bench warming.
The two RSI divergences on the image above are the magenta dashes and the white “#1” prints point out that these are premium signals. You can also see what happened after they pushed the ball (price) behind the goal line (both on the up and the down side).
To find the last two RSI2 divergences, here is what you do:
Either you insert the above code into your algorithm, or you can purchase an _RSI2_ for a very low cost to do the high light for you.
The #1 signal, that prompts a mean reversion is found / plotted by the 88 Luftballons routine, and for the first time, I share here the Sync classifier part.
As step one in minimizing the differences between the individual brokers, we need to start handling the information more loosely.
The following image shows 2 different broker’s bid charts. These are 4H candles for crying out loud!
Apparently one broker can print a positive doji with long wicks while the other one decides to go with a full bodied down candle for the same 4-hour slice. In this archaic mess the only handle seems to be the distance traveled under a similar length of time, but not necessarily starting or ending on the same candle.
To minimize the effects of this sloppiness, step one is to start allowing for more candles to be called Fractals. We would bring down the 2 left neighbors requirement to 1, and invent the Modified Fractals.
The following image shows the original Fractals in purple and pink, and the ones that were not called fractals before are in blue and orange.
The second change would be to extend the search for the now Modified Fractals to the previous sample as well, when trying to find the “Synchronized, Modified Fractals”.
I derive my market reads from my oscillators – more than anything else.
The key to making good algorithmic trading routines is the ability to interpret market conditions accurately. You yourself must arrive at the right conclusions first before you can begin to pass them on to a decision making routine. Therefore you, the developer are part of the trading system, and as the weakest link, you need to suffer well.
That’s a fine thrust!
I had to start distinguishing between thrusts and stabs. A thrust is an RSI2 move that takes the reading from one extreme to the other with a speed that the Stochastic reading cannot fully keep pace with. A thrust therefore needs both range and speed. It is a move that is quicker than its own shadow.
A stab does get or does not start from far enough (in terms of the RSI2 overbought / oversold side), and so it does not have a strong enough or lasting effect.
Now you can start to be able to identify what is happening, where is the market at in the wave sequence and what is to happen next. Remember, that a move starts with a thrust and end with a thrust.
Once you can point out things like the chink in the armor, the wave 3 bleed out section, you should know how to position yourself, what orders to place / eliminate.
A/C DC stands for Accommodating / Corrosive Digital Current
An overbought/oversold condition can be both harmful – during an opposite polarity market flow – and prone to become the sustainer / protector during a move in line with a current via a function called embedding.
Mean Reversion again?
If the only dead certain trade is the mean reversion, and happens 3-4 times a month, and one reversion would take 2 days on average to play out, that means that 6-8 trading days out of the 20 or so are being spent with these, and the rest of the time the market either does nothing or tries to pull away from the mean as best as it can, then what was your excuse again for not getting with the program?
You know that a mean reversion would come from Bear Zone 1 or Bull Zone 1.
I have been hammering the subject about how the whole thing plays out.
The criteria to the stand alone (Crazy Ivan) S as a vague idea is that it is a last breath, a short and quick burn off the excess. This would mostly appear on the 30 minute chart as 3 candles in the terminal direction.
I myself opted for counting 5 alike candles in a 6 sequence. This does find most of them.
int count5ups(int i){
int counter=0;
for(int bar=i; bar <= i+6; bar++)
if(iClose(symbol,30,bar)>iOpen(symbol,30,bar)) counter=counter+1;
return(counter);
}
int count5dns(int i){ int counter=0; for(int bar=i; bar <= i+6; bar++) if(iClose(symbol,30,bar)<iOpen(symbol,30,bar)) counter=counter+1; return(counter); }
They should limit the very things you need to concentrate on, yet they have awful limitations.
One limitation is the sample size: the iFractals routine would “advance” the Fractal to the last bar to the left of the current one yet the current read isn’t settled yet not to mention the one that is to be printed in the future. You can only can call something a fractal if it has two, bars to its right settled. In other words there is uncertainty to any fractal print that is less than 3 bars away from the last one. All calculations that disregard this fact may end up with false conclusions, bad triggers.
The other, even more problematic thing is the speed incompatibility. The market has different speeds, and sometimes it would move way faster then your chosen metric, your time frame.
Take a look at the sell-off below. There is a down leg, that ends in that orange X.
It shows only 1 fractal (diamond). Were there no other fractals then? Yes, of course there were. You may have to go back down several time frames to make them appear. (You can see that the X fractal was actually a bottom tested twice.)
Why is this a problem? Because it throws off your fractal count. And you have no tangible measuring points for finding terminal length waves, especially if speed the market commutes at does not leave even a blip on the RSI2.
(Teminal length Waves in black)
Yet we want the fractals. But they are too many still. What if you started marking the ones that are both oversold/overbought on RSI2 and 9-sample Stochastic D as “Sync” lows and sync highs?
I have a sorting routine that names them further as S, S1 or S2 and X. No two brokers data would be the same, but you are only going to start to find out how different they really are, when you start plotting with multiple ones at the same time. One broker may call a bar a doji, for they never adjusted the bid during the period while the other made a transaction and has a bar that has a body. Imagine if you are looking for 3 green candles as a sequence. One broker would find it, the other (with the doji) would not, for a doji’s close may not be higher than its open.
Since the bid data isn’t the same, the RSI, derived values would not be the same either. One thing I had to personally do to synchronize the end result between two brokers when plotting the Forest, was to use different cross back values: one broker’s RSI 77.8 is the other broker’s 77.7 – that one tenth can make all the difference at times.
Since this article is getting lengthy, I’m only going to discuss the surprise turn that happened today, and two ways that you could had spotted it.
Concentrate on the cyan shading please. It is the time out resistance that was made within 8 hours of the first thrust up. The high of the box was taken out – which should not have happened, and price then trickled down to the E-16.
The main lesson for you in this, “what to concentrate on” section is the idea of relativity and the significance of the seemingly insignificant.
On the image below, please tell me what is the most important occurrence, the most precise telltale of the dynamics?
I’ll help a little.
What happened under the first yellow-out? The market lost the overbought status.
What happened under the second? The market back tested the oversold level.
The sliver lines on the gray background – ironically are the best visuals to tell you about the consolidation. The qualifying run, the first “Sync” fractal adjusted the overbought level lower. All the consolidation was taking place around the overbought line and the oversold line was never touched again.
The gray plots as well as the time out boxes are part of my 88 Luftballons routine.
The calculation for the gray lines:
if (sdn[i+1]!=0) {minus9[i]=Low[i+1]-110*Point; minus[i]=minus9[i]+FSize/2*10*Point; minus15[i]=Low[i+1]-180*Point; minus22[i]=Low[i+1]-240*Point;}
if (sup[i+1]!=0) {plus9[i]=High[i+1]+100*Point; plus[i]=plus9[i]-FSize/2*10*Point; plus15[i]=High[i+1]+170*Point; plus22[i]=High[i+1]+220*Point;}
where FSize is 32 as per EUR/USD, and the gray lines are the plus and the minus