Automated Trading Strategy in ThinkorSwim

Education


Introduction

Creating an automated trading strategy can seem daunting, particularly for those unfamiliar with coding. However, ThinkorSwim (TOS) offers the Thinkscript programming language, which simplifies this process. In this article, we will walk through building a reversal trading strategy utilizing the Relative Strength Index (RSI) and a Simple Moving Average (SMA). This strategy will automate data gathering and facilitate real-time optimization.

Getting Started with Thinkscript

To begin, launch ThinkorSwim and access the strategies section. From your chart, navigate to Studies, then Edit Studies. In the strategies tab, click on Create to open the coding platform.

Constructing a Reversal Strategy

For our reversal strategy, we will set the following conditions:

  • Buy Conditions:

    • When the RSI crosses below 40
    • The closing price of the current bar must be above the 200-period simple moving average (SMA)
  • Sell Conditions:

    • When the RSI crosses back above 50

Defining the Conditions in Thinkscript

  1. Buy Condition:
    Start by defining the buy condition for the RSI:

    def buyRSI = RSI() < 40;
    
  2. Sell Condition:
    Next, establish the sell condition:

    def sellRSI = RSI() > 50;
    
  3. Simple Moving Average:
    Now we will create a definition for the 200-period SMA:

    def closeMA = SimpleMovingAvg(close, 200);
    

Implementing Orders

To integrate the buy and sell logic, along with managing trade sizes based on buying power, we will use the addOrder function:

addOrder(OrderType.BUY_AUTO, buyRSI and close > closeMA, tradeSize=BP/close, name="Buy Signal");
addOrder(OrderType.SELL_AUTO, sellRSI, name="Sell Signal");

Dynamic Position Sizing

Instead of trading a fixed number of shares, we can employ a dynamic position size based on our input buying power. Here’s how to implement it:

input BP = 5000;  // Define your buying power

Visualizing Your Indicators

To visualize the 200 SMA on your chart, convert the moving average condition into a plot:

plot SMA = closeMA;

Evaluating Your Strategy

After setting up your strategy, determining its effectiveness becomes essential. TOS provides the Floating P&L study, allowing you to see real-time gains or losses directly reflecting your strategy's performance.

The Benefits of Coding for Trading

Leveraging coding in ThinkorSwim allows traders to automate tedious aspects of strategy testing, make rapid adjustments, and optimize performance without the manual data collection that traditional backtesting requires. This efficiency serves as a significant advantage in today's fast-paced trading environment.

Conclusion

In summary, automating a trading strategy using ThinkorSwim’s Thinkscript can fundamentally enhance your trading approach. By understanding key indicators like RSI and SMA, and employing dynamic coding techniques, traders can position themselves to make informed decisions rapidly.


Keyword

  • ThinkorSwim
  • Thinkscript
  • Automated Trading
  • Reversal Strategy
  • RSI
  • SMA
  • Dynamic Position Sizing
  • Backtesting

FAQ

Q: What is ThinkorSwim?
A: ThinkorSwim is a trading platform that allows users to trade various financial instruments and offers advanced charting and analysis tools.

Q: What is Thinkscript?
A: Thinkscript is a proprietary coding language used within the ThinkorSwim platform that enables users to create custom studies and strategies.

Q: How can I automate a trading strategy?
A: You can automate trading strategies by coding them in Thinkscript within ThinkorSwim, using indicators like RSI and SMA to define your trading conditions.

Q: What is the significance of RSI in trading?
A: The Relative Strength Index (RSI) is a momentum oscillator that measures the speed and change of price movements, helping to identify overbought or oversold conditions.

Q: Can I test multiple strategies quickly in ThinkorSwim?
A: Yes, using Thinkscript, you can rapidly test and optimize multiple strategies without the manual effort required in traditional backtesting.