One monitor system
The path of simplification that I have followed over the last few weeks has enabled me to have an effective trading system on a single monitor. On this single monitor I am able to display my three primary charts: 576-tick, 1 minute, and 5 minute charts of the ES and my Static SuperDome (Ninja Trader) for orders. While the real estate is tight, it is nonetheless sufficient, and enables me to make my trading system mobile on a laptop. This single monitor system also improves my focus and concentration as my eyes do not have to gaze at numerous monitors and charts. Time and results will tell if this is indeed a more productive approach.

Lesson in Patience
Most of the day’s market was stuck between two Fibonacci areas of support and resistance just about 5 pts apart and it just couldn’t break through. My checklist kept me out of many losing trades, so much so that I could never identify a conservative trade from the best of the best areas…and as a results I did not take a single trade. While a few months ago, I would have walked away from a day like today quite frustated and maybe even desillusioned, I was actually proud of myself today. Proud that I demonstrated sufficient patience to wait for the right setups, did not trade out of boredom, and followed my trading plan to the letter. This alone tells me that I may have taken yet another step towards becoming the trader that I want to be.
Simplify
As Einstein once said “Everything should be made as simple as possible, but not simpler”. After using a trading plan of more than 10 pages that included complex setups and trading rules, I have now boiled my methodology down to its essence:
- From 5 timeframes down to 3 (576-tick, 1′, and 5′)
- From 5 setups down to 1 (I still need to name the little guy)
- From pages of trading rules and guidelines to a simple checklist of 5 items:
- Assess the direction and strength of the overall trend of the market based on the 576-tick chart (strong, weak, flat, etc). Evaluate the price action relative to this trend (is it strengthening the trend, weakening the trend, or possibly trying to reverse the trend).
- Pull back to an area, ideally the ‘best of the best area’, i.e. the furthest possible pullback with maximum risk to reward ratio.
- Evaluate the strength of the short term momentum of the market. Is it working for me or against me, and how is price action affecting this momentum (strengthening it or weakening it).
- Evaluate the MACD BBs. Is the MACD trend with or against the trade, what is the position relative to the zero line (ZL), do we see any divergence between MACD pivots and price action pivots, what is the angle and spacing (i.e. strength) of the MACDs?
- Evaluate the risk/reward ratio to ensure that the minimum requirements have been met.
Entries are now done ideally on reversal bars on the 576-tick chart (not on the 144 any longer), and stops are placed two-ticks above/below the entry bar. Targets, as always are based on the next area expected to hold. So far this simplification has paid off. I come to my trading desk with renewed interest every morning and a sense of confidence that I had started to lose. I have spent a significant amount of time backtesting this approach and I feel that it better leverages the information from the indicators, is much simpler and therefore easier to apply in the heat of battle, and last but not least a lot closer to actual price action on the 576.
Directional Bias
Trading on the correct side of the market, or with the market’s directional bias, will not only improve the profitability of your winning trades but will also help you stay out of the losing ones, which is equally important. However, determining that directional bias (long or short) in the early part of the trading day can be difficult, mostly if the longer moving averages that you typically use to make that determination have flattened.
Dr Clayburg has offered one solution to this problem, the Directional Day Filter. The indicator uses a few minutes of the market open as an observation period, usually the first 5 or 10 minutes, and captures the high and the low of that period. The average of those two values then becomes the directional day filter (DDF). The next 45 to 90 minutes of the trading day are then used to determine where the majority of the price action takes place relative to that DDF. If the majority of the price action ends up occurring above the DDF, the directional bias for the day will be on the long side, vice versa if the majority of the price action occurs below the DDF. If price actions is not strongly biased then the day is seen as ‘neutral’ and the trader has the choice of either staying out of what could be a choppy or range-bound market, or on the other hand he/she could take trade on both sides.
As with most of my indicators, I implement the ‘guts’ of the logic in the form of reusable Tradestation functions. This improves the overall modularity of the code and makes it usable across the different types of Tradestation components without incurring high software maintenance costs. This indicator is no exception.
The Tradestation function TG_DDF was implemented as follows:
inputs: i_DDFEvalStart(numericsimple), // start time for evaluation period of DDF i_DDFEvalEnd(numericsimple), // end time for evaluation period of DDF i_BiasEvalEnd(numericsimple), // end time for evaluation of bias in relation to DDF i_Percent(numericsimple), // minimum percentage required to determine bias oDDF(numericref), // returns DDF Value oBias(numericref), // returns bias oLowD(numericref), // returns intraday low oHighD(numericref); // returns intraday high vars: vHighD(0), vLowD(9999), vDDF(0), vAboveBars(0), vBelowBars(0), vTotBars(0), vBias(0); // 0: neutral, 1: up, -1: down // resets variables at beginning of the day if date[0] <> date[1] then begin vHighD = 0; vLowD = 9999; vDDF = 0; vAboveBars = 0; vBelowBars = 0; vTotBars = 0; end; // calculates DDF between i_DDFEvalStart and i_DDFEvalEnd if time >= i_DDFEvalStart and time <= i_DDFEvalEnd then begin if H > vHighD then vHighD = H; if L < vLowD then vLowD = L; vDDF = (vHighD + vLowD) / 2; end; // calculates intraday low and high from i_DDFEvalStart to i_BiasEvalEnd if time > i_DDFEvalEnd and time <= i_BiasEvalEnd then begin if H > vHighD then vHighD = H; if L < vLowD then vLowD = L; end; if vDDF <> 0 and time > i_DDFEvalEnd and time <= i_BiasEvalEnd then begin if L > vDDF then vAboveBars = vAboveBars + 1; if H < vDDF then vBelowBars = vBelowBars + 1; vTotBars = vTotBars + 1; end; if time > i_BiasEvalEnd then begin vBias = 0; if vAboveBars > 0 then begin if vAboveBars/vTotBars > i_Percent then vBias = 1; end; if vBelowBars > 0 then begin if vBelowBars/vTotBars > i_Percent then vBias = -1; end; end; oDDF = vDDF; oBias = vBias; oHighD = vHighD; oLowD = vLowD; TG_DDF = 1;
The indicator calls that function and plots the necessary visuals:
{
Name: Directional Day Filter
Purpose: Used to determine the major trend of each day and establish a trading bias
Version 1.00 - 3/6/2009 - Initial Implementation } inputs: i_DDFEvalStart(900), // start time for evaluation period of DDF i_DDFEvalEnd(905), // end time for evaluation period of DDF i_BiasEvalEnd(1000), // end time for evaluation of bias in relation to DDF i_SessionEndTime(1600), // end time for plotting of DDF i_Percent(.55), // minimum percentage required to determine bias i_BiasUpColor(blue), // color for up bias i_BiasDnColor(red), // color for down bias i_BiasNeutralColor(yellow), // color for neutral bias i_DDFColor(white); // color of DDF line vars: vDDF(0), vBias(0), vHighD(0), vLowD(0), vColor(0), vDDFColor(yellow); Value1 = TG_DDF(i_DDFEvalStart,i_DDFEvalEnd,i_BiasEvalEnd,i_Percent,vDDF,vBias,vLowD,vHighD); // plots DDF line from i_DDFEvalEnd to i_BiasEvalEnd if vDDF <> 0 and time > i_DDFEvalEnd and time <= i_BiasEvalEnd then plot1(vDDF,"DDF",i_DDFColor); // plots vertical lines to display the intraday low and high as of i_BiasEvalEnd if time = i_BiasEvalEnd then begin Value1 = TL_New(date, time, vLowD, date, time, vHighD); Value2 = TL_SetColor(Value1,i_DDFColor); end; if time > i_BiasEvalEnd and time < i_SessionEndTime then begin if vBias = 1 then vColor = i_BiasUpColor else if vBias = -1 then vColor = i_BiasDnColor else vColor = i_BiasNeutralColor; plot1(vDDF,"DDF",vColor); end;
Once rendered on a chart, it will display the directional bias for the day. Here I have used blue for long, red for short, and yellow for neutral.

