Need help with TOP Ultimate Breakout indicator

T

Thomas

Active member
@Thomas impossible for non-US users to chart share. Tdameritrade don't allow us, not sure why.
So I've been doing screenshots instead. The indicators you need were all explained.
I assume you are a thinkorswim user, otherwise most of this stuff is useless, so if that's the case, you should be able to share a chart, in chart set up, there's a share button....I assume you know of.....but thanks for response.....
 
P

Playstation

Active member
VIP
@Thomas

Isn't it obvious that it is a given I'm a TOS charts user, based on my posts?

I had this question for the longest time why there isn't a button for me to share. I opened a chat support and the admins told me my country is not allowed to share grids. And so I put on my best effort to explain things with using screenshot, annotating properly as best as I can.

I don't know how to code, but I'm taking the effort to learn and dig back every single page of every threads to understand more about the respective indicators that this treasure of a forum holds.

So either keep on doubting me that I can't share my charts, or keep on digging. Your choice.

 
T

Thomas

Active member
@Thomas

Isn't it obvious that it is a given I'm a TOS charts user, based on my posts?

I had this question for the longest time why there isn't a button for me to share. I opened a chat support and the admins told me my country is not allowed to share grids. And so I put on my best effort to explain things with using screenshot, annotating properly as best as I can.

I don't know how to code, but I'm taking the effort to learn and dig back every single page of every threads to understand more about the respective indicators that this treasure of a forum holds.

So either keep on doubting me that I can't share my charts, or keep on digging. Your choice.

Thank you,...wow,....never thought of difference in platform,....thanks again for your useable and interesting posts,.....
 
T

Thomas

Active member
BTW,...asked about position size within the script along with ATR,...thought I'd share this again, helpful as a stand alone when I take a small trade....

Code:
#
# PositionSizingCalculator
#
# Author: Kory Gill, [USER=212]@korygill[/USER]
#
#

input RiskUnit = 100;
input AggregationPeriod = AggregationPeriod.FIFTEEN_MIN;

def highVal = high(period = AggregationPeriod);
def lowVal = low(period = AggregationPeriod);

AddLabel(
    yes,
    "High: " + highVal + " Low: " + lowVal,
    Color.Gray
    );

def diff = highVal-LowVal;

AddLabel(
    yes,
    AsDollars(RiskUnit) + " risk with " + AsDollars(diff) + " stop = " + Floor(Round(RiskUnit/diff)) + " shares",
    Color.Gray
    );
 
S

shizah

New member
@Playstation - On my TOS I can click on the Style button. From there, you get a drop down and a choice is to Share Chart. This then provides a link. Does that work?
 
P

Playstation

Active member
VIP
there you go, not allowed, as what the admins told me.

 
horserider

horserider

Well-known member
VIP
People why do you not believe playstation. He stated several times the reason for not sharing. Do a little work on your own to set up what you want. You will understand what you are doing better that way. You are not entitled to have everything handed to you on a silver platter.
 
R

RConner7

Member
@tomsk - amazing work on this! Seems to work well on a 1min chart from the testing i've done.

I have noticed a few things that i have tried to correct on my own but may need some assistance.

1. I am noticing that the only way a new signal will be created is if the high/low crosses the Exit band. Is there a way to stop the lines from showing if the target points are met? See below. The 2nd signal of the day is met when it crosses the purple line but no signals can be created for 45 minutes after because the target lines still exist.


2. If there is a large gap up/down from the previous day, the opening initial signal is weird. See below. The initial 9:30 candle creates a signal and the open is well above. This throws off the following potential trade options as the #1 reason above would apply.



just some additional info in case someone asks. I combined this indicator with the supertrend. Signals will only be triggered if Breakout_signals are met and supertrend is green (for buy signals). I use 1.2mATR, 4.0, HULL for my ST. This seems to weed out some of the false signals even further.
 
T

Thomas

