From 7868228e77fa51860a160cf5f4cabbd328a37a81 Mon Sep 17 00:00:00 2001 From: sbhyde-superstar <51730327+sbhyde-superstar@users.noreply.github.com> Date: Wed, 15 Jul 2026 20:07:22 -0500 Subject: [PATCH 01/11] Update udl-list.json Please consider this UDL for inclusion in your base product --- udl-list.json | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/udl-list.json b/udl-list.json index c37223d9..282bbaa6 100644 --- a/udl-list.json +++ b/udl-list.json @@ -4007,6 +4007,16 @@ "homepage": "https://github.com/tgschultz/Npp-ziglang-UDL", "autoCompletion": "Zig", "autoCompletionAuthor": "generate_ac.py" + }, + { + "id-name": "thinkScript", + "display-name": "thinkScript", + "version": "2026 Jul 15", + "repository": "", + "description": "thinkScript UDL in support of ThinkOrSwim", + "author": "SB Hyde ", + "autoCompletion": "thinkScript", + "autoCompletionAuthor": "generate_ac.py" } ] } From eff82cd86f20247bf4f8dfb3c0ea4bca0a9540e1 Mon Sep 17 00:00:00 2001 From: sbhyde-superstar <51730327+sbhyde-superstar@users.noreply.github.com> Date: Sun, 19 Jul 2026 15:07:00 -0500 Subject: [PATCH 02/11] Add files via upload --- UDLs/thinkScript.xml | 65 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 UDLs/thinkScript.xml diff --git a/UDLs/thinkScript.xml b/UDLs/thinkScript.xml new file mode 100644 index 00000000..ca63aac2 --- /dev/null +++ b/UDLs/thinkScript.xml @@ -0,0 +1,65 @@ + + + + + + + + + 00# 01 02 03 04 + + + + + + + + + - * / % = == != <> < > <= >= && ! . , ( ) ; + equals "is equal to" "is not equal to" "is less than" "is greater than" "is less than or equal to" "is greater than or equal to" between crosses "crosses above" "crosses below" "is true" "is false" and or + { + + } + + + + + + + hide_on_daily hide_on_intraday lower on_volume once_per_bar real_size upper weak_volume_dependency zerobase + ask bid close high hl2 hlc3 imp_volatility low ohlc4 open open_interest tick_count volume vwap AddChartBubble AddCloud AddLabel AddVerticalLine AssignBackgroundColor AssignNormGradientColor AssignPriceColor AssignValueColor Color CreateColor DefineColor DefineGlobalColor EnableApproximation GetColor GlobalColor Hide HideBubble HidePricePlot HideTitle SetChartType SetDefaultColor SetHiding SetLineWeight SetPaintingStrategy SetStyle TakeValueColor Delta Gamma GetATMOption GetDaysToExpiration GetNextExpirationOption GetNextITMOption GetNextOTMOption GetStrike GetUnderlyingSymbol IsEuropean IsOptionable IsPut OptionPrice Rho Theta Vega AccumDist Average BodyHeight EMA2 ExpAverage FastKCustom GetMarketMakerMove GetMaxValueOffset GetMinValueOffset Highest HighestAll HighestWeighted IsAscending IsDescending IsDoji IsLongBlack IsLongWhite Lowest LowestAll LowestWeighted Median MidBodyVal MoneyFlow MovingAverage TrueRange Ulcer WildersAverage WMA AbsValue ACos ASin ATan Ceil Cos Crosses Exp Floor IsInfinite IsNaN Lg Log Max Min Power Random Round RoundDown RoundUp Sign Sin Sqr Sqrt Sum Tan TotalSum Correlation Covariance Inertia InertiaAll LinDev StDev StDevAll StErr StErrAll CountTradingDays DaysFromDate DaysTillDate GetDay GetDayOfMonth GetDayOfWeek GetLastDay GetLastMonth GetLastWeek GetLastYear GetMonth GetTime GetWeek GetYear GetYYYYMMDD RegularTradingEnd RegularTradingStart SecondsFromTime SecondsTillTime GetActualEarnings GetDividend GetEstimatedEarnings GetEventOffset GetSplitDenominator GetSplitNumerator HasConferenceCall HasEarnings GetAggregatedPL GetAveragePrice GetNetLiq GetOpenPL GetPortfolioAggregatedPL GetTimeWeightedReturn GetQuantity GetTotalCash DataProfile GetHighest GetHighestValueArea GetLowest GetLowestValueArea GetPointOfControl MonkeyBars Show TimeProfile VolumeProfile BookValuePerShare CurrentRatio DividendPayout DividendsPerShareTTM EarningsPerShareTTM FinancialLeverage FixedChargeCoverageRatio FreeCashFlowPerShare GrossProfitMargin InterestRate InventoryTurnover LongTermDebtToCapital NetProfitMargin OperatingProfitMargin QuickRatio ReturnOnAssets ReturnOnEquity SalesPerShare TaxRate TotalAssetTurnover AddOrder Alert AsDollars AsPercent AsPrice Assert AsText BarNumber Between CompoundValue Concat EntryPrice First FPL Fundamental GetAggregationPeriod GetInterestRate GetPriceType GetSymbol GetSymbolPart GetValue GetYield HasContractChangeEvent TickSize TickValue + AggregationPeriod MIN TWO_MIN THREE_MIN FOUR_MIN FIVE_MIN TEN_MIN FIFTEEN_MIN TWENTY_MIN THIRTY_MIN HOUR TWO_HOURS FOUR_HOURS DAY TWO_DAYS THREE_DAYS FOUR_DAYS WEEK MONTH OPT_EXP QUARTER YEAR Alert BAR ONCE TICK AverageType EXPONENTIAL HULL SIMPLE WEIGHTED WILDERS ChartType BAR CANDLE CANDLE_TREND HEIKIN_ASHI EQUIVOLUME LINE AREA Color BLACK BLUE CURRENT CYAN DARK_GRAY DARK_GREEN DARK_ORANGE DARK_RED DOWNTICK GRAY GREEN LIGHT_GRAY LIGHT_GREEN LIGHT_ORANGE LIGHT_RED LIME MAGENTA ORANGE PINK PLUM RED UPTICK VIOLET WHITE YELLOW CrossingDirection ABOVE BELOW ANY Curve FIRM LONG_DASH MEDIUM_DASH SHORT_DASH POINTS Double E NaN NEGATIVE_INFINITY Pi POSITIVE_INFINITY EarningTime ANY BEFORE_MARKET AFTER_MARKET Events CONFERENCE_CALL DIVIDEND EARNINGS SPLIT FiscalPeriod QUARTER YEAR FontSize SMALL MEDIUM LARGE LARGER VERY_LARGE X_LARGE FundamentalType HIGH LOW CLOSE OPEN HL2 HLC3 OHLC4 VWAP VOLUME OPEN_INTEREST IMP_VOLATILITY TICK_COUNT Location TOP_LEFT TOP_RIGHT BOTTOM_LEFT BOTTOM_RIGHT MonkeyVolumeShowStyle ALL LAST NONE NumberFormat DOLLAR THREE_DECIMAL_PLACES TWO_DECIMAL_PLACES OptionClass CALL PUT OrderType BUY_AUTO BUY_TO_CLOSE BUY_TO_OPEN SELL_AUTO SELL_TO_CLOSE SELL_TO_OPEN PaintingStrategy ARROW_DOWN ARROW_UP BOOLEAN_ARROW_DOWN BOOLEAN_ARROW_UP BOOLEAN_POINTS BOOLEAN_WEDGE_DOWN BOOLEAN_WEDGE_UP DASHES HISTOGRAM HORIZONTAL LINE LINE_VS_POINTS LINE_VS_SQUARES LINE_VS_TRIANGLES POINTS SQUARED_HISTOGRAM SQUARES TRIANGLES VALUES_ABOVE VALUES_BELOW PricePerRow AUTOMATIC TICKSIZE PriceType ASK BID LAST MARK ProfitLossMode COST_BASIS EXECUTION_PRICE Sound NoSound Bell Ding Ring Chimes + Any boolean constant CustomColor double enum float IDataHolder input int integer_price String Symbol @Date + above ago and bar bars below between case crosses declare def default do else equal equals false fold from greater if is less no not or plot profile rec reference script switch than then to true while with within yes + + + + 00" 01\ 02" 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From cb8908e573d706cdd7d6a28f13823a388cffc947 Mon Sep 17 00:00:00 2001 From: sbhyde-superstar <51730327+sbhyde-superstar@users.noreply.github.com> Date: Sun, 19 Jul 2026 15:07:36 -0500 Subject: [PATCH 03/11] Add files via upload --- autoCompletion/thinkscript.xml | 596 +++++++++++++++++++++++++++++++++ 1 file changed, 596 insertions(+) create mode 100644 autoCompletion/thinkscript.xml diff --git a/autoCompletion/thinkscript.xml b/autoCompletion/thinkscript.xml new file mode 100644 index 00000000..a748d9bd --- /dev/null +++ b/autoCompletion/thinkscript.xml @@ -0,0 +1,596 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file From c0e0dd0c9cafc8783efd2e3030b8535ff2113313 Mon Sep 17 00:00:00 2001 From: sbhyde-superstar <51730327+sbhyde-superstar@users.noreply.github.com> Date: Sun, 19 Jul 2026 15:08:09 -0500 Subject: [PATCH 04/11] Add files via upload --- functionList/thinkScript.xml | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 functionList/thinkScript.xml diff --git a/functionList/thinkScript.xml b/functionList/thinkScript.xml new file mode 100644 index 00000000..b6ce5327 --- /dev/null +++ b/functionList/thinkScript.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + \ No newline at end of file From 2db9932cc6894d5e632086dd23e46ed575975677 Mon Sep 17 00:00:00 2001 From: sbhyde-superstar <51730327+sbhyde-superstar@users.noreply.github.com> Date: Sun, 19 Jul 2026 15:09:30 -0500 Subject: [PATCH 05/11] Add files via upload --- UDL-samples/thinkScript_Sample.ts | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 UDL-samples/thinkScript_Sample.ts diff --git a/UDL-samples/thinkScript_Sample.ts b/UDL-samples/thinkScript_Sample.ts new file mode 100644 index 00000000..da6199c0 --- /dev/null +++ b/UDL-samples/thinkScript_Sample.ts @@ -0,0 +1,9 @@ + +# MTF Moving Average + +input AvgType = AverageType.EXPONENTIAL; +input Length = 8; +input priceclose = close; + +plot AVG = MovingAverage(AvgType); +AVG.setdefaultcolor(color.yellow); \ No newline at end of file From 31a733720e86f8fb781e09c86831a2c6eec46404 Mon Sep 17 00:00:00 2001 From: sbhyde-superstar <51730327+sbhyde-superstar@users.noreply.github.com> Date: Sun, 19 Jul 2026 15:11:19 -0500 Subject: [PATCH 06/11] Update udl-list.json Per instructions from PeterCJ --- udl-list.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/udl-list.json b/udl-list.json index 282bbaa6..fba3b8a9 100644 --- a/udl-list.json +++ b/udl-list.json @@ -4011,7 +4011,7 @@ { "id-name": "thinkScript", "display-name": "thinkScript", - "version": "2026 Jul 15", + "version": "2026 Jul 19", "repository": "", "description": "thinkScript UDL in support of ThinkOrSwim", "author": "SB Hyde ", From 8bcd7d781b532a060b5a7ec28e91d20c7937fcd7 Mon Sep 17 00:00:00 2001 From: sbhyde-superstar <51730327+sbhyde-superstar@users.noreply.github.com> Date: Sun, 19 Jul 2026 21:15:18 -0500 Subject: [PATCH 07/11] Delete UDLs/thinkScript.xml Rename and resubmit --- UDLs/thinkScript.xml | 65 -------------------------------------------- 1 file changed, 65 deletions(-) delete mode 100644 UDLs/thinkScript.xml diff --git a/UDLs/thinkScript.xml b/UDLs/thinkScript.xml deleted file mode 100644 index ca63aac2..00000000 --- a/UDLs/thinkScript.xml +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - - - - 00# 01 02 03 04 - - - - - - - - + - * / % = == != <> < > <= >= && ! . , ( ) ; - equals "is equal to" "is not equal to" "is less than" "is greater than" "is less than or equal to" "is greater than or equal to" between crosses "crosses above" "crosses below" "is true" "is false" and or - { - - } - - - - - - - hide_on_daily hide_on_intraday lower on_volume once_per_bar real_size upper weak_volume_dependency zerobase - ask bid close high hl2 hlc3 imp_volatility low ohlc4 open open_interest tick_count volume vwap AddChartBubble AddCloud AddLabel AddVerticalLine AssignBackgroundColor AssignNormGradientColor AssignPriceColor AssignValueColor Color CreateColor DefineColor DefineGlobalColor EnableApproximation GetColor GlobalColor Hide HideBubble HidePricePlot HideTitle SetChartType SetDefaultColor SetHiding SetLineWeight SetPaintingStrategy SetStyle TakeValueColor Delta Gamma GetATMOption GetDaysToExpiration GetNextExpirationOption GetNextITMOption GetNextOTMOption GetStrike GetUnderlyingSymbol IsEuropean IsOptionable IsPut OptionPrice Rho Theta Vega AccumDist Average BodyHeight EMA2 ExpAverage FastKCustom GetMarketMakerMove GetMaxValueOffset GetMinValueOffset Highest HighestAll HighestWeighted IsAscending IsDescending IsDoji IsLongBlack IsLongWhite Lowest LowestAll LowestWeighted Median MidBodyVal MoneyFlow MovingAverage TrueRange Ulcer WildersAverage WMA AbsValue ACos ASin ATan Ceil Cos Crosses Exp Floor IsInfinite IsNaN Lg Log Max Min Power Random Round RoundDown RoundUp Sign Sin Sqr Sqrt Sum Tan TotalSum Correlation Covariance Inertia InertiaAll LinDev StDev StDevAll StErr StErrAll CountTradingDays DaysFromDate DaysTillDate GetDay GetDayOfMonth GetDayOfWeek GetLastDay GetLastMonth GetLastWeek GetLastYear GetMonth GetTime GetWeek GetYear GetYYYYMMDD RegularTradingEnd RegularTradingStart SecondsFromTime SecondsTillTime GetActualEarnings GetDividend GetEstimatedEarnings GetEventOffset GetSplitDenominator GetSplitNumerator HasConferenceCall HasEarnings GetAggregatedPL GetAveragePrice GetNetLiq GetOpenPL GetPortfolioAggregatedPL GetTimeWeightedReturn GetQuantity GetTotalCash DataProfile GetHighest GetHighestValueArea GetLowest GetLowestValueArea GetPointOfControl MonkeyBars Show TimeProfile VolumeProfile BookValuePerShare CurrentRatio DividendPayout DividendsPerShareTTM EarningsPerShareTTM FinancialLeverage FixedChargeCoverageRatio FreeCashFlowPerShare GrossProfitMargin InterestRate InventoryTurnover LongTermDebtToCapital NetProfitMargin OperatingProfitMargin QuickRatio ReturnOnAssets ReturnOnEquity SalesPerShare TaxRate TotalAssetTurnover AddOrder Alert AsDollars AsPercent AsPrice Assert AsText BarNumber Between CompoundValue Concat EntryPrice First FPL Fundamental GetAggregationPeriod GetInterestRate GetPriceType GetSymbol GetSymbolPart GetValue GetYield HasContractChangeEvent TickSize TickValue - AggregationPeriod MIN TWO_MIN THREE_MIN FOUR_MIN FIVE_MIN TEN_MIN FIFTEEN_MIN TWENTY_MIN THIRTY_MIN HOUR TWO_HOURS FOUR_HOURS DAY TWO_DAYS THREE_DAYS FOUR_DAYS WEEK MONTH OPT_EXP QUARTER YEAR Alert BAR ONCE TICK AverageType EXPONENTIAL HULL SIMPLE WEIGHTED WILDERS ChartType BAR CANDLE CANDLE_TREND HEIKIN_ASHI EQUIVOLUME LINE AREA Color BLACK BLUE CURRENT CYAN DARK_GRAY DARK_GREEN DARK_ORANGE DARK_RED DOWNTICK GRAY GREEN LIGHT_GRAY LIGHT_GREEN LIGHT_ORANGE LIGHT_RED LIME MAGENTA ORANGE PINK PLUM RED UPTICK VIOLET WHITE YELLOW CrossingDirection ABOVE BELOW ANY Curve FIRM LONG_DASH MEDIUM_DASH SHORT_DASH POINTS Double E NaN NEGATIVE_INFINITY Pi POSITIVE_INFINITY EarningTime ANY BEFORE_MARKET AFTER_MARKET Events CONFERENCE_CALL DIVIDEND EARNINGS SPLIT FiscalPeriod QUARTER YEAR FontSize SMALL MEDIUM LARGE LARGER VERY_LARGE X_LARGE FundamentalType HIGH LOW CLOSE OPEN HL2 HLC3 OHLC4 VWAP VOLUME OPEN_INTEREST IMP_VOLATILITY TICK_COUNT Location TOP_LEFT TOP_RIGHT BOTTOM_LEFT BOTTOM_RIGHT MonkeyVolumeShowStyle ALL LAST NONE NumberFormat DOLLAR THREE_DECIMAL_PLACES TWO_DECIMAL_PLACES OptionClass CALL PUT OrderType BUY_AUTO BUY_TO_CLOSE BUY_TO_OPEN SELL_AUTO SELL_TO_CLOSE SELL_TO_OPEN PaintingStrategy ARROW_DOWN ARROW_UP BOOLEAN_ARROW_DOWN BOOLEAN_ARROW_UP BOOLEAN_POINTS BOOLEAN_WEDGE_DOWN BOOLEAN_WEDGE_UP DASHES HISTOGRAM HORIZONTAL LINE LINE_VS_POINTS LINE_VS_SQUARES LINE_VS_TRIANGLES POINTS SQUARED_HISTOGRAM SQUARES TRIANGLES VALUES_ABOVE VALUES_BELOW PricePerRow AUTOMATIC TICKSIZE PriceType ASK BID LAST MARK ProfitLossMode COST_BASIS EXECUTION_PRICE Sound NoSound Bell Ding Ring Chimes - Any boolean constant CustomColor double enum float IDataHolder input int integer_price String Symbol @Date - above ago and bar bars below between case crosses declare def default do else equal equals false fold from greater if is less no not or plot profile rec reference script switch than then to true while with within yes - - - - 00" 01\ 02" 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - From bfad7e1c26171d796287d828118cbd2c690a1ff9 Mon Sep 17 00:00:00 2001 From: sbhyde-superstar <51730327+sbhyde-superstar@users.noreply.github.com> Date: Sun, 19 Jul 2026 21:16:17 -0500 Subject: [PATCH 08/11] Add files via upload --- UDLs/thinkScript_by_sbh.xml | 65 +++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 UDLs/thinkScript_by_sbh.xml diff --git a/UDLs/thinkScript_by_sbh.xml b/UDLs/thinkScript_by_sbh.xml new file mode 100644 index 00000000..ca63aac2 --- /dev/null +++ b/UDLs/thinkScript_by_sbh.xml @@ -0,0 +1,65 @@ + + + + + + + + + 00# 01 02 03 04 + + + + + + + + + - * / % = == != <> < > <= >= && ! . , ( ) ; + equals "is equal to" "is not equal to" "is less than" "is greater than" "is less than or equal to" "is greater than or equal to" between crosses "crosses above" "crosses below" "is true" "is false" and or + { + + } + + + + + + + hide_on_daily hide_on_intraday lower on_volume once_per_bar real_size upper weak_volume_dependency zerobase + ask bid close high hl2 hlc3 imp_volatility low ohlc4 open open_interest tick_count volume vwap AddChartBubble AddCloud AddLabel AddVerticalLine AssignBackgroundColor AssignNormGradientColor AssignPriceColor AssignValueColor Color CreateColor DefineColor DefineGlobalColor EnableApproximation GetColor GlobalColor Hide HideBubble HidePricePlot HideTitle SetChartType SetDefaultColor SetHiding SetLineWeight SetPaintingStrategy SetStyle TakeValueColor Delta Gamma GetATMOption GetDaysToExpiration GetNextExpirationOption GetNextITMOption GetNextOTMOption GetStrike GetUnderlyingSymbol IsEuropean IsOptionable IsPut OptionPrice Rho Theta Vega AccumDist Average BodyHeight EMA2 ExpAverage FastKCustom GetMarketMakerMove GetMaxValueOffset GetMinValueOffset Highest HighestAll HighestWeighted IsAscending IsDescending IsDoji IsLongBlack IsLongWhite Lowest LowestAll LowestWeighted Median MidBodyVal MoneyFlow MovingAverage TrueRange Ulcer WildersAverage WMA AbsValue ACos ASin ATan Ceil Cos Crosses Exp Floor IsInfinite IsNaN Lg Log Max Min Power Random Round RoundDown RoundUp Sign Sin Sqr Sqrt Sum Tan TotalSum Correlation Covariance Inertia InertiaAll LinDev StDev StDevAll StErr StErrAll CountTradingDays DaysFromDate DaysTillDate GetDay GetDayOfMonth GetDayOfWeek GetLastDay GetLastMonth GetLastWeek GetLastYear GetMonth GetTime GetWeek GetYear GetYYYYMMDD RegularTradingEnd RegularTradingStart SecondsFromTime SecondsTillTime GetActualEarnings GetDividend GetEstimatedEarnings GetEventOffset GetSplitDenominator GetSplitNumerator HasConferenceCall HasEarnings GetAggregatedPL GetAveragePrice GetNetLiq GetOpenPL GetPortfolioAggregatedPL GetTimeWeightedReturn GetQuantity GetTotalCash DataProfile GetHighest GetHighestValueArea GetLowest GetLowestValueArea GetPointOfControl MonkeyBars Show TimeProfile VolumeProfile BookValuePerShare CurrentRatio DividendPayout DividendsPerShareTTM EarningsPerShareTTM FinancialLeverage FixedChargeCoverageRatio FreeCashFlowPerShare GrossProfitMargin InterestRate InventoryTurnover LongTermDebtToCapital NetProfitMargin OperatingProfitMargin QuickRatio ReturnOnAssets ReturnOnEquity SalesPerShare TaxRate TotalAssetTurnover AddOrder Alert AsDollars AsPercent AsPrice Assert AsText BarNumber Between CompoundValue Concat EntryPrice First FPL Fundamental GetAggregationPeriod GetInterestRate GetPriceType GetSymbol GetSymbolPart GetValue GetYield HasContractChangeEvent TickSize TickValue + AggregationPeriod MIN TWO_MIN THREE_MIN FOUR_MIN FIVE_MIN TEN_MIN FIFTEEN_MIN TWENTY_MIN THIRTY_MIN HOUR TWO_HOURS FOUR_HOURS DAY TWO_DAYS THREE_DAYS FOUR_DAYS WEEK MONTH OPT_EXP QUARTER YEAR Alert BAR ONCE TICK AverageType EXPONENTIAL HULL SIMPLE WEIGHTED WILDERS ChartType BAR CANDLE CANDLE_TREND HEIKIN_ASHI EQUIVOLUME LINE AREA Color BLACK BLUE CURRENT CYAN DARK_GRAY DARK_GREEN DARK_ORANGE DARK_RED DOWNTICK GRAY GREEN LIGHT_GRAY LIGHT_GREEN LIGHT_ORANGE LIGHT_RED LIME MAGENTA ORANGE PINK PLUM RED UPTICK VIOLET WHITE YELLOW CrossingDirection ABOVE BELOW ANY Curve FIRM LONG_DASH MEDIUM_DASH SHORT_DASH POINTS Double E NaN NEGATIVE_INFINITY Pi POSITIVE_INFINITY EarningTime ANY BEFORE_MARKET AFTER_MARKET Events CONFERENCE_CALL DIVIDEND EARNINGS SPLIT FiscalPeriod QUARTER YEAR FontSize SMALL MEDIUM LARGE LARGER VERY_LARGE X_LARGE FundamentalType HIGH LOW CLOSE OPEN HL2 HLC3 OHLC4 VWAP VOLUME OPEN_INTEREST IMP_VOLATILITY TICK_COUNT Location TOP_LEFT TOP_RIGHT BOTTOM_LEFT BOTTOM_RIGHT MonkeyVolumeShowStyle ALL LAST NONE NumberFormat DOLLAR THREE_DECIMAL_PLACES TWO_DECIMAL_PLACES OptionClass CALL PUT OrderType BUY_AUTO BUY_TO_CLOSE BUY_TO_OPEN SELL_AUTO SELL_TO_CLOSE SELL_TO_OPEN PaintingStrategy ARROW_DOWN ARROW_UP BOOLEAN_ARROW_DOWN BOOLEAN_ARROW_UP BOOLEAN_POINTS BOOLEAN_WEDGE_DOWN BOOLEAN_WEDGE_UP DASHES HISTOGRAM HORIZONTAL LINE LINE_VS_POINTS LINE_VS_SQUARES LINE_VS_TRIANGLES POINTS SQUARED_HISTOGRAM SQUARES TRIANGLES VALUES_ABOVE VALUES_BELOW PricePerRow AUTOMATIC TICKSIZE PriceType ASK BID LAST MARK ProfitLossMode COST_BASIS EXECUTION_PRICE Sound NoSound Bell Ding Ring Chimes + Any boolean constant CustomColor double enum float IDataHolder input int integer_price String Symbol @Date + above ago and bar bars below between case crosses declare def default do else equal equals false fold from greater if is less no not or plot profile rec reference script switch than then to true while with within yes + + + + 00" 01\ 02" 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 4296ac718d99c785ab93112ab876845feda866f3 Mon Sep 17 00:00:00 2001 From: sbhyde-superstar <51730327+sbhyde-superstar@users.noreply.github.com> Date: Sun, 19 Jul 2026 21:19:42 -0500 Subject: [PATCH 09/11] Update udl-list.json rename per instruction --- udl-list.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/udl-list.json b/udl-list.json index fba3b8a9..10a8e4b9 100644 --- a/udl-list.json +++ b/udl-list.json @@ -4009,9 +4009,11 @@ "autoCompletionAuthor": "generate_ac.py" }, { - "id-name": "thinkScript", + "id-name": "thinkScript_by_sbh", "display-name": "thinkScript", "version": "2026 Jul 19", + "functionList": "thinkScript", + "sample": "thinkScript-Sample.ts", "repository": "", "description": "thinkScript UDL in support of ThinkOrSwim", "author": "SB Hyde ", From 7ed34f25d4159a995df9687ea4a3c5e282c14590 Mon Sep 17 00:00:00 2001 From: PeterCJ Date: Mon, 20 Jul 2026 10:40:51 -0700 Subject: [PATCH 10/11] Add fucntionList test file for thinkScript submission also updated the sample file to include AI-generated function so FunctionList test will show something --- .../thinkScript_by_sbh/unitTest.expected.result | 1 + UDL-samples/thinkScript_Sample.ts | 14 ++++++++++++-- udl-list.json | 2 +- 3 files changed, 14 insertions(+), 3 deletions(-) create mode 100644 Test/functionList/thinkScript_by_sbh/unitTest.expected.result diff --git a/Test/functionList/thinkScript_by_sbh/unitTest.expected.result b/Test/functionList/thinkScript_by_sbh/unitTest.expected.result new file mode 100644 index 00000000..9e38fdcb --- /dev/null +++ b/Test/functionList/thinkScript_by_sbh/unitTest.expected.result @@ -0,0 +1 @@ +{"leaves":["script CalcMomentum"],"root":"thinkScript_Sample.ts"} \ No newline at end of file diff --git a/UDL-samples/thinkScript_Sample.ts b/UDL-samples/thinkScript_Sample.ts index da6199c0..7ef255ed 100644 --- a/UDL-samples/thinkScript_Sample.ts +++ b/UDL-samples/thinkScript_Sample.ts @@ -1,4 +1,3 @@ - # MTF Moving Average input AvgType = AverageType.EXPONENTIAL; @@ -6,4 +5,15 @@ input Length = 8; input priceclose = close; plot AVG = MovingAverage(AvgType); -AVG.setdefaultcolor(color.yellow); \ No newline at end of file +AVG.setdefaultcolor(color.yellow); + +script CalcMomentum { + input priceData = close; + input lookbackPeriod = 14; + + # Calculate the change from X bars ago + def change = priceData - priceData[lookbackPeriod]; + + # Return the final calculation via a plot statement + plot Result = change; +} diff --git a/udl-list.json b/udl-list.json index 10a8e4b9..8bc7c0af 100644 --- a/udl-list.json +++ b/udl-list.json @@ -4013,7 +4013,7 @@ "display-name": "thinkScript", "version": "2026 Jul 19", "functionList": "thinkScript", - "sample": "thinkScript-Sample.ts", + "sample": "thinkScript_Sample.ts", "repository": "", "description": "thinkScript UDL in support of ThinkOrSwim", "author": "SB Hyde ", From 9f6f35db3da4b2aebb8d08635a8a41f8f665a66f Mon Sep 17 00:00:00 2001 From: PeterCJ Date: Mon, 20 Jul 2026 10:45:05 -0700 Subject: [PATCH 11/11] thinkScript: fix my expected results root name --- Test/functionList/thinkScript_by_sbh/unitTest.expected.result | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Test/functionList/thinkScript_by_sbh/unitTest.expected.result b/Test/functionList/thinkScript_by_sbh/unitTest.expected.result index 9e38fdcb..23aac392 100644 --- a/Test/functionList/thinkScript_by_sbh/unitTest.expected.result +++ b/Test/functionList/thinkScript_by_sbh/unitTest.expected.result @@ -1 +1 @@ -{"leaves":["script CalcMomentum"],"root":"thinkScript_Sample.ts"} \ No newline at end of file +{"leaves":["script CalcMomentum"],"root":"unitTest"} \ No newline at end of file