Tony Crabel's Opening Range Formula

#1
Toby Crabel's Opening Range Formula

This information is only available in Tony Crabel's, "Day Trading With Short Term Price

Patterns and Opening Range Breakout". This is a mathematical formula used to play the

opening range breakout. If you are unfamiliar with this method it may sound complicated

but bear with me.

First Step: you get the (High - Open) and the (Open - Low)

For example: Let's take the S&P 500 emini contract

High: 1294
Low: 1281.5
Open: 1290.50

(High - Open) = 3.5
(Open - Low) = 9

2nd Step: You take the minimum of the two numbers. In this example the minimum would be

3.5.

3rd Step: Add the minimum for the last 10 trading days and divide it by 10. So you would

add 3.5 to the minimum of the previous 9 days. In total you will have 10 numbers. Divide

that by 10 to get the average.

4th Step: For example, let's say you get a 10 day average of 2.5. You simply play the

breakout of the opening range. If prices open up at 1293, you would buy a breakout above

1295.5 and short a breakdown below 1290.50.

Simple and easy. I have not tested this to work but I know this was a famous opening break

method amongst the professionals for many years. Alot of traders still use this method.

Some may chose to take the 10 day average minimum and multiply it by 1.1 or 1.2 to make

slight adjustments to the markets they are trading.

This is what im looking for, Is there some AFL out there that implements this rule?

Br
 
Last edited:
#2
This information is only available in Tony Crabel's, "Day Trading With Short Term Price

Patterns and Opening Range Breakout". This is a mathematical formula used to play the

opening range breakout. If you are unfamiliar with this method it may sound complicated

but bear with me.

First Step: you get the (High - Open) and the (Open - Low)

For example: Let's take the S&P 500 emini contract

High: 1294
Low: 1281.5
Open: 1290.50

(High - Open) = 3.5
(Open - Low) = 9

2nd Step: You take the minimum of the two numbers. In this example the minimum would be

3.5.

3rd Step: Add the minimum for the last 10 trading days and divide it by 10. So you would

add 3.5 to the minimum of the previous 9 days. In total you will have 10 numbers. Divide

that by 10 to get the average.

4th Step: For example, let's say you get a 10 day average of 2.5. You simply play the

breakout of the opening range. If prices open up at 1293, you would buy a breakout above

1295.5 and short a breakdown below 1290.50.

Simple and easy. I have not tested this to work but I know this was a famous opening break

method amongst the professionals for many years. Alot of traders still use this method.

Some may chose to take the 10 day average minimum and multiply it by 1.1 or 1.2 to make

slight adjustments to the markets they are trading.

This is what im looking for, Is there some AFL out there that implements this rule?

Br
is there any time limit to opening range breakout? As per your described method lot of trades will be disqualified @ opening volatility times so minimum timeframe required to initiate trade.
 
Last edited:

rkkarnani

Well-Known Member
#4
High= Previous day's high????
Low = Previous day's low????
Open= Todays open

If we are to take todays Open High and low...then a reply to Pra's query above wud clarify the same.

Thanks for the initiative.
 

rkkarnani

Well-Known Member
#5
Did not notice that u hv already replied... so any view which is the Best TF :5 ,15, 30 or 60?? Have you by any chance back tested it.
 
#6
No I havnt made a real backtest of it yet, thats why I would have a Formula where I can make backtest on different timeframes, like the first 5min, first 15, 30min etc.

But what i have seen on my short look at this is that after a openrange breakout you often get good profit of it, and then after aproximit 1 hour you get a retest of the range.

But for short term daytrading I think this is a good strategy.

Br
 
#8
Bollis pls give me a proper explanation for the following points u mentioned in ur post no. 1

3rd Step: Add the minimum for the last 10 trading days (10 trading days ?) and divide it by 10. So you would

add 3.5 to the minimum of the previous 9 days(9 previous days ?). In total you will have 10 numbers. Divide

that by 10 to get the average.

4th Step: For example, let's say you get a 10 day average of 2.5. You simply play the

breakout of the opening range. If prices open up at 1293(? when open was 1290.50), you would buy a breakout above

1295.5 and short a breakdown below 1290.50.

Simple and easy. I have not tested this to work but I know this was a famous opening break

method amongst the professionals for many years. Alot of traders still use this method.

Some may chose to take the 10 day average minimum and multiply it by 1.1 or 1.2 to make

slight adjustments to the markets they are trading.


pls give proper example urs is too complicated hope u reexplain the whole calculations

with proper example soon

regards
 
#9
Well this is a very interesting post. Thank you Bollis for providing the basic calculations along with the application of this technique for day trading. From the looks of the chart this is very likely to be a profitable strategy, imo.

I have created an AFL formula which I believe works very well at displaying this in an Amibroker chart. It took me a few hours and I learned some new scripting techniques which I can now apply to some other projects I've not been able to finish.

The code is included below along with a chart showing how the lines appear on the S&P E-mini futures contract (USD). I provided detailed comments for each statement in the script so you can understand how it is compiled. You may have to fix some line wrapping issues when you copy and paste this into your editor.