Active member
@tomsk - amazing work on this! Seems to work well on a 1min chart from the testing i've done.

I have noticed a few things that i have tried to correct on my own but may need some assistance.

1. I am noticing that the only way a new signal will be created is if the high/low crosses the Exit band. Is there a way to stop the lines from showing if the target points are met? See below. The 2nd signal of the day is met when it crosses the purple line but no signals can be created for 45 minutes after because the target lines still exist.




2. If there is a large gap up/down from the previous day, the opening initial signal is weird. See below. The initial 9:30 candle creates a signal and the open is well above. This throws off the following potential trade options as the #1 reason above would apply.



just some additional info in case someone asks. I combined this indicator with the supertrend. Signals will only be triggered if Breakout_signals are met and supertrend is green (for buy signals). I use 1.2mATR, 4.0, HULL for my ST. This seems to weed out some of the false signals even further.
I like it,....your adjustments, 1.2mATR, 4.0Hull,....cannot find that in the script?........
 
T

Thomas

Active member
Here is my adjustment,......, using price and my Volstops......
,.............and I included my chart with studies......http://tos.mx/8s08XAh
I know anything less than 5 minutes is noise and try not to allow anymore than I can.......
 
R

RConner7

Member
I like it,....your adjustments, 1.2mATR, 4.0Hull,....cannot find that in the script?........
I coded in the Supertrend myself. I'm still backtesting it but seems to show good results. Below is my code how it stands today -- keep in mind this is still a work in progress. I've only looked at it for long positions at the moment.

today i'm 3 winners out of 4.

Code:
# Top Ultimate Breakout Indicator
# tomsk
# 1.22.2020

# V1.0 - 12.08.2019 - hoojsn - Initial release of Top Ultimate Breakout Indicator (syntax errors)
# V1.1 - 12.08.2019 - tomsk  - Cleared all syntax errors from initial hoojsn release
# V1.2 - 12.31.2019 - tomsk  - Removed all extraneous logic and variables not used by the study
# V1.3 - 01.02.2020 - tomsk  - Added ShowTodayOnly input selector to display current intraday levels
# V1.4 - 01.16.2020 - tomsk  - Added ShowEntryExitBands input selector, can be set to "no"
# v1.5 - 01.22.2020 - tomsk  - Added ShowBubbles input selector, to toggle display of bubbles

## Added supertrend - RCONNER7 03.30.2020 ##

# http://www.coinerpals.com/download-top-trade-tools-top-ultimate-breakout/
# https://bestforexfeatured.com/product/toptradetools-ultimate-breakout/

input BuyorSell = {default Buy, Sell};
input ShowTodayOnly = yes;
input ShowEntryExitBands = yes;
input ShowBubbles = yes;
input BuyEntry = 3;
input SellEntry = 3;
input BuyExit = 20;
input SellExit = 20;

input ATRLength = 50;
input TargetATRMult = 1;
input DisplayLines = yes;
input PriceDigit = 2;
#input OpenTime = 0940;
#input CloseTime = 1550;
#input notrades = 1550;
#def OpenGood = SecondsFromTime(OpenTime) >= 0 and SecondstillTime(notrades) >= 0;
#def CloseAllCondition = SecondstillTime(CloseTime) == 0;

def today = !showTodayOnly or getDay() == getLastDay() and SecondsFromTime(0930) >= 0;

# SuperTrend - YAHOO Finance ver.
input AtrMult = 1.2;
input nATR = 4;
input AvgType = AverageType.HULL;
input PaintBars = yes;

def ATR = ATR("length" = nATR, "average type" = AvgType);
def UP_Band_Basic = HL2 + (AtrMult * ATR);

def LW_Band_Basic = HL2 + (-AtrMult * ATR);

def UP_Band = if ((UP_Band_Basic < UP_Band[1]) or (close[1] > UP_Band[1])) then UP_Band_Basic else UP_Band[1];

