There’s an old Tennessee saying:
Fail me once, fail me… I can’t get failed again!

I know that OBGYN and fish can co-exist consentually.
Subtle things.

Don’t mind me, just thinking out loud.

There’s an old Tennessee saying:
Fail me once, fail me… I can’t get failed again!

I know that OBGYN and fish can co-exist consentually.
Subtle things.

Don’t mind me, just thinking out loud.

So what happened?
There was a break above the NIL+ by 10+ pips. Next target could had been the 300 level at 1.02069, but we had a failure at 1.0199 which was a 300 level of a previous range and the subsequent reaction went to the overbought level of the senior range.
I wasn’t certain if the first pull back to the zero after the LS print counted as a head, for there was no new consolidation / range adjustment.
Now I know that it was true love.
We are looking for a left shoulder again then.

45% is at 1.0217. 60% at 1.0228
After the left shoulder price would have to go oversold (1.0126), consolidate thrn tag a fresh Zero (100 / top of the range).
Remember, the full reversal is a 2-step process.


The next 300 level is 1.02639.

Let’s assume that changing the market direction is a two step process.
It requires a qualified left shoulder and subsequently a head print.
I’m saying this to make you understand that although the move coming off of a left shoulder may swing out in the opposite direction as much as the left shoulder did, it does not change the status of the market and is not considered as another left shoulder now in the other direction.

The rebound form the left shoulder I call NIL+, for it goes beyond 30%. In fact what I mean is at least by one step which puts price at 45%, perhaps somewhere even at 60-70%.
I do this as a reminder for the distance as well highlighting the outermost reading as a not to be violated by 7+ pips stop level.
Although the left shoulder would eventually print, it should not be anticipated, only recognized. Instead when price blows through the last relevant NIL print by 10 pips your aim should be a failure at the next 200 level. I would look for the turn to take place 15 pips beyond the 200 line.
Our current example of the LS to NIL+ looks like this.

Sure, this one is a bit different, as price seems to be well on the way to a mean reversion. It all comes down to the weekly open. I showed you before how much the bears were hammering price down at this viaduct.

To me the logical move would be a pull back to a head – and a new range is about to be defined.
If price was to open flat, a 36+ pips move would put the new zero level about where the last overbought print was at.

So an LS makes the market go neutral (& starts a full swing move on the pendulum), a head adds on the new direction. The Zero level to be hit is crucial, you have like 7 pips of tolerance beyond. Again, the head should not be anticipated, but once in place, the next oversold level is the perfect entry.
The only other example of the LS + H combo was an LS – OB – Fresh Zero (unlike currently) and from all heads you should see a move to the 200 (on the upside 300) line printed by the very same range, but speed may vary.

Stuff I find as I go. It’s easy to slip away.

World Full Of Nothing.
A NIL appears in a no trend / weak trend phase. Fade up to 2 NILs in a row, but a senior zero may be used as a jumping board.
NIL to NULL
A NIL is an intention of proceeding in a direction (trying, but not immediately succeeding – i.e. hitting nothing = NihIL). The NULL (as measured by the previous range) is the counter move. A NULL is the zero level of the previous consolidation range (look left).
When the sequence of NIL->-20OS gets taken out, look for the left shoulder forming.

The Head would be a Zero of a fresh range, after which an Overbought to Oversold move would be the optimal buy entry.
If a NIL faces aggression at the nearby, senior range OB/OS level that’s a sign of intention to expand the current total range by 100.
Maximum aggression is the closer NULL.


For once there are a lot of videos on the subject.


Junior Range bear run short entry
80- 1.10
Senior Range (8hrs+) bear run short entry
0-30
Target -200 failure

A failure means not closing on the other side of the line for more than a full hour & volatility increasing
A conquering is 5+hours closing on the other side of the line and volatility is on the decline (contraction)
A failure bounces back to the last OB/OS level. A failure is not a reversal, but it warrants attention in case they buy the next, newly printing opposite zero.

