Terminal Waves by Macdulio

– If only there was a way of knowing when and where the market turns…

– You mean you want to plot the terminal waves?! I can do that!

EUR1114

One day, besides the curtain, this can be all yours!

Come back and get one of my “God Awesome Indicator”… when it would be pronounced ready!

EUR1115

At what cost? We’ll think of something. This is already secret in possession territory…

EUR1116

EUR1117

EUR1119

EUR1120

This Is What I Do

Working on my first (Dow) fluctuation scalper strategy. Not bad into the first 15 minutes of testing.

Fluctuation_Scalper_3_and_3_24ticks

Fluctuation_Scalper_3_and_3_24ticks_stats

&&

with 12% risk – out of curiosity

Fluctuation_Scalper_2point7_and_2point8_24ticks_12_percent_risk_stats

Did you say more accuracy and less commission?

Would 87.5% do?

Fluctuation_Scalper_2_7_and_4_24ticks_14_percent_risk_stats


…and at this point you might ask, how is my Anchorage Trader Wild Routine doing with its most recent back test?

Sincerely, the snapshots then…

Anchorage_Trader_Wild_UG_18

Anchorage_Trader_Wild_UG_18_results





What if all scalping trades would be winners?

Fluctuation_Scalper_3_7_and_4_24ticks_14_percent_risk_stats

That’d be nice!

Fluctuation_Screen_Shot4

RSI2 Target Calculation

I have not been posting to much in the way of source codes on this Blog – thinking my audience would not be of coders mainly.

Here is a little exception, that utilizes the idea of the “sharpie” (a peak) and differentiates between Foundation depth (where a wave structure may spring out from) and shallow depth that could only result in a short, failure sized move and goes with the nearest one it can find.

EUR1094

(on the image there are actual sharpie high lights, the pink rectangles – although they are placed on the RSI8 readings with peak size / sharpness restrictions)

double longtarget = 0;
double shorttarget = 0;

//longsizeup

j=1;
while (j<Bars){
if ( iRSI(Symbol(),30,2,PRICE_MEDIAN,j)<5 && iRSI(Symbol(),30,2,PRICE_MEDIAN,j)<iRSI(Symbol(),30,2,PRICE_MEDIAN,j-1) && iRSI(Symbol(),30,2,PRICE_MEDIAN,j)<iRSI(Symbol(),30,2,PRICE_MEDIAN,j+1)) break;
j++;
}

if (j<Bars) longtarget = NormalizeDouble(iLow(Symbol(),30,j)+LongDistance*10*Point,4);

k=1;
while (k<Bars){
if ( iRSI(Symbol(),30,2,PRICE_MEDIAN,k)<56 && iRSI(Symbol(),30,2,PRICE_MEDIAN,k)<iRSI(Symbol(),30,2,PRICE_MEDIAN,k-1) && iRSI(Symbol(),30,2,PRICE_MEDIAN,k)<iRSI(Symbol(),30,2,PRICE_MEDIAN,k+1)) break;
k++;
}

if (k<Bars && k<j) longtarget = NormalizeDouble(iLow(Symbol(),30,k)+ShortDistance*10*Point,4);
//shortsizedown
l=1;
while (l<Bars){
if ( iRSI(Symbol(),30,2,PRICE_MEDIAN,l)>95 && iRSI(Symbol(),30,2,PRICE_MEDIAN,l)>iRSI(Symbol(),30,2,PRICE_MEDIAN,l-1) && iRSI(Symbol(),30,2,PRICE_MEDIAN,l)>iRSI(Symbol(),30,2,PRICE_MEDIAN,l+1)) break;
l++;
}

if (l<Bars) shorttarget = NormalizeDouble(iHigh(Symbol(),30,l)-LongDistance*10*Point,4);

m=1;
while (m<Bars){
if ( iRSI(Symbol(),30,2,PRICE_MEDIAN,m)>44 && iRSI(Symbol(),30,2,PRICE_MEDIAN,m)>iRSI(Symbol(),30,2,PRICE_MEDIAN,m-1) && iRSI(Symbol(),30,2,PRICE_MEDIAN,m)>iRSI(Symbol(),30,2,PRICE_MEDIAN,m+1)) break;
m++;
}