def LW_Band = if ((LW_Band_Basic > LW_Band[1]) or (close[1] < LW_Band[1])) then LW_Band_Basic else LW_Band[1];

def ST = if ((ST[1] == UP_Band[1]) and (close < UP_Band)) then UP_Band else if ((ST[1] == UP_Band[1]) and (close > Up_Band)) then LW_Band else if ((ST[1] == LW_Band[1]) and (close > LW_Band)) then LW_Band else if ((ST[1] == LW_Band) and (close < LW_Band)) then UP_Band else LW_Band;

def ST_UP = ST < close;
def ST_DN = ST > close;

# High

def H1  = Highest(high, SellExit);
def H2  = fold i = 1 to SellExit
          with ip = 0.0
          do if GetValue(high, i) == H1 or GetValue(high, i) < ip
             then ip
             else GetValue(high, i);
def H3  = fold i1 = 1 to SellExit
          with ip1 = 0.0
          do if GetValue(high, i1) == H1 or GetValue(high, i1) == H2 or GetValue(high, i1) < ip1
             then ip1
             else GetValue(high, i1);
def HH  = (H2 + H3) / 2.0;

# Low

def L1  = Lowest(low, BuyExit);
def L2  = fold i2 = 1 to BuyExit
          with ip2 = 10000000.0
          do if GetValue(low, i2) == L1 or GetValue(low, i2) > ip2
             then ip2
             else GetValue(low, i2);
def L3  = Lowest(if low == L1 or low == L2 then 1000000 else low, BuyExit);
def LL  = (L2 + L2) / 2.0;

def QB = Highest(high, BuyEntry);
def QS = Lowest(low, SellEntry);

def ATRVal = ATR(length = ATRLength, averageType= AverageType.SIMPLE);
def mATR = Highest(ATRVal, ATRLength);


plot entry;
plot exit;

def EntryPr;
def pos;
def co = BarNumber() > Max(SellExit, BuyExit);

switch (BuyorSell) {

case Buy:
    entry = QB[1];
    exit = LL[1];
    pos = if ST_UP and co and high > QB[1] then 1 else if low < LL[1] then 0 else pos[1];
    EntryPr = if high > QB[1] and pos == 1 and pos[1] < 1
              then QB[1]
              else if pos == 0
                  then Double.NaN
              else EntryPr[1];
case Sell:
    entry = QS[1];
    exit = HH[1];
    pos = if ST_DN and co and low < QS[1] then -1 else if high[1] > HH[2] then 0 else pos[1];
    EntryPr = if low < QS[1] and pos == -1 and pos[1] > -1
              then QS[1]
              else if pos == 0
                  then Double.NaN
              else EntryPr[1];
}
entry.AssignValueColor(if BuyorSell == BuyorSell.Buy then Color.GREEN
                       else if BuyorSell == BuyorSell.Sell then Color.RED
                       else Color.CURRENT);
entry.SetHiding(!ShowEntryExitBands);
exit.SetDefaultColor(Color.CYAN);
exit.SetHiding(!ShowEntryExitBands);

def BTarget;
def BTarget2;
def EntryLine;
def TradeRisk;

switch (BuyorSell) {

case Buy:
    BTarget  = if pos == 1 and pos[1] < 1
                   then (EntryPr + (TargetATRMult * 2 * mATR))
               else if pos == 1
                   then BTarget[1]
               else Double.NaN;
    BTarget2 = if pos == 1 and pos[1] < 1
                   then (EntryPr + 2 * (TargetATRMult * 2 * mATR))
               else if pos == 1
                   then BTarget2[1]
               else Double.NaN;
    EntryLine = if LL < EntryPr then EntryPr else Double.NaN;
    TradeRisk = (EntryPr - LL) / mATR;

case Sell:
    BTarget  = if pos == -1 and pos[1] > -1
                   then (EntryPr - (TargetATRMult * 2 * mATR))
               else if pos == -1
                   then BTarget[1]
               else Double.NaN;
    BTarget2 = if pos == -1 and pos[1] > -1
                   then (EntryPr - 2 * (TargetATRMult * 2 * mATR))
               else if pos == -1
                   then BTarget2[1]
               else Double.NaN;
    EntryLine = if HH > EntryPr then EntryPr else Double.NaN;
    TradeRisk = (HH - EntryPr ) / mATR;
}

