Liquidity Freaks

Let’s roll the Summer Doldrums!

Concentrate on the tricolor flags.

They mark hourly closes where a sudden quest for liquidity is launched from.

The idea is to get hedged for these moves – automatically, and take off the hedges after 6 hours.

if (i>0 && RSI2[i+1]<10 && Close[i]>iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_LOWER,i) && Close[i]<iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_LOWER,i)+120*Point && Low[i+1]<iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_LOWER,i+1) && Close[i]>Open[i] && Close[i+1]<Open[i+1]){

The condition above, the hedger below. Spent minimum time, hijacked another hedger and changed the hedge conditions. Surplus lines, yes, but they won’t make it any slower.

#include <stdlib.mqh>
extern int magic_number1 = 51;
extern int magic_number2 = 52;
extern int magic_number3 = 53;
extern int magic_number4 = 54;

extern int highRSI = 100;
extern int lowRSI = 0;

extern double Ratio = .6;
extern double MarginCallPercentage = 100;
extern bool rope_trade_allowed = true;
extern double FSize=32;
#property copyright "by Macdulio in 2023" 
#property link      "https://forexfore.blog" 
#property description "SUMMER DOLDRUMS HEDGER"  

int profits;

double RSI2[];
  double nakedshorts[];
  double nakedlongs[];
  
  
  double open_price1;
  double stop_loss_price1;
  double take_profit_price1;
  
  double open_price2;
  double stop_loss_price2;
  double take_profit_price2;

  double open_price3;
  double stop_loss_price3;
  double take_profit_price3;

  double open_price4;
  double stop_loss_price4;
  double take_profit_price4;  
  

 double OrderOpenPrice;
 double OrderProfit;
  string symbol = Symbol();   
int init() {
   return(0);
}

int deinit() {
  return(0);
}

int start() {

ArrayResize(RSI2, 600);   
ArrayInitialize(RSI2, 0); 
  
int i, counter;
int counted_bars=IndicatorCounted();
int longcount, shortcount;
double nlongs;
double nshorts;
double longaveragebuffer;
double shortaveragebuffer;
int order_type;


double  dt14 = iHigh(NULL,240,iHighest(NULL, 240, MODE_HIGH, 1590));
double  db14 = iLow(NULL,240,iLowest(NULL, 240, MODE_LOW, 1590));  
double median = (db14+dt14)/2;


for(i=100; i>=0; i--)
  RSI2[i]=iRSI(symbol,0,2,PRICE_MEDIAN,i);

//Print("High RSI: "+highRSI);
//Print(RSI2[0]);
  
profits = 0;
 int hstTotal=OrdersHistoryTotal();

 counter = 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) 
             {
               nlongs = nlongs+OrderLots();
               longcount = longcount+1;
               longaveragebuffer = longaveragebuffer+(OrderOpenPrice()*OrderLots()); 
                  
             }  
               
             if (OrderType() == OP_SELL )
             {
               nshorts = nshorts+OrderLots(); 
               shortcount = shortcount+1;         
               shortaveragebuffer = shortaveragebuffer+(OrderOpenPrice()*OrderLots()); 
             }
         // }
   }
          

  // Full Hedge for shorts
  if (nlongs<nshorts &&
  RSI2[2]<10 && iClose(symbol,60,1)>iBands(symbol,60,30,2,0,PRICE_MEDIAN,MODE_LOWER,1) &&  iClose(symbol,60,1)<iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_LOWER,1)+120*Point &&  iLow(symbol,60,2)<iBands(symbol,60,30,2,0,PRICE_MEDIAN,MODE_LOWER,2) && iClose(symbol,60,1)>iOpen(symbol,60,1) && iClose(symbol,60,2)< iOpen(symbol,60,2)){
  
  
     open_price2 = NormalizeDouble(Ask, Digits);
    stop_loss_price2 = NormalizeDouble(0.0,Digits);
    take_profit_price2 = NormalizeDouble(0.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_BUY) {
            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_BUY)
            break;
        }
    if (i < 0)
      if (OrderSend(symbol, OP_BUY,  NormalizeDouble(nshorts-nlongs,2), open_price2, 3, stop_loss_price2, take_profit_price2, magic_number2+" SUMMER DOLDRUMS HEDGER BUY 0/0",  magic_number2) < 0)
        
               Print("Error: ", ErrorDescription(_LastError));
  }
  
  

 
 
 ////////////Sell Hedge
 

