Hi

Love the forum and so far have found my way to navigate code which I never have before so thanks for all the tutorials! I have a question on the following which is using the vScore lower and upper scripts (not my code). I use three charts with different strategies this being one of them to help see crossover on the zero lines for both lower and upper. Two questions 1) my bull / bear signals don't seem to be working or aligning correctly 2) I was looking to create a scan on the following to find stocks that have crossed over by some % or x amount. The scans always come back empty. I attached the image as well as the code I am using. Appreciate any help!

I am sure you are familiar but this is the link - https://tosindicators.com/indicators/vscore

TI_vscore_upper

#TOS Indicators - Home of the Volatility Box

#VScore-Upper Study

#Full YouTube Tutorial:

#

#**10/6/19 - Feature Added: Ability for Users to Set Custom Standard Deviation in Label Output

declare upper;

input anchorDate = 20240101;

input barsGoBack = 30;

def postAnchorDate = if GetYYYYMMDD() >= anchorDate then 1 else 0;

def yyyyMmDd = getYyyyMmDd();

def periodIndx = if getAggregationPeriod() < AggregationPeriod.HOUR then yyyyMMDD else postAnchorDate;

def isPeriodRolled = compoundValue(1, periodIndx != periodIndx[1], yes);

def volumeSum;

def volumeVwapSum;

def volumeVwap2Sum;

if (isPeriodRolled) {

volumeSum = volume;

volumeVwapSum = volume * vwap;

volumeVwap2Sum = volume * Sqr(vwap);

} else {

volumeSum = compoundValue(1, volumeSum[1] + volume, volume);

volumeVwapSum = compoundValue(1, volumeVwapSum[1] + volume * vwap, volume * vwap);

volumeVwap2Sum = compoundValue(1, volumeVwap2Sum[1] + volume * Sqr(vwap), volume * Sqr(vwap));

}

def price = volumeVwapSum / volumeSum;

def deviation = Sqrt(Max(volumeVwap2Sum / volumeSum - Sqr(price), 0));