if (m<Bars && m<l ) shorttarget = NormalizeDouble(iHigh(Symbol(),30,m)-ShortDistance*10*Point,4);

 

What is a failure/short size then? You know it already, it is Fluctuation size plus a quarter Fluctuation at a minimum (rounded down to get a sure hit). The larger move is about 2x Fluctuation.

There are 4 plotted short size moves in dark blue, but the last one is not showing yet for the fractal is not printed for another two candles.

 

By the way, I made a target adjuster EA with the above concept as a first step, before I tuned it into a label.

 

If I have to throw you into deep water, why not now. The above image can explain one of the weirdest concepts you would ever encounter. See the short length wave (failed break) on the left? Then a consolidation and a move lower?

The last move down was not a failed break. In fact, it was a no break. You need to stop thinking in terms of horizontal lines. As long as price does not leave the fluctuation zone, it makes no break out. Even if you saw a low 20 pips lower than the horizontal low on the left.

This would take a lot of digestion, I know.

 

 

 

 

Fluctuation Plots

Like I said, you have to know the instrument.

If you know the fluctuation size, you know which way is the market headed.

EUR1086

Crimson vertical lines: downtrend / downtrend reinforced

Blue vertical lines: uptrend / uptrend reinforced

I know what you are going to ask: where to get in on i.e. the uptrend when there is not a touch on the plotted lines all the way to its end?!

The reality is that you can get in anywhere. The optimal spots are the continuation stochastic divergences, the RSI2 deeply oversold points and as close as you can get to your green lines – with the stop loss below the powder blue.

_Fluctuation_Plots

It goes without saying, EUR/USD, 30 min. Only.

EUR1087

When Does A Day Start?

The speed of the market, thus the beginning of a “market day” has no relationship to the regular day cycles or session times.

The market day starts when a foundation is made.

EUR1068

RSI2 on the 30 minute is a handy tool for measuring what I call “local” overbought/oversold. This high speed tool is basically measuring things that are happening in the 7.5 minute world.

When a Foundation is made, which I would put somewhere below an RSI2 “5” reading on the oversold scale, the day starts.

The day start is also an invocator, of course, but later on there may be other invocators showing up, that all have the potential to end the move most likely with a terminal/extension length wave coming out of them.

I would consider any RSI2 down pointing triangle an invocator as long as the HL2 RSI2 shows a value below 44 on the long side.

Therefore, I need to make an adjustment to the projection boxes and values.

EUR1069

Now, that the boxes are aligned properly, you can see, that there was a 50% failure (white dash & value). Furthermore, you can see that a new day has started to the downside that had a foundation made at that value, and has progressed to make a new invocation that had 1.1730 as its starting point and with the statistical values projected 50% at 1.1690 and ATR oversold starting at 1.1670.

A full tank move downwards would put the price at a back test of the Wave 1 Live / Die area. There would be a bounce or continuation coming from about 10 pips below the printed value, which, as you can see basically would be the end of the last 15-minute consolidation, marked by my 15-min ATR projection arrow in indigo.

The rectangles in this

_divergencepetr_s6

work with the EUR/USD statistical, 80 pips tank, so don’t use it with any other pair.

How Does The Market Move

This article would be sure to make it to my future book.


How does the market move?

In relation to the pair of EUR/USD (for the sake of an example) the following things apply.

There is a FUEL TANK, also known as Statistical 3-DAY ATR. By statistical, I mean the following: if you keep track of the 3-day average with this pair, you would find that it is almost always around 80 pips. How is this possible, when sometimes there are 130+ pips days are in the sample period?

First, if you have a large range day, the next day would most likely be a tight consolidation range – these two almost cancel each other out when averaged.

There is of course more to this. There are different speeds to the market, and when you have a daily range way above 100 pips, it is most likely because of the speed of progression and the arbitrary, self-imposed day separating marks are not fully compatible. In other words, you just witnessed “2 days’ worth of a move counted as one.” Dividing four days sample with 3 would get you the wrong result.

This is why instead of measuring you should have the statistical figures at hand.

The market has two sizes for a swing.