// Full Hedge For Longs
  if (nlongs>nshorts &&
  RSI2[2]>90 && iClose(symbol,60,1)<iBands(symbol,60,30,2,0,PRICE_MEDIAN,MODE_UPPER,1) &&  iClose(symbol,60,1)>iBands(symbol,0,30,2,0,PRICE_MEDIAN,MODE_UPPER,1)-120*Point &&  iHigh(symbol,60,2)>iBands(symbol,60,30,2,0,PRICE_MEDIAN,MODE_UPPER,2) && iClose(symbol,60,1)<iOpen(symbol,60,1) && iClose(symbol,60,2)>iOpen(symbol,60,2)){
  
    open_price4 = NormalizeDouble(Bid, Digits);
    stop_loss_price4 = NormalizeDouble(0.0,Digits);
    take_profit_price4 = NormalizeDouble(0.0,Digits);
    for (i = OrdersTotal() - 1; i >= 0; i--)
      if (OrderSelect(i, SELECT_BY_POS))
        if (OrderMagicNumber() == magic_number4) {
          order_type = OrderType();
          if (order_type == ORDER_TYPE_SELL) {
            if ((NormalizeDouble(OrderOpenPrice(), Digits) != open_price4) || (NormalizeDouble(OrderStopLoss(), Digits) != stop_loss_price4) || (NormalizeDouble(OrderTakeProfit(), Digits) != take_profit_price4)) {
              if (!OrderModify(OrderTicket(), open_price4, stop_loss_price4, take_profit_price4, OrderExpiration()))
                Print("Error: ", ErrorDescription(_LastError));
            }
            break;
          }
                    else if (order_type == ORDER_TYPE_SELL)
            break;
        }
    if (i < 0)
      if (OrderSend(symbol, OP_SELL, NormalizeDouble(nlongs-nshorts,2), open_price4, 3, stop_loss_price4, take_profit_price4, magic_number4+" SUMMER DOLDRUMS HEDGER SELL 0/0", magic_number4) < 0)
        Print("Error: ", ErrorDescription(_LastError));
  }


        
  return(0);
}

May have its use in an uptrend too.

The Penguin Park Correction

The Penguin Park correction happens at 5x speed. It crosses the hourly S30 and runs close to 2x fluctuation sizes (60-x pips) within 7 hours. This would represent a complete ABC move.

Case

& case

Bonus: a Loneliness correction that formed a wedge pressing up against the low.

16 hours is up. Bears get to write 5th wave down. The only problem is the eagerness: the 16th hour’s close should had landed at the high of the correction, not the low. Bummer.

What I was trying to say was if you don’t understand corrections, you don’t understand anything. Take it to heart, as I invested 12 years in this.

3 Days of Terror

They arrived from the West, from the Ocean. Had to be Bullsharks to be able to swim in the fresh water. There were at least 30 of them.

They ate up my blog ruthlessly, almost like a cult.

Nobody talked to me. Every miracle only lasts 3 days. So did this terror attack. This was my 288 x 15 minutes of fame.

My Chemical Valentine, we are gathered here to talk about hollow things.

First, Happy Hollow Green.

No relevance, just to start developing your hole-sight. The embedding green / coral canclels out the opposing momentum temporarily. Pro volume sent the price higher yesterday.

if (RSI2[i]>88.4){
         score[i]=1;
         ObjectCreate("Nick"+DoubleToStr(i), OBJ_RECTANGLE, indicator_window, Time[i], 10, Time[i+1], 8);
        ObjectSetInteger(0,"Nick"+DoubleToStr(i),OBJPROP_COLOR,clrGreen);
        ObjectSet("Nick"+DoubleToStr(i),OBJPROP_WIDTH,8);
        if (crossedaline(i,tccounter) &&  Close[i]<=Open[i]) ObjectSet("Nick"+DoubleToStr(i),OBJPROP_BACK,0);
   }  


bool crossedaline(int i, int to)
{
int l;
bool isit = false;
for (l=0; l<to; l++)
   if (High[i]>levels[l] && Low[i]<levels[l]) isit = true;

return (isit);
}

You can no longer say that I never use fuctions. The levels array is the values displayed in the white box. Being hollow is going through one of those levels.

Them counter-volatility per hour DeepPink boxes. They call them ineffciencies. The expectation is that they would be re-visited at their core. This one was, for sure.

Hard to read, but the lyrics for the single purple stick says: End Of Direction (0-18 pips slip) -> New Wave Structure.

Here we need to talk about overbought / oversold difference and displacements.

120 sample stochastic on the 30 min. The underbought MFI peak prompt is plotted in gray.

The idea of looking back on the MFI peak from 6 hours later to figure the 3 displacements (8, 14 and 28 pips) is not bad. There was a squeeze break to the upside, and the steepness currently isn’t in line with the norm. Yet, if you put the pointer above the Stoch overbought MFI peak and measure 28 pips from there, you get 1.0971, which was within 5 pips of the actual peak.

