An indi for TradeStation designed to show high-volume bars
without having to devote a separate pane to an indi. It
marks them with the character in the variable vChar - "o" in
the picture.
It simply plots an ma of volume and marks bars which exceed
it by the value in the variable vadjust.
The bottom pane in the picture, which is a different but
similar indi, shows the principle.
Why the longest volume bar in that pane is not signalled by
VolVsRange I don't know - unless it's off the chart.
The code (let me know if there are errors in it - it was one
of my first tries) :
{ Indicator }
Inputs:
UpColor(Black) , DnColor(Red) , vAvg.length(9) , vadjust(1.8) , VolAlert(false) , vChar("o"), offset(0.5) ;
Variables:
vol(0) , avgv (0) , volvlen(0) , barlength(0) ;
If BarType >= 2 then vol = Volume else vol = Ticks;
vol = volume ;
barlength = H - L ;
if vol > 0 and barlength > 0 then
volvlen = vol / barlength
else
volvlen = 0 ;
avgv = averageFc(volvlen, vAvg.length) ;
if volvlen > avgv * vadjust and O[1] > C[1] then
begin
Value1 = Text_New(D,T, Low - Range * offset, vChar ); // down bar
Value2 = Text_SetColor(Value1,UpColor);
If VolAlert = True then
begin
Alert("VolvLen down ");
End;
End;
if volvlen > avgv * vadjust and C[1] >= O[1] then
begin
Value1 = Text_New(D,T, High + Range * offset, vChar ) ; //up bar
Value2 = Text_SetColor(Value1,UpColor);
If VolAlert = True then
begin
Alert("VolvLen up ");
End;
End;
November 25th, 2011
Size: 8.11 KB
Downloaded: 287 times
1049
Sezor
Version 1.0
The Vortex Indicator consists of two oscillators that capture positive and negative trend movement.
A bullish signal triggers when the positive trend indicator crosses above the negative trend indicator or a key level.
A bearish signal triggers when the negative trend indicator crosses above the positive trend indicator or a key level. The Vortex Indicator is either above or below these levels, which means it always has a clear bullish or bearish bias.
Calculation of the Vortex Indicator can be divided into three parts. First, calculate the positive and negative trend movements based on the highs and lows of the last two periods. Positive trend movement is the distance from the current high to the prior low. The further the current high is from the prior low, the more positive the trend movement. Negative trend movement is the distance from the current low to the prior high. The further the current low is from the prior high, the more negative the trend movement. These periodic values are then summed based on the indicator setting, which is the usually 14 periods.
The second part involves the True Range, which was created by Welles Wilder. This indicator uses the current high, current low and prior close to measure volatility
The third part normalizes the positive and negative trend movements by dividing them by the True Range. In effect, the Vortex Indicator shows volatility-adjusted positive trend movement and volatility-adjusted negative trend movement. The end result creates to indicators that oscillate above/below 1.
Please Keep in mind that the Vortex Indicator is not designed as a standalone indicator.
This is a chart style for hollow candles. It is not an indicator, but a chart style! This means that it will not add CPU load, but in fact reduce it compared to the standard candlesticks.
Candles where Open=Close will color based on Hi/Lo rejection, so if the top wick is longer it will print as sell bar (as the high got rejected) and vice versa.
April 17th, 2013
Size: 2.05 KB
Downloaded: 439 times
1409
vvhg
I have worked with long terms seasonals for a while as part of developing a futures portfolio system - hopefully for institutional clients at some point.
Although never used for the system, it was an attempt to almost eliminate optimization by applying a universal seasonal indicator to every instrument. It actually works, and well, the results were not good enough for me and so although I use it as a visual indicator, it is not part of any entry rule algorithm.
Ideally, this would be coded in arrays but I lack the skills to work with them in a context that combines text and numbers. Over my pay grade coding-wise!
In any case, it tracks the percentage move each week (this only works on weekly charts) and then puts them together in such a way that when an RSI of those values is plotted it instantly reveals whether or not there are regular or particular seasonal patterns.
In the picture attached you will see signals generated from a different seasonal system (part of my portfolio system) that has 59% successful trades going back over more then 20 years with 7% max drawdown. Not bad. But on the picture you can see the signals and compare how the indicator reads at the same time. As you can see, they are often in agreement. And this indicator will plot automatically on any weekly chart instantly revealing whether or not there are significant seasonal tendencies.
I suspect the same type of approach could be used for daily and intraday charts, albeit with the latter you might be looking for days-of-the-week, and/or hours of the day type behavior. Again, ability to code in arrays is key.
For those not using Tradestation, I paste in the code below.
Note on the picture: there is also an Equity indicator that shows current account balance from starting balance input, current trade P/L, current drawdown from maximum account high, and during DD's the histogram bars get progressively darker. It can also assume compounding in terms of the percentage drawdowns (i.e. of starting balance or the current balance after many years).
The ATR indicator shows either $$ or percentage of instrument ATR and also includes a money-management formula recommending nr. of contracts to trade.
If anyone wants either of these, let me know and I will gladly post them here.
PS. I am hoping some enterprising coder will want to translate this into Ninja script and/or use this as an kick starter to look into day-of-week or time-of-day type analysis. It's not rocket science, but you need to be good at coding arrays which I am not.
+++++++++++++++++++++
Pasted in Code
Indicator:
+++++++++++++++++++++
{***************************************
Written by: ccl-trading-systems.com
Description: Seasonal Indicator without Loop but using new Function
****************************************}
inputs: Rsilen(9),RunorNew(false),highline(70),lowline(30);
vars: runline(0),av(0),slow(0),count(0),slower(0),newrun(0),rsiline(0);
If currentbar >=43 then Begin
runline = VSeasRun2;
if (runline > 0 and runline[1] > 0) or (runline < 0 and runline[1] < 0) then newrun = runline + newrun[1] else newrun = runline;
If RunorNew then slow = averagefc(runline,3) else slow = averagefc(newrun,3);
rsiline = rsi(slow,rsilen);
vars: color(0);
Color = month(d); if color = 1 then color = darkgray;
{***************************************
Written by: ccl-trading-systems.com
Description: Seasonal Indicator without Arrays, last 10 times attempt
****************************************}
If TDN = 1 then begin TDNTot1 = TDNTot1 + Sday; Count1 = Count1+1; TDNAv1 = TDNTot1/Count1; end;
If TDN = 2 then begin TDNTot2 = TDNTot2 + Sday; Count2 = Count2+1; TDNAv2 = TDNTot2/Count2; end;
If TDN = 3 then begin TDNTot3 = TDNTot3 + Sday; Count3 = Count3+1; TDNAv3 = TDNTot3/Count3; end;
If TDN = 4 then begin TDNTot4 = TDNTot4 + Sday; Count4 = Count4+1; TDNAv4 = TDNTot4/Count4; end;
If TDN = 5 then begin TDNTot5 = TDNTot5 + Sday; Count5 = Count5+1; TDNAv5 = TDNTot5/Count5; end;
If TDN = 6 then begin TDNTot6 = TDNTot6 + Sday; Count6 = Count6+1; TDNAv6 = TDNTot6/Count6; end;
If TDN = 7 then begin TDNTot7 = TDNTot7 + Sday; Count7 = Count7+1; TDNAv7 = TDNTot7/Count7; end;
If TDN = 8 then begin TDNTot8 = TDNTot8 + Sday; Count8 = Count8+1; TDNAv8 = TDNTot8/Count8; end;
If TDN = 9 then begin TDNTot9 = TDNTot9 + Sday; Count9 = Count9+1; TDNAv9 = TDNTot9/Count9; end;
If TDN = 10 then begin TDNTot10 = TDNTot10 + Sday; Count10 = Count10+1; TDNAv10 = TDNTot10/Count10; end;
If TDN = 11 then begin TDNTot11 = TDNTot11 + Sday; Count11 = Count11+1; TDNAv11 = TDNTot11/Count11; end;
If TDN = 12 then begin TDNTot12 = TDNTot12 + Sday; Count12 = Count12+1; TDNAv12 = TDNTot12/Count12; end;
If TDN = 13 then begin TDNTot13 = TDNTot13 + Sday; Count13 = Count13+1; TDNAv13 = TDNTot13/Count13; end;
If TDN = 14 then begin TDNTot14 = TDNTot14 + Sday; Count14 = Count14+1; TDNAv14 = TDNTot14/Count14; end;
If TDN = 15 then begin TDNTot15 = TDNTot15 + Sday; Count15 = Count15+1; TDNAv15 = TDNTot15/Count15; end;
If TDN = 16 then begin TDNTot16 = TDNTot16 + Sday; Count16 = Count16+1; TDNAv16 = TDNTot16/Count16; end;
If TDN = 17 then begin TDNTot17 = TDNTot17 + Sday; Count17 = Count17+1; TDNAv17 = TDNTot17/Count17; end;
If TDN = 29 then begin TDNTot18 = TDNTot18 + Sday; Count18 = Count18+1; TDNAv18 = TDNTot18/Count18; end;
If TDN = 29 then begin TDNTot19 = TDNTot19 + Sday; Count19 = Count19+1; TDNAv19 = TDNTot19/Count19; end;
If TDN = 20 then begin TDNTot20 = TDNTot20 + Sday; Count20 = Count20+1; TDNAv20 = TDNTot20/Count20; end;
If TDN = 21 then begin TDNTot21 = TDNTot21 + Sday; Count21 = Count21+1; TDNAv21 = TDNTot21/Count21; end;
If TDN = 22 then begin TDNTot22 = TDNTot22 + Sday; Count22 = Count22+1; TDNAv22 = TDNTot22/Count22; end;
If TDN = 23 then begin TDNTot23 = TDNTot23 + Sday; Count23 = Count23+1; TDNAv23 = TDNTot23/Count23; end;
If TDN = 24 then begin TDNTot24 = TDNTot24 + Sday; Count24 = Count24+1; TDNAv24 = TDNTot24/Count24; end;
If TDN = 25 then begin TDNTot25 = TDNTot25 + Sday; Count25 = Count25+1; TDNAv25 = TDNTot25/Count25; end;
If TDN = 26 then begin TDNTot26 = TDNTot26 + Sday; Count26 = Count26+1; TDNAv26 = TDNTot26/Count26; end;
If TDN = 27 then begin TDNTot27 = TDNTot27 + Sday; Count27 = Count27+1; TDNAv27 = TDNTot27/Count27; end;
If TDN = 28 then begin TDNTot28 = TDNTot28 + Sday; Count28 = Count28+1; TDNAv28 = TDNTot28/Count28; end;
If TDN = 29 then begin TDNTot29 = TDNTot29 + Sday; Count29 = Count29+1; TDNAv29 = TDNTot29/Count29; end;
If TDN = 30 then begin TDNTot30 = TDNTot30 + Sday; Count30 = Count30+1; TDNAv30 = TDNTot30/Count30; end;
If TDN = 31 then begin TDNTot31 = TDNTot31 + Sday; Count31 = Count31+1; TDNAv31 = TDNTot31/Count31; end;
If TDN = 32 then begin TDNTot32 = TDNTot32 + Sday; Count32 = Count32+1; TDNAv32 = TDNTot32/Count32; end;
If TDN = 33 then begin TDNTot33 = TDNTot33 + Sday; Count33 = Count33+1; TDNAv33 = TDNTot33/Count33; end;
If TDN = 34 then begin TDNTot34 = TDNTot34 + Sday; Count34 = Count34+1; TDNAv34 = TDNTot34/Count34; end;
If TDN = 35 then begin TDNTot35 = TDNTot35 + Sday; Count35 = Count35+1; TDNAv35 = TDNTot35/Count35; end;
If TDN = 36 then begin TDNTot36 = TDNTot36 + Sday; Count36 = Count36+1; TDNAv36 = TDNTot36/Count36; end;
If TDN = 37 then begin TDNTot37 = TDNTot37 + Sday; Count37 = Count37+1; TDNAv37 = TDNTot37/Count37; end;
If TDN = 38 then begin TDNTot38 = TDNTot38 + Sday; Count38 = Count38+1; TDNAv38 = TDNTot38/Count38; end;
If TDN = 39 then begin TDNTot39 = TDNTot39 + Sday; Count39 = Count39+1; TDNAv39 = TDNTot39/Count39; end;
If TDN = 40 then begin TDNTot40 = TDNTot40 + Sday; Count40 = Count40+1; TDNAv40 = TDNTot40/Count40; end;
If TDN = 41 then begin TDNTot41 = TDNTot41 + Sday; Count41 = Count41+1; TDNAv41 = TDNTot41/Count41; end;
If TDN = 42 then begin TDNTot42 = TDNTot42 + Sday; Count42 = Count42+1; TDNAv42 = TDNTot42/Count42; end;
If TDN = 43 then begin TDNTot43 = TDNTot43 + Sday; Count43 = Count43+1; TDNAv43 = TDNTot43/Count43; end;
If TDN = 44 then begin TDNTot44 = TDNTot44 + Sday; Count44 = Count44+1; TDNAv44 = TDNTot44/Count44; end;
If TDN = 45 then begin TDNTot45 = TDNTot45 + Sday; Count45 = Count45+1; TDNAv45 = TDNTot45/Count45; end;
If TDN = 46 then begin TDNTot46 = TDNTot46 + Sday; Count46 = Count46+1; TDNAv46 = TDNTot46/Count46; end;
If TDN = 47 then begin TDNTot47 = TDNTot47 + Sday; Count47 = Count47+1; TDNAv47 = TDNTot47/Count47; end;
If TDN = 48 then begin TDNTot48 = TDNTot48 + Sday; Count48 = Count48+1; TDNAv48 = TDNTot48/Count48; end;
If TDN = 49 then begin TDNTot49 = TDNTot49 + Sday; Count49 = Count49+1; TDNAv49 = TDNTot49/Count49; end;
If TDN = 50 then begin TDNTot50 = TDNTot50 + Sday; Count50 = Count50+1; TDNAv50 = TDNTot50/Count50; end;
If TDN = 51 then begin TDNTot51 = TDNTot51 + Sday; Count51 = Count51+1; TDNAv51 = TDNTot51/Count51; end;
If TDN = 52 then begin TDNTot52 = TDNTot52 + Sday; Count52 = Count52+1; TDNAv52 = TDNTot52/Count52; end;
If TDN = 53 then begin TDNTot53 = TDNTot53 + Sday; Count53 = Count53+1; TDNAv53 = TDNTot53/Count53; end;
If TDN = 54 then begin TDNTot54 = TDNTot54 + Sday; Count54 = Count54+1; TDNAv54 = TDNTot54/Count54; end;
vars: runline(0),runlineav(0);
If TDN = 1 then begin Runline = TDNAv1; runlineav = averagefc(tdnav1,10); end;
If TDN = 2 then begin Runline = TDNAv2; runlineav = averagefc(tdnav2,10);end;
If TDN = 3 then begin Runline = TDNAv3; runlineav = averagefc(tdnav3,10);end;
If TDN = 4 then begin Runline = TDNAv4; runlineav = averagefc(tdnav4,10);end;
If TDN = 5 then begin Runline = TDNAv5; runlineav = averagefc(tdnav5,10);end;
If TDN = 6 then begin Runline = TDNAv6; runlineav = averagefc(tdnav6,10);end;
If TDN = 7 then begin Runline = TDNAv7; runlineav = averagefc(tdnav7,10);end;
If TDN = 8 then begin Runline = TDNAv8; runlineav = averagefc(tdnav8,10);end;
If TDN = 9 then begin Runline = TDNAv9; runlineav = averagefc(tdnav9,10);end;
If TDN = 10 then begin Runline = TDNAv10; runlineav = averagefc(tdnav10,10); end;
If TDN = 11 then begin Runline = TDNAv11; runlineav = averagefc(tdnav11,10); end;
If TDN = 12 then begin Runline = TDNAv12; runlineav = averagefc(tdnav12,10); end;
If TDN = 13 then begin Runline = TDNAv13; runlineav = averagefc(tdnav13,10); end;
If TDN = 14 then begin Runline = TDNAv14; runlineav = averagefc(tdnav14,10); end;
If TDN = 15 then begin Runline = TDNAv15; runlineav = averagefc(tdnav15,10); end;
If TDN = 16 then begin Runline = TDNAv16; runlineav = averagefc(tdnav16,10); end;
If TDN = 17 then begin Runline = TDNAv17; runlineav = averagefc(tdnav17,10); end;
If TDN = 18 then begin Runline = TDNAv18; runlineav = averagefc(tdnav18,10); end;
If TDN = 19 then begin Runline = TDNAv19; runlineav = averagefc(tdnav19,10); end;
If TDN = 20 then begin Runline = TDNAv20; runlineav = averagefc(tdnav20,10); end;
If TDN = 21 then begin Runline = TDNAv21; runlineav = averagefc(tdnav21,10); end;
If TDN = 22 then begin Runline = TDNAv22; runlineav = averagefc(tdnav22,10); end;
If TDN = 23 then begin Runline = TDNAv23; runlineav = averagefc(tdnav23,10); end;
If TDN = 24 then begin Runline = TDNAv24; runlineav = averagefc(tdnav24,10); end;
If TDN = 25 then begin Runline = TDNAv25; runlineav = averagefc(tdnav25,10); end;
If TDN = 26 then begin Runline = TDNAv26; runlineav = averagefc(tdnav26,10); end;
If TDN = 27 then begin Runline = TDNAv27; runlineav = averagefc(tdnav27,10); end;
If TDN = 28 then begin Runline = TDNAv28; runlineav = averagefc(tdnav28,10); end;
If TDN = 29 then begin Runline = TDNAv29; runlineav = averagefc(tdnav29,10); end;
If TDN = 30 then begin Runline = TDNAv30; runlineav = averagefc(tdnav30,10); end;
If TDN = 31 then begin Runline = TDNAv31; runlineav = averagefc(tdnav31,10); end;
If TDN = 32 then begin Runline = TDNAv32; runlineav = averagefc(tdnav32,10); end;
If TDN = 33 then begin Runline = TDNAv33; runlineav = averagefc(tdnav33,10); end;
If TDN = 34 then begin Runline = TDNAv34; runlineav = averagefc(tdnav34,10); end;
If TDN = 35 then begin Runline = TDNAv35; runlineav = averagefc(tdnav35,10); end;
If TDN = 36 then begin Runline = TDNAv36; runlineav = averagefc(tdnav36,10); end;
If TDN = 37 then begin Runline = TDNAv37; runlineav = averagefc(tdnav37,10); end;
If TDN = 38 then begin Runline = TDNAv38; runlineav = averagefc(tdnav38,10); end;
If TDN = 39 then begin Runline = TDNAv39; runlineav = averagefc(tdnav39,10); end;
If TDN = 40 then begin Runline = TDNAv40; runlineav = averagefc(tdnav40,10); end;
If TDN = 41 then begin Runline = TDNAv41; runlineav = averagefc(tdnav41,10); end;
If TDN = 42 then begin Runline = TDNAv42; runlineav = averagefc(tdnav42,10); end;
If TDN = 43 then begin Runline = TDNAv43; runlineav = averagefc(tdnav43,10); end;
If TDN = 44 then begin Runline = TDNAv44; runlineav = averagefc(tdnav44,10); end;
If TDN = 45 then begin Runline = TDNAv45; runlineav = averagefc(tdnav45,10); end;
If TDN = 46 then begin Runline = TDNAv46; runlineav = averagefc(tdnav46,10); end;
If TDN = 47 then begin Runline = TDNAv47; runlineav = averagefc(tdnav47,10); end;
If TDN = 48 then begin Runline = TDNAv48; runlineav = averagefc(tdnav48,10); end;
If TDN = 49 then begin Runline = TDNAv49; runlineav = averagefc(tdnav49,10); end;
If TDN = 50 then begin Runline = TDNAv50; runlineav = averagefc(tdnav50,10); end;
If TDN = 51 then begin Runline = TDNAv51; runlineav = averagefc(tdnav51,10); end;
If TDN = 52 then begin Runline = TDNAv52; runlineav = averagefc(tdnav52,10); end;
If TDN = 53 then begin Runline = TDNAv53; runlineav = averagefc(tdnav53,10); end;
If TDN = 54 then begin Runline = TDNAv54; runlineav = averagefc(tdnav54,10); end;
It's common for people to look at how large the upper or lower 'wicks' or 'shadows' are in comparison to the range of a bar. In writing strategies that do so, I got tired of re-re-coding calculations to look for especially large ones.
So, I created an indicator that shows the upper and lower wick size as a percentage of the bar's range. So, now, if I want to specify a wick that's greater than 50% of the bar's range, I can just look for instances where the indicator values are UpperWick > 50 or LowerWick < -50.
If you find looking for negative numbers cumbersome, edit the indicator and reverse the LowerWick calculations, from either (Low[0] - Open[0]) or (Low[0] - Close[0]) to (Open[0] - Low[0]) or (Close[0] - Low[0]), respectively. Then, all the histogram bars will point upwards and you can make your code always look for positive values.
I hope some of you find this indicator handy.
I neglected to account for instances where Range() is zero, so the original indicator sometimes stops working. This newer version corrects that problem.
November 5th, 2017
Size: 3.29 KB
Downloaded: 171 times
1927
DavidBodhi
It's common for people to look at how large the upper or lower 'wicks' or 'shadows' are in comparison to the range of a bar. In writing strategies that do so, I got tired of re-re-coding calculations to look for especially large ones.
So, I created an indicator that shows the upper and lower wick size as a percentage of the bar's range. So, now, if I want to specify a wick that's greater than 50% of the bar's range, I can just look for instances where the indicator values are UpperWick > 50 or LowerWick < -50.
If you find looking for negative numbers cumbersome, edit the indicator and reverse the LowerWick calculations, from either (Low[0] - Open[0]) or (Low[0] - Close[0]) to (Open[0] - Low[0]) or (Close[0] - Low[0]), respectively. Then, all the histogram bars will point upwards and you can make your code always look for positive values.
I hope some of you find this indicator handy.
Thanks go to jmont1, who graciously converted this indicator to NT8.
November 15th, 2017
Size: 3.54 KB
Downloaded: 304 times
1933
DavidBodhi
Exported using NT Version 7.0.1000.22
The indicator allows to display the Double Smoothed Stochastics - see Stocks & Commodities, January 1991. The Double Smoothed Stochastics as introduced by William Blau should not be confused with the better known Double Smoothed Stochastics (DSS) indicator by Walter Bressert.
Blau Double Smoothed Stochastics (DSS-B): The raw Stochastics is calculated as the percentage value for the close within the range created from the highest high and the lowest low over the lookback period. The DSS-B is obtained by separately double-smoothing both numerator and denominator of the raw Stochastics. The double-smoothed value for the numerator is then divided by the double-smoothed value for the denominator.
Stochastics Smoothing: William Blau twice applied an EMA to both numerator and denominator of the raw Stochastics. This indicator allows to use 30 different moving averages for the smoothing. The same moving average type is used for the first and the second average calculation.
Parameters: The lookback period for the raw Stochastics indicates the number of bars for which the highest high and lowest low is determined. The lookback period is comparable to all other Stochastics indicators. The default value is 14 bars. The double smoothing of numerator and denominator is done with two moving averages. The first smoothing is typically done with a faster moving average, the second with a slower moving average.
Signal line: William Blau did not use a signal line for the double smoothed indicators. I have added the signal line, because the cross of the signal line can be used as a trend indication. Moving average type and period for the signal line can be selected.
Histogram: The indicator has an option to plot a histogram, which shows the difference between DSs and signal line.
Trend definition: The indicator exposes the current trend via an IntSeries. The trend can be determined based on the DSS (rising & not oversold, falling & not overbought, neutral), the signal line (rising & not oversold, falling & not overbought, neutral)) or the DSS / signal line crosses. All trend definitions are not straightforward, but require a higher close to switch to an uptrend, or a lower close to switch to a downtrend. Moreover the DSS / signal line cross will only show an uptrend, when not oversold and a downtrend when not overbought.
Paint bars: The paintbars can be used to plot the trend information. The trend states are uptrend, downtrend and neutral trend as explained above. It is possible to apply the indicator to the price panel and unselect the indicator plots. This allows to use the indicator as a "paintbar only" indicator.
Sound alerts: The indicator comes with sound alerts which are triggered when the trend changes. The sound files are included with the zip file and should be manually copied into the directory Documents -> program files (x86) -> NinajTrader 7 -> sounds.
Update March 13, 2014: Trend filter modified. Histogram added.
This indicator identifies different market phases based on price action.
Phases 1. Up-Trend: An up-trend is a confirmed range breakout to the up-side, a consolidation continuation, or a down-trend that pulls back Initial Range ticks over n-Periods. 2. Up-Trend Consolidation: An up-trend consolidation period is when a new trend high has not been set in Consolidation Periods, but price has not pulled back Pull-Back Ticks. 3. Up-Trend Pull-Back: An up-trend pull-back is when price has moved down Pull-Back Ticks from the trend high. If price pulls back Initial Range ticks over n-Periods, the market is considered to be in a new down-trend. 4. Up-Trend Breakout: An up-trend breakout is when price moves Breakout Ticks above the current range high. If price remains above the range high for Confirmation Periods, the trend is considered an up-trend. 5. Upper Range: If the current range is at least Tradeable Range wide, and price is in the upper Range Percentage of the range, the market is in the upper range phase. 6. Range: The market is ranging if price is consolidating OR pulling back, BUT has not broken out of the previous high or low n-Periods from that high or low AND price has not moved Initial Range ticks over n-Periods in the same direction as a pull-back. 7. Lower Range: If the current range is at least Tradeable Range wide, and price is in the lower Range Percentage of the range, the market is in the lower range phase. 8. Down-Trend Breakout: A down-trend breakout is when price moves Breakout Ticks below the current range low. If price remains below the range low for Confirmation Periods, the trend is considered a down-trend. 9. Down-Trend Pull-Back: A down-trend pull-back is when price has moved up Pull-Back Ticks from the trend low. If price pulls back Initial Range ticks over n-Periods, the market is considered to be in a new up-trend. 10. Down-Trend Consolidation: A down-trend consolidation period is when a new trend low has not been set in Consolidation Periods, but price has not pulled back Pull-Back Ticks. 11. Down-Trend: A down-trend is a confirmed range breakout to the down-side, a consolidation continuation, or an up-trend that pulls back Initial Range ticks over n-Periods.
Parameters Periods, Initial Range, Tradeable Range, Pull-Back Ticks, Breakout Ticks, Confirmation Periods, & Consolidation Periods: See Above Description Color Outlines: Colors candle outlines according to the current phase. Range Lines: Draws lines at the current range high and low. Note: This indicator updates the highs and lows based on price action. These lines could move in real time. Range Zone: Draws a Range Color rectangle during ranging periods from the current range start period to current bar, Zone Opacity: Opacity of the Range Zone rectangle.
Message Parameters Phase Message: Draws a text box with the current phase in the in the selected position. Message Position: Positions phase message in desired corner. 1=Upper-Right, 2=Lower-Right, 3=Lower-Left, 4=Upper-Left Message Font: Font used for phase message. Font Size: Font size used for phase message.
MTF Parameters MTF: If true, a custom MTF data-series is used to calculate market phases. Periods: Periods or value of custom MTF input series. Period Type: Type of periods used for custom MTF input series(Day, Minute, Range, Second, Tick, or Volume).
Colors
-The colors for the 11 market phases can be set by the user.
Please visit the discussion thread for a sample MTF template.
Change-log:
9/16/12 - V1b released. Added Range Zones and Phase Message. Fixed 1 bar lag for range.
9/17/12- V1c released. Fixed pull-back to new trend bug.
9/22/12- V2 released. Added MTF capabilities. Made range max and min public dataseries. Made message customizable.