Archives: RSM Indicator for ThinkorSwim

Status
Not open for further replies.
Please look at the screenshot in the original post, there is a label that shows the price where the Trend Started (for both up and down). you may have to enabled those labels in properties. Please spend sometime with Indicator properties, enabled/disable each options and personalize the look and feel of the setup to your liking.
Hi, I've been trying trying configure all of the settings this week, but for some reason the uparrow/downarrow doesn't display on the weekly chart. Does it only work for the daily chart?

http://prntscr.com/108ooj4
 

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

hi people, copy this to your custom quote!!!!

Code:
#START OF RSI/Stochastic/MACD Confluence Strategy for ThinkOrSwim
# RSM Strategy - BASIC
#CHANGELOG
# 2020.10.27 V1.0 [USER=6343]@cos251[/USER] - Added RSI, StochasticSlow and MACD to same indicator
#             - also calculates MACD;
#               Will shade the lower plot area of the following conditions are met
#                    Shade GREEN = RSI > 50 and SlowK > 50 and (macd)Value > (macd)Avg
#                    Shade RED = RSI < 50 and SlowK < 50 and (macd)Value < (macd)Avg
#                 
#REQUIREMENTS - RSI Set to 7, EXPONENTIAL
#               Stoch Slow 14 and 3 WILDERS
#               MACD 12,26,9 WEIGHTED

declare upper;


################################################################
##########            AddOrder Prep                    #########
################################################################
def bar = BarNumber();
def CloseAllCondition = SecondstillTime(1558) == 0;
def EOD = if SecondsTillTime(1558) == 0 and SecondsFromTime(1558) == 0 then 1 else 0;
def NotActive = if SecondsFromTime(1550) > 0 then 1 else 0;
def Active1 = if SecondsFromTime(0930) > 0 then 1 else 0;
def notrades = if SecondstillTime(1500) > 0 then 1 else 0;


################################################################
##########                 RSI                         #########
################################################################
input paintBars = yes;
input showShade = no;
input tradetype = { default "long", "short", "both" };
input lengthRSI = 7;
input price = close;
input averageTypeRSI = AverageType.EXPONENTIAL;
def NetChgAvg = MovingAverage(averageTypeRSI, price - price[1], lengthRSI);
def TotChgAvg = MovingAverage(averageTypeRSI, AbsValue(price - price[1]), lengthRSI);
def ChgRatio = if TotChgAvg != 0 then NetChgAvg / TotChgAvg else 0;
def RSI = 50 * (ChgRatio + 1);


################################################################
##########                 Stochastic Slow             #########
################################################################
input over_boughtSt = 100;
input over_soldSt = 50;
input KPeriod = 14;
input DPeriod = 3;
input priceH = high;
input priceL = low;
input priceC = close;
input averageTypeStoch = AverageType.WILDERS;
def SlowK = reference StochasticFull(over_boughtSt, over_soldSt, KPeriod, DPeriod, priceH, priceL, priceC, 3, averageTypeStoch).FullK;
def SlowD = reference StochasticFull(over_boughtSt, over_soldSt, KPeriod, DPeriod, priceH, priceL, priceC, 3, averageTypeStoch).FullD;



#################################################################
#MACD Calculation
input fastLength = 12;
input slowLength = 26;
input MACDLength = 9;
input averageTypeMACD = AverageType.WEIGHTED;
def Value = MovingAverage(averageTypeMACD, close, fastLength) - MovingAverage(averageTypeMACD, close, slowLength);
def Avg = MovingAverage(averageTypeMACD, Value, MACDLength);
def Diff = Value - Avg;


#AssignPriceColor
AssignPriceColor(if paintBars and RSI >= 50 and SlowK >= 50 and Value > Avg then Color.GREEN else if paintBars and RSI < 50 and SlowK < 50 and Value < Avg then Color.RED else if paintBars then Color.white else Color.CURRENT);