plot pBTarget = if today and DisplayLines and co then BTarget else Double.NaN;
pBTarget.SetDefaultColor(Color.YELLOW);

plot pBTarget2 = if today and DisplayLines and co then BTarget2 else Double.NaN;
pBTarget2.SetDefaultColor(Color.MAGENTA);

plot pEntryLine = if today and DisplayLines and co then EntryLine else Double.NaN;
pEntryLine.SetDefaultColor(Color.WHITE);

def valco = DisplayLines and co and (pos == 1 or pos == -1) and pos[1] == 0;
def rBTarget = Round(BTarget, PriceDigit);
def rBTarget2 = Round(BTarget2, PriceDigit);
def rEntryPr = Round(EntryPr, PriceDigit);

AddChartBubble(ShowBubbles and today and valco, BTarget, rBTarget, Color.YELLOW);
AddChartBubble(ShowBubbles and today and valco, BTarget2, rBTarget2, Color.MAGENTA);
AddChartBubble(ShowBubbles and today and valco, EntryPr, rEntryPr, Color.WHITE);

def exv=if BuyorSell == BuyorSell.Buy then LL else HH;
def rexv = Round(exv, PriceDigit);
def rTradeRisk = Round(TradeRisk, PriceDigit);

AddChartBubble(ShowBubbles and today and valco, exv, rexv + "(" + rTradeRisk + "ATR)", Color.CYAN);
# End Top Ultimate Breakout Indicator
 
Billions

Billions

Member
2019 Donor
Warehouse
I coded in the Supertrend myself. I'm still backtesting it but seems to show good results. Below is my code how it stands today -- keep in mind this is still a work in progress. I've only looked at it for long positions at the moment.

today i'm 3 winners out of 4.

Code:
# Top Ultimate Breakout Indicator
# tomsk
# 1.22.2020

# V1.0 - 12.08.2019 - hoojsn - Initial release of Top Ultimate Breakout Indicator (syntax errors)
# V1.1 - 12.08.2019 - tomsk  - Cleared all syntax errors from initial hoojsn release
# V1.2 - 12.31.2019 - tomsk  - Removed all extraneous logic and variables not used by the study
# V1.3 - 01.02.2020 - tomsk  - Added ShowTodayOnly input selector to display current intraday levels
# V1.4 - 01.16.2020 - tomsk  - Added ShowEntryExitBands input selector, can be set to "no"
# v1.5 - 01.22.2020 - tomsk  - Added ShowBubbles input selector, to toggle display of bubbles

## Added supertrend - RCONNER7 03.30.2020 ##

# http://www.coinerpals.com/download-top-trade-tools-top-ultimate-breakout/
# https://bestforexfeatured.com/product/toptradetools-ultimate-breakout/

input BuyorSell = {default Buy, Sell};
input ShowTodayOnly = yes;
input ShowEntryExitBands = yes;
input ShowBubbles = yes;
input BuyEntry = 3;
input SellEntry = 3;
input BuyExit = 20;
input SellExit = 20;

input ATRLength = 50;
input TargetATRMult = 1;
input DisplayLines = yes;
input PriceDigit = 2;
#input OpenTime = 0940;
#input CloseTime = 1550;
#input notrades = 1550;
#def OpenGood = SecondsFromTime(OpenTime) >= 0 and SecondstillTime(notrades) >= 0;
#def CloseAllCondition = SecondstillTime(CloseTime) == 0;

def today = !showTodayOnly or getDay() == getLastDay() and SecondsFromTime(0930) >= 0;