The stratosphere cropper (47 pips away from the E-16 hourly):

///// Crop 0.47 long (E16+47Pips)

    if( OrderType()==OP_BUY && (OrderStopLoss()==0.47  || OrderTakeProfit()==4.7) && OrderMagicNumber()!=50 && OrderMagicNumber()!=51 && OrderMagicNumber()!=52 && OrderMagicNumber()!=53 && OrderMagicNumber()!=54 && OrderProfit()>0 && 
   Close[0]>iMA(NULL,60,16,0,MODE_EMA, PRICE_MEDIAN,0)+470*Point && Bid>OrderOpenPrice()+.50*Point && OrderProfit()+OrderSwap()+OrderCommission()>0) 
        {OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), 5, Red );
            Print("Cropper Closed LONG @ "+MarketInfo(OrderSymbol(), MODE_BID)+" for ", OrderProfit());}  

///// Crop 4.7 short (E16-47Pips)

    if( OrderType()==OP_SELL && (OrderStopLoss()==4.7  || OrderTakeProfit()==0.47) && OrderMagicNumber()!=50 && OrderMagicNumber()!=51 && OrderMagicNumber()!=52 && OrderMagicNumber()!=53 && OrderMagicNumber()!=54 && OrderProfit()>0 && 
   Close[0]<iMA(NULL,60,16,0,MODE_EMA, PRICE_MEDIAN,0)-470*Point && Ask<OrderOpenPrice()-.50*Point && OrderProfit()+OrderSwap()+OrderCommission()>0) 
        {OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK), 5, Red );
            Print("Goldilocks Cropper Closed SHORT @ "+MarketInfo(OrderSymbol(), MODE_ASK)+" for ", OrderProfit());}   
  

Also, the lower high / second triangle had to be made to establish the trend. The question was how much beyond the Upper Guard rail would it print.

I expect a channeling move down to start soon.

For breakfast I only ate the hole of the cheese.

Curly Fries, from the ocean.

Let’s excercise your mental brain: what does the greatest liquidity drop mean for the Euro?

Smiles Per Elon

This is where the technical analyst caps out.

A lower high would be followed up logically by a lower low.

But what if the energy analysis says otherwise?

Oh great, even more lines.

Let’s talk XX. An equation of high energy reserves & stalling. After the re-adjustment of the volatility gauge with a volatility whip, you get an impulse structure.

5 waves. An M, a P and an E.

The argument here is that the P and the E are missing. 2-4 more swhing highs. If you look at the 207 river below, the market is making higher highs and higher lows starting from it.

The last leg up had a Wave 2 pullback that was 2 days long and lasted 225 pips.

This move down was a mere 170 and found support at the lower guard rail. The point being that going extra bearish above the 50 EMA ribbon with a bullish config may not be the wisest thing ever.

I think there should be a 5th leg down, but hedge / close all shorts below the current swing low, in particular when the hourly RSI2 HL2 walks into the sub 3 area.

S1 is at 1.0816, S2 @ 1.0760

weekly S1: 1.0761

Infiltratos Sphera

Need to exercise those filtering mucles.

Over optimization is a risk. But evidence collection needs its puzzle pieces…

Keep those filters light. One or two kinds of data & one moving average. Aim for a sequence of 3-4. Real time not necessary, settled values are. Use little of arbitrary numbers as oscillators may re-adjust as the range changes. Symmetry isn’t a must. All you need is just a little impatience.

 if (i>0 && RSI2[i-1]<=RSI2[i] && High[i+1]>High[i+2] && RSI2[i+2]<99.5 && RSI2[i+2]>96.5 && RSI2[i+3]>97.5   
   && Close[i]<High[i]-100*Point
  && iMFI(symbol,0,14,i+2)<65 && iMFI(symbol,0,14,i+2)>51.5
  && RSI2[i+2]<99.8
  && RSI2[i+1]>RSI2[i+2]
  ){
     ObjectCreate("HOCUS"+IntegerToString(i),OBJ_VLINE,1, Time[i], 0);
      ObjectSet("HOCUS"+IntegerToString(i),OBJPROP_COLOR,clrYellow);
      ObjectSet("HOCUS"+IntegerToString(i),OBJPROP_WIDTH,9);
      ObjectSet("HOCUS"+IntegerToString(i),OBJPROP_BACK,1);
   }
   
   if (Low[i+1]<guardraild[i+1] && RSI2[i]>2 && 
   ((RSI2[i]<RSI2[i+1] && RSI2[i+1]>.5 && RSI2[i+1]<3.5 && RSI2[i+2]<4.5)
   || (RSI2[i]>RSI2[i+1] && RSI2[i+1]>.5 && RSI2[i+1]<3.5 && RSI2[i+2]>3.5  && RSI2[i+2]<5 && iMFI(symbol,0,14,i+1)<45 && iMFI(symbol,0,14,i+1)>25  ))
   )
   
   
   {
     ObjectCreate("HOCUS"+IntegerToString(i),OBJ_VLINE,1, Time[i+1], 0);
      ObjectSet("HOCUS"+IntegerToString(i),OBJPROP_COLOR,clrGold);
      ObjectSet("HOCUS"+IntegerToString(i),OBJPROP_WIDTH,9);
      ObjectSet("HOCUS"+IntegerToString(i),OBJPROP_BACK,1);
   }

