Are You Interested…

Are you interested in selling?



Because this is a commuter market and the price is above the upper guard rail (green) and I just saw an RSI2 divergence.

Are you interested in buying?



Because this is a commuter market and the price is below the lower guard rail (green) and I just saw an RSI2 divergence.

I don’t have long term expectations, that is why I use large leverage and a trail stop. I grab opportunities is all.

Trading the Commuter Market

The first thing to say about this kind of a market (which is any market that is not embedded in the long term overbought / oversold) is that neither group has privileges over one another and the lead one may enjoy (i.e. due to a surprise loss of embedding) shall only last until the current move wears off.

By this, I mean that after wave 5 of Wave 5, the tide turns in a big way. And wave 5-s tend to be underperforming, which means that they merely match the terminal point of Wave 3, and often would fall short.

The implications would include the high probability of a reversal in Bull Zone 1 and Bear Zone 1. A range bound market would often be playing ping between the 30-minute LEMA and the 2H LEMA.

For the most part this is a calm and collected game where the parties (bulls & bears) have to wait for their turn.

The monkey wrench is when the strong handed bulls/bears override the privilege for the next move by taking over the tokens of the weak handed bulls/bears around the guard rail, and from 1x stretch they pull the band out to 3x stretch with their continuous buying/selling.

Figuring where you are at in the board game takes tools, such as plotting mowing averages, displacements and counting waves. Additional hints may arrive from the Energy Bands (arguably one of the best indicators ever invented by anyone), and from monitoring for volatility bracket breaches of the consolidation level as well as for RSI2 divergences.

As you will see, applying the knowledge you get here would make a world of difference in knowing what is happening: how far can the market go, when and where would it be turning around.

The following image shows you the hit of the Energy Bands, the back test of the high, the daily RSI2 divergence and the volatility bracket breach all in one picture.

Find my LEMA 30N indicator on this blog for the LEMAs, the guard rails and the purple haze displayed on a 30-minute time frame correctly.

Plot E-16, which is E-32 on the 30 minute. When in picture based on the Daily, 4H divergences and breaches, we are working off the 30-minute.

The following image shows a not very typical, but symmetrical wave structure down: both Wave 2 and Wave 4 hit the E-32. You can clearly see the whoop-bam-boogie peaks of Wave 4 on the RSI below, but to get the structure right, for Wave 2 you would have to zoom in to 15 min.

As an actuality, check out my the blog entry, “ Acapulco”. Where I calculated the target using a fractal sequence. Look at the date of the post and the outcome as well.u

…Wave 2 down made – think Pivot, think fake out of 4H doji. A Wave 2 can also exceed 100% retracement of Wave 1, so factor in this possibility. This looks like a scare on the Volatility Whip.

What makes this move up a Wave 1? The fact that it managed to fake out Mr. Maroon. If you think about it, Wave 1 & 2 can draw a whip as well, but on a larger scale, which would mean an enormous bear trap.

…so this was the Monkey Wrench I just mentioned. Look up my entry about Trading Bear Zone 1 for further info about the rules that apply here, such as:

Sell after Whoop, Bam and Boogie finished making sandwiches in the kitchen.

Also, pay attention to the red tails at the end.

…the path of least resistance summed up in one picture

Building Up The Thrust

We left off with calling an end one hump early – not that this changed much: both failed breaks fell shy of five pips extra. So the Volatility Whip correctly had the whip leg longer this time, and after a quick fake-out of Mr. Maroon this head served as the terminal for wave 2 up.

Whoop, Bam, Boogie, and #5 matched up perfectly.

The topic of this entry is to be able to spot how the thrust follows the build up in a wave structure.

This would be a good time to call in the clowns candles.

You already know where wave 1 down started: it came after the volatility whip. It ended in the thrust at the end of the same thirty minute candle, so in order to see the blown up structure of black candles plus the thrust wick, you would have to go down to the 5-minute timeframe, and we are not going to do that now. The previous article should had given you the feeling of how things were speeding up gradually.

Wave 2 and Wave 4 ends I marked up with the numbers.

