The Strategy Tester enables you to easily test entry and exit strategies over any period of time.
You can access the Strategy Tester by clicking on the Strategy Tester button (#1) located in the right-side of the top menu bar.
The Strategy Tester will appear below the primary price chart. Use the Maximize toggle on the far-right to make the Strategy Tester larger.
Start by specifying the Chart Type, Timeframe, and Data Depth, as well as the Trade by Next and Short/Long settings. The Trade by Next enables you to select the most realistic entry criteria for your trades. For example, the Close setting means that trades are placed after the next candle's close rather than its open.
Next, you can specify multiple Entry Conditions and Exit Conditions. Click Add Parameter Here to create a new script and then select a condition or load an existing script template. Exit conditions include both conditions and Take Profit, Trailing Stop, and # Candles Passed capabilities. You can also add a Stop Loss as a static percentage. You can also add negative conditions (e.g. "none of the following") to identify cases where certain candlestick patterns haven't evolved over time when other conditions are true.
Defining Entry Conditions
The first step is defining an Entry Condition — or “when to buy” (#2). You can define these entry conditions using the same visual editor that powers TrendSpider’s multi-factor alerts. For example, you might create an entry condition where the SMA 20 is above SMA 50 and the “4 Green Candles” pattern forms.
Defining Exit Conditions
After you’ve added an Entry Condition, you need to decide when to exit the positions — or “when to sell” — by setting Exit Conditions (#3).
The Strategy Explorer offers a few options:
- The most obvious option is adding another “Script” (e.g. the same kind of multi-line conditions as the Entry Condition).
- “X Candles Passed” exits the position after given period of time (e.g. “5 candles”). This is not very useful for real trading conditions, but we’ve added it for research purpose only (e.g. when you’re willing to focus on exploring Entry Condition only).
- “Take Profit” exits when your position gains more than X%. The logic uses a "Limit Order" to provide a realistic price.
- “Stop Loss” exits when your position loses more than X%. The logic uses a "Stop Market" order to provide a realistic price.
- "Trailing Stop Loss" exits when your position loses more than X% from its most profitable point. Note: This exit condition can be imprecise for very long candles, but closely matches reality in most situations.
You can use any combination of these conditions.
For example, you may exit the position when the SMA 20 crosses down through SMA 50 and implement a 2% stop-loss.
When you're ready to run the test, simply click the Run button (#4).
For more information on Strategy Tester, please refer to the documentation on Understanding Strategy Tester from TrendSpider
Using explicit list of signals
You can also specify time stamps of triggering candles explicitly, instead of configuring backtester criteria in TrendSpider directly. This is useful in case if you already have a system which generates signals and you want to leverage TrendSpider's unique visualizations for results of backtests.
You can have a list of signals in both Entry and Exit sections. Each list is supposed to contain one signal per line. Order of signals does not matter. Comments (any line starting from
#) and empty lines are allowed.
Date/time formats supported
We are flexible in terms of formats of dates we support. Here's a list of options, but it's not exhaustive.
- Unix time stamp. I.e.,
- JS time stamp. I.e.,
- ISO datetime (ISO 8601). I.e.,
- Various human-readable formats, like
23 Aug 2022 09:00 EST, or
03/21/2023 10:00 CST,
May 10, 2023 18:30 GMT-04e.t.c
Time stamps passed as human-readable text should have a time zone specified.
For Daily charts and above, you should still specify full date and time, specifying the date onnly won't work. Time is supposed to be equal to session start time.
Time zones of signals
It is your responsibility to provide time in a correct time zone. If you don't specify any time zone in your time stamps, then we'll use
UTC by default. We're suggesting you specifying time stamps in UTC since it's going to result in the most straightforward behavior. Using other time zones can be quirky. In example, if you'll want to specify a time zone explicitly, then you'll have to know when to use
EST and when
Please mind your chart's time axis time zone when browsing a chart. We suggest you holding everything (charting and time stamps in your backtester) to the same time zone, whatever it is.
Signal order and time stamp
If you provide signals, then please remember the following:
- You should provide a list of time stamps of triggering candles. Backtester will always enter on the next candle after trigger, just like it does with other condition types like Script.
- Order of records in your list does not matter.
- In case if backtester is in a position and then it faces a candle which has yet another Entry signal, this new signal will be ignored. The same is true for Exits.
- You should specify time stamps of "triggering candle open" precisely. Internally, backteser uses strict mathematical equality of JS time stamps when determining whether a candle shoudl trigger a signal.
Other use cases for lists of signals
You can also use this feature in case if you're willing to share your strategy without revealing its underlying criteria. In example,
- Build a real strategy (with your criteria) on TrendSpider.
- Run a backtest and download list of positions as CSV.
- Create a new blank strategy and specify signals using time stamps (use
Triggering Candle Open Timecolumns).
- Share this new strategy.