# SuperTrend - YAHOO Finance ver.
input AtrMult = 1.2;
input nATR = 4;
input AvgType = AverageType.HULL;
input PaintBars = yes;

def ATR = ATR("length" = nATR, "average type" = AvgType);
def UP_Band_Basic = HL2 + (AtrMult * ATR);

def LW_Band_Basic = HL2 + (-AtrMult * ATR);

def UP_Band = if ((UP_Band_Basic < UP_Band[1]) or (close[1] > UP_Band[1])) then UP_Band_Basic else UP_Band[1];

def LW_Band = if ((LW_Band_Basic > LW_Band[1]) or (close[1] < LW_Band[1])) then LW_Band_Basic else LW_Band[1];

def ST = if ((ST[1] == UP_Band[1]) and (close < UP_Band)) then UP_Band else if ((ST[1] == UP_Band[1]) and (close > Up_Band)) then LW_Band else if ((ST[1] == LW_Band[1]) and (close > LW_Band)) then LW_Band else if ((ST[1] == LW_Band) and (close < LW_Band)) then UP_Band else LW_Band;

def ST_UP = ST < close;
def ST_DN = ST > close;

# High

def H1  = Highest(high, SellExit);
def H2  = fold i = 1 to SellExit
          with ip = 0.0
          do if GetValue(high, i) == H1 or GetValue(high, i) < ip
             then ip
             else GetValue(high, i);
def H3  = fold i1 = 1 to SellExit
          with ip1 = 0.0
          do if GetValue(high, i1) == H1 or GetValue(high, i1) == H2 or GetValue(high, i1) < ip1
             then ip1
             else GetValue(high, i1);
def HH  = (H2 + H3) / 2.0;

# Low

def L1  = Lowest(low, BuyExit);
def L2  = fold i2 = 1 to BuyExit
          with ip2 = 10000000.0
          do if GetValue(low, i2) == L1 or GetValue(low, i2) > ip2
             then ip2
             else GetValue(low, i2);
def L3  = Lowest(if low == L1 or low == L2 then 1000000 else low, BuyExit);
def LL  = (L2 + L2) / 2.0;

def QB = Highest(high, BuyEntry);
def QS = Lowest(low, SellEntry);

def ATRVal = ATR(length = ATRLength, averageType= AverageType.SIMPLE);
def mATR = Highest(ATRVal, ATRLength);


plot entry;
plot exit;

def EntryPr;
def pos;
def co = BarNumber() > Max(SellExit, BuyExit);

switch (BuyorSell) {

case Buy:
    entry = QB[1];
    exit = LL[1];
    pos = if ST_UP and co and high > QB[1] then 1 else if low < LL[1] then 0 else pos[1];
    EntryPr = if high > QB[1] and pos == 1 and pos[1] < 1
              then QB[1]
              else if pos == 0
                  then Double.NaN
              else EntryPr[1];
case Sell:
    entry = QS[1];
    exit = HH[1];
    pos = if ST_DN and co and low < QS[1] then -1 else if high[1] > HH[2] then 0 else pos[1];
    EntryPr = if low < QS[1] and pos == -1 and pos[1] > -1
              then QS[1]
              else if pos == 0
                  then Double.NaN
              else EntryPr[1];
}
entry.AssignValueColor(if BuyorSell == BuyorSell.Buy then Color.GREEN
                       else if BuyorSell == BuyorSell.Sell then Color.RED
                       else Color.CURRENT);
entry.SetHiding(!ShowEntryExitBands);
exit.SetDefaultColor(Color.CYAN);
exit.SetHiding(!ShowEntryExitBands);

def BTarget;
def BTarget2;
def EntryLine;
def TradeRisk;