40-44 pips is a “Small break” = Extension Length = Move May be Terminal, watch for a reversal!

60-66 pips is a “Large break” = Progression Length = 100% retracement is not likely =

EUR1057

The extension move is half gas, a quasi, failed break. It uses up 50% of the statistical fuel, therefore you should encounter resistance / find your reversal taking place at this, statistical extension resistance level.

The progression move is a move that sticks. It starts from the ignition point and uses up 80% of the statistical fuel, therefore at 80% of the tank is where you should encounter the statistical, progression resistance, that should prompt a consolidation, that would be taking place in a shape of a fluctuation range or a flag.

In the case of the EUR/USD, a 30-32 pips range is considered a “fluctuation”. Without going into details, I suggest you to start paying attention to the behaviour around the shadow of the market, the 26-sample pivot, the Kijun-sen. You would find that when it is flat, the market is not likely to separate from its shadow by more than 16 pips on either side – this is the size of the fluctuation range.

People use those statistical support and resistance lines that you must have encountered. The idea is there: different size building blocks – with different meaning associated. I’m not sure about their precision when they are hooked on daily closes?! The ranges are brought about from the invocation points, like I showed you. The least important piece of information is the daily close – a random point in time. It is always the high, the low and the halfway distance that matters, and so you should set all of your oscillators on these values, not the closes.

The following image shows the Invocator, the starting point for the extension move, which means of course the terminal one. Once the invocator point was in place, you could had measured the distance and place your sell limits 40 pips above, right? You can even see that there were 3 pushes up (5 waves and 40 pips progress could give you even more confidence), although the second fractal did not appear on the 30 minute chart: a speed issue.

EUR1058

Now you can finally appreciate my rectangle measurements that are being plotted on my charts.

EUR1060

Anchorage

Basically you are doing two things wrong currently.

The good news is that I can help you with both of them.

 

One is not getting the exit right.

You need to minimize human interaction to be successful. You may need to leave one side to be handled by the programs entirely.

The following is one of the most advanced piece of software I have.

This cropper has directional logic fitted derived from RSI8 projections and even monitors for the behavior of the Green River and Mr. Maroon. It adjusts the 30-min RSI8 cross-back-crop value based on the direction it figures, and only closes out positions that are in gains by at least 10 pips.

It was of course invented with EUR/USD being the test subject.

_RSI8_Cropper

I would go into details of the code in my book, that may be as far as a year out from this point in time.

 

The second thing is the entry, the “Anchorage”. Sometimes I think of it as a lift call button: “we want to go down now” – they pressed the button.

It is basically a telltale sign of an initial buy/sell having taken place.

You compare 30-minute fractals on one side to find an RSI2 divergence (i.e. higher high with a lower RSI2 reading).

This condition sets the area beyond the divergence block to be the greatest entry area.

EUR1048

(The yellow and blue ribbon arrows are plots from the directional logic.)

The off white swing line down is the wave1 that comes from outside the Anchorage.

Would I write an automated trading routine based on  the Anchorage? You bet I would.

EUR1049

Overall, I wanted to get your thinking to start down the path of “the condition projects the level” rather than trying to guess a line based on fancy.

EUR1050

“This was a clash…”

The Perforation

To turn my RSI8 system into a truly mechanical one, I now plot the lines and have a perforation margin as well, 8 pips away. The perforation should not be violated or you must reverse your direction.

As part of the system, you can instate rules such as a new high/low read sets a new break out point.

Such a reset happened on Friday, and was overrun the same day – and even back tested later on.

EUR1038

Basically, if you were long already, you simply had to stay long. There are only three things that can reverse the price back down now:

1. Another 82+ reading, that sets the  RSI limit (and the perforation), and later price makes it into this field with an RSI, that is out of overbought (<77).

2. Price makes a run for it, it tags the 1.18-1.1820 current sell field, and RSI does not get overbought (<77).

3. The opposite of the following picture happens: you start getting Sync-Async sequences, but on the upside.

EUR1039

Currently I only call Async highs qualified if they are at least 6, but not more than 10 bars away from the Sync high.

As for perforation in my life, just yesterday I decided on wanting to write a book on computer aided trading.

 


