B-Xtrender For ThinkOrSwim

samer800

Moderator - Expert
VIP
Lifetime
That did it thanks for that.

For anyone else wanting to use this Tradingview indicator here is the code I am using. The source code can be found here https://www.tradingview.com/script/YHZimEz8-B-Xtrender-Puppytherapy/

I have found that not all of my custom coded color translate so on the longXtrenderHist I have to darken the "Negative and Down" and the "Positive and Up" colors by clicking their color block then clicking "More...". Next select the "HSV" tab at the top and enter "60" for the Transparency level of both.

Code:
#// This source code is subject to the terms of the Mozilla Public License 2.0 at #https://mozilla.org/MPL/2.0/
#// ©Puppytherapy
#//@version=4
#study(title="B-Xtrender")
# Converted by mrhitts - 012/2022

declare lower;

input short_l1 = 5;
input short_l2 = 20;
input short_l3 = 15;

input long_l1 = 20;
input long_l2 = 15;

def R = RSI(14,CLOSE);

def averageType = AverageType.WILDERS;

def shortSetup = MovAvgExponential(close, short_l1) - MovAvgExponential(close, short_l2);

def shortNetChgAvg = MovingAverage(averageType, shortSetup - shortSetup[1], short_l3);
def shortTotChgAvg = MovingAverage(averageType, AbsValue(shortSetup - shortSetup[1]), short_l3);
def shortChgRatio = if shortTotChgAvg != 0 then shortNetChgAvg / shortTotChgAvg else 0;


plot shortXtrenderHist = (50 * (shortChgRatio + 1)) - 50;
shortXtrenderHist.SetPaintingStrategy(PaintingStrategy.HISTOGRAM);
shortXtrenderHist.SetLineWeight(5);
shortXtrenderHist.DefineColor("Positive and Up", CreateColor(0, 255, 102)); #Lime
shortXtrenderHist.DefineColor("Positive and Down", CreateColor(102, 153, 0)); #Dark Lime
shortXtrenderHist.DefineColor("Negative and Down", CreateColor(255, 220, 210)); #Light Red
shortXtrenderHist.DefineColor("Negative and Up", CreateColor(204, 0, 51)); #Dark Light Red

shortXtrenderHist.AssignValueColor(if shortXtrenderHist >= 0 then if shortXtrenderHist > shortXtrenderHist[1] then shortXtrenderHist.color("Positive and Up") else shortXtrenderHist.color("Positive and Down") else if shortXtrenderHist < shortXtrenderHist[1] then shortXtrenderHist.color("Negative and Down") else shortXtrenderHist.color("Negative and Up"));


def longSetup = MovAvgExponential(close, long_l1);

def longNetChgAvg = MovingAverage(averageType, longSetup - longSetup[1], long_l2);
def longTotChgAvg = MovingAverage(averageType, AbsValue(longSetup - longSetup[1]), long_l2);
def longChgRatio = if longTotChgAvg != 0 then longNetChgAvg / longTotChgAvg else 0;


plot longXtrenderHist = (50 * (longChgRatio + 1)) - 50;
longXtrenderHist.SetPaintingStrategy(PaintingStrategy.HISTOGRAM);
longXtrenderHist.SetLineWeight(1);
longXtrenderHist.DefineColor("Positive and Up", CreateColor(0, 191, 0)); #Dark Green
longXtrenderHist.DefineColor("Positive and Down", CreateColor(0, 100, 0)); #Extremely Dark Green
longXtrenderHist.DefineColor("Negative and Down", CreateColor(255, 53, 0)); #Dark Red
longXtrenderHist.DefineColor("Negative and Up", CreateColor(128, 0, 0)); #Extemely Dark Red

longXtrenderHist.AssignValueColor(if longXtrenderHist >= 0 then if longXtrenderHist > longXtrenderHist[1] then longXtrenderHist.color("Positive and Up") else longXtrenderHist.color("Positive and Down") else if longXtrenderHist < longXtrenderHist[1] then longXtrenderHist.color("Negative and Down") else longXtrenderHist.color("Negative and Up"));


plot longXtrender = (50 * (longChgRatio + 1)) - 50;
longXtrender.SetPaintingStrategy(PaintingStrategy.LINE);
longXtrender.SetLineWeight(3);
longXtrender.DefineColor("Positive", Color.GREEN);
longXtrender.DefineColor("Negative", Color.RED);
longXtrender.AssignValueColor(if longXtrender > longXtrender[1] then longXtrender.color("Positive") else longXtrender.color("Negative"));