A failure does not change the overall direction, it is a mere bounce.

An example for why using the range is better than Fifonacci or Farket Frofile.
During the last bull run in the bear even the bulls were the bears. After every leg up they covered 20-30 percent later.




I’m gonna make it strange, for once in my life.
I’m flirting hedging with the Man in the Mirror.
You can try it at home, but do not bother with IC Markets, for they would suspend your account using the bandwidth for placing and deleting pending orders (hyperactivity they call it).
// Hedge 50 pips out for 1-position by Macdulio (forexfore.blog) in 2022
#include <stdlib.mqh>
extern int magic_number = 60;
extern int magic_number2 = 61;
int profits;
double Lots;
double nakedshorts[];
double nakedlongs[];
double open_price;
double stop_loss_price;
double take_profit_price;
double open_price2;
double stop_loss_price2;
double take_profit_price2;
double OrderOpenPrice;
double OrderProfit;
double orderstoploss = OrderStopLoss();
string symbol = Symbol();
int init() {
return(0);
}
int deinit() {
return(0);
}
int start() {
double longaveragebuffer;
double shortaveragebuffer;
int order_type;
int i, counter;
int counted_bars=IndicatorCounted();
int longcount = 0;
int shortcount = 0;
double nlongs =0;
double nshorts= 0;
double shortopenedat;
double longopenedat;
double longsize;
double shortsize;
profits = 0;
int hstTotal=OrdersHistoryTotal();
counter = 0;
int overdrivecounter =0;
for(i=OrdersTotal()-1; i>=0 ; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)
{
Print("Access to orders list failed with error (",GetLastError(),")");
break;
}
if (OrderType() == OP_BUY && OrderMagicNumber()!=magic_number)
{
nlongs = nlongs+OrderLots();
longcount = longcount+1;
longaveragebuffer = longaveragebuffer+(OrderOpenPrice()*OrderLots());
longopenedat = NormalizeDouble(OrderOpenPrice(),5);
longsize = NormalizeDouble(OrderLots(),2);
}
if (OrderType() == OP_SELL && OrderMagicNumber()!=magic_number2 )
{
nshorts = nshorts+OrderLots();
shortcount = shortcount+1;
shortaveragebuffer = shortaveragebuffer+(OrderOpenPrice()*OrderLots());
shortopenedat = NormalizeDouble(OrderOpenPrice(),5);
shortsize = NormalizeDouble(OrderLots(),2);
}
}
if (shortsize!=0) Print ("shortsize:",shortsize);
if (longsize!=0) Print ("longsize:",longsize);
double account = AccountEquity();
//double MaxLots = NormalizeDouble(AccountEquity()*.00265,2);
double MaxLots = NormalizeDouble(AccountEquity()/2/1000,2);
double longsz;
if (nshorts==0 && Close[0]) longsz=NormalizeDouble((MaxLots-nlongs),2);
else longsz = NormalizeDouble((nshorts-nlongs),2);
if (longsz>MarketInfo(symbol,MODE_MAXLOT)) longsz=MarketInfo(symbol,MODE_MAXLOT);
if (nlongs-nshorts<=0 && shortsize>0 && shortopenedat+500*Point>Ask)
{
open_price = NormalizeDouble(shortopenedat+500*Point, 5);
stop_loss_price = NormalizeDouble(0.0,Digits);
take_profit_price = NormalizeDouble(0,Digits);
for (i = OrdersTotal() - 1; i >= 0; i--)
if (OrderSelect(i, SELECT_BY_POS))
if (OrderMagicNumber() == magic_number) {
order_type = OrderType();
if (order_type == ORDER_TYPE_BUY_STOP) {
if ((NormalizeDouble(OrderOpenPrice(), Digits) != open_price) || (NormalizeDouble(OrderStopLoss(), Digits) != stop_loss_price) || (NormalizeDouble(OrderTakeProfit(), Digits) != take_profit_price)) {
if (!OrderModify(OrderTicket(), open_price, stop_loss_price, take_profit_price, OrderExpiration()))
Print("Error: ", ErrorDescription(_LastError));
}
break;
}
else if (order_type == ORDER_TYPE_BUY)
break;
}
if (i < 0)
if (OrderSend(symbol, OP_BUYSTOP, shortsize, open_price, 3, stop_loss_price, take_profit_price, magic_number+" Hedge Break Of - BUY", magic_number,0) < 0)
Print("Error: ", ErrorDescription(_LastError));
}
double shortsz;
if (nlongs==0) shortsz = NormalizeDouble((MaxLots-nshorts),2);
else shortsz = NormalizeDouble((nlongs-nshorts),2);
if (shortsz>MarketInfo(symbol,MODE_MAXLOT)) shortsz=MarketInfo(symbol,MODE_MAXLOT);
if (nshorts-nlongs<=0 && longsize>0 && longopenedat-500*Point<Bid)
{
open_price2 = NormalizeDouble(longopenedat-500*Point, 5);
stop_loss_price2 = NormalizeDouble(0,Digits);
take_profit_price2 = NormalizeDouble(0,Digits);
for (i = OrdersTotal() - 1; i >= 0; i--)
if (OrderSelect(i, SELECT_BY_POS))
if (OrderMagicNumber() == magic_number2) {
order_type = OrderType();
if (order_type == ORDER_TYPE_SELL_STOP) {
if ((NormalizeDouble(OrderOpenPrice(), Digits) != open_price2) || (NormalizeDouble(OrderStopLoss(), Digits) != stop_loss_price2) || (NormalizeDouble(OrderTakeProfit(), Digits) != take_profit_price2)) {
if (!OrderModify(OrderTicket(), open_price2, stop_loss_price2, take_profit_price2, OrderExpiration()))
Print("Error: ", ErrorDescription(_LastError));
}
break;
}
else if (order_type == ORDER_TYPE_SELL)
break;
}
if (i < 0)
if (OrderSend(symbol, OP_SELLSTOP, longsize, open_price2, 3, stop_loss_price2, take_profit_price2, magic_number2+" Hedge Break Of - SELL", magic_number2,0) < 0)
Print("Error: ", ErrorDescription(_LastError));
}
return(0);
}
This is one free piece of the puzzle. The 50 pip was designed for an accurate entry, an oversold / overbought neckline relative to the current consolidation mean. In theory it should never get a fill if you can figure the direction right (where was the last qualifying head & shoulder) and if you don’t get unlucky overnight with an extra 10 pips in both direction on the bid and the ask from your broker.
I wrote the program blind (offline, over the weekend), if it does not function well, come back I’ll update it.
It was designed for one single entry, yes. What does the routine do if you open a second position? Leave it in the comments.