In this case I used a 1 minute chart of the ES for this March 9, 2009. The settings of the indicator were as follows:
Today the indicator indicated a neutral day, as the price action above the DDF as of 10:00am was not clearly biased to the up side, nor to the down side. According to Dr Clayburg, this indicator is correct 75% of the time.
Fib Recycling…
In an earlier post, I explained my simple three line system for assessing the risk reward ratio of a trade before it is taken. However the problem with that approach is that you need to perform some quick mental calculations to 1) assess the risk by calculating the difference between the expected entry price and the stop, and 2) assess the profit target by multiplying the risk by two (or whatever your required risk/reward ratio is) and adding it (for longs) or subtracting it (for shorts) from the expected entry price. In the heat of battle, these calculations may seem a bit overwhelming, which either results in the trader missing the best possible entry because he/she is busy making those assessments, or more realistically the trader will enter the trade without performing this assessment to realize within a few seconds that the trade shouldn’t have been taken.
So here is an even simpler solution to this problem that doesn’t even require any mental calculations. The solution is based on custom settings of the Tradestation’s Fibonacci Price Retracement Lines tool that is part of the drawing toolbar.

By using the settings above and by plotting the retracement lines from the expected entry price to the last pivot (assuming that you base your risk on pivots), the tool will automatically plot a 300% retracement which in this case is synonymous with a 2:1 risk/reward ratio.

