Half Trend Scalper Indicator for ThinkorSwim

BenTen

Administrative
Staff member
Staff
VIP
Half Trend is a scalping indicator for ThinkorSwim converted by developer Mobius. This is my first time hearing about the script, but Half Trend seems to be quite popular among Forex traders. Also, it was only available for other platforms such as MT4. Now you can use it on ThinkorSwim :)

18:57 Mobius: Here's a code that was dropped in my lap earlier to port to TOS. The folks that gave it to me didn't think it could be done in ThinkScript. You know how I love a challenge. No restrictions on sharing and I thought it was a nice take on trend following. I've no information about the original coder other than what's in the header.

A quick search on Google will allow you to learn more about the Half Trend indicator, potential setups, and usage.

LMxEfKr.png


thinkScript Code

Code:
# PRC_HalfTrend | indicator
# 10.03.2017
# Ported by Mobius Apr 2020
# Arrows added by @shortyuk (https://usethinkscript.com/threads/half-trend-scalper-indicator-for-thinkorswim.3305/post-30413)

input Amplitude = 3;

def lowpricei;
def highpricei;
def lowma;
def highma;
def barindex = barNumber();
def nexttrend;
def maxlowprice;
def trend;
def minhighprice;
def up;
def down;

plot halftrend;

lowpricei = Lowest(low, Amplitude);
highpricei = Highest(high, Amplitude);
lowma = average(low, Amplitude);
highma = average(high, Amplitude);
if barindex > Amplitude and
          nexttrend[1] == 1
    {
     maxlowprice = Max(lowpricei, maxlowprice[1]);
     trend = if highma < maxlowprice[1] and close < low[1]
             then 1
             else trend[1];
     nexttrend = if highma < maxlowprice[1] and close < low[1]
                 then 0
                 else nexttrend[1];
     minhighprice = if highma < maxlowprice[1] and close < low[1]
                    then highpricei
                    else minhighprice[1];
    }
else if nexttrend[1] == 0
    {
     minhighprice = Min(highpricei, minhighprice[1]);
     trend = if lowma > minhighprice[1] and close > high[1]
             then 0
             else trend[1];
     nexttrend = if lowma > minhighprice[1] and close > high[1]
                 then 1
                 else nexttrend[1];
     maxlowprice = if lowma > minhighprice[1] and close > high[1]
                   then lowpricei
                   else maxlowprice[1];
    }
else
    {
     maxlowprice = maxlowprice[1];
     trend = trend[1];
     nexttrend = nexttrend[1];
     minhighprice = minhighprice[1];
    }
if trend == 0
    {
     up = if trend[1] <> 0
          then down[1]
          else Max(maxlowprice[1], up[1]);
    down = 0;
    }
else if trend[1] <> 1
    {
     down = up[1];
     up = 0;# up[1] este era el error
    }
else if trend == 1
    {
     down = Min(minhighprice, down[1]);
     up = up[1];
    }
else
    {
     up =up[1];
     down = down[1];
    }
if up > 0
    {
     halftrend = up;
    }
else
    {
    halftrend = down;
    }
halftrend.SetStyle(Curve.Firm);
halftrend.AssignValueColor(if up > 0 then color.cyan else color.red);
halftrend.SetLineWeight(2);

plot UpSignal = if up[1]<1 and up>0 then low else Double.NaN;
plot DownSignal = if down[1]<1 and down>0 then high else Double.NaN;
UpSignal.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_UP);
DownSignal.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_DOWN);
UpSignal.SetDefaultColor(Color.Cyan);
DownSignal.SetDefaultColor(Color.Red);
UpSignal.SetLineWeight(3);
DownSignal.SetLineWeight(3);
# End Code

Backtesting Snippet

Add the following to your existing script, then add the entire indicator as a new strategy:

Code:
AddOrder(OrderType.BUY_TO_OPEN, condition = UpSignal, price = close,1, tickcolor = Color.GREEN, arrowcolor = Color.GREEN, name = "Long");
AddOrder(OrderType.SELL_TO_CLOSE, condition = DownSignal, price = close,1, tickcolor = Color.GREEN, arrowcolor = Color.GREEN, name = "Cover");

You can find the scanner for this indicator here. Credit to @john5788
 
Last edited:

HighBredCloud

Well-known member
VIP
This looks very similar to Trend Magic indicator...I like those as it appears that such indicators are not lagging especially when you can trade ABOVE or BELOW the moving average...Anyone want to give a try on an MTF version of this?
 

ext99k

Member
It looks too good to be true on the dailies... what does repaint mean? @TosTrd

As of today's Daily SPY, it has turned flat red, indicating possibly "repainting"? as it might go back and continue to green uptrend? I'm guessing that's why it is too good to be true, because when used it gives false signals then you're unsure what to do, similar to the ZigZag indicator, though this might be more efficient with longer aggregation bars like Daily
 

ext99k

Member
What other trend indicators do you all work with? I use GannHighLow, Concativity, williams fix fix, LBR_SmartADX... likely will add the Half Trend indicator as well
 

BenTen

Administrative
Staff member
Staff
VIP
@bubz Not sure, but if you add this to the end of your script, it will give you a sound alert for the particular ticker you're currently viewing.

Code:
# Alerts
Alert(UpSignal, " ", Alert.Bar, Sound.Chimes);
Alert(DownSignal, " ", Alert.Bar, Sound.Bell);
 

BenTen

Administrative
Staff member
Staff
VIP
@petey150 You can't set up a scanner for this indicator. I'm not sure why, maybe due to its complexity, but the indicator will break your ToS if you try to scan it.
 

LLSxCLC

New member
Hey @BenTen Sorry if this is a dumb question as I don't fully understand how this indicator works. But any idea why the Half Trend line will sometimes "freeze"? Looks like it just stops moving with price action and just stays as a straight line across. Generally, removing the indicator and then adding it back will solve the problem. But this solution doesn't work when it starts to freeze at/near market open, which makes me wonder does the indicator weight pre-market price action differently or something? Any advice is greatly appreciated!
 

BenTen

Administrative
Staff member
Staff
VIP
@LLSxCLC I don't think it was freezing; if you observe the indicator from the past, it doesn't move like a moving average. If the stock isn't moving in a strong uptrend or downtrend, you're likely to see small movement in the line. Does that make sense? You can also disable extended hours on your chart for further testing.
 

LLSxCLC

New member
@BenTen I understand, thank you! However, in this case, I actually do believe the line is freezing in some cases because when I remove the indicator and then re-add it, it fixes the "frozen" line so I'm pretty confused lol. I'll upload a screenshot so you can get a better idea.

Well I tried Inserting the image, but it's not working so this is the link.

oxeXbnY.png


As you can see starting at the 11:03 candle, the Half Trend line stays flat despite the large move down.

And this is how it looks after I "fixed" it by removing and re-adding the indicator.

sB7vbrO.png
 
Last edited by a moderator:

LLSxCLC

New member
@BenTen Ohhh interesting. I never would have considered something like that lol. Any idea why the expansion area would mess with the indicator? Either way, thanks for your help. I really appreciate it!
 
  • Like
Reactions: ALF

Danzig

New member
smE6yz5.png


Hello, I am having a similar issue with the HalfTrend. The indicator just continues all the way to the right. It still tracks the price candles but Like I said it continues across the screen. I already tried adjusting the expansion but did not change. Any ideas? Thank you.
 
Last edited:

Similar threads

Top