The thinking is of course simplifying things. One single position, that is the max size that a 50-pip move against would not result in a 50% draw down. The management of the hedge is based on understanding where to exit it and capturing back some / all of that temporary loss during a counter move. Protective stop loss once in the clear is a good idea. Gotta learn when to have the automated trading button temporarily off.
Ok, Madis is Bringin’ it too.



This move to -135 – I buy it for a left shoulder. 135 is not all that different from 65 in the mirror, now is it?
What next?
A move to the overbought. (Good old example image below) If price does not manage to achieve a new consolidation for the rest of the day, we are talking 1.1227. From there a move to a Zero likely with a new range by then. After, a Wave 3 perhaps to +300. At least, that is my thinking for now.

…from here on an unreleased blog entry that would had been called
Music To My Fears
I was thinking about Allister Brimble the other day. What was Mr. Project X Superfrog up to these days?
A lot of my CDs were brought over from the Philippines. On top there were a couple of Scopece CDs (Fox Hunting, Any Time). I was wondering for a minute, who even knows his name?
I did not even remember the brown Color Theory T-shirt that was in the laundry. Must had come with the first purchase of 7 or so CDs from Brian Hazard. How is your Napster Ponytail hanging on Huntington Beach, buddy?
…
By now I shared finding the consolidation mean, my percentage tool w/ labels and some of the things that seemed recurring as well as the static range made up of just shy of 2x fluctuation maximums from the 50 line.
You may be tired of this image, but oh, it managed to capture so much.

