Gavin's DCA Backtest

The DCA Backtest script was designed to backtest the performance of any indicator using DCA bots.

"Open Deal ASAP" Deal Start Condition:
This script offers "open deal ASAP" deal start condition which will continuously open new deals. IT will wait for the current deal to close before opening a new one.

"Script" Deal Start Condition:
If you select the "Script" deal start condition we provide Bollinger Bands as an example. You can tweak the BB parameters from the indicator settings menu.

"Indicator" Deal Start Condition:
The third option is "Indicator". For this option to work out you must have an indicator that plots a "unique value" that can be recognised as a BUY signal.
We recommend that your indicator plots 1 when it should buy and 0 when there's no signal.
Once you have in the same chart your indicator and your DCA backtest it's time to hook them up. For that follow these steps:
1) select "Indicator" as deal start condition
2) select your indicator from the list as "deal start source"
3) If you are following our recommendation then use 1 as "deal start value" so it can tell the DCA backtest when to open a deal. Make sure that your indicator only plots 0 or 1 so the DCA backtest can distinguish the BUY signal appropriately.

Each time you make changes and save your external indicator while you are backtesting, you will have to hook up the indicator again with the DCA backtest in the settings.
To avoid this, add as many parameters as you need to change in the external indicator so in that way you won't need to save changes to it and therefore will manage to avoid having to hook up the indicator with the DCA backtest.
Release Notes: - fixed a problem that wasn't allowing to select the source of the indicator to use
- all parameters are now grouped by area in the settings window
- results now show max days in deal including if there's a on going open deal
Release Notes: Adding a version to the script short title.
Release Notes: - Show DCA cloud option added. This option allows to hide the DCA cloud in the chart.
Release Notes: - Max safety orders can now be set to zero
- 3C simulator: 3 BB and 3 RSI indicators added, multi-timeframe
- Adding tooltips to make settings more easy to understand
- Improved layout of settings
- Support for external indicator to close a deal by sending a separated value than the deal start value
Release Notes: - Solved bug: max volume was not allowing above 1M volume
- Solved bug: dealstop condition was mistakenly applying in "3c simulation" mode
Release Notes: - Fixed issue with max days in deal when using buy close ext indicator conditions. It was over calculating the days in trade.
- Added QFL to 3C simulator
- Added CCI to 3C simulator
- Added MFI to 3C simulator
- Added ULT to 3C simulator
- Performance improvement. Indicators are now only calculated when they are active.
- Settings layout improvements
- Settings extra tooltips added to help with usability
Release Notes: - Fixes issue with covered deviation calculated wrong when max SO number was set to 0
- Fixes issue with DCA cloud chart still showing an SO when max SO number was set to 0
Release Notes: - fixing issues with high number of SOs
- removing NaN errors appearing in the results table when there are no deals
Release Notes: - new implementation of take profit.
- results table shows number of deals closed and drawdown
Release Notes: - TP fix
Release Notes: - Version 0.5 adds support for SHORT deal start conditions for the 3C simulator mode.
- All strats now support bearish entries: CCI, MFI, RSI, BB, QFL
- TP % can now be set as low as 0.01
- Solved some issues with calculations of drawdowns for max drawdown and for a current open deal drawdown.
- QFL strategy includes a toggle to require the lower base to be below the upper base to be able to trigger a signal
Release Notes: - Resolves issue of required funds not calculated properly. TV changed a method today which broke our script. Thanks to Gavin for finding a fix to this issue so quick! it took us a few minutes but it was crazy!
- Resolves an issue having too many SOs

The changes TV made might cause further issues. We reported the issue to TV and waiting for their feedback as well.
Release Notes: - added new stop loss percentage parameter to DCA settings
Release Notes: - Added TradingView Technical Indicator deal start conditions. 3 timeframes
- Ultimate oscillator bug fix: first two were not working properly
Release Notes: QFL deal start condition now allows multiple consecutive deals. Before, if there were 20 candles signalling BUY, only the first would trigger a buy, now all of them would.
Release Notes: There was a problem that even while using "open deal ASAP" the backtest wasn't opening an deal right after closing the previous deal. There was a single candle that the strategy was idle. This change seems to resolve it. I will keep an eye in case the fix had any side effect, in which case I might have to revert it and find an alternative solution.
Release Notes: Solves an issue when the DCA was buying at negative prices even when the SOs max deviation shouldn't hit negative prices.
I tested this solution on IFTRSI external indicator and managed to stop getting the error, if the same error occurs please report it on our discord server DCA-backtest channel.
Release Notes: 1) We created a new deal start type: External signal + 3C simulator combined.

This should be quite useful as 3C actually DOES support mixing their built-in indicators with an API signal, which is exactly what this mode represents.

The DCA bot will only open the trade if there's a BUG signal and all the 3C simulator conditions enabled are valid at the same time.

An example of a cool use could be to only take BUYs from the external signal when TV is BUY on the daily and hourly and RSI daily is below 80.

If you enable this mode you have to connect a backtestable compatible signal (for example one that only prints ones and twos, for buys and sells) and you MUST enable at least one of the 3C simulator deal start conditions. If you don't enable any, the simulator won't open any deal. Remember this behaves as an AND operator, all enabled conditions + the BUY signal itself must be true to open a deal.

The intention is to mimic how exactly how 3C behaves when using this approach.

2) Now the results table renders in green when there's a deal open in profit. If the deal is open and it's at a loss it still renders it in red.
Release Notes: open trades appear in green when there's an open deal in profit
Release Notes: I think it's time to give some love to the stop loss:
- Now the backtests calculates the SL% relative to the base order just like 3C does. Before we were using relative to the average position price.
- If you use SL we plot the SL level in grey. Before it was not possible to know where is the SL located in the chart.
Release Notes: layout and label improvements
Release Notes: - fixing issues calculating profits affecting short bots

Join our Patreon to gain access to the private scripts.
Invite-only script

Access to this script is restricted to users authorized by the author and usually requires payment. You can add it to your favorites, but you will only be able to use it after requesting permission and obtaining it from its author. Contact TheTradingParrot for more information, or follow the author's instructions below.

Please note that this is a private, invite-only script that was not analyzed by script moderators. Its compliance to House Rules is undetermined. TradingView does not suggest paying for a script and using it unless you 100% trust its author and understand how the script works. In many cases, you can find a good open-source alternative for free in our Community Scripts.

Author's instructions

You can use this script by becoming a VIP member of

Want to use this script on a chart?

Warning: please read before requesting access.