Sustain-Ability

The Guard Rails are just a product of my imahinacion.

4 stripes & you are sustainable (strong). 5 or more hours would be excessive.

One conclusion of this week that there is a 3rd possible channeling correction, which is not an ABC, but a 5-wave structure that ends before the E-9 (around the Guard Rail). In fact, this is the best kind of correction due to its length.

Now the Green River has taken a hit. A trend correction can end at the opposite Guard Rail, 60 or so pips beyond (Deep) or 100+ pips below (Extra Deep).

There are multiple LEMAs here as well as the weekly pivot at 1.0851, I think this could bounce back (Wave 4) to the Upper Guard Rail, but at least beyond the Green River for a KGB.


We are, we are on the way down to answer the question about the h2 swing low.

like I said, 5 would be excessive – but it would also mean that a beat / lower low is still coming

Unter Meiner Unicorn

To all of the adventure capitalists in the house!

Take off your shirts and wait for further instructions!

It is nice to be important, but it’s more important to be nice.

This was a full lambda pendulum swing out, nearly 5 complete waves if I count them right.

The cyan box (26 pips) was for the market to make up its mind about continuation in the next 6 hours following the Money Flow / RSI2 peak.

Settling in the lower half on Hour 6 would had meant continuation (positioning not overtly bullish). Making increnental highs means reversal. It’s Dover, like the soft rains of April. I’m on the roll now, I’m on the phone now. Is it Reinhart back home, I’m so alone…

The reason for getting a 10+ pips beat over the Money Flow peak is to get the volatility going. It needs to be swung in both directions (hence the red label). You can’t get a sustained move without volatility pumping away.

I showed that this was the closest to the current counter rally with its 335 pips depth to h2. Guess what, we just matched that. The location of the h2 stayed the same, only H3 got pushed further out with the W4 gigante bull flag and the W5 up.

Smooth Copulator.

Volatility Without Correction

Textbooks out the window, as usually on my classes.

Subject corrections.

#1 objective of a trader is to find a low risk entry, i.e. the end of a correction in a channelling move.

A channeling move is a trending move where the corrections terminate before the 9-Day EMA band (highs to lows) (52 sample on 4H, 207 on 1H, 414 on 30 min).

The Guard Rails are displacement lines to help finding the approximate area where a deep correction could terminate. The displacement is instrument dependent, 1 fluctuation maximum away from the 9 EMA band.

In the case of EUR/USD this distance is 6/5×32 pips (38.4).

In order to find a possible correction during channeling, you should be looking for sudden counter directional volatility, i.e. an opposit coloured candle with a span exceeding a fluctuation size within an hour, right after a 24-hour HH / LL.

Now you need ti ho back to the last candle that was deeply overbought / deeply oversold on RSI2 and start to count.

There are only two kind of corrections. One ends within 14-16 hours and usually does not make it to the other BB (30 sample, HL2). This one goes by the name of Loneliness.

The other kind is sure to make it to the other BB, lasts 23-40-x hours and goes RSI2 deeply oversold/overbought twice with a deeply overbought / oversold print in between, depending in direction. This one is called Disregard.

I have mentioned before that a Loneliness would likely be followed up by a Disregard and vica versa.

Also, the becoming deeply overbought / oversold sequence isn’t exclusive to Disregard, it may happen with a Loneliness sequence as well.

Putting indicators on Closing prices is a sickness I never got. The road travelled is more important than distortions for closing prices.

The first thing to do is finding the spot where a correction may have started.

With everything sdid, this is a solid low (volatility breach reversal) and market would have to retreat first 30-50 pips to take it out.