#################################################################
############  Shade areas based on criteria; adjust as needed  ##
#################################################################
AddCloud(if showShade and RSI >= 50 and SlowK >= 50 and Value > Avg then Double.POSITIVE_INFINITY else Double.NaN, if RSI >= 50 and SlowK >= 50 and Value > Avg then Double.NEGATIVE_INFINITY else Double.NaN, Color.LIGHT_Green);
AddCloud(if showShade and RSI < 50 and SlowK < 50 and Value < Avg then Double.POSITIVE_INFINITY else Double.NaN, if RSI < 50 and SlowK < 50 and Value < Avg then Double.NEGATIVE_INFINITY else Double.NaN, Color.LIGHT_RED);



#################################################################
############          SCAN Variables                    #########
#################################################################
plot UpTrend = if RSI >= 50 and SlowK >= 50 and Value > Avg then 1 else 0;
plot DownTrend = if RSI < 50 and SlowK < 50 and Value < Avg then 1 else 0;
def LongBuy = if UpTrend == 1 and UpTrend[1] == 0 then 1 else 0;
def LongExit = if UpTrend[1] == 1 and UpTrend == 0 then 1 else 0;
def ShortSell = if DownTrend == 1 and DownTrend[1] == 0 then 1 else 0;
def ShortExit = if DownTrend == 0 and DownTrend[1] == 1 then 1 else 0;
UpTrend.Hide();
DownTrend.Hide();
AddLabel(yes, if UpTrend == 1 then "::RSM-Signal:LONG" else if DownTrend == 1 then "::RSM-Signal:SHORT" else "::RSM-Signal:IDLE", if UpTrend == 1 then Color.GREEN else if DownTrend == 1 then Color.RED else Color.yellow);

plot upArrow = if UpTrend == 1 and UpTrend[1] == 0 then low else Double.NaN;
upArrow.SetPaintingStrategy(PaintingStrategy.ARROW_UP);
upArrow.SetDefaultColor(Color.GREEN);

plot downArrow = if DownTrend == 1 and DownTrend[1] == 0 then high else Double.NaN;
downArrow.SetPaintingStrategy(PaintingStrategy.ARROW_DOWN);
downArrow.SetDefaultColor(Color.RED);


### BUY
#AddOrder(OrderType.BUY_TO_OPEN, LongBuy == 1 and (tradetype == tradetype.long or tradetype == tradetype.both), open, tickcolor = GetColor(9), #arrowcolor = GetColor(9), name = "LONG");

#AddOrder(OrderType.SELL_TO_CLOSE, LongExit == 1 and (tradetype == tradetype.long or tradetype == tradetype.both), open, tickcolor = #GetColor(9), arrowcolor = GetColor(9), name = "LONG_EXIT");

AddOrder(OrderType.BUY_AUTO, LongBuy == 1 and (tradetype == tradetype.long or tradetype == tradetype.both) and Active1 and notrades, price = close, tickcolor = Color.ORANGE, arrowcolor = Color.ORANGE, name = "BUY");

AddOrder(OrderType.Sell_To_Close, LongExit == 1 and (tradetype == tradetype.long or tradetype == tradetype.both), price = open[-1], tickcolor = Color.ORANGE, arrowcolor = Color.ORANGE, name = "Sell To Close");


AddOrder(OrderType.Sell_TO_CLOSE, EOD or closeAllCondition, price = close, tickcolor = Color.ORANGE, arrowcolor = Color.ORANGE, name = "SELL EOD");

### SELL
#AddOrder(OrderType.SELL_TO_OPEN, ShortSell == 1 and (tradetype == tradetype.short or tradetype == tradetype.both), open, tickcolor = #GetColor(9), arrowcolor = GetColor(8), name = "SHORT");
#AddOrder(OrderType.BUY_TO_CLOSE, ShortExit == 1 and (tradetype == tradetype.short or tradetype == tradetype.both), open, tickcolor = #GetColor(9), arrowcolor = GetColor(8), name = "Short_EXIT");

AddOrder(OrderType.SELL_AUTO, ShortSell == 1 and (tradetype == tradetype.short or tradetype == tradetype.both)  and Active1 and notrades , price = close, tickcolor = Color.YELLOW, arrowcolor = Color.YELLOW, name = "SELL");

