kmadnani 17 posts msg #153146 - Ignore kmadnani |
7/16/2020 12:29:12 PM
Experts would appreciate your help in converting the following Thinkorswim Thinkscript scan to stockfetcher.
This is basically requesting combining 2 scripts into one :
1. scanning for high RVOL-Relative Volume (>2STD Dev)
2. the volume bar having > 95% Buying
Reason for requesting this is that on stockfetcher we can run these scans back in time which can make it easier to track stocks with recent high RVOL+95% buying. Good candidates for a long.
1. RVOL Script:
# TD Ameritrade IP Company, Inc. (c) 2014-2018
#
declare lower;
declare zerobase;
input length = 60;
input numDev = 2.0;
input allowNegativeValues = no;
def rawRelVol = ROUND((volume - Average(volume, length)) / StDev(volume, length),1);
plot RelVol = if allowNegativeValues then rawRelVol else Max(0, rawRelVol);
#plot StDevLevel = numDev;
#RelVol.SetPaintingStrategy(PaintingStrategy.HISTOGRAM);
#RelVol.SetLineWeight(3);
RelVol.DefineColor("Above", GetColor(0));
RelVol.DefineColor("Below", GetColor(2));
RelVol.AssignValueColor(if RelVol >= numDev then RelVol.Color("Above") else RelVol.Color("Below"));
#StDevLevel.SetDefaultColor(GetColor(7));
#StDevLevel.SetStyle(Curve.SHORT_DASH);
#AddLabel(yes, RelVol);
AddLabel(1, Concat ("", RelVol ), if RelVol >0 then Color.WHITE else Color.BLACK);
AssignBACKGROUNDColor(if RelVol>0 then color.red else color.BLACK);
2. 95% Volume Bar is Buying script
# CustVolumeStudy by 7of9 for BRT
declare lower;
#Inputs
input Show30DayAvg = yes;
input ShowTodayVolume = yes;
input ShowPercentOf30DayAvg = yes;
input UnusualVolumePercent = 200;
input Show30BarAvg = yes;
input ShowCurrentBar = yes;
input ShowPercentOf30BarAvg = yes;
input ShowSellVolumePercent = yes;
input ShowBuyVolumePercent=yes;
def O = open;
def H = high;
def C = close;
def L = low;
def V = volume;
def buying = V*(C-L)/(H-L);
def selling = V*(H-C)/(H-L);
# Selling Volume
Plot SellVol = selling;
SellVol.setPaintingStrategy(PaintingStrategy.Histogram);
SellVol.SetDefaultColor(Color.Red);
SellVol.HideTitle();
SellVol.HideBubble();
SellVol.SetLineWeight(5);
# Total Volume
Plot BuyVol = volume;
BuyVol.setPaintingStrategy(PaintingStrategy.Histogram);
BuyVol.SetDefaultColor(Color.Dark_Green);
BuyVol.HideTitle();
BuyVol.HideBubble();
BuyVol.SetLineWeight(5);
#Volume Data
def volLast30DayAvg = (volume(period = "DAY")[1] + volume(period = "DAY")[2] + volume(period = "DAY")[3] + volume(period = "DAY")[4] + volume(period = "DAY")[5] + volume(period = "DAY")[6] + volume(period = "DAY")[7] + volume(period = "DAY")[8] + volume(period = "DAY")[9] + volume(period = "DAY")[10] + volume(period = "DAY")[11] + volume(period = "DAY")[12] + volume(period = "DAY")[13] + volume(period = "DAY")[14] + volume(period = "DAY")[15] + volume(period = "DAY")[16] + volume(period = "DAY")[17] + volume(period = "DAY")[18] + volume(period = "DAY")[19] + volume(period = "DAY")[20] + volume(period = "DAY")[21] + volume(period = "DAY")[22] + volume(period = "DAY")[23] + volume(period = "DAY")[24] + volume(period = "DAY")[25] + volume(period = "DAY")[26] + volume(period = "DAY")[27] + volume(period = "DAY")[28] + volume(period = "DAY")[29] + volume(period = "DAY")[30]) / 30;
def today = volume(period = "DAY");
def percentOf30Day = Round((today / volLast30DayAvg) * 100, 0);
def avg30Bars = (volume[1] + volume[2] + volume[3] + volume[4] + volume[5] + volume[6] + volume[7] + volume[8] + volume[9] + volume[10] + volume[11] + volume[12] + volume[13] + volume[14] + volume[15] + volume[16] + volume[17] + volume[18] + volume[19] + volume[20] + volume[21] + volume[22] + volume[23] + volume[24] + volume[25] + volume[26] + volume[27] + volume[28] + volume[29] + volume[30]) / 30;
def curVolume = volume;
def percentOf30Bar = Round((curVolume / avg30Bars) * 100, 0);
def SellVolPercent = Round((Selling / Volume) * 100, 0);
def BuyVolPercent = 100 - SellVolPercent;
# Labels
#AddLabel(Show30DayAvg, "Avg 30 Days: " + Round(volLast30DayAvg, 0), Color.LIGHT_GRAY);
#AddLabel(ShowTodayVolume, "Today: " + today, (if percentOf30Day >= UnusualVolumePercent then Color.GREEN else if percentOf30Day >= 100 then Color.ORANGE else Color.LIGHT_GRAY));
#AddLabel(ShowPercentOf30DayAvg, percentOf30Day + "%", (if percentOf30Day >= UnusualVolumePercent then Color.GREEN else if percentOf30Day >= 100 then Color.ORANGE else Color.WHITE) );
#AddLabel(Show30BarAvg, "Avg 30 Bars: " + Round(avg30Bars, 0), Color.LIGHT_GRAY);
#AddLabel(ShowCurrentBar, "Cur Bar: " + curVolume, (if percentOf30Bar >= UnusualVolumePercent then Color.GREEN else if PercentOf30Bar >= 100 then Color.ORANGE else Color.LIGHT_GRAY));
#AddLabel(ShowPercentOf30BarAvg, PercentOf30Bar + "%", (if PercentOf30Bar >= UnusualVolumePercent then Color.GREEN else if PercentOf30Bar >= 100 then Color.ORANGE else Color.WHITE) );
#AddLabel(ShowSellVolumePercent, "Cur Bar Sell %: " + SellVolPercent, (if SellVolPercent > 51 then Color.RED else if SellVolPercent < 49 then Color.GREEN else Color.ORANGE));
AddLabel(ShowBuyVolumePercent, "" + BuyVolPercent, (if BuyVolPercent < 49 then Color.WHITE else if BuyVolPercent > 51 then Color.BLACK else Color.BLACK));
AssignBackgroundColor(if BuyVolPercent < 49 then Color.RED else if BuyVolPercent >= 51 then Color.GREEN else Color.ORANGE);
input length = 50;
#plot Vol = volume;
#plot VolAvg = Average(volume, length);
#Vol.SetPaintingStrategy(PaintingStrategy.HISTOGRAM);
#Vol.SetLineWeight(3);
#Vol.DefineColor("Up", Color.UPTICK);
#Vol.DefineColor("Down", Color.DOWNTICK);
#Vol.AssignValueColor(if close > close[1] then Vol.color("Up") else if close < close[1] then Vol.color("Down") else GetColor(1));
#VolAvg.SetDefaultColor(GetColor(8));
|