Above you see that if I expect to enter this short trade around 766.50, with a stop slightly above the last pivot high at 767.50, then my reward (assuming a minimum requirement of 2:1) should be at least 764.25. In this example you see that this reward would be outside my Keltner Channel and is therefore a bit less probable. So I would most likely have to wait for a pullback (higher price) to reduce the risk and at the same time reduce the minimum required reward to stay within the channel.
I am my worst enemy!
I understand more and more why psychology is a recurring topic in trading. Since I have been trading I keep discovering (or maybe I should say rediscovering) some old personal demons. The only difference is that in this pure meritocracy that is trading, those demons tend to have a direct and unquestionable impact on my bottom line. There are no excuses here, no fingerpointing, no talking my way out of this one. The spotlight is on me.
Let’s take documentation for instance. Here my requirements are not even that demanding. All I need to do is:
- select the appropriate setup name on the Ninja Trader SuperDome before I take the trade;
- document each trade on the chart (mark the entry bar, the exit bar, the setup that was used, the results, and a note on lessons learned) and;
- mark the trade PASS/FAIL depending on whether or not it was taken according to the documented rules.
Well for some unknown reason I still struggle in doing these simple steps for every trade that I take. For instance I will mark some trades on the chart but not all trades. I will forget to select the setup name on NT, or I will simply skip the PASS/FAIL grading altogether. Other days I will do all this perfectly. Why is that? Is it because I am inherently undisciplined, is it because taking the time to do this may make me miss the next big trade, all the above? I just don’t know and it drives me crazy.
Another wild thing has to do with live trading (vs. simulated trading). When I was doing pure simulated trading I was convinced that switching to live trading would make me more cautious, more conservative. I thought that some of those bad habits were due to the fact that I was simply playing with fake money. So a couple of days ago I took some live trades for the first time and something crazy happened. I was like a gambler. I was even less disciplined with real money on the line than with fake money. I was jumping on trades, I wasn’t even taking the time to assess risk/reward, all the rules were throw out the window. I saw myself clicking on the buttons but I couldn’t believe it was me doing it.
These are just a few examples but they concern me. I need to get a handle on discipline. I need to understand why this is happening and what I can do to fix it. I cannot afford these types of mistakes.
FX bot still doing well
I fine tuned the FX bot with a different stop loss and profit target strategy. In this new version the stop loss is no longer set to a default of 100 pips. Instead it becomes a measured stop, calculated based on the lowest low (for longs) of the oversold excursion that can eventually lead to the buy signal. Vice versa, for shorts, the stop is measured as the highest high of the overbought condition that can eventually lead to a sell signal. However I will cap the stop loss at 100 pips, so in fact the stop loss will be equal to either the measured stop or 100 pips, whichever is lowest. As this strategy uses a 1:1 risk reward ratio, the profit target is always equal to the stop loss. Lastly I have included the option of exiting all trades at the close of the session.
This strategy has been doing well on the carry trade pairs and more specifically on the GBPJPY and to a lesser extent on the EURJPY. Over the last 20 trading days, the bot took 24 trades on the GBPJPY with a 62.5% profitability and netted about $6,700 in profits on a single standard lot. Those like me with a weak stomach will appreciate the fac that this bot had at most 2 consecutive losing trades but provided as much as 6 consecutive winning trades.
Low-tech solution for evaluating risk & reward
A recent email conversation that I had with Mike from Frankfurt (evidence that there is at least one person other than me reading this blog) about risks and rewards led me to this post. For once this will not be a new indicator or even a new piece of code but instead I will simply show you how I use three simple horizontal lines on my trading charts to evaluate risk and reward.
But first I have to explain that I use the ES 576-tick chart as my primary trading chart. This chart is used to identify the setups, evaluate the bias of the market, and identify potential profit targets. On the other hand, my 144-tick chart is used to pinpoint entries, identify potential stop loss levels, and evaluate the risk/reward ratio of the trade. So most of this work is done on the 144-tick chart. the 576 is only used for profit targets.
The screen shot below shows three dotted horizontal lines on the 144-tick chart. The red dotted line is my stop loss. I typically set my stop loss at the last significant price pivot (high or low depending on the direction of the trade). I identify these pivots points by adding the out-of-the-box ”Pivot High” and “Pivot Low” TS ShowMe indicators to the chart (see the yellow ShowMes on this chart). The green dotted line is the profit target. This level is typically identified based on the key areas on the 576-tick chart and just carried over to the 144-tick chart. Finally the yellow dotted line is my expected entry point for the trade. As the trade is setting up I constantly adjust those three lines. For instance it the chart plots a new pivot high, then I will move the red dotted line to the new pivot level. Likewise if the price keep going up (and I am setting up for a short) I will keep adjusting the yellow line to the first possible entry point for the short. I do this constantly so that when the trade is finally set up, all three lines are already properly placed for a quick risk/reward evaluation. For this I will look at the distance between the entry point and the stop loss (let’s call this R) also at the distance between the entry price and the profit target. If this last distance is not at least 2R (or two times the distance between the entry point and the stop loss) then I just don’t take the trade.
This simple manual practice has kept me out of many losers and I use it for every single trade.