AddOrder(OrderType.Buy_To_Close, ShortExit == 1 and (tradetype == tradetype.short or tradetype == tradetype.both), price = open[-1], tickcolor = Color.ORANGE, arrowcolor = Color.ORANGE, name = "Buy To Close");

AddOrder(OrderType.BUY_TO_CLOSE, EOD or closeAllCondition, price = close, tickcolor = Color.ORANGE, arrowcolor = Color.ORANGE, name = "BUY EOD");
 
hi people, copy this to your custom quote!!!!


#START OF RSI/Stochastic/MACD Confluence Strategy for ThinkOrSwim
# RSM Strategy - BASIC
#CHANGELOG
# 2020.10.27 V1.0 @cos251 - Added RSI, StochasticSlow and MACD to same indicator
# - also calculates MACD;
# Will shade the lower plot area of the following conditions are met
# Shade GREEN = RSI > 50 and SlowK > 50 and (macd)Value > (macd)Avg
# Shade RED = RSI < 50 and SlowK < 50 and (macd)Value < (macd)Avg
#
#REQUIREMENTS - RSI Set to 7, EXPONENTIAL
# Stoch Slow 14 and 3 WILDERS
# MACD 12,26,9 WEIGHTED

declare upper;


################################################################
########## AddOrder Prep #########
################################################################
def bar = BarNumber();
def CloseAllCondition = SecondstillTime(1558) == 0;
def EOD = if SecondsTillTime(1558) == 0 and SecondsFromTime(1558) == 0 then 1 else 0;
def NotActive = if SecondsFromTime(1550) > 0 then 1 else 0;
def Active1 = if SecondsFromTime(0930) > 0 then 1 else 0;
def notrades = if SecondstillTime(1500) > 0 then 1 else 0;


################################################################
########## RSI #########
################################################################
input paintBars = yes;
input showShade = no;
input tradetype = { default "long", "short", "both" };
input lengthRSI = 7;
input price = close;
input averageTypeRSI = AverageType.EXPONENTIAL;
def NetChgAvg = MovingAverage(averageTypeRSI, price - price[1], lengthRSI);
def TotChgAvg = MovingAverage(averageTypeRSI, AbsValue(price - price[1]), lengthRSI);
def ChgRatio = if TotChgAvg != 0 then NetChgAvg / TotChgAvg else 0;
def RSI = 50 * (ChgRatio + 1);


################################################################
########## Stochastic Slow #########
################################################################
input over_boughtSt = 100;
input over_soldSt = 50;
input KPeriod = 14;
input DPeriod = 3;
input priceH = high;
input priceL = low;
input priceC = close;
input averageTypeStoch = AverageType.WILDERS;
def SlowK = reference StochasticFull(over_boughtSt, over_soldSt, KPeriod, DPeriod, priceH, priceL, priceC, 3, averageTypeStoch).FullK;
def SlowD = reference StochasticFull(over_boughtSt, over_soldSt, KPeriod, DPeriod, priceH, priceL, priceC, 3, averageTypeStoch).FullD;



#################################################################
#MACD Calculation
input fastLength = 12;
input slowLength = 26;
input MACDLength = 9;
input averageTypeMACD = AverageType.WEIGHTED;
def Value = MovingAverage(averageTypeMACD, close, fastLength) - MovingAverage(averageTypeMACD, close, slowLength);
def Avg = MovingAverage(averageTypeMACD, Value, MACDLength);
def Diff = Value - Avg;


#AssignPriceColor
AssignPriceColor(if paintBars and RSI >= 50 and SlowK >= 50 and Value > Avg then Color.GREEN else if paintBars and RSI < 50 and SlowK < 50 and Value < Avg then Color.RED else if paintBars then Color.white else Color.CURRENT);