300 was followed by a 0 print at the other end.
The recent -100 went for the opposite 0: +100.

Conclusion: 0 seeks 0.
Next up -30 on a future range, then equate at out of oversold and sell more at overbought (80) until a felft shoulder print (45-70%) before the last move down settling on a 0.
If the head itself overshoots the 0 by 20%, sell the next 0 again (100) for a divergent lower low.
Either this move mentioned above or the 0 after the LS would be the revolving door.
I should also mention that the -80 print earlier did not qualify for an LS as it was more than 70.
One more lesson: when the downside move overshot -200, price did not manage the +100, only got to 90 (deeply overbought).

The future is bright right before the last toll.
Price just bounced off the oversold. Should continue to at least -30, perhaps beyond -45 (LS). A lower low regardless. Adding to shorts.

…
The world’s gonna blow your brain.
So this was the setup:

The -70 and the -80 are testament to the high volatility at hand.
The OB / 0 range once broken is the play.
I have come to accept that direction can be turned without the daily 18-sample Stoch going to extreme.
Now the momentum flips back down after 8 days of not being able to touch the E-44.

The difference between the bottom example and the current one was the momentum.
///fizzle out
if (High[i+8]<E44[i+8] && High[i+7]<E44[i+7] && High[i+6]<E44[i+6] && High[i+5]<E44[i+5] && High[i+4]<E44[i+4] && High[i+3]<E44[i+3] && High[i+2]<E44[i+2] && High[i+1]<E44[i+1] && High[i]<E44[i] &&
cap[i+8]>0 && cap[i+7]>0 && cap[i+6]>0 && cap[i+5]>0 && cap[i+4]>0 && cap[i+3]>0 && cap[i+2]>0 && cap[i+1]>0) cap[i]=-1;
The outcome in the bottom example was +300.
Since the parenting range is counted from 0 to 100, -200 is the equivalent of +300 for distance.

The initial move – due to its velocity – made projections for itself and already filled the first one.

In terms of what should happen now, the ideas derived from the prior example are as follows:
You should see a strong counter move that would not stop until the 15-minute 48-sample CI is back above 53 – and even then it would likely go to the future opposite “Zero” line which is going to be 36 pips higher than the consolidation mean itself. Time to find some available Choppiness indicator.

From there would come the next leg down and – see the bottom of the first image again, you should see up to 4 different legs down, one or two reaching to 30% on the opposite end, one making a left shoulder by achieving 45-65% and finally the touch of the Zero on the lower end would mean the head / longer term holding buy. The next left shoulder down may take out the low being made today. Just look at the bottom half of the first image and mirror everything.
It was certainly dumb of me thinking that the trendline made by three recent daily lows was anything more than a setup.

Unrelenting hammering at the Guard Rail was not going to let price to return to the mean.