Plotting Equity
Since we have been talking a lot about automated strategies lately (or bots), it is useful to see that bot’s profitability on the chart along with the trades that it takes. For this I have used two of the TS built-in functions, namely I_OpenEquity and I_ClosedEquity. These functions can be used to return the values that you will find in the Net Profitability section of the Strategy Performance Report. Now obviously one needs to look further than just net profitability in evaluating the overall performance of a strategy, so this is not the one and only measure to be used but it is an important measure nonetheless and one that can be rendered fairly easily on the bot’s chart for a quick review.
The indicator has been named TG_Equity and it’s capable of plotting the bot’s total net profitability over the trading period and/or its profitability for the current session.
I have applied it to one of the FX bots (GBPJPY) for illustration purposes (see below).

With a quick glance we can see that on this day the bot had generated $1,346 of net profit and had a total net profitability of $13,605 over the evaluation period (20 days in this case). If you have a high number of bots running at the same time, this indicator provides a ‘dashboard’ of sorts to quickly assess their individual performance.
The code is provided below:
inputs: iToday(true), iTotal(true), iProfitColor(green), iLossColor(red); vars: vTodayEquity(0), vTotalEquity(0), vBODEquity(0), vTodayColor(green), vTotalColor(green); if currentsession(0) <> currentsession(0)[1] then begin vTodayEquity = 0 ; vBODEquity = I_OpenEquity ; end ; vTodayEquity = (I_OpenEquity - vBODEquity ) ; vTotalEquity = I_OpenEquity; vTodayColor = IFF(vTodayEquity>=0,iProfitColor,iLossColor); vTotalColor = IFF(vTotalEquity>=0,iProfitColor,iLossColor); if iTotal then plot1(vTotalEquity,"Total",vTotalColor); if iToday then plot2(vTodayEquity,"Today",vTodayColor); plot3(0,"ZeroLine");
I like this FX bot
One of my bots (that’s how I call an automated strategy) has been doing pretty well on the FX. It is based on a basic ’set-let’ strategy with fixed profit and stop loss targets based on the Hi-Lo charts that was presented in the earlier post. The bot runs 24 hours a day from Sunday evening to Friday afternoon. I have limited it to one trade at a time, but it will take both longs and shorts. It identifies periods of overbuying and overselling and takes a trade on confirmed reversals. A basic bot by all means but one that has been profitable.
The chart belows shows the equity curve over the last 20 days:

The TS performance analysis over the same period shows:
So overall a good solid bot with bearable drawdown. I am currently experimenting with different entry and exit filters to improve the profitability. The attention so far has been primarily based on the entry filters to avoid the false breakouts. I first experimented by setting a ‘Squeeze’ filter on the entry (Squeeze being defined as Bollinger Bands ranging with the Keltner channels). If the bot triggered an entry signal with in Squeeze mode, I would delay the entry until the Squeeze was no longer true. This approach unfortunately reduced the bot’s profitability and I abandonned it. I am now experimenting with another entry filter that increases the breakout requirement (more demanding definition). At this point the logic has been worked out, I now need to turn it into a function and apply it to the bot as a filter. Stay tuned.
Comments (2)