What you need to appreciate here is that Wave 3 had two of the black candle streaks followed by a thrust each (sometimes you would see one big bodied candle if your time frame is too close to print a wick, but this is the same thing), but between the two the RSI2 did not register enough strength to call a wave. Your reference point is the read on wave 2, and if that one is barely visible because of the wave’s steepness, go to lower time frame again.

You can also see that there were 3 Full Lambdas (3 diagonal cyan lines) down during the move, since there was no shot over the bow in the middle of wave 3.

…in Acapulco

We talk about radial termination today.

Figure one shows a Volatility Whip (VW) in deep pink after a wave structure ended to the downside.

The Lock Out Close Out point is at the end of the V leg.

1h time frame

The W leg does not taken out by more than 5 pips, so this is a failed attempt to the downside.

Figure two shows the new wave structure starting from the excess and after wave 3’s three-push rampage, the wave 5 single blow’s rebound is already a V leg. Since the structure was to the upside, the LOCO point would be on the bottom.

The starting point of Wave 1 is inside the V leg and is the first pull back of the W.

4h time frame

Figure three: Wave 2 gets picked up upon the penetration into the last V leg within 4.5 pips .

4h time frame

The market shifts gears, things start to happen faster.

Figure four.

LOCO gets placed on the top.

Wave 1 starts just from above the hourly close of the W leg.

Wave 2 is a 3-pip penetration into the V leg (red circle shows the fake out of the Hourly Maroon).

1h time frame

The Loco point just falls shy of the low made by Wave 3 to the downside, to the actual matching of the lows becomes a 4-pip fake out out the LOCO as well.

Figure 5: the ominous Institutional market move & the present.

30m time frame – the green circle is a fake out of Mr. Maroon

Looking at this image the institutional move looks more like a market making move: they put in longs those who never in a million years wanted to be.

The wave structure ended just above the previous LOCO line and a new LOCO was printed. Fake outs galore. Having an open that would reach below 1.1153 would set up a back test of a now doubly wide LOCO pair of lines = Kiss GoodBye.

Now, what if they gap it up? There is some potential (5-15%) here to go crazy and milk more buying. A small gap up would change nothing on the picture. You would need to increase your tolerance beyond a 5-pip fake out of the V line for a bit, so I would only start hedging shorts gradually, and starting beyond 1.1181. Watch out for the increased spread at the open as well, for your ask line might be showing a break out 4-5 pips earlier.

To me, at the moment it looks like Wave 1 down was started with the back test of the overbought area, and there were more than Four Tops made above the Upper Guard rail (in green) which is the Bottom Rail of Bull Zone 1.

See you all in Acapulco!

(The fact that the time frame had to be blown up by the end shows that there is less liquidity up here for the market can only sustain shorter moves. The Market wants liquidity, the brokers want commission.)

Do remember the possibility of a continuation still, and be prepared for it.

Another 5 waves up would put price somewhere between 1.1266 and 1.1285. So, if price violates 1.1158 first, then comes back through it, surrender all hopes that the next wave structure would occur to the downside and ride it hedged (or overhedged) to the nearest check point.

Market Rhymes

This one is gonna be a rant on waves and the behavior of the funny guys.

Calling things symmetrical would be a little bit harsh, but the rhythm of the market more or less remains the same.

Take a look at the following two 5-wave structures.

Although they are certainly not identical, they have commonalities. Three attempts to take the price as high as possible is one of these. In both cases, 2 out of the 3 peaks managed to achieve overdrive prints on the stochastic bars. Both wave structures had #4 undercutting #2 which speaks of a corrective wave structure (by this I mean you should start fading heavily by the time wave 5 is up). In both cases, wave 5 fell short of the overall peak, and they were less than 5 hours long.

Now, let’s discuss for a moment the deep break and why none of that move is connected or marked as part of a structure. They aren’t.

The volatility whip was utilized by some institution smelling funny guys to take over as many longs as were possible and make a killing on the 10% move that transpired in about 6 hours – about one session’s length.

The volatility whip is a thrown up ball, there are no rules other than the idea of making a measurement on what the downside volatility versus the upside volatility relates to each other on a current full throttle.