Forget that a head has to be further out than a left shoulder. We got work to do. Let’s go!
ObjectCreate("Fiba", OBJ_FIBO, 0, Time[10], NBEU[0], Time[10],NBED[0]);
string fiboobjnams = "Fiba";
ObjectSet(fiboobjnams, OBJPROP_FIBOLEVELS, 21);
ObjectSet(fiboobjnams, OBJPROP_FIRSTLEVEL, 0.0);
ObjectSetFiboDescription(fiboobjnams,0,"0 %$");
ObjectSet(fiboobjnams, OBJPROP_FIRSTLEVEL+1, 0.20);
ObjectSetFiboDescription(fiboobjnams,1,"20-OVERSOLD %$");
ObjectSet(fiboobjnams, OBJPROP_FIRSTLEVEL+2, 0.4);
ObjectSetFiboDescription(fiboobjnams,2,"40 %$");
ObjectSet(fiboobjnams, OBJPROP_FIRSTLEVEL+3, 0.50);
ObjectSetFiboDescription(fiboobjnams,3,"50 %$");
ObjectSet(fiboobjnams, OBJPROP_FIRSTLEVEL+4, 0.6);
ObjectSetFiboDescription(fiboobjnams,4,"60 %$");
ObjectSet(fiboobjnams, OBJPROP_FIRSTLEVEL+5, 0.8);
ObjectSetFiboDescription(fiboobjnams,5,"80-OVERBOUGHT %$");
ObjectSet(fiboobjnams, OBJPROP_FIRSTLEVEL+6, 1.000);
ObjectSetFiboDescription(fiboobjnams,6,"100.0 %$");
ObjectSet(fiboobjnams, OBJPROP_FIRSTLEVEL+7, -0.3);
ObjectSetFiboDescription(fiboobjnams,7,"-30->80 %$");
ObjectSet(fiboobjnams, OBJPROP_FIRSTLEVEL+8, -0.45);
ObjectSetFiboDescription(fiboobjnams,8,"-45->C.NBE %$");
ObjectSet(fiboobjnams, OBJPROP_FIRSTLEVEL+9, 1.3);
ObjectSetFiboDescription(fiboobjnams,9,"130->20 %$");
ObjectSet(fiboobjnams, OBJPROP_FIRSTLEVEL+10, 1.45);
ObjectSetFiboDescription(fiboobjnams,10,"145->C.NBE %$");
ObjectSet(fiboobjnams, OBJPROP_FIRSTLEVEL+11, 2.0);
ObjectSetFiboDescription(fiboobjnams,11,"200 %$");
ObjectSet(fiboobjnams, OBJPROP_FIRSTLEVEL+12, 3.0);
ObjectSetFiboDescription(fiboobjnams,12,"300 %$");
ObjectSet(fiboobjnams, OBJPROP_FIRSTLEVEL+13, -1.0);
ObjectSetFiboDescription(fiboobjnams,13,"-100 %$");
ObjectSet(fiboobjnams, OBJPROP_FIRSTLEVEL+14, -2.0);
ObjectSetFiboDescription(fiboobjnams,14,"-200 %$");
ObjectSet(fiboobjnams, OBJPROP_FIRSTLEVEL+15, -0.8);
ObjectSetFiboDescription(fiboobjnams,15,"-80 BREAK BELOW %$");
ObjectSet(fiboobjnams, OBJPROP_FIRSTLEVEL+16, 1.80);
ObjectSetFiboDescription(fiboobjnams,16,"180 BREAK ABOVE %$");
ObjectSet(fiboobjnams, OBJPROP_FIRSTLEVEL+17, -0.6);
ObjectSetFiboDescription(fiboobjnams,17,"-60 !!! %$");
ObjectSet(fiboobjnams, OBJPROP_FIRSTLEVEL+18, 1.60);
ObjectSetFiboDescription(fiboobjnams,18,"160 !!! %$");
ObjectSet(fiboobjnams, OBJPROP_FIRSTLEVEL+19, -0.2);
ObjectSetFiboDescription(fiboobjnams,19,"-20-OVERSOLD %$");
ObjectSet(fiboobjnams, OBJPROP_FIRSTLEVEL+20, 1.2);
ObjectSetFiboDescription(fiboobjnams,20,"120-OVERBOUGHT %$");
ObjectSet( "Fiba", OBJPROP_LEVELCOLOR, clrNavy) ;
ObjectsRedraw();
It would be normal to think that a head has to qualify for a turn, but what I’m finding here is that not only the left shoulder has to precede the head, but it too has to be right and it is rather hard for it to qualify.
This is all the data I can get buffered in with 15 min / MT4.



Now we need to see a head and shoulder in reversed order on the top


The filp.



