The Most Profitable Trading Pattern You Will Ever Encounter

Philip, this was mid-December, 2014 - sorry if the dates are too tiny.

Just to play devil’s advocate, it’s easy to see in retrospect that this was a great Short opportunity. But, even if we didn’t take that false Long and instead were looking for that Short entry, it never came. Our Stochastics never reached the Overbought area. So, if we’re following the rules, we’d be sitting on the sidelines. Is there something in your playbook that would have encouraged you to take a Short early on? I know trading is not purely mechanical, but we want to make our trade judgements on rules. That’s why I ask a lot of questions, and am trying to get into your head as much as possible. Looking forward to your reply.

Yes, I do.

Food for thought. I just have to do some real Chart analysis on this. These exception rules have to be generic - applying them to just get a couple of good back-testing trades will invariably be a curve-fitting no-no. I know trading is an art and not 100% mechanical, but you still need rules (even if they’re hunches) to govern your trading. As an aside, I’m very disappointed (so far) that this model doesn’t translate well to FX on first blush.

First let me do a trade log for the same period and compare it with what you had with the system…if we find a difference I will put a chart up for every trade I mention explaining the rules again…

Sept 4 2013 21:00 EST (EURUSD short @ 1.131959): breakeven

Sept 23 2013 13:00 (EURUSD long @1.35136): breakeven

October 11 2013 13:00 (EURUSD short @1.35379): -109.3 (Stopped out) or -226 with my method.

October 29 2013 (EURUSD long @1.37587): -295.3 or -327.3 my method.

November 12 2013 (EURUSD short @1.34340): -113 my method.

December 2 2013 (EURUSD long @1.35493): +143.5 (my method)

December 23 2013( EURUSD short @1.36948): +21.2 my method

January 2 2014 (EURUSD long @1.36733): -12.1 my method.

January 13 2014 (EURUSD short @1.36634): Breakeven

January 28 2014 (EURUSD long @1.36765): -168.6 stopped out or -88.7

February 6 2014 (EURUSD short @1.35870): -5 pips my method.

February 12 2014 (EURUSD long @1.35918): +79.3

March 31 2014 (eurusd short @1.37710): Break even

April 14 2014 (EURUSD long @1.38264): Break even

May 16 2014 (EURUSD short @1.37038): +44.2 trail stop

June 13 2014 (EURUSD short @ 1.35418): -134 (stopped out) or -117 my method.

July 2 2014 (EURUSD long @1.36578): -58.3 my method

July 8 2014 (EURUSD short @1.35995): 627 pips (trail stop)

October 27 2014 (EURUSD short@ 1.26933): 153 pips trail stop

November 26 (EURUSD short @1.24571) 97.7 trail stop

January 12 2015 (EURUSD short @ 1.18087) +1235 pips not closed yet

So the final for late 2013 to present should have been +1434 pips. This is clearly not your result. I think that the issue could be with trail stops: When price closes above 1.0 fibo level, you move stops to break even. When price closes above 1.272 level, you move stops to a close below 1.0 level and so on.

You should have been stopped at break even at the chart you shared.

The second thing (which I referred to earlier) You see the first two trades I took where both long and short yet I was break even on both. Let’s say I even lost both. As a human trader I would move on to another pair because I know there is no trend in EURUSD. Its only when EURUSD breaks out in a direction that I will look to trade EURUSD again in that direction. To any trader reading now this makes absolute sense, its unquestionable. But a machine would never be able to do that. My suggestion is that after you finish your analysis, you give it to me or who ever is willing to humanize the results. Once you get two consecutive losers in different directions (long or short) you stop trading until you get a winning direction. Then you start counting trades in that direction until you get two losers again and so on. This way it is more human.

Anyways let me know if there are any areas in particular you wanna focus on.

Actually never mind the trades I posted above. Whenever I go back to the chart I start finding trades that I didn’t find. let me have a look at the particular example you mentioned.

Again I stress I wouldn’t take a long in December 2014 for sure (may be a good mechanical way for that is to trade in the direction of the EMAs on the weekly chart? So if 20 EMA is below 50 on weekly chart short market only and if 20 EMA is above 50 long market only?) An alternative mechanical filter: If daily bar is above 200 MA long only market. Short only market if daily bar is below 200 MA. A final condition is that the market wouldn’t be tradeable if price is stuck between the 100 and 200 MA, what do you think?

As for the chart you shared The first thing I’d say is using the stop loss you would have been stopped out for very little. Its using my method is where you get in trouble; You lose something like 533.5 pips. But then you enter the short trade and make 1200+ pips. Stochastic reaches overbought on January 12. So even through the strict mechanical system you should have made 700 pips of profit or so…