script t3 {
    input src = close;
    input len = 10;
    def xe1_1 = MovAvgExponential(src,    len);
    def xe2_1 = MovAvgExponential(xe1_1,  len);
    def xe3_1 = MovAvgExponential(xe2_1,  len);
    def xe4_1 = MovAvgExponential(xe3_1,  len);
    def xe5_1 = MovAvgExponential(xe4_1,  len);
    def xe6_1 = MovAvgExponential(xe5_1,  len);
    def b_1 = 0.7;
    def c1_1 = -b_1 * b_1 * b_1;
    def c2_1 = 3 * b_1 * b_1 + 3 * b_1 * b_1 * b_1;
    def c3_1 = -6 * b_1 * b_1 - 3 * b_1 - 3 * b_1 * b_1 * b_1;
    def c4_1 = 1 + 3 * b_1 + b_1 * b_1 * b_1 + 3 * b_1 * b_1;
    def nT3Average_1 = c1_1 * xe6_1 + c2_1 * xe5_1 + c3_1 * xe4_1 + c4_1 * xe3_1;
    plot z = nT3Average_1;
}


plot maShortXtrender = t3( shortXtrenderHist , 5)
;
maShortXtrender.SetPaintingStrategy(PaintingStrategy.LINE);
maShortXtrender.SetLineWeight(3);
maShortXtrender.DefineColor("Positive", Color.GREEN);
maShortXtrender.DefineColor("Negative", Color.RED);
maShortXtrender.AssignValueColor(if maShortXtrender > maShortXtrender[1] then maShortXtrender.color("Positive") else maShortXtrender.color("Negative"));


input Signals = yes;
def Buy = maShortXtrender > maShortXtrender[1] and maShortXtrender[1] < maShortXtrender[2];


plot BuySignal = if Signals == yes and Buy is true then maShortXtrender else double.nan;
BuySignal.SetPaintingStrategy(PaintingStrategy.LINE_VS_POINTS);
BuySignal.SetLineWeight(5);
BuySignal.AssignValueColor(Color.GREEN);

def Sell = maShortXtrender < maShortXtrender[1] and maShortXtrender[1] > maShortXtrender[2];


plot SellSignal = if Signals == yes and Sell is true then maShortXtrender else double.nan;
SellSignal.SetPaintingStrategy(PaintingStrategy.LINE_VS_POINTS);
SellSignal.SetLineWeight(5);
SellSignal.AssignValueColor(Color.RED);
I just the colors

CSS:
#// This source code is subject to the terms of the Mozilla Public License 2.0 at #https://mozilla.org/MPL/2.0/
#// ©Puppytherapy
#//@version=4
#study(title="B-Xtrender")
# Converted by mrhitts - 012/2022

declare lower;
input Signals = yes;
input short_l1 = 5;
input short_l2 = 20;
input short_l3 = 15;
input long_l1 = 20;
input long_l2 = 15;

def na = Double.NaN;
#---
script t3 {
    input src = close;
    input len = 10;
    def xe1_1 = ExpAverage(src,  len);
    def xe2_1 = ExpAverage(xe1_1,len);
    def xe3_1 = ExpAverage(xe2_1,len);
    def xe4_1 = ExpAverage(xe3_1,len);
    def xe5_1 = ExpAverage(xe4_1,len);
    def xe6_1 = ExpAverage(xe5_1,len);
    def b_1 = 0.7;
    def c1_1 = -b_1 * b_1 * b_1;
    def c2_1 = 3 * b_1 * b_1 + 3 * b_1 * b_1 * b_1;
    def c3_1 = -6 * b_1 * b_1 - 3 * b_1 - 3 * b_1 * b_1 * b_1;
    def c4_1 = 1 + 3 * b_1 + b_1 * b_1 * b_1 + 3 * b_1 * b_1;
    def nT3Average_1 = c1_1 * xe6_1 + c2_1 * xe5_1 + c3_1 * xe4_1 + c4_1 * xe3_1;
    plot z = nT3Average_1;
}

def rsiShort = ExpAverage(close, short_l1) - ExpAverage(close, short_l2);
def rsiLong  = ExpAverage(close, long_l1);
def shortTermXtrender = rsi(Price=rsiShort,Length=short_l3 ) - 50;
def longTermXtrender  = rsi(Price=rsiLong,Length= long_l2 ) - 50;
def shortXtrenderCol = if shortTermXtrender > 0 then if shortTermXtrender > shortTermXtrender[1] then 2 else 1 else
                       if shortTermXtrender > shortTermXtrender[1] then -2 else -1;
def maShortTermXtrender = t3(shortTermXtrender , 5 );
def colShortTermXtrender = if maShortTermXtrender > maShortTermXtrender[1] then 1 else 0;