This institution spotted the short term opportunity: wave structure over with, 10% score on short notice pending, all they needed to do was serving as an amplifier, plus putting a lot of orders out at & below the 30% line.

My assumption for generating a very efficient “trending” move is having a program run that gives every fill at market in one direction. It takes a lot of capital to do this, no doubt. There are about 10 banks in the world that have the funds.

This overwhelming move knocks out everyone on the way down from their longs -> they become taken over by the bank, showing an ever increasing draw down, then they hit their target area that should be strategically placed beyond a lump of orders (stops) that were left out for good measure.

This is by when the auto fill program (in this case auto buy) gets turned off. Appreciate that they cannot exceed the demand on the way down, only match it, so the down move in this case was an “aid” to escort price into their own net. They will have a bottom heavy averaged down entry price and a ghost print on the chart that others would start drawing trend lines onto.

The overwhelming buy is a notch more aggressive, it has to also front run the orders, getting other routines excited and wanting to interact.

It does help the cause that the liquidity is relatively light in the cluelessness of what is happening. A big news event can help their cause, no doubt.

The major puzzle is now, that the 5-wave structure is over with, would they bother to mirror their own cash cow Vol Whip event this time?

Oh, the arrow for hedging? I lifted it from my TOS era. Don’t quite remember how I came up with the expression, but it works.

diff[i] = 100 - (75 - (stoch9[i] - (88 - ChoppinessIndex(14,i)))) * .8;

if (diff[i]<63 && diff[i+1]>63 && ChoppinessIndex(14,i)>34 && Period()==30 && iStochastic(symbol,0,9,3,3,MODE_SMA,0,MODE_SIGNAL,i+1)<80) {downcross[i]=High[i]+40*Point; downcross2[i]=High[i]+40*Point;}

4H Doji Lines (any time frame) for you, for you’ve been a good sport

//|                                                4H DOJI Lines.mq4 |
//|                                         Copyright 2019, Macdulio |
#property copyright   "2019, Macdulio"
#property link        ""
#property description "4H DOJI Lines"

#include <stdlib.mqh>
extern double Leverage = 1.5;
#property indicator_chart_window
#property indicator_buffers 30
#property indicator_color1 Black
#property indicator_color2 Yellow
extern double AF=1.3;
extern double LT=60;
extern int maxlines = 10; 
extern int displaylength = 36;     
extern int       MinLengthOfUpTail=1; //candle with upper tail equal or more than this will show up
extern int       MinLengthOfLoTail=1; //candle with lower tail equal or more than this will show up
extern double    MaxLengthOfBody=30; //candle with body less or equal with this will show up
//---- input parameters for dragonfly doji
extern int       MaxLengthOfUpTail1=160; //candle with upper tail equal or more than this will show up
extern int       MinLengthOfLoTail1=160; //candle with lower tail equal or more than this will show up
extern double    MaxLengthOfBody1=30; //candle with body less or equal with this will show up

//---- input parameters for gravestone doji
extern int       MinLengthOfUpTail2=160; //candle with upper tail equal or more than this will show up
extern int       MaxLengthOfLoTail2=160; //candle with lower tail equal or more than this will show up
extern double    MaxLengthOfBody2=30; //candle with body less or equal with this will show up
double pt=0.00001;
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 line15[];

double line16[];
double line17[];
double line18[];
double line19[];
double line20[];
double line21[];
double line22[];
double line23[];
double line24[];
double line25[];
double line26[];
double line27[];
double line28[];
double line29[];
double line30[];

double vbru[];

string TimeFrame;

//| Custom indicator initialization function                         |
int init()
//---- indicators