Philip, a couple of things:

  1. Thanks for giving me your trades. I just realized that we are somewhat comparing apples to oranges. You are using a LONG/SHORT version w/o Initial Stops, and my LONG/SHORT implementation assumes Initial Hi/Lo Stops. So that is one area of difference right off the bat. That is why my trade stopped out right away, and never reached Break-even, as yours did, and probably why are trade times don’t line up at all, since we’re looking for setups at different times. So, I made changes in my code by commenting out everything related to Initial Hi/Lo Stops, and ran the simulation again, and still got crappy results. I’m attaching my revised simulated trade log to this post (please rename it to have an .XLS or .XLSX extension). Also, notice that due to this revision, the 12/14/2014 trade no longer happens.

  2. I’ve implemented your Fib extension algorithm, and have verified its correctness, so that is not an issue, unless I’m totally missing something;

  3. My back-testing system, Wealthlab (old version), does not support FX, so unfortunately, there is no easy way to measure Pip gain across a period of time. I’ll just have to use it in “stock mode” with fake dollar gains. Hence, hard to compare end Pip delta results for FX with your results;

  4. In addition to your humanization idea, what about using ATR (or alternate indicator/method) to measure level of consolidation to determine whether we should be trend-trading or not? What’s your thought on that?

  5. When you take a position are you taking it after a 4 hour bar closes, and are you entering a market order (Long or Short) on the next bar OR are you entering a Limit order of some sort? If a Limit Order, is there a rule you use to establish the Limit Price?

  6. Yet another variable here is the accuracy of the FX data. As we get to lower granularities under Daily data, the reliability could get suspect (I know that I’ve had this problem with intraday equity data in the past);

As I initially expected, this is going to take some time to get it right. Ultimately, we need to align our trades and profits to match your way of trading. Once that is established, we can look for ways to optimize it further. I’m gonna look at some of your trades, and try to match it up to my data, and then I’ll ask you about specific trade detail (w/charts). Please feel free to do the same on your end.

OK, didn’t see this until after I posted above. I think your middle paragraph of suggestions all warrant consideration as part of a filter. Do you use any of these or do you favor any one over the other?

I’m sure the crappy results are coming from what I call the face slap. You enter a trade, get slapped on your face so you immediately enter the opposite trade to get slapped on your face again. This to me is a sign of consolidation. Markets trend less than 30% of the time.

I have two technical/mechanical ways to address this.

Option 1 I shared already; use the 100MA and 200 MA. When price is above both on the daily long market 4hr, when price is below both on daily short market on 4HR. Avoid trade if price on daily is between 100 and 200 MA.

The second method, which I’m actually certain will work perfect, is to use the monthly RSI. I’ve been taught by masters of RSI and I know it inside out.
Basically the algo (and I’m not using algo language because I dont know it lol) is this:
The system looks at the RSI on monthly chart when price (monthly) closes at an RSI higher than 66.6, look for long trades on 4 HR.
When price (monthly) closes below an RSI of 33.3 look to short market on 4hr.

Avoid trading when (monthly) price is between those two RSI levels. I would also avoid trades when monthly RSI ishigher than 80 or lower than 20.

Now if you can’t program that, I can do it manually and there will be no fear of curve fitting. Those are very clear mechanical rules.

[I]PS[/I] BTW I checked your EMASTOCHASTIC8 file but it didn’t have EURUSD trade it had stockmarket trades, Johnson and Johnson and Bank of America and so on.

I really hope you can code the RSI filter. Even if you don’t I’m willing to do it manually if you give me the trade log. I think We are onto something massive here. I don’t know why I never thought of it before but thanks to you it hit me.

OK, definitely losing it, and time to watch some TV and chill out. Sorry, about that File. The 2 re-attached here are:

1)EMAStochastic8.txt is the model code (eliminating Hi/Lo Initial Stops).

  1. E.txt (rename it to a .XLS or .XLSX extension) contains the new trades.

Thanks for those filtering ideas - all excellent ideas. Give me some time to update the model to include at least one of these “macro” filters - you definitely gave me enough info on the RSI method too.