#################################################################
############ Shade areas based on criteria; adjust as needed ##
#################################################################
AddCloud(if showShade and RSI >= 50 and SlowK >= 50 and Value > Avg then Double.POSITIVE_INFINITY else Double.NaN, if RSI >= 50 and SlowK >= 50 and Value > Avg then Double.NEGATIVE_INFINITY else Double.NaN, Color.LIGHT_Green);
AddCloud(if showShade and RSI < 50 and SlowK < 50 and Value < Avg then Double.POSITIVE_INFINITY else Double.NaN, if RSI < 50 and SlowK < 50 and Value < Avg then Double.NEGATIVE_INFINITY else Double.NaN, Color.LIGHT_RED);



#################################################################
############ SCAN Variables #########
#################################################################
plot UpTrend = if RSI >= 50 and SlowK >= 50 and Value > Avg then 1 else 0;
plot DownTrend = if RSI < 50 and SlowK < 50 and Value < Avg then 1 else 0;
def LongBuy = if UpTrend == 1 and UpTrend[1] == 0 then 1 else 0;
def LongExit = if UpTrend[1] == 1 and UpTrend == 0 then 1 else 0;
def ShortSell = if DownTrend == 1 and DownTrend[1] == 0 then 1 else 0;
def ShortExit = if DownTrend == 0 and DownTrend[1] == 1 then 1 else 0;
UpTrend.Hide();
DownTrend.Hide();
AddLabel(yes, if UpTrend == 1 then "::RSM-Signal:LONG" else if DownTrend == 1 then "::RSM-Signal:SHORT" else "::RSM-Signal:IDLE", if UpTrend == 1 then Color.GREEN else if DownTrend == 1 then Color.RED else Color.yellow);

plot upArrow = if UpTrend == 1 and UpTrend[1] == 0 then low else Double.NaN;
upArrow.SetPaintingStrategy(PaintingStrategy.ARROW_UP);
upArrow.SetDefaultColor(Color.GREEN);

plot downArrow = if DownTrend == 1 and DownTrend[1] == 0 then high else Double.NaN;
downArrow.SetPaintingStrategy(PaintingStrategy.ARROW_DOWN);
downArrow.SetDefaultColor(Color.RED);


### BUY
#AddOrder(OrderType.BUY_TO_OPEN, LongBuy == 1 and (tradetype == tradetype.long or tradetype == tradetype.both), open, tickcolor = GetColor(9), #arrowcolor = GetColor(9), name = "LONG");

#AddOrder(OrderType.SELL_TO_CLOSE, LongExit == 1 and (tradetype == tradetype.long or tradetype == tradetype.both), open, tickcolor = #GetColor(9), arrowcolor = GetColor(9), name = "LONG_EXIT");

AddOrder(OrderType.BUY_AUTO, LongBuy == 1 and (tradetype == tradetype.long or tradetype == tradetype.both) and Active1 and notrades, price = close, tickcolor = Color.ORANGE, arrowcolor = Color.ORANGE, name = "BUY");

AddOrder(OrderType.Sell_To_Close, LongExit == 1 and (tradetype == tradetype.long or tradetype == tradetype.both), price = open[-1], tickcolor = Color.ORANGE, arrowcolor = Color.ORANGE, name = "Sell To Close");


AddOrder(OrderType.Sell_TO_CLOSE, EOD or closeAllCondition, price = close, tickcolor = Color.ORANGE, arrowcolor = Color.ORANGE, name = "SELL EOD");

### SELL
#AddOrder(OrderType.SELL_TO_OPEN, ShortSell == 1 and (tradetype == tradetype.short or tradetype == tradetype.both), open, tickcolor = #GetColor(9), arrowcolor = GetColor(8), name = "SHORT");
#AddOrder(OrderType.BUY_TO_CLOSE, ShortExit == 1 and (tradetype == tradetype.short or tradetype == tradetype.both), open, tickcolor = #GetColor(9), arrowcolor = GetColor(8), name = "Short_EXIT");

AddOrder(OrderType.SELL_AUTO, ShortSell == 1 and (tradetype == tradetype.short or tradetype == tradetype.both) and Active1 and notrades , price = close, tickcolor = Color.YELLOW, arrowcolor = Color.YELLOW, name = "SELL");