def VScore = if (((price - close)

plot zero = (0)*(deviation) + (price);

plot one = (1)*(deviation) + (price);

plot two = (2)*(deviation) + (price);

plot three = (3)*(deviation) + (price);

plot negOne = (-1)*(deviation) + (price);

plot negTwo = (-2)*(deviation) + (price);

plot negThree = (-3)*(deviation) + (price);

zero.setDefaultColor(Color.White);

zero.setLineWeight(3);

one.setDefaultColor(Color.Light_Gray);

negOne.setDefaultColor(Color.Light_Gray);

two.setDefaultColor(Color.Light_Green);

negTwo.setDefaultColor(Color.Light_Red);

three.setDefaultColor(Color.Green);

negThree.setDefaultColor(Color.Red);

def zeroAndOne = if VScore > zero and VScore <= one then 1 else 0;

def oneAndTwo = if VScore > one and VScore <= two then 1 else 0;

def twoAndThree = if VScore > two and VScore <= three then 1 else 0;

def negZeroAndOne = if VScore > negOne and VScore < zero then 1 else 0;

def negOneAndTwo = if VScore > negTwo and VScore <= negOne then 1 else 0;

def negTwoAndThree = if VScore > negThree and VScore <= negTwo then 1 else 0;

def counter = if VScore >= 0 then 1 else if VScore < 0 then -1 else 0;

def trend = Sum(counter, barsGoBack);

def positiveTrend = if trend >= 0 then 1 else 0;

def negativeTrend = if trend < 0 then 1 else 0;

plot BullSignal = if positiveTrend and (VScore <= 0.3 and Vscore[1] >0) and CCI() > -100 then 1 else 0;

plot BearSignal = if negativeTrend and (VScore >= 0.3 and Vscore[1] < 0) and CCI() < 100 then 1 else 0;

BullSignal.SetPaintingStrategy(PaintingStrategy.Boolean_Arrow_UP);

BearSignal.SetPaintingStrategy(PaintingStrategy.Boolean_Arrow_DOWN);

BullSignal.SetLineWeight(3);

BearSignal.SetLineWeight(3);

TI_vscore_lower

#TOS Indicators - Home of the Volatility Box

#Full YouTube Tutorial:

#

#**10/6/19 - Feature Added: Ability for Users to Set Custom Standard Deviation in Label Output

declare lower;

input anchorDate = 20210101;

input barsGoBack = 90;

input showStopLabel = yes;

input devStop = {default One, Two, Three, Zero, NegOne, NegTwo, NegThree, Custom};

input customDev = 0.15;

def chosenDev;

switch(devStop){

case One:

chosenDev = 1;

case Two:

chosenDev = 2;

case Three:

chosenDev = 3;

case Zero:

chosenDev = 0;

case NegOne:

chosenDev = -1;

case NegTwo:

chosenDev = -2;

case NegThree:

chosenDev = -3;

case Custom:

chosenDev = customDev;

}

def postAnchorDate = if GetYYYYMMDD() >= anchorDate then 1 else 0;

def yyyyMmDd = getYyyyMmDd();

def periodIndx = if getAggregationPeriod() < AggregationPeriod.HOUR then yyyyMMDD else postAnchorDate;

def isPeriodRolled = compoundValue(1, periodIndx != periodIndx[1], yes);

def volumeSum;

def volumeVwapSum;

def volumeVwap2Sum;

if (isPeriodRolled) {

volumeSum = volume;

volumeVwapSum = volume * vwap;

volumeVwap2Sum = volume * Sqr(vwap);

} else {

volumeSum = compoundValue(1, volumeSum[1] + volume, volume);

volumeVwapSum = compoundValue(1, volumeVwapSum[1] + volume * vwap, volume * vwap);

volumeVwap2Sum = compoundValue(1, volumeVwap2Sum[1] + volume * Sqr(vwap), volume * Sqr(vwap));

}

def price = volumeVwapSum / volumeSum;

def deviation = Sqrt(Max(volumeVwap2Sum / volumeSum - Sqr(price), 0));

plot VScore = if (((price - close)

plot zero = 0;

zero.setLineWeight(3);

plot one = 1;

one.setDefaultColor(Color.Light_Gray);

plot two = 2;

two.setDefaultColor(Color.light_Green);

plot three = 3;

three.setDefaultColor(Color.Green);

plot negOne = -1;

negOne.setDefaultColor(Color.Light_Gray);

plot negTwo = -2;

negTwo.setDefaultColor(Color.pink);

plot negThree = -3;

negThree.setDefaultColor(Color.light_red);

plot posInt = 0.3;

posInt.setDefaultColor(Color.cyan);

plot negInt = -0.3;

negInt.setDefaultColor(Color.cyan);

def stopPrice = (chosenDev)*(deviation) + (price);

AddLabel(showStopLabel, "Price at ["+chosenDev+"] SD: "+AsPrice(Round(stopPrice,2)),color.white);

def zeroAndOne = if VScore > zero and VScore <= one then 1 else 0;

def oneAndTwo = if VScore > one and VScore <= two then 1 else 0;

def twoAndThree = if VScore > two and VScore <= three then 1 else 0;

def negZeroAndOne = if VScore > negOne and VScore < zero then 1 else 0;

def negOneAndTwo = if VScore > negTwo and VScore <= negOne then 1 else 0;

def negTwoAndThree = if VScore > negThree and VScore <= negTwo then 1 else 0;

def cloud1;

def cloud2;

if Sum(zeroAndOne, barsGoBack) > Sum(OneAndTwo,barsGoBack) and Sum(zeroAndOne, barsGoBack) > Sum(twoAndThree,barsGoBack) and Sum(zeroAndOne, barsGoBack) > Sum(negZeroAndOne,barsGoBack) and Sum(zeroAndOne, barsGoBack) > Sum(negoneAndTwo,barsGoBack) and Sum(zeroAndOne, barsGoBack) > Sum(negtwoAndThree,barsGoBack){

cloud1 = zero;

cloud2 = one;

}

else if Sum(OneAndTwo, barsGoBack) > Sum(zeroAndOne,barsGoBack) and Sum(OneAndTwo, barsGoBack) > Sum(twoAndThree,barsGoBack) and Sum(OneAndTwo, barsGoBack) > Sum(negZeroAndOne,barsGoBack) and Sum(OneAndTwo, barsGoBack) > Sum(negoneAndTwo,barsGoBack) and Sum(OneAndTwo, barsGoBack) > Sum(negtwoAndThree,barsGoBack){

cloud1 = one;

cloud2 = two;

}

else if Sum(twoAndThree, barsGoBack) > Sum(zeroAndOne,barsGoBack) and Sum(twoAndThree, barsGoBack) > Sum(oneAndTwo,barsGoBack) and Sum(twoAndThree, barsGoBack) > Sum(negZeroAndOne,barsGoBack) and Sum(twoAndThree, barsGoBack) > Sum(negoneAndTwo,barsGoBack) and Sum(twoAndThree, barsGoBack) > Sum(negtwoAndThree,barsGoBack){

cloud1 = two;

cloud2 = three;

}

else if Sum(negZeroAndOne, barsGoBack) > Sum(zeroAndOne,barsGoBack) and Sum(negZeroAndOne, barsGoBack) > Sum(oneAndTwo,barsGoBack) and Sum(negZeroAndOne, barsGoBack) > Sum(twoAndThree,barsGoBack) and Sum(negZeroAndOne, barsGoBack) > Sum(negoneAndTwo,barsGoBack) and Sum(negZeroAndOne, barsGoBack) > Sum(negtwoAndThree,barsGoBack){

cloud1 = zero;

cloud2 = negOne;

}

else if Sum(negoneAndTwo, barsGoBack) > Sum(zeroAndOne,barsGoBack) and Sum(negoneAndTwo, barsGoBack) > Sum(oneAndTwo,barsGoBack) and Sum(negoneAndTwo, barsGoBack) > Sum(twoAndThree,barsGoBack) and Sum(negoneAndTwo, barsGoBack) > Sum(negZeroAndOne,barsGoBack) and Sum(negoneAndTwo, barsGoBack) > Sum(negtwoAndThree,barsGoBack){

cloud1 = negOne;

cloud2 = negTwo;

}

else if Sum(negtwoAndThree, barsGoBack) > Sum(zeroAndOne,barsGoBack) and Sum(negtwoAndThree, barsGoBack) > Sum(oneAndTwo,barsGoBack) and Sum(negtwoAndThree, barsGoBack) > Sum(twoAndThree,barsGoBack) and Sum(negtwoAndThree, barsGoBack) > Sum(negZeroAndOne,barsGoBack) and Sum(negtwoAndThree, barsGoBack) > Sum(negOneAndTwo,barsGoBack){

cloud1 = negTwo;

cloud2 = negThree;

}

else {

cloud1 = Double.nan;

cloud2 = Double.nan;

}

AddCloud(cloud1, cloud2, color.light_red, color.light_green);

plot BullSignal = if (cloud1 == one or cloud2 == one or cloud1 == two or cloud2 == two or cloud1 == three or cloud2 ==three) and (VScore <= 0.3 and Vscore[1] >0) and CCI() > -100 then -2 else Double.nan;

plot BearSignal = if (cloud1 == negOne or cloud2 == negOne or cloud1 == negTwo or cloud2 == negTwo or cloud1 == negThree or cloud2 ==negThree) and (VScore >= 0.3 and Vscore[1] < 0) and CCI() < 100 then 2 else Double.nan;

BullSignal.SetPaintingStrategy(PaintingStrategy.Arrow_UP);

BearSignal.SetPaintingStrategy(PaintingStrategy.Arrow_DOWN);

BullSignal.SetLineWeight(3);

BearSignal.SetLineWeight(3);

input soundAlertsOn = no;

Alert((cloud1 == one or cloud2 == one or cloud1 == two or cloud2 == two or cloud1 == three or cloud2 == three) and (VScore <= 0 and VScore[1] > 0) and (SoundAlertsOn), "Bullish VScore Entry", Alert.BAR);

Alert((cloud1 == negOne or cloud2 == negone or cloud1 == negtwo or cloud2 == negtwo or cloud1 == negthree or cloud2 == negthree) and (VScore >= 0 and VScore[1] < 0)and (SoundAlertsOn), "Bearish VScore Entry", Alert.BAR);

Love the forum and so far have found my way to navigate code which I never have before so thanks for all the tutorials! I have a question on the following which is using the vScore lower and upper scripts (not my code). I use three charts with different strategies this being one of them to help see crossover on the zero lines for both lower and upper. Two questions 1) my bull / bear signals don't seem to be working or aligning correctly 2) I was looking to create a scan on the following to find stocks that have crossed over by some % or x amount. The scans always come back empty. I attached the image as well as the code I am using. Appreciate any help!

I am sure you are familiar but this is the link - https://tosindicators.com/indicators/vscore

TI_vscore_upper

#TOS Indicators - Home of the Volatility Box

#VScore-Upper Study

#Full YouTube Tutorial:

#

#**10/6/19 - Feature Added: Ability for Users to Set Custom Standard Deviation in Label Output

declare upper;

input anchorDate = 20240101;

input barsGoBack = 30;

def postAnchorDate = if GetYYYYMMDD() >= anchorDate then 1 else 0;

def yyyyMmDd = getYyyyMmDd();

def periodIndx = if getAggregationPeriod() < AggregationPeriod.HOUR then yyyyMMDD else postAnchorDate;

def isPeriodRolled = compoundValue(1, periodIndx != periodIndx[1], yes);

def volumeSum;

def volumeVwapSum;

def volumeVwap2Sum;

if (isPeriodRolled) {

volumeSum = volume;

volumeVwapSum = volume * vwap;

volumeVwap2Sum = volume * Sqr(vwap);

} else {

volumeSum = compoundValue(1, volumeSum[1] + volume, volume);

volumeVwapSum = compoundValue(1, volumeVwapSum[1] + volume * vwap, volume * vwap);

volumeVwap2Sum = compoundValue(1, volumeVwap2Sum[1] + volume * Sqr(vwap), volume * Sqr(vwap));

}

def price = volumeVwapSum / volumeSum;

def deviation = Sqrt(Max(volumeVwap2Sum / volumeSum - Sqr(price), 0));

def VScore = if (((price - close)

*(-1))/deviation) > 5 or (((price - close)*(-1))/deviation) < -5 then 0 else (((price - close)*(-1))/(deviation));plot zero = (0)*(deviation) + (price);

plot one = (1)*(deviation) + (price);

plot two = (2)*(deviation) + (price);

plot three = (3)*(deviation) + (price);

plot negOne = (-1)*(deviation) + (price);

plot negTwo = (-2)*(deviation) + (price);

plot negThree = (-3)*(deviation) + (price);

zero.setDefaultColor(Color.White);

zero.setLineWeight(3);

one.setDefaultColor(Color.Light_Gray);

negOne.setDefaultColor(Color.Light_Gray);

two.setDefaultColor(Color.Light_Green);

negTwo.setDefaultColor(Color.Light_Red);

three.setDefaultColor(Color.Green);

negThree.setDefaultColor(Color.Red);

def zeroAndOne = if VScore > zero and VScore <= one then 1 else 0;

def oneAndTwo = if VScore > one and VScore <= two then 1 else 0;

def twoAndThree = if VScore > two and VScore <= three then 1 else 0;

def negZeroAndOne = if VScore > negOne and VScore < zero then 1 else 0;

def negOneAndTwo = if VScore > negTwo and VScore <= negOne then 1 else 0;

def negTwoAndThree = if VScore > negThree and VScore <= negTwo then 1 else 0;

def counter = if VScore >= 0 then 1 else if VScore < 0 then -1 else 0;

def trend = Sum(counter, barsGoBack);

def positiveTrend = if trend >= 0 then 1 else 0;

def negativeTrend = if trend < 0 then 1 else 0;

plot BullSignal = if positiveTrend and (VScore <= 0.3 and Vscore[1] >0) and CCI() > -100 then 1 else 0;

plot BearSignal = if negativeTrend and (VScore >= 0.3 and Vscore[1] < 0) and CCI() < 100 then 1 else 0;

BullSignal.SetPaintingStrategy(PaintingStrategy.Boolean_Arrow_UP);

BearSignal.SetPaintingStrategy(PaintingStrategy.Boolean_Arrow_DOWN);

BullSignal.SetLineWeight(3);

BearSignal.SetLineWeight(3);

TI_vscore_lower

#TOS Indicators - Home of the Volatility Box

#Full YouTube Tutorial:

#

#**10/6/19 - Feature Added: Ability for Users to Set Custom Standard Deviation in Label Output

declare lower;

input anchorDate = 20210101;

input barsGoBack = 90;

input showStopLabel = yes;

input devStop = {default One, Two, Three, Zero, NegOne, NegTwo, NegThree, Custom};

input customDev = 0.15;

def chosenDev;

switch(devStop){

case One:

chosenDev = 1;

case Two:

chosenDev = 2;

case Three:

chosenDev = 3;

case Zero:

chosenDev = 0;

case NegOne:

chosenDev = -1;

case NegTwo:

chosenDev = -2;

case NegThree:

chosenDev = -3;

case Custom:

chosenDev = customDev;

}

def postAnchorDate = if GetYYYYMMDD() >= anchorDate then 1 else 0;

def yyyyMmDd = getYyyyMmDd();

def periodIndx = if getAggregationPeriod() < AggregationPeriod.HOUR then yyyyMMDD else postAnchorDate;

def isPeriodRolled = compoundValue(1, periodIndx != periodIndx[1], yes);

def volumeSum;

def volumeVwapSum;

def volumeVwap2Sum;

if (isPeriodRolled) {

volumeSum = volume;

volumeVwapSum = volume * vwap;

volumeVwap2Sum = volume * Sqr(vwap);

} else {

volumeSum = compoundValue(1, volumeSum[1] + volume, volume);

volumeVwapSum = compoundValue(1, volumeVwapSum[1] + volume * vwap, volume * vwap);

volumeVwap2Sum = compoundValue(1, volumeVwap2Sum[1] + volume * Sqr(vwap), volume * Sqr(vwap));

}

def price = volumeVwapSum / volumeSum;

def deviation = Sqrt(Max(volumeVwap2Sum / volumeSum - Sqr(price), 0));

plot VScore = if (((price - close)

*(-1))/deviation) > 5 or (((price - close)*(-1))/deviation) < -5 then 0 else (((price - close)*(-1))/(deviation));plot zero = 0;

zero.setLineWeight(3);

plot one = 1;

one.setDefaultColor(Color.Light_Gray);

plot two = 2;

two.setDefaultColor(Color.light_Green);

plot three = 3;

three.setDefaultColor(Color.Green);

plot negOne = -1;

negOne.setDefaultColor(Color.Light_Gray);

plot negTwo = -2;

negTwo.setDefaultColor(Color.pink);

plot negThree = -3;

negThree.setDefaultColor(Color.light_red);

plot posInt = 0.3;

posInt.setDefaultColor(Color.cyan);

plot negInt = -0.3;

negInt.setDefaultColor(Color.cyan);

def stopPrice = (chosenDev)*(deviation) + (price);

AddLabel(showStopLabel, "Price at ["+chosenDev+"] SD: "+AsPrice(Round(stopPrice,2)),color.white);

def zeroAndOne = if VScore > zero and VScore <= one then 1 else 0;

def oneAndTwo = if VScore > one and VScore <= two then 1 else 0;

def twoAndThree = if VScore > two and VScore <= three then 1 else 0;

def negZeroAndOne = if VScore > negOne and VScore < zero then 1 else 0;

def negOneAndTwo = if VScore > negTwo and VScore <= negOne then 1 else 0;

def negTwoAndThree = if VScore > negThree and VScore <= negTwo then 1 else 0;

def cloud1;

def cloud2;

if Sum(zeroAndOne, barsGoBack) > Sum(OneAndTwo,barsGoBack) and Sum(zeroAndOne, barsGoBack) > Sum(twoAndThree,barsGoBack) and Sum(zeroAndOne, barsGoBack) > Sum(negZeroAndOne,barsGoBack) and Sum(zeroAndOne, barsGoBack) > Sum(negoneAndTwo,barsGoBack) and Sum(zeroAndOne, barsGoBack) > Sum(negtwoAndThree,barsGoBack){

cloud1 = zero;

cloud2 = one;

}

else if Sum(OneAndTwo, barsGoBack) > Sum(zeroAndOne,barsGoBack) and Sum(OneAndTwo, barsGoBack) > Sum(twoAndThree,barsGoBack) and Sum(OneAndTwo, barsGoBack) > Sum(negZeroAndOne,barsGoBack) and Sum(OneAndTwo, barsGoBack) > Sum(negoneAndTwo,barsGoBack) and Sum(OneAndTwo, barsGoBack) > Sum(negtwoAndThree,barsGoBack){

cloud1 = one;

cloud2 = two;

}

else if Sum(twoAndThree, barsGoBack) > Sum(zeroAndOne,barsGoBack) and Sum(twoAndThree, barsGoBack) > Sum(oneAndTwo,barsGoBack) and Sum(twoAndThree, barsGoBack) > Sum(negZeroAndOne,barsGoBack) and Sum(twoAndThree, barsGoBack) > Sum(negoneAndTwo,barsGoBack) and Sum(twoAndThree, barsGoBack) > Sum(negtwoAndThree,barsGoBack){

cloud1 = two;

cloud2 = three;

}

else if Sum(negZeroAndOne, barsGoBack) > Sum(zeroAndOne,barsGoBack) and Sum(negZeroAndOne, barsGoBack) > Sum(oneAndTwo,barsGoBack) and Sum(negZeroAndOne, barsGoBack) > Sum(twoAndThree,barsGoBack) and Sum(negZeroAndOne, barsGoBack) > Sum(negoneAndTwo,barsGoBack) and Sum(negZeroAndOne, barsGoBack) > Sum(negtwoAndThree,barsGoBack){

cloud1 = zero;

cloud2 = negOne;

}

else if Sum(negoneAndTwo, barsGoBack) > Sum(zeroAndOne,barsGoBack) and Sum(negoneAndTwo, barsGoBack) > Sum(oneAndTwo,barsGoBack) and Sum(negoneAndTwo, barsGoBack) > Sum(twoAndThree,barsGoBack) and Sum(negoneAndTwo, barsGoBack) > Sum(negZeroAndOne,barsGoBack) and Sum(negoneAndTwo, barsGoBack) > Sum(negtwoAndThree,barsGoBack){

cloud1 = negOne;

cloud2 = negTwo;

}

else if Sum(negtwoAndThree, barsGoBack) > Sum(zeroAndOne,barsGoBack) and Sum(negtwoAndThree, barsGoBack) > Sum(oneAndTwo,barsGoBack) and Sum(negtwoAndThree, barsGoBack) > Sum(twoAndThree,barsGoBack) and Sum(negtwoAndThree, barsGoBack) > Sum(negZeroAndOne,barsGoBack) and Sum(negtwoAndThree, barsGoBack) > Sum(negOneAndTwo,barsGoBack){

cloud1 = negTwo;

cloud2 = negThree;

}

else {

cloud1 = Double.nan;

cloud2 = Double.nan;

}

AddCloud(cloud1, cloud2, color.light_red, color.light_green);

plot BullSignal = if (cloud1 == one or cloud2 == one or cloud1 == two or cloud2 == two or cloud1 == three or cloud2 ==three) and (VScore <= 0.3 and Vscore[1] >0) and CCI() > -100 then -2 else Double.nan;

plot BearSignal = if (cloud1 == negOne or cloud2 == negOne or cloud1 == negTwo or cloud2 == negTwo or cloud1 == negThree or cloud2 ==negThree) and (VScore >= 0.3 and Vscore[1] < 0) and CCI() < 100 then 2 else Double.nan;

BullSignal.SetPaintingStrategy(PaintingStrategy.Arrow_UP);

BearSignal.SetPaintingStrategy(PaintingStrategy.Arrow_DOWN);

BullSignal.SetLineWeight(3);

BearSignal.SetLineWeight(3);

input soundAlertsOn = no;

Alert((cloud1 == one or cloud2 == one or cloud1 == two or cloud2 == two or cloud1 == three or cloud2 == three) and (VScore <= 0 and VScore[1] > 0) and (SoundAlertsOn), "Bullish VScore Entry", Alert.BAR);

Alert((cloud1 == negOne or cloud2 == negone or cloud1 == negtwo or cloud2 == negtwo or cloud1 == negthree or cloud2 == negthree) and (VScore >= 0 and VScore[1] < 0)and (SoundAlertsOn), "Bearish VScore Entry", Alert.BAR);