Here’s my ultimate goal in all of this (and this may take a while, but I’ve got time):

  1. Have my model pretty much parallel the trades that you have been taking to a large extent;

  2. Optimize the algorithm over time, trying various ideas of this forum, to continuously improve upon it;

  3. Build a mechanism where CCY Pairs can be scanned every 4 hours, and “potential trades” can be identified to
    be watched (akin to EMA crosses plus necessary filtering). On this, I think I have the technology to make this
    fly real-time:

    a) I use IB as my broker and now subscribe to their FX data feeds;

    b) I have a version of Medved Quotetracker that I still use that allows me to use the IB data feed to garner FX
    pricing;

    c) Once the Wealthlab algorithm is complete, I have a “Scan” option that will allow me to run this algo in real-time
    using a Medved/IB adapter plug-in that I have, against defined CCY Pairs real-time data. Run this continuously, but after
    4 hour bars complete, generate an Alert for any CCY pair that is “in play” - that is, ones in which we are now
    looking for a potential setup;

    d) Perhaps publish these Alerts to a Cloud Share, or maybe in the form of a forum post, in an automated fashion, so
    that people can access this info, every 4 hours;

Think it can be done? Will take some time, but gotta work hard at making this work.

Doug

Take your time bro and I’m very excited about the prospect. But I think try to work with the RSI filter rather than the MA filter. For now rest a little you totally deserve it.

Yeah, gotta balance this with the NCAA basketball tournament…my favorite sports time of the year…LOL.
Are you from the US, Philip?

Maybe face slap could be minimized with currency options?

Philip, stupid question: regarding RSI filtering option, and assuming 4H bars, do you think implementing an RSI(180) - 6 bars per day x 30 days - on a 4H chart would be a reasonable enough facsimile of the RSI monthly filter? Obviously, real easy to implement this.

If not, and if I’d need to do a roll-up on a monthly basis, what is the RSI period that I should use for the monthly roll-up? Obviously, much harder to implement, but do-able, I believe. I’d have to figure out how to use a different time-based Price Series in the same model.

Unfortunately your suggestion would render the RSI useless. The RSI formula doesn’t work that way and using n=180 would just change the RSI value completely and most probably would yield an almost flat RSI line.

I’m not sure what you mean by monthly roll up, it sounds like you are suggesting that everytime we get the pattern we roll up to the RSI to see its value.

If that’s what you mean, We do not have to do it this way. The system would work (at least in my head like this)

  1. Look at monthly chart using RSI 14.
  2. When monthly bar closes at a higher RSI value than 66.6, move to 4hr chart and apply pattern but long market only.
  3. When monthly bar closes lower than 33.3, move to 4hr chart and apply pattern but short market only.

The areas where price moves between 33.3-66.6 are completely filtered out.

The problem with the “roll up” idea is that RSI won’t have necessarily closed above 66.6 or below 33.3.
We need first to make sure of a close above 66.6 or 33.3 on the monthly chart before we start trading.

Does that sound doable?

[I]EDIT[/I] A more difficult rule (which we don’t have to implement now but we should be aware of it for now) that we should stop longing the market once monthly RSI closes above 80. We should stop shorting it once monthly RSI is below 20.
That doesn’t mean closing an open trade, it just means not taking a new trade when RSI monthly is at those levels.

OK, gotcha. I didn’t think it would work, but had to ask :slight_smile: Yes, I think it’s do-able, but will need to take some work on my part. What I meant to say regarding “roll-up” is somewhat of a misnomer. What I mean is that I will need to look at monthly data (for RSI) in the same model as I’m looking at 4H (or daily) data for trading. I will need to look at integrating these 2 time-based price series into the single model, to make it work. I’ll have to think about how to implement this, but yeah, I think it’s do-able. Thanks for the suggestion, and I’ll let you know when I have something tangible.

But with this monthly RSI this method would become unusable most of the time. For example EUR/USD couldn’t be traded since august 2008, same for silver since august 2011.

It would be nice if we could get some form of live trading group going - ie - chat or something similar so we could discuss trade entries and details as they are happening. The forum is good but I just think having something where everyone can chat at the same time would be of great benefit.

Problem is I have received 2 warnings now from Babypips for mentioning Skype and 1 more will lead to being banned so if anyone else has an idea please post or let me know.

let’s discuss it in a PM then!

True that is a fair point. However you would have traded the October 2007 to March 2008 very profitably.
You are correct about Silver as well, but you would have made a lot of pips trading it during late 2010.

I agree with you that there will be less trades. But I expect efficiency on the other hand to grow exponentially.

Additionally, When that pair is not trading, move on to the next pair.

Of course this filter is for the picky trade who is looking for the best possible trades. Let’s first wait for the backtest results to see if its any good.

Looking the current monthly charts I see we have opportunities to short EURUSD long USDCAD, USDJPY, short AUDUSD, EURGBP, EURNZD. That is not a small amount of trading opportunities.

Let’s wait for the backtest results first before we make conclusions on the new filter.