AddOrder(OrderType.Buy_To_Close, ShortExit == 1 and (tradetype == tradetype.short or tradetype == tradetype.both), price = open[-1], tickcolor = Color.ORANGE, arrowcolor = Color.ORANGE, name = "Buy To Close");

AddOrder(OrderType.BUY_TO_CLOSE, EOD or closeAllCondition, price = close, tickcolor = Color.ORANGE, arrowcolor = Color.ORANGE, name = "BUY EOD");
What does it do?
 
give you signal long,short,idle.....

What is the point of re-posting code from Original post, Other than just causing confusion and making an unnecessary comment. Normally I keep out, but curious to see what you are trying to achieve.

-S
 
For the lower study (Stochastic) are you guys using the settings in the screen shot ( 5,3) or the 14, 3 like the upper study?
 
For the lower study (Stochastic) are you guys using the settings in the screen shot ( 5,3) or the 14, 3 like the upper study?
14, 3 for Stochastic across the board, Including the scanners, as per the original Strategy guide. If you like to change and play with them, I would recommend 2 sets of studies, and make sure each set is a match for your parameters and do some side-by-side comparison.

-S
 
14, 3 for Stochastic across the board, Including the scanners, as per the original Strategy guide. If you like to change and play with them, I would recommend 2 sets of studies, and make sure each set is a match for your parameters and do some side-by-side comparison.

-S
Does the up/down arrow only display on the daily chart? I don't see it on the weekly, monthly, or yearly
 
Does the up/down arrow only display on the daily chart? I don't see it on the weekly, monthly, or yearly
daily and lower, I got to double check the code to see why It wouldn't display weekly and higher though, got to be TOS limitation than anything to do with code.
 
daily and lower, I got to double check the code to see why It wouldn't display weekly and higher though. Got to be do with TOS limitation than anything to do with code.
Ok thanks, I was thinking that there were too many arrows on the daily chart for some stocks and that it would be easier to trade on the weekly. The shade works just not the arrow.
 
Is there a way to display Total Bars UpTrend in the Watchlist?

I assume your are not looking for BarNumber, like it is shown in the RSM_Upper Study, instead you are looking for "How Many Bars ago Trend has started". If that is what you are looking for, pick up the code from Comment #2 Version 1.1.

Please also not, I have coded it only for UpTrend and DownTrend only, as Up/DownTrendJustStarted, will show the once on first Bar.
 
How are you guys calculating portion size? I am playing with say 5000 $ per play, some larger stocks the stop loss might be -75 . Other smaller ones with a big candle the stop loss might be -570
Whats the best strategy here to keep it even across the board? Because in his pdf and videos its saying even if you're right 50% of the time you still make a profit because of the stop losses
 
How are you guys calculating portion size? I am playing with say 5000 $ per play, some larger stocks the stop loss might be -75 . Other smaller ones with a big candle the stop loss might be -570
Whats the best strategy here to keep it even across the board? Because in his pdf and videos its saying even if you're right 50% of the time you still make a profit because of the stop losses

I think he(Markus) sets his stops at 1.5*ADR

and position size is your risk amount/1.5ADR

So if your risking $100 on a stock that cost $25 and the ADR is 2

1.5 * adr = 3 so your stop is at $22

100(risk)/3(1.5ADR) = 33.33shares **position size

(total cost of trade 33 shares *$25= $833)

take profit is 3*adr so 6+25=31
 
I think he(Markus) sets his stops at 1.5*ADR

and position size is your risk amount/1.5ADR

So if your risking $100 on a stock that cost $25 and the ADR is 2

1.5 * adr = 3 so your stop is at $22

100(risk)/3(1.5ADR) = 33.33shares **position size

(total cost of trade 33 shares *$25= $833)

take profit is 3*adr so 6+25=31
Thanks. I was wondering if there was a quick way to figure this out without pulling out a calculator
 
Status
Not open for further replies.

Similar threads

Not the exact question you're looking for?

Start a new thread and receive assistance from our community.

87k+ Posts
322 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