After numerous subscriber requests, I put together a daily version of both the Volume Profile and TPO Profile scripts. Whereas the original profile studies total all data displayed on the current TOS chart, the new versions will display only one day’s data and the associated profile. The daily volume point of control (VPOC) is shown as the yellow bar. I have modified the original Volume and TPO Profile studies to allow the user to move them further to the right to mitigate the overlap when running concurrently with the new daily version. Note: Subscriber update has been posted to the forum along with setup instructions.
Daily Volume and TPO Profiles
Oct 25th, 2009 by ThinkScripter
Audible $TICK Alerts
Oct 22nd, 2009 by ThinkScripter
UPDATE: This looks to be a much easier way to accomplish the $TICK alerts without use of a complex formula. I’ll leave the Complex Alert methodology below as a reference.
1) Just set up a TOS alert like you would for any other symbol (i.e. LAST at or above 1000/ at or below -1000), check “Recreate alert for reverse crossover” and customize the sound if desired.

___________________________________________________
Thanks to an email from TOS’ Guido passed along to me, we now have a way to have audible $TICK alerts in TOS that reset automatically. Here are the basic steps:
1. Go to the Market Watch Tab and enter the symbol $TICK
2. Press the Study Alert button

3. Choose Complex Formula
4. In the formula box enter either high > 1000 or low < -1000 (Substitute your own thresholds as required). You’ll need a separate alert for the high and low $TICK
5. Change the Tigger if to Above 0.50
6. Select 1m for the aggregation period
7. Press Create Alert

8. Back in the Alert Book, right click on the word “Active” in the status column and select “Cancel/Replace Alert”

9. Click the little gear at the far right of the new alert
10. Check “Recreate alert for reverse crossover” and customize the sound if desired.
11. Ensure the threshold value is still 0.5 (mine resets to 0 – Might be able to skip step 5)
12. Hit OK and then Create Alert

