Zero digits after decimal

GPM

New member
I am new to this forum and also new to Think Or Swim. I did a search and could not find answers to my questions so trying a new post. Hope someone can help me.

1) In my watchlist, I am using there pre-built %Change column. It shows me percentage change in price since previous trading days' close. But I cannot find the prebuilt column names for "previous day close price" and "dollar change" since yesterday's close.

2) I want to create custom columns for "dollar change" and "%Change" and want to show rounded up values.. How do I round up so that my custom columns show zero digits after the decimal. Thus for example, if I have a number 123.45 I want to show it as 123, and if I have 12345.67 I want to show it as 12346. If zero digits is not possible, I can live with 123.0 (which seems to work when I say round (num, 0)

3) Same thing with PE ratio. Is there a way to refer to the pre-built watch list column called Price/Earnings Ratio when I am writing a custom think Script column?


thank you.
 

GPM

New member
I see. ok, thanks.

I am hoping someone else has figured out a solution for displaying this. Perhaps make it a text or something like that, and then substring it till the decimal point or some such trick.
 

rad14733

Well-known member
VIP
I see. ok, thanks.

I am hoping someone else has figured out a solution for displaying this. Perhaps make it a text or something like that, and then substring it till the decimal point or some such trick.
Unfortunately, Thinkorswim does not have text manipulation functions... It is designed for working with numbers...
 

GPM

New member
Ok, here are the answers I found using my own research. Posting it here just in case anyone else can find it useful in the future.

For 1) The column names are "Close" and "Net Change"

For 2) Many many web sites have suggested ToS has a limitation. It treats everything as a double, and there is no way to display values without a trailing decimal point (even if you round it to a precise integer it will still show as 123.0)

For 3) I still have not figured out how to refer to built in columns like Net Change, PE etc in my own ToS code. For a program so rich in functionality, I have to give Kudos the programmers. However, I feel that the reference manual for the program needs to be beefed up a lot. It would make this offering much stronger than it is.
 

Rojo Grande

Member
VIP
Hello,
Is there a line of code that can be added to an indicator to drop the numbers to the right of the decimal point? Keep it a whole number, i.e. 123545 and not 12345.678.
Thank you.
 

rad14733

Well-known member
VIP
Hello,
Is there a line of code that can be added to an indicator to drop the numbers to the right of the decimal point? Keep it a whole number, i.e. 123545 and not 12345.678.
Thank you.
No, that would require text string manipulation functions that TOS does not have, as mentioned previously... If it did have them you could display as text and use substr() type of function...
 

Rojo Grande

Member
VIP
No, that would require text string manipulation functions that TOS does not have, as mentioned previously... If it did have them you could display as text and use substr() type of function...
Thank you all once again. Since I was using this in a label, I added this to the start "AddLabel(yes, "RSI: " + Round(RSI, 0)" and it worked and gave me a whole number.(y)
 

Ian_Tai

New member
I like working with Monkey Bars to establish potential entries. I have added labels to the built-in script, but I cannot get the VPOC to plot to four decimals for Forex. It just prints 1 digit with no decimals. I wonder if someone can help me.

Here's what I added to the existing Monkey Bars Script:

Code:
AddLabel(yes,"MBar:" + MBar, Color.GREEN);
AddLabel(yes,"PGHigh:" + hPG, Color.MAGENTA);
AddLabel(yes,"PGLow:" + lPG, Color.MAGENTA);
AddLabel(yes,"PHigh:" + hProfile, Color.LIGHT_GRAY);
AddLabel(yes,"PLow:" + lProfile, Color.LIGHT_GRAY);
AddLabel(yes,"VPOC:" + showVolumePoc, Color.Blue);

Thank you so much.
 

rad14733

Well-known member
VIP
@Ian_Tai We would need to see the code that produces the numbers you are trying to display in your labels... By default there should be decimals so perhaps they are being manipulated elsewhere... Can you please post the entre script...???
 

TonXas

New member
VIP
Code:
# ATR Daily Range
# tomsk
# 12.17.2019

# V1.0 - 12.16.2019 - tomsk   - Initial release ATR Daily Range
# V1.1 - 12.16.2019 - tomsk   - Added performance relative to ATR range
# V1.2 - 12.17.2019 - tomsk   - Added plot lines for ATR High/Low on the chart

# Displays ATR High/Low thresholds relative to daily open

input length = 14;
input averageType = AverageType.WILDERS;

def o = open(period = AggregationPeriod.DAY);
def h = high(period = AggregationPeriod.DAY);
def l = low(period = AggregationPeriod.DAY);
def c = close(period = AggregationPeriod.DAY);
def R = (c - l) / (h - l);
def DTR = h - l;

def ATRD = MovingAverage(averageType, TrueRange(h, c, l), length);
def ATRH = o + ATRD;
def ATRL = o - ATRD;
def DTRpct = Round((DTR / ATRD), 0);
AddLabel(close > 0, Concat( "ATR: ", round(ATRD) * 10000), Color.GREEN);
#AddLabel(1, "ATR Daily High/Low Level = [ " + Round(ATRH,2) + " / " + Round(ATRL,2) + " ]", Color.PINK);
#AddLabel(1, "["+AsPercent(r)+"]", Color.green);

def LBN = if IsNaN(close[-1]) and !IsNaN(close) then BarNumber() else Double.NaN;
plot ATR_High = if BarNumber() >= HighestAll(LBN)
                then HighestAll(if IsNaN(close[-1]) then ATRH else Double.NaN)
                else Double.NaN;
ATR_High.SetLineWeight(2);
ATR_High.SetDefaultColor(Color.GREEN);

plot ATR_Low = if BarNumber() >= HighestAll(LBN)
               then HighestAll(if IsNaN(close[-1]) then ATRL else Double.NaN) else Double.NaN;
def mid = (h + l) / 2;
input showOnlyLastPeriod = yes;
plot ATR_H;
plot ATR_L;
if showOnlyLastPeriod and !IsNaN(close(period = AggregationPeriod.DAY)[-1]) {
    ATR_H = Double.NaN;
    ATR_L = Double.NaN;
} else {
    ATR_L = mid - (ATRD / 2);
    ATR_H = mid + (ATRD / 2);
}
ATR_H.SetDefaultColor(Color.GREEN);
ATR_L.SetDefaultColor(Color.GREEN);
ATR_Low.SetLineWeight(2);
ATR_Low.SetDefaultColor(Color.GREEN);
# End ATR Daily Range
I currently trade futures and I'm using ATR. is there any way to round .0123 to .012?

Whenever I use the Round function it rounds to .01
 

kmg526

Member
VIP
Hi All, I made a label for ATR and was wanting to round that number to the hundreds...ie ATR = 0.0248 change to ATR= 0.03 or 0.02. Any help would be appreciated.

Code:
declare upper;

input length = 14;
input averageType = AverageType.WILDERS;

def ATR = MovingAverage(averageType, TrueRange(high, close, low), length);

#Label
AddLabel(yes, ("ATR = "+(ATR)), Color.YELLOW);
 

rad14733

Well-known member
VIP
@kmg526 Here is the code I use for my ATR Chart Label...

Ruby:
# ATR_Label
input atrLength = 13;
input atrAverageType = AverageType.WILDERS;
def atr = Round(MovingAverage(atrAverageType, TrueRange(high, close, low), atrLength), 2);
AddLabel(yes, "ATR: " + Round(atr, 2), Color.LIGHT_GRAY);
# END ATR_Label
 

Similar threads

Top