switch (BuyorSell) {

case Buy:
    BTarget  = if pos == 1 and pos[1] < 1
                   then (EntryPr + (TargetATRMult * 2 * mATR))
               else if pos == 1
                   then BTarget[1]
               else Double.NaN;
    BTarget2 = if pos == 1 and pos[1] < 1
                   then (EntryPr + 2 * (TargetATRMult * 2 * mATR))
               else if pos == 1
                   then BTarget2[1]
               else Double.NaN;
    EntryLine = if LL < EntryPr then EntryPr else Double.NaN;
    TradeRisk = (EntryPr - LL) / mATR;

case Sell:
    BTarget  = if pos == -1 and pos[1] > -1
                   then (EntryPr - (TargetATRMult * 2 * mATR))
               else if pos == -1
                   then BTarget[1]
               else Double.NaN;
    BTarget2 = if pos == -1 and pos[1] > -1
                   then (EntryPr - 2 * (TargetATRMult * 2 * mATR))
               else if pos == -1
                   then BTarget2[1]
               else Double.NaN;
    EntryLine = if HH > EntryPr then EntryPr else Double.NaN;
    TradeRisk = (HH - EntryPr ) / mATR;
}

plot pBTarget = if today and DisplayLines and co then BTarget else Double.NaN;
pBTarget.SetDefaultColor(Color.YELLOW);

plot pBTarget2 = if today and DisplayLines and co then BTarget2 else Double.NaN;
pBTarget2.SetDefaultColor(Color.MAGENTA);

plot pEntryLine = if today and DisplayLines and co then EntryLine else Double.NaN;
pEntryLine.SetDefaultColor(Color.WHITE);

def valco = DisplayLines and co and (pos == 1 or pos == -1) and pos[1] == 0;
def rBTarget = Round(BTarget, PriceDigit);
def rBTarget2 = Round(BTarget2, PriceDigit);
def rEntryPr = Round(EntryPr, PriceDigit);

AddChartBubble(ShowBubbles and today and valco, BTarget, rBTarget, Color.YELLOW);
AddChartBubble(ShowBubbles and today and valco, BTarget2, rBTarget2, Color.MAGENTA);
AddChartBubble(ShowBubbles and today and valco, EntryPr, rEntryPr, Color.WHITE);

def exv=if BuyorSell == BuyorSell.Buy then LL else HH;
def rexv = Round(exv, PriceDigit);
def rTradeRisk = Round(TradeRisk, PriceDigit);

AddChartBubble(ShowBubbles and today and valco, exv, rexv + "(" + rTradeRisk + "ATR)", Color.CYAN);
# End Top Ultimate Breakout Indicator
Will this show buy and sell or do i need to set up 2 charts side by side like before
 
R

RConner7

Member
Will this show buy and sell or do i need to set up 2 charts side by side like before
You could add the indicator twice on the same chart. Set one to Sell and one to Buy. I would change the line colors for each to help distinguish between them.
 
B

barbaros

Member
@RickKennedy This is amazing setup.
I have a question though. How do you determine entry prices?

For example, where you would you enter in this chart now that all conditions other than EMA50 is met.



And how do you avoid these fakeouts?

 
Last edited:
Billions

Billions

Member
2019 Donor
Warehouse
@RickKennedy This is amazing setup.
I have a question though. How do you determine entry prices?

For example, where you would you enter in this chart now that all conditions other than EMA50 is met.



And how do you avoid these fakeouts?


Can you send a link to your chart
 
B

barbaros

Member
Thank You thats the one I have
What is your experience so far?

Sometimes, the callout happens before the bar color and the MACD confirms, and by the time this is confirmed it is too late.

I am finding the entries difficult to time correctly. One setup I noticed that helps is when a buy or sell bubble appears, the current bar needs to close below the buy and above the sell. Then, you get ready for the entry price that is in the bubble and MACD to cross over, if the acceleration is towards the bubble price, then you place your order.

Watching it live makes me think this is intended to be used without confirmation. When it calls, you enter the market and place your stop loss. As it progresses, you find your exit. @RickKennedy, @hoojsn, and @BenTen, what are your thoughts?
 
Last edited:

Top