plot bXtrenderColor = maShortTermXtrender;
bXtrenderColor.SetLineWeight(3);
bXtrenderColor.AssignValueColor(if colShortTermXtrender then Color.GREEN else Color.RED);
plot bXtrenderShadow = maShortTermXtrender;
bXtrenderShadow.SetLineWeight(5);
bXtrenderShadow.SetDefaultColor(Color.BLACK);

def longXtrenderCol   = if longTermXtrender> 0 then if longTermXtrender > longTermXtrender[1] then 2 else 1 else
                        if longTermXtrender > longTermXtrender[1] then -2 else -1;
def macollongXtrenderCol =  if longTermXtrender > longTermXtrender[1] then 1 else 0;


plot XtrenderTrendLine = longTermXtrender;
XtrenderTrendLine.SetLineWeight(2);
XtrenderTrendLine.AssignValueColor(if macollongXtrenderCol then Color.DARK_GREEN else Color.DARK_RED);
plot XtrenderTrendShadow  = longTermXtrender;
XtrenderTrendShadow.SetLineWeight(4);
XtrenderTrendShadow.SetDefaultColor(Color.BLACK);

def Buy = if maShortTermXtrender > maShortTermXtrender[1] and maShortTermXtrender[1] < maShortTermXtrender[2] then  maShortTermXtrender else na;
def Sell = if maShortTermXtrender < maShortTermXtrender[1] and maShortTermXtrender[1] > maShortTermXtrender[2] then  maShortTermXtrender else na;

plot BuySignal = if Signals then Buy else na;
BuySignal.SetPaintingStrategy(PaintingStrategy.POINTS);
BuySignal.SetLineWeight(5);
BuySignal.AssignValueColor(Color.GREEN);

plot SellSignal = if Signals then Sell else na;
SellSignal.SetPaintingStrategy(PaintingStrategy.POINTS);
SellSignal.SetLineWeight(5);
SellSignal.AssignValueColor(Color.RED);

plot longXtrenderHist = longTermXtrender;
longXtrenderHist.SetPaintingStrategy(PaintingStrategy.HISTOGRAM);
longXtrenderHist.AssignValueColor(if longXtrenderCol == 2 then Color.DARK_GREEN else
                                  if longXtrenderCol == 1 then Color.LIGHT_GREEN else
                                  if longXtrenderCol == -2 then Color.RED else Color.DARK_RED);
plot shortXtrenderHist = shortTermXtrender;
shortXtrenderHist.SetPaintingStrategy(PaintingStrategy.SQUARED_HISTOGRAM);
shortXtrenderHist.AssignValueColor(if shortXtrenderCol ==2 then Color.DARK_GREEN else
                                   if shortXtrenderCol ==1 then Color.LIGHT_GREEN else
                                   if shortXtrenderCol ==-2 then Color.RED else Color.DARK_RED);

#--- END CODE
 
  • Like
Reactions: ALV

Join useThinkScript to post your question to a community of 21,000+ developers and traders.

Similar threads

Not the exact question you're looking for?

Start a new thread and receive assistance from our community.

87k+ Posts
499 Online
Create Post

Similar threads

Similar threads

The Market Trading Game Changer

Join 2,500+ subscribers inside the useThinkScript VIP Membership Club
  • Exclusive indicators
  • Proven strategies & setups
  • Private Discord community
  • ‘Buy The Dip’ signal alerts
  • Exclusive members-only content
  • Add-ons and resources
  • 1 full year of unlimited support

Frequently Asked Questions

What is useThinkScript?

useThinkScript is the #1 community of stock market investors using indicators and other tools to power their trading strategies. Traders of all skill levels use our forums to learn about scripting and indicators, help each other, and discover new ways to gain an edge in the markets.

How do I get started?

We get it. Our forum can be intimidating, if not overwhelming. With thousands of topics, tens of thousands of posts, our community has created an incredibly deep knowledge base for stock traders. No one can ever exhaust every resource provided on our site.

If you are new, or just looking for guidance, here are some helpful links to get you started.

What are the benefits of VIP Membership?
VIP members get exclusive access to these proven and tested premium indicators: Buy the Dip, Advanced Market Moves 2.0, Take Profit, and Volatility Trading Range. In addition, VIP members get access to over 50 VIP-only custom indicators, add-ons, and strategies, private VIP-only forums, private Discord channel to discuss trades and strategies in real-time, customer support, trade alerts, and much more. Learn all about VIP membership here.
How can I access the premium indicators?
To access the premium indicators, which are plug and play ready, sign up for VIP membership here.
Back
Top