Computer Aided Trading

Welcome to the ERA of the Hybrid trading, dear reader. There is a never ending quest of finding new edges to boost bottom lines. We, the sole traders are starting to use computers in a more active manner, we entrust more and more of the decisions to programs for we have come to know intimately, that we are very limited in our abilities.

The programs are there when you cannot be, they can interact instead of you, and if they are set right, they can prevent losses or make gains on their own initiative.

There is one more thing that seldom anybody talks about: the advantage of making automated trading routines is that it is an active conversation, where you, the programmer would end up improving in skills, you would be able to find many of your own personality flaws, and your thinking would be stimulated into fining treasure mode.

RSI8

EUR1030

I implemented my ideas of peak and bottom RSI undercuts today in the form of plots, as follows:

for (i = 500 ; i >= 0; i–) {
if(RSI8[i+1]>highrsi && RSI8[i]<highrsi && iFractals(Symbol(),0,MODE_UPPER,i+1) ){
ObjectCreate(“txr 30″+High[i+1], OBJ_TEXT, 0, Time[i+1], High[i+1]+.0003);
ObjectSetText(“txr 30″+High[i+1], “85”, 32, “Arial Black”, Orange);

ObjectCreate(“txr 30″+High[i], OBJ_TEXT, 0, Time[i+1], High[i+1]+.0014);
ObjectSetText(“txr 30″+High[i], “r8/S:”+DoubleToStr(NormalizeDouble(High[i+1]+60*Point,5),4), 32, “Arial Black”, Orange);
}

if(RSI8[i+1]>highrsi+5 && RSI8[i]<highrsi+5 ){
ObjectCreate(“txr 30″+High[i+1], OBJ_TEXT, 0, Time[i+1], High[i+1]+.0023);
ObjectSetText(“txr 30″+High[i+1], “90”, 32, “Arial Black”, Orange);

ObjectCreate(“txr 30″+High[i], OBJ_TEXT, 0, Time[i+1], High[i+1]+.0054);
ObjectSetText(“txr 30″+High[i], “r8/S:”+DoubleToStr(NormalizeDouble(High[i+1]+360*Point,5),4), 32, “Arial Black”, Orange);
}

if(RSI8[i+1]<lowrsi && RSI8[i]>lowrsi && iFractals(Symbol(),0,MODE_LOWER,i+1) ){
ObjectCreate(“txr 30″+Low[i+1], OBJ_TEXT, 0, Time[i+1], Low[i+1]-.0003);
ObjectSetText(“txr 30″+Low[i+1], “15”, 32, “Arial Black”, Orange);

ObjectCreate(“txr 30″+Low[i], OBJ_TEXT, 0, Time[i+1], Low[i+1]-.0014);
ObjectSetText(“txr 30″+Low[i], “r8/B:”+DoubleToStr(NormalizeDouble(Low[i+1]-60*Point,5),4), 32, “Arial Black”, Orange);

}

if(RSI8[i+1]<lowrsi-5 && RSI8[i]>lowrsi-5 ){
ObjectCreate(“txr 30″+Low[i+1], OBJ_TEXT, 0, Time[i+1], Low[i+1]-.0003);
ObjectSetText(“txr 30″+Low[i+1], “10”, 32, “Arial Black”, Orange);

ObjectCreate(“txr 30″+Low[i], OBJ_TEXT, 0, Time[i+1], Low[i+1]-.0014);
ObjectSetText(“txr 30″+Low[i], “r8/B:”+DoubleToStr(NormalizeDouble(Low[i+1]-120*Point,5),4), 32, “Arial Black”, Orange);

}

}

EUR1031

where lowrsi is 15, highrsi is 82

The Kijun-sen Experiment

26 sample… The industry standard.

True Blue = Kijun-sen

Yellow bands – 5 pips away in trending mode, 16 pips away when flat lining – see code below.

Once you find the fake out, it is easy to take a ride with simple set of rules. The most basic one is: until price gets back on the same side again.

EUR1014

The second thing you can do is to count the violations back into the field after price went outside. This can take you closer to maximum gains.

EUR1015

Could we assume that the third touch would come with a crack, and price is in a wave 5 up?