Three cheers for TOS and Guido for listening to our requests.
DT Oscillator
Oct 17th, 2009 by ThinkScripter
Here’s a Saturday evening quickie. Lou dropped into the forum last week looking for a simple thinkScript conversion of the DT Oscillator code he had. It’s pretty basic but I thought I’d post it here in case you missed it in the forum. In essence it is just another version of the Stochastic RSI. I’ve been a bit quiet these days in the forum as I have spent a fair amount of time deep in the ThinkScripter laboratory cooking up some new goodies for you all. A careful examination of the price pane will reveal that the daily version of the Volume Profile is nearly complete. Stay tuned….
# TS_DTOscillator thinkScript translation by ThinkScripter
# http://www.thinkscripter.com
# thinkscripter@gmail.com
# Last Update 15 OCT 2009
declare lower;
input RSIPeriod = 13;
input StochasticPeriod=8;
input MAType = {default SMA,EMA};
input KPeriod = 5;
input DPeriod = 3;
input upper = 70;
input lower = 30;
def StoRSI= 100*(( RSIWilder( RSIPeriod) - lowest( RSIWilder( RSIPeriod ) , StochasticPeriod ) ) / ( (
highest( RSIWilder( RSIPeriod) , StochasticPeriod ) ) - lowest(RSIWilder( RSIPeriod ), StochasticPeriod ) )
);
def SK;
def SD;
Switch (MAType){
case SMA:
SK=average(StoRSI,KPeriod);
SD=average(SK,Dperiod);
case EMA:
SK=ExpAverage(StoRSI,KPeriod);
SD=ExpAverage(SK,DPeriod);
}
Plot DTOscSK = SK;
DTOscSK.setDefaultColor(color.blue);
plot DTOscSD = SD;
DTOscSD.setDefaultCOlor(color.gray);
DTOscSD.setStyle(curve.SHORT_DASH);
plot zero = 50;
zero.setDefaultColor(color.white);
plot UpperL = upper;
UpperL.setDefaultColor(color.red);
plot LowerL = lower;
lowerL.setDefaultColor(color.green);
$TICK Range
Sep 29th, 2009 by ThinkScripter
NOTE:The original post of the code had the > signs swapped with < signs and is now fixed.
Here’s one for the folks over at EminiAddict and followers of Dave Halsey’s methods. This study is designed only to run on an intraday chart of the $TICK. The day’s range is indicated by the red and green horizontal envelope. Each new high TICK (NHT) or new low TICK (NLT) will push the envelope lines out giving you a handy reference. Extreme TICK readings above user-selectable thresholds are additionally tagged with a yellow triangle. The white line in the center is a 20 period moving average linked to Bollinger Bands in gray. The chart itself is set to a one minute bar chart. The color of the bars changes in response to the TICK moving average above or below the zero line. I added a TPO Profile to the chart as I found it interesting how symmetrical today’s $TICK distribution was. Enjoy – Eric
NOTE: If you are having trouble pasting this code into the TOS Script Editor (i.e. lots of errors), paste the code into a text editor like Notepad first, then copy and paste into TOS from there. This will strip out any hidden formatting that makes the script editor puke.
# TICKRANGE
# http://www.thinkscripter.com
# thinkscripter@gmail.com
# Last Update 30 SEP 2009
# For use on charts of $TICK only
input showOnlyToday = YES;
input Market_Open_Time = 0930;
input Market_Close_Time = 1600;
input tickAveragePeriod = 20;
input bollingerBandFactor = 2.0;
def day = getDay();
def lastDay = getLastDay();
def isToday = if(day==lastDay,1,0);
def shouldPlot = if(showOnlyToday and isToday, 1,if(!showOnlyToday,1,0));
def pastOpen = if((secondsTillTime(Market_Open_Time) > 0), 0,1);
def pastClose = if((secondsTillTime(Market_Close_Time) > 0), 0,1);
def marketOpen = if(pastOpen and !pastClose, 1, 0);
def firstBar =if (day[1] != day, day-1, 0);
rec regHoursHigh = if(high > regHoursHigh[1] and marketOpen, high, if(marketOpen and !firstBar, regHoursHigh[1], high));
plot TICK_High = if(marketOpen and shouldPlot, regHoursHigh, Double.nan);
TICK_High.SetDefaultColor(color.green);
TICK_High.SetLineWeight(1);
rec regHoursLow = if(low < regHoursLow[1] and marketOpen, low, if(marketOpen and !firstBar, regHoursLow[1],low));
plot TICK_Low = if(marketOpen and shouldPlot, regHoursLow, double.nan);
TICK_Low.SetLineWeight(1);
TICK_Low.setDefaultColor(color.red);
input HighThreshold = 1000;
input LowThreshold = -1000;
def tickDataLow = low("$TICK");
def tickDataHigh = high("$TICK");
def tickClose = close("$TICK");
def isLow = if((tickDataLow < LowThreshold), 1, 0);
def isHigh = if((tickDataHigh > HighThreshold), 1, 0);
plot ExtremeTick = if(isLow and !isHigh, low, if(isHigh and !isLow , high, double.nan));
ExtremeTick.setStyle(curve.POINTS);
ExtremeTick.setPaintingStrategy(paintingStrategy.LINE_VS_TRIANGLES);
ExtremeTick.setDefaultColor(color.yellow);
ExtremeTick.setLineWeight(3);
plot tickSMA = average(tickClose,tickAveragePeriod);
tickSMA.setLineWeight(3);
tickSMA.setDefaultColor(color.white);
def ticksDev = stdev(tickClose, tickAveragePeriod);
plot tickBBH = tickSMA+bollingerBandFactor*tickSDev;
tickBBH.setLineWeight(1);
tickBBH.setDefaultColor(color.dark_gray);
plot tickBBL = tickSMA-bollingerBandFactor*tickSDev;
tickBBL.setLineWeight(1);
tickBBL.setDefaultColor(color.dark_gray);
AssignPriceColor(if tickSMA >= 0 then color.green else color.red);
plot eHT = HighThreshold;
eHT.setDefaultColor(color.dark_gRAY);
plot eLT = LowThreshold;
eLT.setDefaultColor(color.dark_gRAY);
plot zero = 0;
zero.setDefaultColor(color.red);
zero.setLineWeight(2);
Time Price Opportunity (TPO) Profile
Sep 27th, 2009 by ThinkScripter
I’ve taken the ThinkScripter Volume Profile indicator and crafted a supplemental version, the TPO Profile. The Time Price Opportunity method is used for the creation of Market Profile histograms. Volume is completely ignored, and instead, we count the number of times a given price occurs throughout the chart (i.e. A Time Price Opportunity). This proves to be especially useful on charts without volume like the SPX or currency pairs. With this new tool in hand, we can see a more complete profile of the price action in the SPX for the last 20 years as pictured below. The study is set up in the same way as the Volume Profile with respect to extension space to the right of the chart. The red bars mark the most frequently traded price(s). Member’s update will be published this evening.