//| Custom indicator deinitialization function                       |
int deinit()
//| Custom indicator iteration function                              |
int start()
   string symbol = Symbol();
   int      i,pos,c_b=IndicatorCounted();;
  ArrayResize(lines, maxlines);
  ArrayInitialize(lines, 0);

  ArrayResize(line1, 100);
  ArrayInitialize(line1, EMPTY_VALUE);  
  ArrayResize(line2, 100);
  ArrayInitialize(line2, EMPTY_VALUE);  
  ArrayResize(line3, 100);
  ArrayInitialize(line3, EMPTY_VALUE);    
  ArrayResize(line4, 100);
  ArrayInitialize(line4, EMPTY_VALUE);  
  ArrayResize(line5, 100);
  ArrayInitialize(line5, EMPTY_VALUE);  
  ArrayResize(line6, 100);
  ArrayInitialize(line6, EMPTY_VALUE);  
  ArrayResize(line7, 100);
  ArrayInitialize(line7, EMPTY_VALUE);    
  ArrayResize(line8, 100);
  ArrayInitialize(line8, EMPTY_VALUE);    
  ArrayResize(line9, 100);
  ArrayInitialize(line9, EMPTY_VALUE);    
  ArrayResize(line10, 100);
  ArrayInitialize(line10, EMPTY_VALUE);  
  ArrayResize(line11, 100);
  ArrayInitialize(line11, EMPTY_VALUE);    
  ArrayResize(line12, 100);
  ArrayInitialize(line12, EMPTY_VALUE);    
  ArrayResize(line13, 100);
  ArrayInitialize(line13, EMPTY_VALUE);      
  ArrayResize(line14, 100);
  ArrayInitialize(line14, EMPTY_VALUE);  
  ArrayResize(line15, 100);
  ArrayInitialize(line15, EMPTY_VALUE);  
  ArrayResize(line16, 100);
  ArrayInitialize(line16, EMPTY_VALUE);  
  ArrayResize(line17, 100);
  ArrayInitialize(line17, EMPTY_VALUE);  
  ArrayResize(line18, 100);
  ArrayInitialize(line18, EMPTY_VALUE);    
  ArrayResize(line19, 100);
  ArrayInitialize(line19, EMPTY_VALUE);  
  ArrayResize(line20, 100);
  ArrayInitialize(line20, EMPTY_VALUE);  
  ArrayResize(line21, 100);
  ArrayInitialize(line21, EMPTY_VALUE);  
  ArrayResize(line22, 100);
  ArrayInitialize(line22, EMPTY_VALUE);    
  ArrayResize(line23, 100);
  ArrayInitialize(line23, EMPTY_VALUE);    
  ArrayResize(line24, 100);
  ArrayInitialize(line24, EMPTY_VALUE);    
  ArrayResize(line25, 100);
  ArrayInitialize(line25, EMPTY_VALUE);  
  ArrayResize(line26, 100);
  ArrayInitialize(line26, EMPTY_VALUE);    
  ArrayResize(line27, 100);
  ArrayInitialize(line27, EMPTY_VALUE);    
  ArrayResize(line28, 100);
  ArrayInitialize(line28, EMPTY_VALUE);      
  ArrayResize(line29, 100);
  ArrayInitialize(line29, EMPTY_VALUE);  
  ArrayResize(line30, 100);
  ArrayInitialize(line30, EMPTY_VALUE);  
    ArrayResize(vbru, Bars);
   ArrayInitialize(vbru, 0); 
    ArrayResize(mid, Bars);
   ArrayInitialize(mid, 0);     

 for (i=500; i>=0; i--) 
       if(iHigh(NULL,240,i)-iClose(NULL,240,i)>=MinLengthOfUpTail*pt && iClose(NULL,240,i)-iLow(NULL,240,i)>=MinLengthOfLoTail*pt  && MathAbs(iClose(NULL,240,i)-iOpen(NULL,240,i))<=MaxLengthOfBody*pt && vbru[i+1]==0) vbru[i]=(iOpen(NULL,240,i)+iClose(NULL,240,i))/2+.000042;
       if(iHigh(NULL,240,i)-iClose(NULL,240,i)<=MaxLengthOfUpTail1*pt && iClose(NULL,240,i)-iLow(NULL,240,i)>=MinLengthOfLoTail1*pt  && MathAbs(iClose(NULL,240,i)-iOpen(NULL,240,i))<=MaxLengthOfBody1*pt && vbru[i+1]==0) vbru[i]=(iOpen(NULL,240,i)+iClose(NULL,240,i))/2+.000042;
       if(iHigh(NULL,240,i)-iClose(NULL,240,i)>=MinLengthOfUpTail2*pt && iClose(NULL,240,i)-iLow(NULL,240,i)<=MaxLengthOfLoTail2*pt  && MathAbs(iClose(NULL,240,i)-iOpen(NULL,240,i))<=MaxLengthOfBody2*pt && vbru[i+1]==0) vbru[i]=(iOpen(NULL,240,i)+iClose(NULL,240,i))/2+.000042;

  for (i=1; i<=250; i++)
        if (vbru[i]>0){  mid[pos]= vbru[i]; pos=pos+1;}

   while(i<maxlines && pos>0)        
               if (i==pos) break;
               if (mid[i]!=EMPTY_VALUE) lines[i]=mid[i];

   for (i=0; i<=displaylength-1; i++) {

      if (lines[0]>0) {line1[i]=lines[0]; line16[i]=lines[0];}
      if (lines[1]>0) {line2[i]=lines[1]; line17[i]=lines[1];}
      if (lines[2]>0) {line3[i]=lines[2]; line18[i]=lines[2];}
      if (lines[3]>0) {line4[i]=lines[3]; line19[i]=lines[3];}
      if (lines[4]>0) {line5[i]=lines[4]; line20[i]=lines[4];}
      if (lines[5]>0) {line6[i]=lines[5]; line21[i]=lines[5];}
      if (lines[6]>0) {line7[i]=lines[6]; line22[i]=lines[6];}
      if (lines[7]>0) {line8[i]=lines[7]; line23[i]=lines[7];}                
      if (lines[8]>0) {line9[i]=lines[8]; line24[i]=lines[8];}
      if (lines[9]>0) {line10[i]=lines[9]; line25[i]=lines[9];}  
      if (lines[10]>0) {line11[i]=lines[10]; line26[i]=lines[10];}
      if (lines[11]>0) {line12[i]=lines[11]; line27[i]=lines[11];}
      if (lines[12]>0) {line13[i]=lines[12]; line28[i]=lines[12];}
      if (lines[13]>0) {line14[i]=lines[13]; line29[i]=lines[13];}
      if (lines[14]>0) {line15[i]=lines[14]; line30[i]=lines[14];}
     if (i==6) {ObjectCreate("Happygail"+i, OBJ_RECTANGLE, 0,  Time[6], line1[i]+160*Point, Time[2], line1[i]-160*Point);
  ObjectCreate("Happybail"+i, OBJ_RECTANGLE, 0,  Time[5], line2[i]+160*Point, Time[1], line2[i]-160*Point);
  if (line2[i]>line1[i]){ 
         ObjectCreate("Happydays"+iHigh(symbol,240,i), OBJ_TEXT, 0, Time[0], line2[i]+99*Point); 
         ObjectSetText("Happydays"+iHigh(symbol,240,i), DoubleToStr(NormalizeDouble(line2[i]+80*Point,4),4), 16, "Impact", Black);
         ObjectCreate("Happydays"+iLow(symbol,240,i), OBJ_TEXT, 0, Time[0], line1[i]-78*Point); 
         ObjectSetText("Happydays"+iLow(symbol,240,i), DoubleToStr(NormalizeDouble(line1[i]-80*Point,4),4), 16, "Impact", Black);
  else { 
         ObjectCreate("Happydays"+iHigh(symbol,240,i), OBJ_TEXT, 0, Time[0], line1[i]+99*Point); 
         ObjectSetText("Happydays"+iHigh(symbol,240,i), DoubleToStr(NormalizeDouble(line1[i]+80*Point,4),4), 16, "Impact", Black);
         ObjectCreate("Happydays"+iLow(symbol,240,i), OBJ_TEXT, 0, Time[0], line2[i]-78*Point); 
         ObjectSetText("Happydays"+iLow(symbol,240,i), DoubleToStr(NormalizeDouble(line2[i]-80*Point,4),4), 16, "Impact", Black);


   void deletetxt1(string text){
   for(int iObj=ObjectsTotal()-1; iObj >= 0; iObj--){
      string   on = ObjectName(iObj);
      if(StringFind(on, text) == 0)  ObjectDelete(on);
}  }

Code 4, Code 5

I probably have mentioned before that I use codes for trail stops,

code 1 applies a 1-pip stop loss first upon hitting 4-pips in gains,

code 2 applies the same protective stop loss, but starting from 8-pip in gains, and

code 3 jumps over the first 3 lower steps and only starts trailing upon having made progress beyond 1/2 of the fluctuation size (i.e. 4 pips locked in beyond a 16+4-pip move) which comes in handy when the market does a whole lot of nothing and would likely take you out for break evens with its back and forth motions.

One recent modification was to figure in the swap when determining about applying the trail ( OrderProfit()+OrderSwap()>0 ).

Code 4 is actually an automatic target setting: it adjusts the get out level relative to the last 8-sample low/ high and displaces it by kickback * points – if the position went into gains, and if the new kickback displacement leaves the minimum of 1 pip on the bone (my EUR/USD round trip cost is 0.6 pips)

Code 5 is quite stylishly adjusts the target to E-16: this is where you would be expecting your wave 4 to end and start wave 5, if your count is correct.

/////Long Target - Code 4

if( OrderType()==OP_BUY && OrderProfit()>0 && OrderStopLoss()==.4 && OrderTakeProfit()!=NormalizeDouble(iLow(symbol,15,iLowest(symbol,15,MODE_LOW,8,0))+kickback*Point,4) && OrderOpenPrice()<NormalizeDouble(iLow(symbol,15,iLowest(symbol,15,MODE_LOW,8,0))+kickback*Point,2)-10*Point
       { OrderModify(OrderTicket(), OrderOpenPrice(), OrderStopLoss(), NormalizeDouble(iLow(symbol,15,iLowest(symbol,15,MODE_LOW,8,0))+kickback*Point,4), OrderExpiration());
          Print("LONG Target Set @ "+DoubleToStr(NormalizeDouble(iLow(symbol,15,iLowest(symbol,15,MODE_LOW,8,0))+kickback*Point,4),4));}

/////Short Target  - Code 4

if( OrderType()==OP_SELL && OrderProfit()>0 && OrderStopLoss()==4 && OrderTakeProfit()!=NormalizeDouble(iHigh(symbol,15,iLowest(symbol,15,MODE_HIGH,8,0))-kickback*Point,4) && OrderOpenPrice()>NormalizeDouble(iHigh(symbol,15,iLowest(symbol,15,MODE_HIGH,8,0))-kickback*Point,2)+10*Point
     {   OrderModify(OrderTicket(), OrderOpenPrice(), OrderStopLoss(), NormalizeDouble(iHigh(symbol,15,iLowest(symbol,15,MODE_HIGH,8,0))-kickback*Point,4) , OrderExpiration());
           Print("SHORT Target Set @ "+DoubleToStr(NormalizeDouble(iHigh(symbol,15,iLowest(symbol,15,MODE_HIGH,8,0))-kickback*Point,4),4));  }    

/////Long Target - Code 5

if( OrderType()==OP_BUY && OrderProfit()>0 && OrderStopLoss()==.5 && OrderTakeProfit()!=NormalizeDouble(iMA(symbol,30,32,0,MODE_EMA, PRICE_CLOSE,0),4) && OrderOpenPrice()<NormalizeDouble(iMA(symbol,30,32,0,MODE_EMA, PRICE_CLOSE,0),4)
       { OrderModify(OrderTicket(), OrderOpenPrice(), OrderStopLoss(), NormalizeDouble(iMA(symbol,30,32,0,MODE_EMA, PRICE_CLOSE,0),4), OrderExpiration());
          Print("LONG Target Set to E-16 @ "+DoubleToStr(NormalizeDouble(iMA(symbol,30,32,0,MODE_EMA, PRICE_CLOSE,0),4),4));}

/////Short Target  - Code 5

if( OrderType()==OP_SELL && OrderProfit()>0 && OrderStopLoss()==5 && OrderTakeProfit()!=NormalizeDouble(iMA(symbol,30,32,0,MODE_EMA, PRICE_CLOSE,0),4) && OrderOpenPrice()>NormalizeDouble(iMA(symbol,30,32,0,MODE_EMA, PRICE_CLOSE,0),4)
     {   OrderModify(OrderTicket(), OrderOpenPrice(), OrderStopLoss(), NormalizeDouble(iMA(symbol,30,32,0,MODE_EMA, PRICE_CLOSE,0),4) , OrderExpiration());
           Print("SHORT Target Set to E-16 @ "+DoubleToStr(NormalizeDouble(iMA(symbol,30,32,0,MODE_EMA, PRICE_CLOSE,0),4),4));  }    

run your cycle over the open trades:

for(i=OrdersTotal()-1; i>=0 ; i--)
           Print("Access to orders list failed with error (",GetLastError(),")");
The hedging starts at 4-pips above the candle high with the arrow, and balloons into a full hedge within 10 pips, but for total naked risk I use the value 7-pips out.

I am currently net 4 lots short, and booked $468.02 in gains, which means that today I managed to purchase 10 pips of movement relative to the naked risk carried forward. This 10-pip measure is the name of the game plus not losing equity when you are managing holdings.

Kickback is 90-160 points depending on recent data.

Stochastic Combo

The following indicator should be placed as 3rd indicator below the chart in order to have the letter plots right – or edit the plots from “3” to the number you want it to be (OBJ_TEXT, 3 <- that one).

//|                                             Stochastic Combo.mq4 |
//|                                         Copyright 2019, Macdulio |
#property copyright   "2019, Macdulio"
#property link        ""
#property description "Stochastic Combo"
#property strict

#property indicator_separate_window
#property indicator_minimum    0
#property indicator_maximum    100
#property indicator_buffers    2
#property indicator_color1     LightSeaGreen
#property indicator_color2     Red
#property indicator_level1     20.0
#property indicator_level2     80.0
#property indicator_level3     35.0
#property indicator_level4     65.0
#property indicator_levelcolor clrBlack
#property indicator_levelstyle STYLE_DASH

extern double FSize=32;
double FMax = FSize*6/5;

double stoch[], stoch30[], RSI2[];
//| Custom indicator initialization function                         |
int OnInit(void)
   string short_name;
//--- 2 additional buffers are used for counting.
//--- indicator lines
   SetIndexBuffer(0, stoch30);

//| Stochastic oscillator                                            |
int start()
   int    i;
   string symbol = Symbol();
  ArrayResize(stoch, 600);   
 ArrayInitialize(stoch, EMPTY_VALUE); 
  ArrayResize(stoch30, 600);   
 ArrayInitialize(stoch30,  EMPTY_VALUE);  
 ArrayResize(RSI2, 600);   
 ArrayInitialize(RSI2, EMPTY_VALUE); 

   for(i=300; i>=0; i--){
           RSI2[i]= iRSI(symbol,0,2,PRICE_MEDIAN,i);
            if ( (stoch30[i]>stoch[i] && stoch30[i+1]<=stoch[i+1] && stoch[i]>70)  || (stoch[i]<80 && stoch[i+1]>80 && stoch30[i]>stoch[i])  || (stoch[i]>70 && stoch30[i]<35 ) )  { 
             ObjectCreate("Jeat"+DoubleToStr(i)+DoubleToStr(3), OBJ_ELLIPSE, 3, Time[i],  stoch[i]+10, Time[i], stoch[i]);
                  if ( (stoch30[i]<stoch[i] && stoch30[i+1]>=stoch[i+1] && stoch[i]<30)   ||  (stoch[i]>20 && stoch[i+1]<20 && stoch30[i]<stoch[i] && stoch30[i]<10) || (stoch[i]<30 && stoch30[i]>70 && stoch[i+1]<30 && stoch30[i+1]>70) )  { 
             ObjectCreate("Jeat"+DoubleToStr(i)+DoubleToStr(3), OBJ_ELLIPSE, 3, Time[i],  stoch[i]+10, Time[i], stoch[i]);
       if (Period()==60){ 
         if (RSI2[i]<=RSI2[i+1] && RSI2[i+3]<RSI2[i+1] && RSI2[i+1]>81 && stoch[i+1]>68 && stoch30[i+1]>60){
          if (Close[i]>iMA(NULL,0,828,0,MODE_EMA, PRICE_HIGH,i)+FMax*10*Point){ ObjectCreate("Tit"+DoubleToStr(i), OBJ_TEXT, 3, Time[i+1], 55);   ObjectSetText("Tit"+DoubleToStr(i), "S/C", 22, "Arial Black", Gray);}
          else {ObjectCreate("Tit"+DoubleToStr(i), OBJ_TEXT, 3, Time[i+1], 85);  ObjectSetText("Tit"+DoubleToStr(i), "S", 32, "Arial Black", Maroon);}}
         if (RSI2[i]>RSI2[i+1] && RSI2[i+2]>RSI2[i+1]  && stoch[i]<30 && ((stoch30[i+1]<40 && RSI2[i+1]<9) ||  (Close[i+1]>iMA(NULL,0,30,0,MODE_SMA, PRICE_CLOSE,i+1)) && RSI2[i+1]<15 && (stoch30[i+1]<50 || stoch30[i+1]>60)  )){
      if (Close[i]<iMA(NULL,0,828,0,MODE_EMA, PRICE_LOW,i)-FMax*10*Point ) { ObjectCreate("Tit"+DoubleToStr(i), OBJ_TEXT, 3, Time[i+1], 55);  ObjectSetText("Tit"+DoubleToStr(i), "B/C", 32, "Arial Black", Gray);}               
                  else if (stoch[i]<35 && stoch[i+1]>stoch30[i+1]+12) { ObjectCreate("Tit"+DoubleToStr(i), OBJ_TEXT, 3, Time[i+1], 45); ObjectSetText("Tit"+DoubleToStr(i), "B", 32, "Arial Black", Maroon);}
                  else if (stoch[i+1]<stoch30[i+1]) { ObjectCreate("Tit"+DoubleToStr(i), OBJ_TEXT, 3, Time[i+1], 45); ObjectSetText("Tit"+DoubleToStr(i), "B", 32, "Arial Black", Maroon);}
                if (RSI2[i]>RSI2[i+1] && RSI2[i+2]>RSI2[i+1]  && stoch[i]<30 && 
                stoch30[i]>70 && stoch30[i+1]>70 &&  stoch30[i+2]>70 &&  stoch30[i+3]>70 && stoch30[i+4]>70 && stoch30[i+5]>70 && stoch30[i+6]>70 &&  stoch30[i+7]>70 &&  stoch30[i+8]>70 
                && RSI2[i+1]<15 ){
                  ObjectCreate("Tite"+DoubleToStr(i), OBJ_TEXT, 3, Time[i+3], 45); 
                  ObjectSetText("Tite"+DoubleToStr(i), "EB", 32, "Arial Black", Blue);        


void deletetxt1(string what){
   for(int iObj=ObjectsTotal()-1; iObj >= 0; iObj--){
      string   on = ObjectName(iObj);
      if(StringFind(on, what) == 0)  ObjectDelete(on);
}  }

How do you trade corrective wave structures?

This is how you do it.

Plot this indicator on a 1H chart.

It would produce your lead signal.

Green Line above 80 = overbought

Green Line below 80 = oversold

You need the green line to be “fresh”, not embedded.

In the fresh overbought you are looking for a sell signal.

Now you need to make sure, that a turn is happening. Go to a 30-minute chart and look for a hood in the overbought and a root in the oversold.

These can be spotted with an RSI2 divergence (thick red short lines).

Now you start to count the humps to get the exit right.

Self explaining picture coming up:

The corrective wave structure does not show a continuation divergence between wave 2 and wave 4.

You are calculating the approximate distance of failure from the end of 3 wave (the peak that occurs right before the #4 print in the opposite direction) 1/2 fluctuation size away and factor in the possibility of a failed break as well.

Now you know a lot.

(TNR stands for Total Naked Risk in dollars).

I am planning on releasing a book on Managing Naked Risk in Forex in the coming years.