EUR1016

One more thing. People think of head and shoulders patterns as picture perfect things with neckline and all. Totally wrong. The magenta “A-1561” print on the bottom was a right shoulder. The two bottom “S” prints are the left shoulder and the head. If you held shorts and wanted to take profits, the undercut of the first “S”ync candle’s low was the perfect place – the undercut of the last “below 15” RSI8 reading, and the number would had been a guess. 10-12 would had worked this time. Other times there is 15 pips or more. The point is, this would had been done as an anticipation, and sometimes this would mean missing out on a continuation.

Now, closing shorts and going long are two different things. When the “A”sync low was printed, you had – in this instance – 9 hours to build a long position at & below 1.1561.

Good eye, Suthmo for finding the reversal.


for (i = 300 ; i >= 0; i–) {
if ((iHigh(Symbol(),0,iHighest(Symbol(),0,MODE_HIGH,26,i))+iLow(Symbol(),0,iLowest(Symbol(),0,MODE_LOW,26,i)))/2==(iHigh(Symbol(),0,iHighest(Symbol(),0,MODE_HIGH,9,i))+iLow(Symbol(),0,iLowest(Symbol(),0,MODE_LOW,9,i)))/2) {Kijun_Plus[i]=(iHigh(Symbol(),0,iHighest(Symbol(),0,MODE_HIGH,26,i))+iLow(Symbol(),0,iLowest(Symbol(),0,MODE_LOW,26,i)))/2+.0016; Kijun_Minus[i]=(iHigh(Symbol(),0,iHighest(Symbol(),0,MODE_HIGH,26,i))+iLow(Symbol(),0,iLowest(Symbol(),0,MODE_LOW,26,i)))/2-.0016;}
else if ((iHigh(Symbol(),0,iHighest(Symbol(),0,MODE_HIGH,26,i))+iLow(Symbol(),0,iLowest(Symbol(),0,MODE_LOW,26,i)))/2==(iHigh(Symbol(),0,iHighest(Symbol(),0,MODE_HIGH,26,i+2))+iLow(Symbol(),0,iLowest(Symbol(),0,MODE_LOW,26,i+2)))/2) {Kijun_Plus[i]=(iHigh(Symbol(),0,iHighest(Symbol(),0,MODE_HIGH,26,i))+iLow(Symbol(),0,iLowest(Symbol(),0,MODE_LOW,26,i)))/2+.0016; Kijun_Minus[i]=(iHigh(Symbol(),0,iHighest(Symbol(),0,MODE_HIGH,26,i))+iLow(Symbol(),0,iLowest(Symbol(),0,MODE_LOW,26,i)))/2-.0016;}
else if (Close[i]< (iHigh(Symbol(),0,iHighest(Symbol(),0,MODE_HIGH,26,i))+iLow(Symbol(),0,iLowest(Symbol(),0,MODE_LOW,26,i)))/2) {Kijun_Plus[i]=(iHigh(Symbol(),0,iHighest(Symbol(),0,MODE_HIGH,26,i))+iLow(Symbol(),0,iLowest(Symbol(),0,MODE_LOW,26,i)))/2+.0015; Kijun_Minus[i]=(iHigh(Symbol(),0,iHighest(Symbol(),0,MODE_HIGH,26,i))+iLow(Symbol(),0,iLowest(Symbol(),0,MODE_LOW,26,i)))/2-.0005;}
else if (Close[i]> (iHigh(Symbol(),0,iHighest(Symbol(),0,MODE_HIGH,26,i))+iLow(Symbol(),0,iLowest(Symbol(),0,MODE_LOW,26,i)))/2) {Kijun_Plus[i]=(iHigh(Symbol(),0,iHighest(Symbol(),0,MODE_HIGH,26,i))+iLow(Symbol(),0,iLowest(Symbol(),0,MODE_LOW,26,i)))/2+.0005; Kijun_Minus[i]=(iHigh(Symbol(),0,iHighest(Symbol(),0,MODE_HIGH,26,i))+iLow(Symbol(),0,iLowest(Symbol(),0,MODE_LOW,26,i)))/2-.0015;}

}