Please try this out and give me some feedback whether there is further refinement required or errors to fix.
Thanks again.

Dry :)

Code:
_SECTION_BEGIN("Price");
SetChartOptions(0,chartShowArrows|chartShowDates);
_N(Title = StrFormat("{{NAME}} - {{INTERVAL}} {{DATE}} Open %g, Hi %g, Lo %g, Close %g (%.1f%%) {{VALUES}}", O, H, L, C, SelectedValue( ROC( C, 1 ) ) ));
Plot( C, "Close", ParamColor("Color", colorBlack ), styleNoTitle | ParamStyle("Style") | GetPriceStyle() ); 
_SECTION_END();

_SECTION_BEGIN("Open Range Break Out");
//Determine the value of the market open. Initial setting is for
//9:30 AM to match US Market Open. Adjust as need for your market
MrktOpen = ValueWhen(TimeNum() == 093000, Open);
//Determine the highest high for each day's trading.
//Adjust time as needed for your market.
DlyHigh = HighestSince(TimeNum() == 093000, High);
//Take a snapshot value of the day's high at the time of market 
//close. Intial setting is 4:00 pm to match US Market Close. 
//Adjust as needed for your market.
DlyHighest = ValueWhen(TimeNum() == 160000, DlyHigh);
//Do the same for the lowest value of the trading day.
//Adjust time as needed for your market.
DlyLow = LowestSince(TimeNum() == 093000, Low);
DlyLowest = ValueWhen(TimeNum() == 160000, DlyLow);
//Now calculate the min range value using Open, Low and High
//variables calculated above
RngMin = Min(DlyHighest - MrktOpen, MrktOpen - DlyLowest);
//Compres this to a daily time frame in order to capture
//the final value of the Range Min for each trading day
DlyRngMin = TimeFrameCompress(RngMin, inDaily, compressLast);
//Use the compressed variable to calculate a 10 day average
RngMinAvg = MA(DlyRngMin , 10);
//uncompress the daily variable so that it can be used in 
//calcuating the long and short break out levels for each day
RngMinAvg = TimeFrameExpand(RngMinAvg, inDaily);

//Use the values calculated above to determine the opening
//range break outs. Notice the Range Min has been shifted so
//that is reads the previous day's value and this is used against
//the current day's open to determine the break out levels
BreakOutLong = MrktOpen + Ref(RngMinAvg, -1);
BreakOutShort = MrktOpen - Ref(RngMinAvg, -1);

//Set parameter default to NO for diplaying values which
//are used to determine core metrics
PlotOHL = ParamToggle("Plot O,H,L", "YES|NO", 1);
//Set parameter default to YES for displaying the final
//results of the break out calculations.
PlotBreak =  ParamToggle("Plot Breakout", "YES|NO", 0);


//Plot values per the parameter toggle settings.
if(PlotOHL == 0)
{
Plot(MrktOpen, "Daily Open", colorBlack, styleLine);
Plot(DlyHigh , "Daily High", colorGreen, styleDashed);
Plot(DlyLow , "Daily Low", colorRed, styleDashed);
Plot(DlyHighest , "Daily Highest", colorGreen, styleDots);
Plot(DlyLowest , "Daily Lowest", colorRed, styleDots);
}
if(PlotBreak == 0)
{
Plot(MrktOpen, "Daily Open", colorBlack, styleLine);
Plot(BreakOutLong , "Break Out Long", colorGreen, styleLine);
Plot(BreakOutShort , "Break Out Short", colorRed, styleLine);
}
_SECTION_END();
Edited 6/21/09: to remove chart image do to over limit on file attachments
 
Last edited:

casoni

Well-Known Member
#10
HELLO,
check this...i got this from yahoo group , hope this will helps
Thank you

_SECTION_BEGIN("");

btime = Param ( "breakout Time", 095500, 095500, 160000, 500 );
breakout = Cross(TimeNum(),btime);

NewDay = Day()!= Ref(Day(), -1);
HDay = HighestSince(newday,H,1);
Lday =LowestSince(newday,L,1);
BHigh = ValueWhen(breakout,hday,1);
BLow = ValueWhen(breakout,lday,1);
Avg=(bhigh-blow)/2;

Plot(C,"",colorYellow,styleBar);
Plot(BHigh,"RESISTENCE",colorGreen,styleNoLine|styleDots+styleThick);
Plot(BLow,"SUPPORT",colorRed,styleNoLine|styleDots+styleThick);
Plot(BHigh+Avg,"RESISTENCE",colorGreen,32);
Plot(BLow-Avg,"SUPPORT",colorRed,32);

Title = EncodeColor(colorWhite)+ "break out" + " - " + Name() + " - " + EncodeColor(colorRed)+ Interval(2) + EncodeColor(colorWhite) +
" - " + Date() +" - "+"\n" +EncodeColor(colorYellow) +"Op-"+O+" "+"Hi-"+H+" "+"Lo-"+L+" "+
"Cl-"+C+" "+ "Vol= "+ WriteVal(V)+"\n"+
WriteIf(Avg, "Avg."+(Avg)+"","");
 

Similar threads