/// counter vol down after higher high
 if (iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,24,i))==iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,3,i)) && Open[i]>Close[i] && High[i]-Low[i]>320*Point && High[i]>guardrailu[i]){
   ObjectCreate("Friers"+DoubleToStr(i), OBJ_RECTANGLE, 0, Time[i+1], High[i], Time[i], Low[i]);
         ObjectSetInteger(0,"Friers"+DoubleToStr(i),OBJPROP_COLOR,clrPink);
         ObjectSetInteger(0,"Friers"+DoubleToStr(i),OBJPROP_BACK,0);
         ObjectSetInteger(0,"Friers"+DoubleToStr(i),OBJPROP_WIDTH,7);
}

Now let’s apply a counter.

if(i<200){
j=i+1;
while (j<i+20){
 if (RSI2[j]>90 && High[j]==iHigh(symbol,0,iHighest(symbol,0,MODE_HIGH,3,j))) break;
j++;
}

if (j-1>0){
if (j<i+20){
   k=j-1;
   while (k>j-40 && k>0){
     if ((j-k)==14 || (j-k)==16 || (j-k)==23) {                      
         ObjectCreate("Pounterd"+IntegerToString(k), OBJ_TEXT, 0, Time[k], Low[k]-40*Point); 
        ObjectSetText("Pounterd"+IntegerToString(k), IntegerToString(j-k), 11, "Impact", Maroon);
      }
     k--;
   }
}

}
}

So what is the market doing if this move down does not qualify for a correction? Trending lower.

This is not a drill, this is for real.

It is not a matter of believing, it is the matter of listening.


Every time I get the urge to make some video, I get stuck on every little detail, but I am always certain of one thing: I should use Galway is God for music.


I was trying to show something unique about being Hungarian to my daughter. I told her, that when it is raining and the sun is out at the same time, we say “the devil’s beating his wife”. With such metaphoric mindset how can someone not end up becoming a poet?

..

WAVE 5 entry

Go shorting, it’s your birthday…

H2 Otto

An investigation into what makes or breaks a turn that just left a powder box.

An istant rejection would result in a channeling move initially.

The goodies are burriend in the bon-yard.

This however is not the very thing I’m after today. It is the H2-h2 swing with that gray box at the end. If the market was to continue chasing a new box, the h2 end would remain untouched.

The next image will make the point for me.

The H2-h2 span may actually be the shortest, hence the Wave 3 numbering would mess things up badly.

The reason this ended up not being a reversal is that the h3 swing low was made higher than where the h2 was at. Confirmation? How about price hooking back up to the upper guard rail (new box)?

Also there is that piece of information, the 460 pips. You are not likely to retrace all of that. The weekly S3 / R3 displacements are at 415 pips.

3 more images, the first one had a reaction off the h2, but then made the break.

The next one did a back test soon after the break.

The last one is the closest to what is happening right now.

335 pips VS 300. There was a back and forth around the h2.

You already recognize the gray box. I drew in a red one as well, since the h2 would need to receive some pressure before the decision would be made. If price bottoms in the 1.0770-1.0740 zone and then tags the Upper Guard rail, that would be a confirmed reversal.

If it pushes through the 1.0732 h2 low convincingly (25+ pips), the market would have started a new quest for finding a holy powder box.

I needed a breath of fresh air in the clean water.

Hmm 3

H in the 3, who’s watching me.

There was a guy calling his taxi service to the Bay Area Rapid Transfer Humphrey Go Bart.

Emeryville’s Emery-Go-Round was just a weak rip off.

So, Humvee three then. Dago-bart. Fine tuning.

We have found going into the stats, that the counter directional H3 is expected to reach 100+ pips stretch from the Guard Rail.

Powder box counter moves 

H1 - GR / L1 / GR scare
H2 - GR / GR +
H3 - GR (only if H1&H2 were GR) / L2 / L3

Don’t be skewed by the blocks that I got. How exactly to time a perfect entry / exit?

I would propose looking at a 7-sample hourly MFI. Once a fractal prints under a deeply ovebought / oversold condition, I would rotate out / reverse position on a beat in excess of 10 pips. And add some more at 16.

If you needed a confluence of resistance, weekly R2 and the brown trendline was it.

The R2 has been at that level for the last 3 weeks. I’m not plotting it over the current bar for better visuals.

Having the right market model makes you for instance stop looking for more upside once the H3 has printed.


Please keep your personal longing

I was looking for a picture of me riding on the sail boat that used to belong to Errol Flynn, but could not find one. Anyways, speaking of New Zealand, there are a lot of silly extreme sports over there. Feel free to look up boom-netting. Wasn’t much fun.

The devil’s in the retail.

Want more geographical stuff? Bank of America sent my credit card to Gabon, cause whoever heard of Great Britain as a country?!

Opted to display all 6 values at all times.