Original Strategy - Backtest & Alerts [AlgoRider]█ OVERVIEW
This indicator simulates an efficient trading strategy developed by our team in a simple and effective way, the primary objective when designing it was to make its reading and use as simple as possible for TradingView users. The Backtesting feature has been designed to keep only the most essential information to obtain clear and precise results directly on the graph. The settings interface has also been designed for ergonomic and simplified use. The user is free to customize the parameters as he wishes and according to his trading profile by having the choice, for example, of using options to reduce the risk of loss, to increase the win rate, to optimize profits. Automation is made possible and facilitated thanks to preconfigured alert conditions.
█ CONCEPTS
How the strategy works :
When the price is close to its equilibrium (represented by an exponential moving average - EMA) and it starts to take an upward or downward direction the script will issue Long or Short entry orders. If the price turns and goes to the opposite direction, the script quickly cuts the position by issuing a Stop Loss order. When the price takes a real clear direction, this is where the script will be able to accumulate profits.
What makes this script unique is :
• That it is entirely developed by us, inspired by a strategy that is little known and little used in the trading world, in particular because it often involves a greater number of losing trades than winning trades.
• Its ease of reading and use. The backtesting feature was designed to clearly display the most important information in a data table directly on the chart. The user is not lost with dozens of superfluous data and can directly access the most essential information to see how the strategy has performed in the past.
• Its ease of configuration and customization. Once in the configuration window, again the user is not lost, because there is only one main parameter to modify, it is the length of the EMA, which will influence the timing of entries and exits trades. Then there are a few other non-mandatory parameters to fine-tune risk management and maximize profits. (Detailed description of the settings further down the page)
• Strategy automation made easy and fast thanks to several types of alerts which are differentiated for entries, for auto-exits and for Custom TP and SL. These alerts can be configured to send the messages by email or via Webhooks.
• The indicator has several custom options allowing its user to go further than the basic strategy. Several confirmations for entries are available as well as the possibility of adding or not a personalized TP and/or SL.
• There is no repaint, once an entry/exit symbol or drawing is displayed it doesn't change anymore. The Short, Long and auto-Exit signals appear only at the open of the candles, just after the signal was confirmed at the close of the previous candle. The custom TP and custom SL signals can appear when a candle is not yet finished, but once displayed they don't change.
█ HOW TO PROCEED
1 — Once the script is applied to your chart, it already works with its default settings. You can already see the performance of the strategy in the data table directly on the chart (in the top right corner by default).
2 — You can customize the strategy and influence the results/performance by modifying its parameters. 3 types of parameters are present and can be modified.
3 — This strategy is designed for the cryptocurrency market in priority, but you can also try it on other types of assets. It works on Futures but you can also try it on Spot market mainly for LONG trades.
4 — You can apply the script in every timeframe. We do not recommend using it below m30 because in most cases the statistics are unfavorable largely because of the fees. (This is not a financial advice but only for the use of the indicator)
█ FEATURES
Screenshot on BYBIT:EGLDUSDT Bybit Futures, H1, with default parameters, from 2022-01-01 to 2022-09-27, to show the settings window
• Settings For Backtesting
- Strategy : Choose from a drop-down list if the strategy should execute only Long trades or only Short trades or both. Default Both.
- Invest. : Choose the amount you want to invest in the simulation. Default 10000.
- Position : Choose the amount of the position (Size order) that will be used during the simulation. This will be the $ amount staked/involved for each trade entry.
Ex: If you put 20000 in position and 10000 in Invest. We consider that you use at least a leverage x2. Default 10000.
- Slipp. TP : Choose the amount in percentage of average slippage for Take Profits. This parameter makes it possible to predict a potential gap between the theoretical exit price for each TP (On the graph) and the real exit price on an exchange when implementing the strategy for real (slippage may be due to a time lag of a few seconds from execution time of the order on the exchange and/or due to the execution of a market order).
Ex: If a TP exit order of a Long trade, with entry $19000 (on BTCUSDT), is carried out in theory on the chart at $20000, in practice on the exchange the script have indeed sent an exit order at 20000 , but if the true exit price is 20050, the TP slippage is then +0.25%. Default 0.
- Slipp. SL : Choose the amount in percentage of average slippage for Stop Losses. This parameter makes it possible to predict a potential gap between the theoretical exit price for each SL (On the graph) and the real exit price on an exchange when implementing the strategy for real.
Ex: If an SL exit order of a Long trade, entry $19000 (on BTCUSDT), is carried out in theory on the chart at $18000, in practice on the exchange the script have indeed sent an exit order at 18000 $, but if the true exit price is 17950, the slippage SL is then +0.278% . Default 0.
- Fees % : Choose the percentage amount of fees applied to each trade to simulate the application of the strategy on the exchange of your choice. Applies to the entry and exit of each trade. Ex: For Binance Futures: 0.04; For Bybit futures: 0.06; For Ftx Futures: 0.075. Default 0.
- Cumulate Trades : If you check this, the Backtest will use 100% of the balance as Order Size (Position) for All or in the next X consecutive trades. Default not checked.
⚠️ Be Careful please, this option is available to show the full extent and possibilities of the algorithm when pushed to its limits thanks to the accumulation of profits (cumulative earnings), but it is a strategy that involves great risk. If a bad trade suffers a -50% loss, 50% of the account balance is lost, if the position is liquidated, the entire account balance is lost.
- All : If you check this All trades will be accumulated. Default not checked.
- Consecutive Trades : Choose the number of trades to accumulate. After X consecutive trades, the algorithm reassigns the initial order size to the current one and starts again for X consecutive trades. Minimum Value 2, Default 2.
• Settings To Optimize Performances and Risk Management
- (Main Parameter) EMA Length : Choose the length of the EMA. This value will determine the exponential moving average plot (blue line) that represents the equilibrium in this strategy. Depending on the positioning of the price around this equilibrium, the algorithm will decide to trigger Long or Short entry alerts, and exit alerts. Default 200.
- 1 - Confirm (After X Bar(s)) : If you check this, when the algorithm will detect an entry, it will wait for the number of bars you have entered to actually trigger the entry alert. Default not checked.
- Nb Bar : Enter here the number of bar you want, will be taken into account only if you check (1) Confirm (After X Bar(s)). Default 2.
- 2 - Confirm (Trend) : If you check this, when the algorithm will detect an entry, it will check that the trend is similar to the direction of the trade, if not, it will wait that the trade goes in the same direction as the trend to actually trigger the entry alert. Default not checked.
- OR/AND : This choice is taken into account only if you tick both confirmations. If you choose OR: The first of the 2 confirmations to be validated will trigger the entry alert. If you choose AND : once confirmation (1) is validated, the algorithm waits for confirmation (2) to be validated to actually trigger the entry alert. Default OR.
- Use TP / Use SL : If you check these, the algorithm will trigger personalized trade exit alerts when the price evolution has reached the amounts indicated since the trade entry. Default not Checked.
- % TP - SL : Indicate here the personalized amount in percentage that you want for your Take Profit and Stop Loss of each trade. Default 15-5.
• Settings For Appearances
- Small-size Data Table : If you check this, the data table will become smaller to free up more space on the chart to make it visually more pleasing. Default not checked.
Hide Table /
- Hide Labels / : You can check these to get a cleaner chart and focus only on what interests you in the indicator. Default not checked.
Hide Risk-Reward Areas
█ MAIN PARAMETERS TO USE
• In the default settings none of the box settings are checked. Basic strategy is made to be applied this way.
• The main parameter (the length of the EMA) is by default 200 because it is a known value that many traders rely on in many trading strategies. Moreover in this strategy it works in many cases and on different timeframes.
• To go further the user of the indicator is free to modify the parameters of the category "Leading Parameters - Risk Management" to reduce risks and to optimize profits.
• You can find below our recommendations for the EMA length value corresponding to the main timeframes.
m30 — EMA Length = 400 | 800
H1 — EMA Length = 200 | 400
H2 — EMA Length = 200 | 250
H4 — EMA Length = 100 | 200
D — EMA Length = 20 | 40
⚠️ We have chosen to recommend these settings because they will work in most cases, on most cryptoassets, but of course they will not work 100% of the time on all assets and will not always give positive results in the backtest, and they are not the most optimized parameters either. The user of the indicator is free to optimize the asset on which he wants to trade in his own way. Just as we do not give financial advice, we do not encourage to trade any asset in particular.
█ STATISTICS
The statistics presented below are an example of the results that the strategy can provide. (Reminder: These statistics are made over a past period and there is no guarantee that the same performance will reproduce in the future) .
For the demonstration we chose to apply the strategy on the Top 5 marketcap cryptos in September 2022. They are not the most favorable coins for this strategy but at least this way we don't take the most suitable assets to show wonderful and biased results. Likewise for the parameters used which are the default ones and which are not the most optimized parameters, much better results are possible. We chose Binance because it has the highest volumes and liquidity and the most historical data. We chose H1 because it is one of the most used timeframes.
BTC
Screenshot on BINANCE:BTCUSDTPERP Binance Futures, H1, with default parameters (EMA : 400), from 2022-01-01 to 2022-09-27
ETH
Screenshot on BINANCE:ETHUSDTPERP Binance Futures, H1, with default parameters (EMA : 400), from 2022-01-01 to 2022-09-27
BNB
Screenshot on BINANCE:BNBUSDTPERP Binance Futures, H1, with default parameters (EMA : 400), from 2022-01-01 to 2022-09-27
XRP
Screenshot on BINANCE:XRPUSDTPERP Binance Futures, H1, with default parameters (EMA : 200), from 2022-01-01 to 2022-09-27
ADA
Screenshot on BINANCE:ADAUSDTPERP Binance Futures, H1, with default parameters (EMA : 400), from 2022-01-01 to 2022-09-27
To show the potential of the indicator and push it to its limits, here is an example of the strategy applied for about 2 years (Up to the maximum of historical data available).
⚠️ It must be taken into account that during the period of this backtest the last Bullrun took place and it was a very favorable period for the strategy and for this altcoin (FTM), nothing ensures that it will happen again. ⚠️
FTM
Screenshot on BINANCE:FTMUSDTPERP Binance Futures, H4, with default parameters ( without cumulative earnings) and EMA : 400, start on 2020/12/03 to 2022/09/27
✅ All of the above statistics are verifiable by anyone using the indicator's backtesting system.
█ LIMITATIONS
• Despite the fact that we can see good performances when we backtest the strategy, we must take into account the fact that these are results performed in the past and that in no case does this guarantee that these same performances will be repeated again in the future.
• The automation of this strategy is made possible and is facilitated by alerts, but you must be aware of the fact that if you decide to put this strategy into practice in real life, you are solely responsible for the results that you will be able to obtain and you must be aware of the possibility at all times of partial or even total losses of your invested capital.
• Keep in mind that generating profits in trading is difficult. A strategy can perform very well at one time in the past during a period that is favorable to it, then from one day to the next it can give really bad results for several months or years.
• When backtesting a strategy, there are many factors to consider, not just trade entries to which you add a Take Profit and sometimes a Stop Loss. You must at least take into account the size of the position in relation to the capital you want to invest, the trading fees, the slippages (which can be really important depending on the exchange on which you are trading and depending on the asset you are trading), trading frequency, risk management, momentum, volumes and even more.
• This indicator has been optimized for crypto, you can try to use it on other type of assets but again, at your own risk.
The information published here on TradingView is not prohibited, doesn't constitute investment advice, and isn't created solely for qualified investors.
═════════════════════════════════════════════════════════════════════════
Important to note : our indicators with the same backtesting system are published in separate publications, because putting them together in a single script would considerably slow down the execution of the script. In addition each indicator, even when it is based on a simple technical indicator, has several options, parameters and entry/exit conditions specific to the underlying technical indicator. Finally, we want to keep the simplicity of use, configuration and understanding of our indicator by not mixing strategies that have nothing to do with each other.
Pesquisar nos scripts por "backtest"
Candlestick Patterns Backtester [Optimized]Candlestick Patterns Backtester
What this is: This indicator is based on a really cool candlestick pattern backtester that I found (I'll update this later when I remember where I got it from or find the actual author). The original had this massive table showing win/loss ratios for a bunch of candlestick patterns, and according to the built-in backtester, it was actually profitable - which was pretty impressive.
The Problem: I played around with the original for a while but honestly wasn't really able to get it to work well at all for actual trading. It was still pretty cool to look at though! The main issues were:
It was just a big static table - hard to do anything useful with it
Couldn't send signals out to other strategies
The code was a monster - like 2,000+ lines of repetitive mess
What I Did: I completely refactored this thing and got it down from 2,000+ lines to just a few hundred lines. Much cleaner now! Here's what it does:
45+ Candlestick Patterns - All the classics are in there
Dynamic Filtering - Set your own requirements (minimum win rate, profit factor, total trades, etc.)
Flexible Logic - Choose AND/OR logic for your filters
Signal Generation - Creates actual buy/sell signals you can use with other strategies
Visual Badges - Shows pattern badges on chart when they meet your criteria
Active Patterns Table - Only shows patterns that are currently profitable based on your settings
Settings You Can Adjust:
Minimum win rate threshold
Minimum profit factor
Minimum number of trades required
Whether to use AND or OR logic for filtering
Colors, badge display, debug options
Reality Check: Trading these patterns really wasn't for me, but it was still a great learning experience. The backtesting results look good on paper, but as always, past performance doesn't guarantee future results. Use this as a research tool and educational resource more than anything else.
Credit: This is based on someone else's original work that I heavily modified and optimized. I'll update this description once I track down the original author to give proper credit where it's due.
This introduction captures your casual, honest tone while explaining the technical improvements you made and setting realistic expectations about the indicator's practical use.
ZCrypto 3commas - All in oneIntroducing the "3commas All Built-in Indicators in One Script" for TradingView!
Tired of wondering which 3commas-built-in indicators to use and how to combine them? This script is here to make your life easier by answering this question for you.
Instead of spending hours paper trading on 3commas and hoping for the best combined indicator signals, save time and find more accurate results on TradingView.
This indicator combines any of the 3commas-built-in indicators into one signal, allowing you to verify which indicators work best together.
You can combine two or more indicators, up to a maximum of 17, and backtest your combined signal with the Zendog integration - it's simple and easy!
The script includes the following indicators:
• TV Technical Rating x 3
• RSI x 3
• ULT x 1
• BB x 3
• MACD x 2
• MFI x 1
• CCI x 1
• PSAR x 1
• BTC, DXY Filter x 1
• QFL
• Zendog integration
The indicator fires two types of signals: entry signals and exit signals.
To fire entry signals, the script uses the following conditions:
• TV Technical Rating: If the rating is "Buy" or "Strong Buy”, then the signal is fired.
• RSI: If the RSI value is below the RSI threshold, then the signal is fired.
• ULT: If the Ultimate Oscillator value is below the ULT threshold, then the signal is fired.
• BB: If the candle is closed below the channel (lower band), then the signal is fired.
• MACD: If the value of the MACD line is < 0 and the MACD line crosses the Signal line from bottom to top, then the signal is fired.
• MFI: If the candle is closed and its value crosses the MFI threshold from bottom to top, then the signal is fired.
• CCI: If the CCI Value crosses the CCI threshold, then the signal is fired.
• PSAR: If the current price is above the Parabolic SAR, then the signal is fired.
• QFL: If the QFL base (support level) is cracked and the price is <= the crack % of drop, then the signal is fired.
• BTC, DXY Filter: If the current price is higher than the SMA length of Bitcoin (BTC) and the US Dollar Index (DXY) is below it, then the signal is fired.
To fire exit signals, the script uses the following conditions:
• TV Technical Rating: If the rating is "Sell" or "Strong Sell”, then the signal is fired.
• RSI: If the RSI value is above the RSI threshold, then the signal is fired.
• QFL SELL: If the QFL peak (resistance level) is cracked and the price is >= the crack % of pump, then the signal is fired.
to use it with Zendog Backtester here is how you could set it up
Say goodbye to the guessing game and save time with the "3commas All Built-in Indicators in One Script" on TradingView.
ichimoku Masters Backtester LightThis Indicator has so many options for build your own strategy
With this indicator you can build your own strategy using the options that we provided here
in the "Static Enter" Section you can choose where do you want to enter your position and customize it with "Enter Candle" Section,by specifying these options, the indicator will start opening the position for you and show you the backtest.
In the "Static Exit (SL & TP)" section you can choose where do you want to exit your positions with setting target and stop for your positions.
And at the end you can set alert on opening and closing position and be aware of that
We hope that you enjoy using ichimoku Masters Backtester Light
-Notice : The Sections: "Dynamic Enter" , "Dynamic Exit" , "9Br Enter" , "9Br Exit" , "Pre Cross" , "Cross Enter" , "Cross Exit" , "Chiko Enter" , "Break Enter" , "Pre Switch" , "Switch Enter" , "Switch Exit" , "Ichi Elements" , "Ichi Elements Order" and "Risk Management" are limited on this version and you are not able to use them
- the "Name" Argument is for naming your strategy
- Open Section has 3 options :
1 : Buy/Sell opens positions when ichimoku cloud and conversion and base line cross at the sametime
2 : 26BoxBr opens position when candle breaks the ichimoku 26 box that indicator builds on "Box" Section
3 : 52BoxBr opens position when candle breaks the ichimoku 52 box that indicator builds on "Box" Section
- Box Section has 6 options :
1 : Cr sets the box on conversion and base cross
2 : OldCr sets the box on conversion and base cross with the beginning candle
3 : PC sets the box on a cross which has no cross before until 26 candles
4 : 9Signal Box sets the box on 9 candles of open position candle
5 : 26Signal Box sets the box on 26 candles of open position candle
4 : 52Signal Box sets the box on 52 candles of open position candle
- Enter1% sets the percent of entry position
- Risk% sets the percent you want to risk your equity
- Max Leverage sets the maximum leverage you want to have on your positions
- S2S is for staying on the position and the indicator does not open the opposite position
- Enter Candle Section has 14 check boxes:
1 : Scandle means that our open position candle should be standard
2 : NoScandle means that our open position candle should not be standard
3 : Tr means that our open position candle should be green for long positions and red for short positions
4 : NoTr means that our open position candle should be red for long positions and green for short positions
5 : G means that our open position candle should be big candle
6 : NoG means that our open position candle should not be big candle
7 : 9Grd means that conversion line shoud be yellow for long positions and white for short positions
8 : No9Grd means that conversion line shoud not be yellow for long positions and white for short positions
9 : 26Grd means that base line shoud be yellow for long positions and white for short positions
10 : No26Grd means that base line shoud not be yellow for long positions and white for short positions
11 : 52Grd means that Lead2 line shoud be yellow for long positions and white for short positions
12 : No52Grd means that Lead2 line shoud not be yellow for long positions and white for short positions
13 : InCL means that our open position candle should be in ichimoku cloud
14 : OutCL means that our open position candle should not be in ichimoku cloud
- Static Exit (SL & TP)
- Sl Section has 6 Options:
1 : Middle26 sets the stop loss of the position on the middle of the box
2 : 9 Stop sets the stop loss of the position on the 9 candles box
3 : 26 Stop sets the stop loss of the position on the 26 candles box
4 : 52 Stop sets the stop loss of the position on the 52 candles box
5 : 26Double box sets the stop loss of the position on the Double of 26 candles box
6 : 52Double box sets the stop loss of the position on the Double of 52 candles box
- in TP we can set our targets from 1 to 20
- LogTp sets our target based on logarithm
- Multiple Enter:
in this section we can set our additional orders for open positions,for this you should turn on the "On" button and then set your orders base on box, for example:
when you put 50 on Enter2 and 10 on Enter2% ,then indicator sets an order on the 50 percent of box in 10% of your equity
- Multiple Exit:
in this section you can set your step exit of order, for this you should turn on the "on" button and set your steps on box targets, for example:
when you put 1 on Exit1 and 10 on Exit1% , then indicator exit 10 percent of your position on the target 1 of box
- RF Stands for risk free and you can risk free your positions using RF ,for example :
when you put 1 on RF and 10 on RF% ,then indicator place your stop on opening position candle when it touches the target 1 of the box and exits 10 percent of your position
- Ichi Numbers : in this section you can specify your ichimoku numbers
- C stands for Conv
- B stands for Base
- L stands for Lead2
- Visual Setting : in this section you can choose variable that you want to see on the chart
- Long TP/SL shows you the Long position target and stop
- Short TP/SL shows you the Short position target and stop
- Cloud shows you the ichimoku cloud
- Offset shifts the ichimoku clouds on 26 candles
- Conv shows you the conversion line
- Base shows you the base line
- Chiko shows you the chiko span line
- Pre shows you the point that conv prediction line and base prediction line cross each other and lead2 prediction line and lead1 prediction line cross too at the same time
- Cr shows you the cross point of conv and base lines
- PC shows the cross point of conv and base lines which has no cross up to 26 candles ago
- EqCr shows you the cross point of conv and base lines which the conv and base are equal
- Buy_Sell shows you the point that conv line and base line cross each other and lead2 line and lead1 line cross too at the same time
- Position Info shows you the information of position such as leverage and entry equity
- Enjoy :)
Zendog SHORT DCA Trigger RSI+StochRSIThis is a script that generates a SELL signal by combining RSI and Stochastic RSI into the same script and that can easily be integrated into an external Backtester like the one I published.
The script uses default values for RSI and Stochastic RSI overbought conditions.
They should be adjusted for specific assets and timeframes so they better match the current trend. Please beware you might overfit settings to match a short timeframe trend (like a few days or hours). If this is the case once the trend changes the signals will not be accurate.
The purpose of this script is to provide some pine code that can be used to further combine multiple indicators into a SHORT Deal Start signal.
Integration with the Zendog Backtster:
- add the backtester on the chart
- add this script on the chart
- in the Zendog backtester Deal start type select "External indicator"
- in the Zendog backtester Indicator source and value select "Zendog SHORT DCA Trigger RSI+StochRSI: SIGNAL"
Zendog LONG DCA Trigger RSI+StochRSIThis is a script that generates a BUY signal by combining RSI and Stochastic RSI into the same script and that can easily be integrated into an external Backtester like the one I published.
The script uses default values for RSI and Stochastic RSI oversold conditions.
They should be adjusted for specific assets and timeframes so they better match the current trend. Please beware you might overfit settings to match a short timeframe trend (like a few days or hours). If this is the case once the trend changes the signals will not be accurate.
The purpose of this script is to provide some pine code that can be used to further combine multiple indicators into a LONG Deal Start signal.
Integration with the Zendog Backtster:
- add the backtester on the chart
- add this script on the chart
- in the Zendog backtester Deal start type select "External indicator"
- in the Zendog backtester Indicator source and value select "Zendog LONG DCA Trigger RSI+StochRSI: SIGNAL"
Stratos - Backtesting - Final Version - CryptoFoudid.comHi all !
Here a script based on moving averages with take profit and Stop loss configuration.
You can backtest on every timeframe and choose from when you want to backtest.
We work with our customers with automatic trading on bitmex platfform.
If you want to subscribe, you can dm me directly or on comments below
Walk Forward PatternsINTRO
In Euclidean geometry, every mathematical output has a planar projection. 'Walk Forward Patterns' can be considered a practical example of this concept. On the other hand, this indicator might also be viewed as an experiment in 'how playing with Lego as a child contributes to time series analysis' :)
OVERVIEW
This script dynamically generates the necessary optimization and testing ranges for Walk Forward Analysis based on user-defined bar count and length inputs. It performs automatic calculations for each step, offers 8 different window options depending on the inputs, and visualizes the results dynamically. I should also note that most of the window models consist of original patterns I have created.
ADDITIONAL INFO : WHAT IS WALK FORWARD ANALYSIS?
Although it is not the main focus of this indicator, providing a brief definition of Walk Forward Analysis can be helpful in correctly interpreting the results it generates. Walk Forward Analysis (WFA) is a systematic method for optimizing parameters and validating trading strategies. It involves dividing historical data into variable segments, where a strategy is first optimized on an in-sample period and then tested on an out-of-sample period. This process repeats by shifting the windows forward, ensuring that each test evaluates the strategy on unseen data, helping to assess its robustness and adaptability in real market conditions.
ORIGINALITY
There are very few studies on Walk Forward Analysis in TradingView. Even worse, there are no any open-source studies available. Someone has to start somewhere, I suppose. And in my personal opinion, determining the optimization and backtest intervals is the most challenging part of WFA. These intervals serve as a prerequisite for automated parameter optimization. I felt the need to publish this pattern module, which I use in my own WFA models, partly due to this gap on community scripts.
INDICATOR MECHANICS
To use the indicator effectively, you only need to perform four simple tasks:
Specify the total number of bars in your chart in the 'Bar Index' parameter.
Define the optimization (In-Sample Test) length.
Define the testing (Out-Of-Sample Test) length.
Finally, select the window type.
The indicator automatically models everything else (including the number of steps) based on your inputs. And the result; you now have a clear idea of which bars to use for your Walk Forward tests!
A COMMONLY USED WINDOW SELECTION METHOD: ROLLING
A more concrete definition of Walk Forward Analysis, specifically for the widely used Rolling method, can be described as follows:
Parameters that have performed well over a certain period are identified (Optimization: In-Sample).
These parameters are then tested on a shorter, subsequent period (Backtest: Out-of-Sample).
The process is repeated forward in time (At each step, the optimization and backtest periods are shifted by the backtest length).
If the cumulative percentage profit obtained from the backtest results is greater than half of the historical optimization profit, the strategy is considered "successful."
If the strategy is successful, the most recent (untested) optimization values are used for live trading.
OTHER WINDOW OPTIONS
ANCHORED: That's a pattern based on progressively expanding optimization ranges at each step. Backtest ranges move forward in a staircase-like manner.
STATIC: Optimization ranges remain fixed, while backtest ranges are shifted forward.
BLOCKED: Optimization ranges are shifted forward in groups of three blocks. Backtest ranges are also shifted in a staircase manner, even at the cost of creating gaps from the optimization end bars.
TRIANGULAR: Optimization ranges are shifted forward in triangular regions, while backtest ranges move in a staircase pattern.
RATIO: The optimization length increases by 25% of the initial step’s fixed length at each step. In other words, the length grows by 25% of the first step's length incrementally. Backtest ranges always start from the bar where the optimization ends.
FIBONACCI: A variation of the Ratio method, where the optimization shift factor is set to 0.618
RANDOM WALK
Unlike the window models explained above, we can also generate optimization and backtest ranges completely randomly—offering almost unlimited variations! When you select the "Random" option in the "Window" parameter on the indicator interface, random intervals are generated based on various trigonometric calculations. By changing the numerical value in the '🐒' parameter, you can create entirely unique patterns.
WHY THE 🐒 EMOJI?
Two reasons.
First, I think that as humanity, we are a species of tailless primates who become happy when we understand things :). At least evolutionarily. The entire history of civilization is built on the effort to express the universe in a scale we can comprehend. 'Knowledge' is an invention born from this effort, which is why we feel happiness when we 'understand'. Second, I can't think of a better metaphor for randomness than a monkey sitting at a keyboard. See: Monkey Test.
Anyway, I’m rambling :)
NOTES
The indicator generates results for up to 100 steps. As the number of steps increases, the table may extend beyond the screen—don’t forget to zoom out!
FINAL WORDS
I haven’t published a Walk Forward script yet . However, there seem to be examples that can perform parameter optimization in the true sense of the word, producing more realistic results without falling into overfitting in my library. Hopefully, I’ll have the chance to publish one in the coming weeks. Sincerely thanks to Kıvanç Özbilgiç, Robert Pardo, Kevin Davey, Ernest P. Chan for their inspiring publishments.
DISCLAIMER
That's just a script, nothing more. I hope it helps everyone. Do not forget to manage your risk. And trade as safely as possible. Best of luck!
© dg_factor
00 Averaging Down Backtest Strategy by RPAlawyer v21FOR EDUCATIONAL PURPOSES ONLY! THE CODE IS NOT YET FULLY DEVELOPED, BUT IT CAN PROVIDE INTERESTING DATA AND INSIGHTS IN ITS CURRENT STATE.
This strategy is an 'averaging down' backtester strategy. The goal of averaging/doubling down is to buy more of an asset at a lower price to reduce your average entry price.
This backtester code proves why you shouldn't do averaging down, but the code can be developed (and will be developed) further, and there might be settings even in its current form that prove that averaging down can be done effectively.
Different averaging down strategies exist:
- Linear/Fixed Amount: buy $1000 every time price drops 5%
- Grid Trading: Placing orders at price levels, often with increasing size, like $1000 at -5%, $2000 at -10%
- Martingale: doubling the position size with each new entry
- Reverse Martingale: decreasing position size as price falls: $4000, then $2000, then $1000
- Percentage-Based: position size based on % of remaining capital, like 10% of available funds at each level
- Dynamic/Adaptive: larger entries during high volatility, smaller during low
- Logarithmic: position sizes increase logarithmically as price drops
Unlike the above average costing strategies, it applies averaging down (I use DCA as a synonym) at a very strong trend reversal. So not at a certain predetermined percentage negative PNL % but at a trend reversal signaled by an indicator - hence it most closely resembles a dynamically moving grid DCA strategy.
Both entering the trade and averaging down assume a strong trend. The signals for trend detection are provided by an indicator that I published under the name '00 Parabolic SAR Trend Following Signals by RPAlawyer', but any indicator that generates numeric signals of 1 and -1 for buy and sell signals can be used.
The indicator must be connected to the strategy: in the strategy settings under 'External Source' you need to select '00 Parabolic SAR Trend Following Signals by RPAlawyer: Connector'. From this point, the strategy detects when the indicator generates buy and sell signals.
The strategy considers a strong trend when a buy signal appears above a very conservative ATR band, or a sell signal below the ATR band. The conservative ATR is chosen to filter ranging markets. This very conservative ATR setting has a default multiplier of 8 and length of 40. The multiplier can be increased up to 10, but there will be very few buy and sell signals at that level and DCA requirements will be very high. Trade entry and DCA occur at these strong trends. In the settings, the 'ATR Filter' setting determines the entry condition (e.g., ATR Filter multiplier of 9), and the 'DCA ATR' determines when DCA will happen (e.g., DCA ATR multiplier of 6).
The DCA levels and DCA amounts are determined as follows:
The first DCA occurs below the DCA Base Deviation% level (see settings, default 3%) which acts as a threshold. The thick green line indicates the long position avg price, and the thin red line below the green line indicates the 3% DCA threshold for long positions. The thick red line indicates the short position avg price, and the thin red line above the thick red line indicates the short position 3% DCA threshold. DCA size multiplier defines the DCA amount invested.
If the loss exceeds 3% AND a buy signal arrives below the lower ATR band for longs, or a sell signal arrives above the upper ATR band for shorts, then the first DCA will be executed. So the first DCA won't happen at 3%, rather 3% is a threshold where the additional condition is that the price must close above or below the ATR band (let's say the first DCA occured at 8%) – this is why the code resembles a dynamic grid strategy, where the grid moves such that alongside the first 3% threshold, a strong trend must also appear for DCA. At this point, the thick green/red line moves because the avg price is modified as a result of the DCA, and the thin red line indicating the next DCA level also moves. The next DCA level is determined by the first DCA level, meaning modified avg price plus an additional +8% + (3% * the Step Scale Multiplier in the settings). This next DCA level will be indicated by the modified thin red line, and the price must break through this level and again break through the ATR band for the second DCA to occur.
Since all this wasn't complicated enough, and I was always obsessed by the idea that when we're sitting in an underwater position for days, doing DCA and waiting for the price to correct, we can actually enter a short position on the other side, on which we can realize profit (if the broker allows taking hedge positions, Binance allows this in Europe).
This opposite position in this strategy can open from the point AFTER THE FIRST DCA OF THE BASE POSITION OCCURS. This base position first DCA actually indicates that the price has already moved against us significantly so time to earn some money on the other side. Breaking through the ATR band is also a condition for entry here, so the hedge position entry is not automatic, and the condition for further DCA is breaking through the DCA Base Deviation (default 3%) and breaking through the ATR band. So for the 'hedge' or rather opposite position, the entry and further DCA conditions are the same as for the base position. The hedge position avg price is indicated by a thick black line and the Next Hedge DCA Level is indicated by a thin black line.
The TPs are indicated by green labels for base positions and red labels for hedge positions.
No SL built into the strategy at this point but you are free to do your coding.
Summary data can be found in the upper right corner.
The fantastic trend reversal indicator Machine learning: Lorentzian Classification by jdehorty can be used as an external indicator, choose 'backtest stream' for the external source. The ATR Band multiplicators need to be reduced to 5-6 when using Lorentz.
The code can be further developed in several aspects, and as I write this, I already have a few ideas 😊
PSE, Practical Strategy EnginePSE, Practical Strategy Engine
A ready-to-use engine that is simple to connect your indicator to, simple to use, and effective at generating alerts for order-filled events during the real-time candle.
Great for
• Evaluating indicators on important metrics without the need to write a strategy script for backtesting.
• Using indicators with built-in risk management.
About The PSE
This engine accepts entry and exit signals from your indicator to provide trade signals for both long and short positions. The PSE was written for trading Funds (e.g. ETF’s), Stocks, Forex, Futures, and Cryptocurrencies. The trades on the chart indicate market, limit, and stop orders. The PSE allows for backtesting of trades along with metrics of performance based on trade-groups with many great features.
Note: A link to a video of how to connect your indicator(s) to the PSE is provided below.
Key Features
Trade-Grp’s
A Trade-Grp makes up one or more trade positions from the first position entering to the last position exiting. Using Trade-Grp’s instead of positions should help you better assess if the metric results fit your trading style.
Below are two (2) examples of a Trade-Grp with three (3) positions.
Metrics
A table of metrics is available if the “Show Metrics Table” checkbox is enabled on the Inputs tab, but metrics always show in the Data Window.
Examples of the Metrics Table are shown below.
• ROI (Return on Investment) and CAGR (Compound Annual Growth Rate) are based on the Avg Invest/Trade-Grp and are adjusted for dividends if the “Include Dividends in Profit” checkbox is enabled.
• Profit/Risked is based on Trade-Grp’s. Also known as reward/risk, as well as expectancy per amount risked. It determines the effectiveness of your strategy and provides a measure of comparison between your strategies. This is adjusted for dividends if the “Include Dividends in Profit” checkbox is enabled. In the Data Window the color is green when above the breakeven point of making a profit and red when below the breakeven point. In the Table the color is red if below the breakeven point, otherwise it is the default color. For example, using the 3 metrics tables above:
For every USD risked the profit is 1.709 USD.
For every BTC risked the profit is 0.832 BTC.
For every JPY risked the profit is 0.261 JPY.
• Winning % is based on Trade-Grp’s. In the Data Window the color is green when above the breakeven point of making a profit and red when below the breakeven point. In the Table the color is red if below the breakeven point, otherwise it is the default color.
The breakeven point is a relationship between the Profit/Risked and Winning % to indicate system profitability potential. Another way to assess trading system performance. For example, for a low Winning % a high Profit/Risked is needed for the system to be potentially profitable.
• Profit Factor (PF) is based on Trade-Grp’s. The dividend payment, if any, is not considered in the calculation of a win or loss. The “Include Dividends in Profit Factor” checkbox allows you the option to either include or not include dividends in the calculation of Profit Factor. The default is enabled.
Must enable the “Include Dividends in Profit” checkbox to include dividends in PF.
Including dividends in PF evaluates the trading strategy with a more overall profitability performance view.
Enable/Disable “Include Dividends in Profit Factor” checkbox also affects the Avg Trade-Grp Loss, and thus Equity Loss from ECL and % Equity Loss from ECL.
• Max Consecutive Losses are based on Trade-Grp’s.
• Nbr of Trade-Grp’s and Nbr of Positions.
These help you to determine if enough trades have occurred to validate your strategy. The Nbr of Positions is the count of positions on the chart. The TV list of trades in the Strategy Tester may indicate more than what is actually shown on the chart. The Data Window includes 'Nbr Strat Tester Trades', which equals the TV listing trades, to help you locate specific trades on the chart.
• Time in Market (%) is based on Trade-Grp’s and date range selected.
• Avg Invest/Trade-Grp will indicate the average amount of money invested in a Trade-Grp. This is adjusted for dividends if the “Include Dividends in Profit” checkbox is enabled.
• Equivalent Consecutive Losses, labeled as Equiv. Cons. Losses (ECL).
This value is determined by the Winning % and Nbr of Trade-Grp’s. This simulates the more likely case of a series of losses, then a small win, then another series of losses to form an equivalent consecutive losing streak. To lower the value, increase the Winning %.
• Equity Loss from ECL is the equity loss from the equivalent consecutive losses.
• % Equity Loss from ECL is the percent of equity loss from the equivalent consecutive losses.
Risk Management
• Pyramid rules enforce and maintain position sizing designated by you on the Inputs tab (% Equity to Risk, Up/Dwn Gap) & Properties tab (number of pyramids, slippage, and commission).
A pyramid position will not occur unless both its stop covers the last entry price with gap/slippage and commission cost of previous trade is covered. If take profit is enabled, a pyramid position will not occur unless commission cost of the trade is covered when take profit target is reached.
• Position sizing, stop-loss (SL), trailing stop-loss (TSL), and take profit (TP) are used.
• Wash sale prevention for applicable assets is enforced. Wash sale assets include stock and fund (e.g. ETF’s).
• No more than one entry position per candle is enforced .
Other Great Features
• Losing Trade-Grp’s indicated at the exit with label text in the color blue. Used to easily find consecutive losses affecting your strategy’s performance. The dividend payment, if any, is not considered in the calculation of a win or loss.
• Position values can be displayed on the chart. The number format is based on the min tick value, but is limited to 8 decimal places only for display purposes.
• Dividends per share and the amount can be displayed on the chart.
• Hold Days . This is the number of days to hold before allowing the next Trade-Grp. Can be a decimal number. This feature may help those trading on a cash account to avoid any settlement violations when trading the same asset.
• Date Filter. Partition the time when trading is allowed to see if the strategy works well across the date range selected. The metrics should be acceptable across all four (4) time ranges: entire range, 1st half, IQR (inter-quartile range), and 2nd half.
• Price gap amount identification. Used in determining if a pyramid entry may be profitable, and may be used in determining slippage amount to use.
• When TP is enabled, the PSE will only allow a pyramid position if the potential is profitable based on commission and price gap selected.
• Trade-Grp’s shown in background color: green for long positions and red for short positions.
• The PSE will alert you to update your stop-loss as the market changes if your exchange/broker does not allow for trailing stop-loss orders. Enable this option on the Inputs tab with Alert Chg TSL.
• The PSE will alert you if your drawdown exceeds Max % Equity Drawdown set on the Inputs tab.
• The PSE will send an alert to warn you of an expiring GTC order.
Some brokers will indicate the order is GTC, Good 'Till Cancelled, but there really is a time limit on the order and is typically 60-120 days. Therefore, the PSE will alert you if you've been in position for close to 60 days so you can refresh your order. The alert is typically a few days before the 60-day time period.
• For order fill alerts just use a {{placeholder}} in the Message of the alert. Details on how to enter placeholders is explained below.
• Identify same bar enter/exit for first entries and pyramids. This is shown in the Data Window as well. This can help you determine what stop-loss % works best for your trading style.
• Leverage trading information is displayed in the Data Window and applies to Trade-Grps.
Failed PosSize or Margin (%): Shows a zero if the failed-to-trade position size was less than 1 or shows the margin % which failed to meet the margin requirement set in the Properties tab. A flag will show on the bar where a failed-to-trade occurred. This is only applicable to the first position of a Trade-Grp. Position the cursor over the flag for the value to show in the Data Window.
Notional Value: total Trade-Grp position size x latest entry price x point value. The equity must be > notional value x margin requirement for a trade to occur.
Current Margin (%): must be greater than margin requirement set on the Properties tab in order for a trade to occur.
Margin Call Price: when enabled on the Style tab is displayed on both the chart and the Data Window as shown below.
PSE Settings
Pyramids
• Pyramiding requires the Stop Method to be set to either TSL or Both (meaning SL & TSL).
• The maximum number of pyramids is determined by the value entered in the Properties tab.
• Pyramid orders require the enter price to be higher than the previous close for Longs and lower than the previous close for Shorts.
• Pyramids also require the stop with gap/slippage to be higher than the last entry price for Longs, and lower than the last entry price for Shorts. This covers all previous positions and maintains position sizing.
• When take profit, TP, is enabled, the pyramids also require that they will be profitable when opening a position assuming they will reach TP. This is automatically adjusted by you with the Dwn Gap/Up Gap, Slippage, and Commission settings.
Inputs Tab
General Settings
Color Traded Background
Enable to change background color where in a trade. Green for long positions and red for short positions.
Show Losing Trade-Grp
Enable to show if losing Trade-Grp and is indicated by text in blue color. The last position may be at a loss, but if there was profit for the Trade-Grp, then it will not be shown as a loss .
Show Position Values
Enable to show the currency value of each position in gold color.
Include Dividends in Profit
This feature is only applicable if the asset pays dividends and the time frame period of the chart is 1D or less, otherwise ignored. The PSE assumes dividends are taken as cash and not reinvested.
Enable to adjust ROI, CAGR, Profit/Risked, Avg Invest/Trade-Grp, and Equity to include dividend payments. This feature considers if you were in position at least one day prior to the ex-dividend date and had not exited until after the ex-dividend date.
When Show Dividends is enabled it will display the payout in currency/share, as well as the total amount based on the number of shares the position(s) of the Trade-Grp are currently holding.
Include Dividends in Profit Factor
This checkbox allows you the option to either include or not include dividends in the calculation of Profit Factor. Must enable the “Include Dividends in Profit” checkbox to include dividends in PF. The dividend payment, if any, is not considered in the calculation of a win or loss.
Show Metrics Table
Options are font size and table location.
Alert Failed to Trade
Enable for the strategy to alert you when a trade did not happen due to low equity or low order size. Applicable only for the first position of a Trade-Grp.
Trade Direction
Options are 'Longs Only', 'Both', 'Shorts Only'.
Hold Days
This is the number of days to hold before allowing the next Trade-Grp. Applies only to the first trade position of a Trade-Grp. Where a Trade-Grp consists of the first position plus any pyramid positions.
The value entered will be overwritten to >= 31 to prevent wash sale for applicable assets in the event the last Trade-Grp was a loss. Wash sale assets include stock and fund (i.e. ETF’s).
The minimum value is the equivalent of 1 candle and is automatically assigned by the PSE if the entered value is equivalent to less than one candle. To calculate Hold Days in # of candles on the Hour chart divide the chart period by 24 x #candles. On the Minute chart divide the chart period by 60 then by 24 x #candles.
Show Vertical Lines at From Date & To Date
Shows a vertical dotted line at the From Date and To Date for visual inspection of the setting.
Date Filter
When enabled, trades are allowed between the From Date and To Date, i.e., the date range.
When disabled, trades are allowed for all candles.
Partition the time when trading is allowed to see if your indicator settings work well across the date range. Click 1st Half, IQR (inter-quartile range), or 2nd Half buttons to trade a portion of the date range.
Select only one at-a-time to partition the time when trading is allowed.
When 1st Half is enabled only trades for the 1st half of the date range are allowed.
When IQR is enabled only trades for the inter-quartile date range are allowed.
When 2nd Half is enabled only trades for the 2nd half of the date range are allowed.
Position Sizing
The % of Equity to Risk has been separated into two (2) areas: for initial trades and for pyramid trades. This allows for greater ability to maximize profits within your acceptable drawdown. A variation of the Anti-Martingale method from the initial trade if you choose to use it in that manner.
% Equity to Risk for Initial Trades: enter the percent of equity you want to risk per position for the initial trades of each Trade-Grp. For example, for 1% enter 1.
% Equity to Risk for Pyramid Trades: enter the percent of equity you want to risk per position for the pyramid trades of each Trade-Grp. For example, for 2% enter 2.
% Equity for Max Position Size: the position size will not exceed this amount. For example, for 25% enter 25.
Max % Equity Drawdown Warning: an alert will be triggered if the maximum drawdown exceeds this v alue. For example, for 10% enter 10.
Stop Methods
NOTE: The Stop Method must be either Both or TSL in order for the pyramids to work. This feature enforces position sizing.
Stop-loss, SL, and trailing stop-loss, TSL, are other features that enforce risk management.
The trailing stop-loss, TSL, is activated immediately if Stop Method = TSL. If Stop Method = Both, then the TSL is activated when its value is above stop-loss, SL, for Longs and below the SL for Shorts.
The calculated TSL value (shown on the chart by + symbol) of the previous bar is used for the current bar and the plot value is off by default, but you can it turn on via the Style tab. This is available so you can better understand how the TSL value used was calculated from. It is beneficial to show when monitoring the real-time candle.
Alert Chg TSL
When enabled, this feature will alert you to update your stop price if it moves greater than the change amount in %. The amount is the absolute % so will work for both Longs and Shorts. For example, for 1% enter 1 . This is provided since some exchanges/brokers do not offer TSL orders and you must manually adjust as price action plays out.
The alert will also suggest a stop limit price based on the gap selected and explained below.
The alert will occur at the close of the candle at the calculated TSL value of the candle just prior to the real-time candle.
Dwn Gap/Up Gap Input Settings
A price gap is the difference between the closing price of the previous candle and the opening price of the current candle. Dwn Gap and Up Gap are illustrated here.
The values of the Dwn Gap and Up Gap can be seen in the Data Window and are based on the settings of the Date Filter.
The options are “zero gap”, "median gap", "avg gap", "80 pct gap", "90 pct gap". The X pct gap stands for X percentile rank. For example, "80 pct gap" means that 80% of the gaps are less than or equal to the value shown in the Data Window. Select “zero gap” to disable this feature.
If Show Stop Limit is enabled, it will show a dotted-line below or above the current stop price where a stop-limit order should be taken. It is shown based on the gap option selected. Again, the PSE trades market, limit, and stop orders, but a stop-limit may be shown if you wanted to see where one would be set using the Up/Dwn Gap.
Dwn Gap: Affects Short Take Profit, Long Pyramid Entries, and to show the Long Stop Limit.
Up Gap : Affects Long Take Profit, Short Pyramid Entries, and to show the Short Stop Limit.
Fixed Take Profit (TP)
When take profit (TP) is enabled, the PSE will determine if opening a pyramid position will be in profit assuming the TP will be hit while considering commission costs (on Properties tab).
The larger of Up Gap or Slippage value is used with Long positions regarding TP.
The larger of Dwn Gap or Slippage value is used with Short positions regarding TP.
Properties Tab
• Initial Capital: Set as desired.
• Base Currency: Leave as Default. The PSE is designed to use the instrument’s currency, therefore leave as Default.
• Order Size: Leave as default. This setting has been disabled and position sizing is handled on the Inputs tab and is based on % of equity.
• Pyramiding: Set as desired.
• Commission: Set as number %. The PSE is designed to only work with commission as a percent of the position value.
• Verify Price for Limit Orders: Set as desired.
Slippage
Adjust Slippage on the Properties tab to account for a realistic bid-ask spread. You can use one of Dwn/Up Gap values or other guidelines. Again, the Dwn/Up Gap values are based on the Date Filter input settings.
Heed warnings from the TradingView Pine Script™ manual about values entered into the Slippage field.
The Slippage (ticks) have a noticeable influence on entry price and exit price especially at the beginning when the date range includes prices from $0.01 to $100,000.00 like that for BTC-USD INDEX. When this is the case, it is best to use different slippage values when partitioning time with the Date Filter.
To minimize the effects of slippage, yet account for it select ‘median gap’ on the Input Tab and use that value for slippage on the Properties tab.
The slippage value is included in the placeholder {{strategy.order.price}}.
Leverage Trading
The PSE is designed to be used both without leverage (the default) and with leverage.
These two settings apply to Trade-Grps. For example, for 5x leverage enter 20 (1/5x100=20).
Margin for Long Positions: Set as desired. The default is 100%.
Margin for Short Positions: Set as desired. The default is 100%.
This setting on the Inputs tab applies to each trade position within a Trade-Grp.
Max % Equity per Position: Set as desired. The default is 20% and intended for non-leverage trading. For leverage trading set as desired. For example, for 3x leverage enter 300 (3x100=300).
Recalculate After Order Is Filled
The PSE uses the strategy parameter calc_on_order_fills=true to allow for enter/exit on the same bar and generate alerts immediately after an order is filled. This parameter is on the Properties tab and is named ‘Recalculate After order is filled’ and is enabled by default.
Disabling this feature will cause the PSE to not work as intended.
You will see the following Caution! on the TV Strategy Tester
This occurs because the PSE has the strategy parameter calc_on_order_fills = true.
Again, the PSE will only work as intended if this parameter is enabled and set to true.
Therefore, you can close the caution sign and be confident of receiving realistic results.
Recalculate On every tick: Disable.
Fill Orders
• Using bar magnifier: Set as desired.
• On Bar Close: Disable. The PSE will not work as intended if this is enabled.
• Using Standard OHLC: Set as desired.
Using The Alert Message Box From TV Strategy Alert
Set alerts to gain access to all the alerts from PSE. This allows for both order filled alerts, as well as the alert function calls related to refresh GTC orders, drawdown exceeded, update stop-loss order, and Failed to Trade.
Example Message for Manual Trading Alerts
(This is just an example. Consult TV manual for possible placeholders to use.)
{
Alert for {{plot("position_for_alert")}} position. (long = 1; short = -1)
{{exchange}}:{{ticker}} on TF of {{interval}} at Broker Name
{{strategy.order.action}} Equity x Equity_Multiplier USD in shares at price = {{strategy.order.price}},
where Equity_Multiplier = {{strategy.order.contracts}} x {{strategy.order.price}} / {{plot("Equity")}}
or {{strategy.order.action}} {{strategy.order.contracts}} shares at price = {{strategy.order.price}}.
}
Note: Use the Equity x Equity_Multiplier method if you have several accounts with different initial capital.
Example Message for Bot Trading Alerts
(You must consult your specific bot for configuring the alert message. This is just an example.)
{
"action": "{{strategy.order.action}}",
“price”: {{strategy.order.price}}
"amount": {{strategy.order.contracts}},
"botId": "1234"
}
Connecting to the PSE
The diagram below illustrates how to connect indicators to the PSE.
The Aroon and MACD indicators are only used here as an example. Substitute your own indicators and add as many as you like.
Connection Indicator for the PSE
A video of how to connect your indicator(s) to the PSE is below.
The Connection Indicator for the PSE, also called here the connection-indicator.
Below is a description of how to connect your chosen indicators to the connection-indicator. Two (2) indicators were chosen for the example, but you may have one (1) or many indicators.
If you have source code access to your indicators you can paste the code directly into the connection-indicator to eliminate the need to have those indicators on the chart and the additional connection of them to the connection-indicator. Below will assume source code to the indicators are not available.
The MACD and Aroon Oscillator are from TV built standard indicators and are shown here just as an example for inputs (i.e. source) to the connection-indicator. They were configured as follows:
The source code for the connection-indicator is shown below. Substitute your own chosen indicators and add as many as you like to create your connection-indicator that feeds into the PSE. The MACD and Aroon Oscillator were simply chosen as an example. Configure your connection-indicator in the manner shown below.
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at mozilla.org
// This is just an example Indicator to show how to interface with the PSE.
// The indicators used in the example are standard TV built indicators.
//@version=5
indicator(title="Connection Indicator for the PSE", overlay=false, max_lines_count=500, max_labels_count=500, max_boxes_count=500)
// Ind_1 INDICATOR ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// This is just and example and used MACD histogram as the source.
Filter_Ind_1 = input.bool(false, 'Ind_1', group='Ind_1 INDICATOR ~~~~~~~~~~~~~~~~~', tooltip='Click ON to enable the indicator')
input_Ind_1 = input.source(title = "input_Ind_1", defval = close, group='Ind_1 INDICATOR ~~~~~~~~~~~~~~~~~')
Entry_Ind_1_Long = Filter_Ind_1 ? input_Ind_1 > 0 ? 1 : 0 : 0
Entry_Ind_1_Short = Filter_Ind_1 ? input_Ind_1 < 0 ? 1 : 0 : 0
Exit_Ind_1_Long = Entry_Ind_1_Short
Exit_Ind_1_Short = Entry_Ind_1_Long
// Ind_2 INDICATOR ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// This is just an example and used Aroon Oscillator as the source. Included limits to use with the oscillator to determine enter and exit.
Filter_Ind_2 = input.bool(false, "Ind_2", group='Ind_2 INDICATOR ~~~~~~~~~~~~~~', tooltip='Click ON to enable the indicator')
Filter_Ind_2_Limit = input.int(35, minval=0, step=5, group='Ind_2 INDICATOR ~~~~~~~~~~~~~~')
Filter_Ind_2_UL = Filter_Ind_2_Limit
Filter_Ind_2_LL = -Filter_Ind_2_Limit
up = input.source(title = "input_Ind_2A Up", defval = close, group='Ind_2 INDICATOR ~~~~~~~~~~~~~~')
down = input.source(title = "input_Ind_2B Down", defval = close, group='Ind_2 INDICATOR ~~~~~~~~~~~~~~')
oscillator = up - down
Entry_Ind_2_Long = Filter_Ind_2? oscillator > Filter_Ind_2_UL ? 1 : 0 : 0
Entry_Ind_2_Short = Filter_Ind_2? oscillator < Filter_Ind_2_LL ? 1 : 0 : 0
Exit_Ind_2_Long = Entry_Ind_2_Short
Exit_Ind_2_Short = Entry_Ind_2_Long
//#region ~~~~~~~ASSEMBLY OF FILTERS ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
// You may have as many indicators as you like. Assemble them in similar fashion as below.
// ——————— Assembly of Entry Filters
Nbr_Entries = input.int(1, minval=1, title='Min Nbr Entries', inline='nbr_in_out', group='Assembly of Indicators')
// Update the assembly based on the number of indicators connected.
EntryLongOK = Entry_Ind_1_Long + Entry_Ind_2_Long >= Nbr_Entries? true: false
EntryShortOK = Entry_Ind_1_Short + Entry_Ind_2_Short >= Nbr_Entries? true: false
entry_signal = EntryLongOK ? 1 : EntryShortOK ? -1 : 0
plot(entry_signal, title="Entry_Signal", color=color.new(color.blue, 0))
// ——————— Assembly of Exit Filters
Nbr_Exits = input.int(1, minval=1, title='Min Nbr of Exits', inline='nbr_in_out', group='Assembly of Indicators', tooltip='Enter the minimum number of entries & exits
required for a signal.')
// Update the assembly based on the number of indicators connected.
ExitLongOK = Exit_Ind_1_Long + Exit_Ind_2_Long >= Nbr_Exits? true: false
ExitShortOK = Exit_Ind_1_Short + Exit_Ind_2_Short >= Nbr_Exits? true: false
exit_signal = ExitLongOK ? 1 : ExitShortOK ? -1 : 0
plot(exit_signal, title="Exit_Signal", color=color.new(color.red, 0))
//#endregion ~~~~~~~END OF ASSEMBLY OF FILTERS ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
The input box for the connection-indicator is shown below. The default for input source is “close”. For Input_Ind_1 click the dropdown and select the MACD Histogram. For Input_Ind_2 click the dropdown and select Aroon Up and Aroon Down as shown.
Signal Connection Section of PSE
Below is a description of how to connect your chosen indicators to the PSE from the connection-indicator.
At the PSE Input tab, the Signal Connection Section is where you select the source of the Entry and Exit Signal to the PSE. These are the outputs from connection-indicator.
The default source is “close”. Click the dropdown and select the entry and exit signal to establish a connection as shown below.
Cyatophilum Universal Oscillator TraderAn indicator to backtest and create an infinite number of strategies using any external indicator.
═════════════════════════════════════════════════════════════════════════
█ HOW IT WORKS
The indicator allows you to create your oscillator strategy and get backtest results from the Strategy Tester.
You can also create alerts for each of the strategy events.
█ HOW TO USE
Choose a strategy direction long or short that you want to create.
Always use regular candle type.
Configure your entry condition . To use any other indicator as source, it needs to be added to the chart first.
If you have the basic (free) TradingView plan, you can only have 1 indicator on your chart, and cannot use this external source feature. For this case, the indicator has a list of built-in oscillator (that can be increased upon request).
Then choose your condition: Cross over, Greater than, Pullback, Turning up, etc.
You now have your entry and should already see trades on the chart!
Next you can fine tune your entry condition or move to the risk management and filters.
Configure your stop loss
Use the stop loss feature to exit a trade at a certain loss.
You can also create a trailing stop using price % movement or ATR.
Configure your profit target
Use the Take Profit feature to set a target in percentage of price. You can also make it trail.
Configure your safety orders
This indicator has a safety orders feature to reduce the risk of your trade. See more below.
Check your backtest parameters
Make sure that the initial capital and order size make sense. Since it is a pyramiding strategy with safety orders, the sum of all deals should not be bigger than the initial capital.
If you use % equity as order size, please note that it will create compounding.
Check the fees, by default they are set to 0.1%.
I also recommend to set a slippage that corresponds to your exchange's spread.
█ FEATURES
• Strategy direction
Configure to go long or short.
• Entry Conditions
- External Oscillator source
- Built-in Oscillator (for basic plans)
- Base Condition for entry (Less/Greater than, Crossing Up/Down, Pullback Bull/Bear, Turning Up/Down, etc. More can be added later on)
- Additional Momentum Condition: Oscillator should be rising/falling for x number of bars
- Addition Threshold Condition: Oscillator should be Greater/Lowser than x
• Trend Filter
Filter Trades using 1 or 2 moving averages (MTF), based on Slop Change or Price Cross. Trend line is green = only longs, red = only shorts.
• Entry Filters
- Volume filter to remove low volume entries
- Overbought/Oversold filters
- Flat market Filter
• Stop Loss and Take Profit
Configure your stop loss and take profit for long and short trades.
You can also make a trailing take profit and trailing stop.
• DCA (Safety orders)
Create up to 100 safety orders with configurable options for step and volume scaling, take profit from total volume, base and safety order size.
• Backtest Settings
Choose a backtest period, longs or shorts, wether to use limit orders or not.
Graphics
A Backtest Results panel with additional information from the strategy tester.
A lightweight mode to remove background plots and make the indicator load faster.
█ ALERTS
The indicator is using the alert() calls: it only uses 1 alert slot to send order messages for each event (Long/Short entry, stop loss, take profit, safety order, exit timer). This means basic-free TV plans can create 1 complete strategy.
To set your alert messages, open the indicator settings and scroll to the bottom of the "inputs" tab.
Create your alert after you set the messages in the indicator settings, and make sure "Any alert() function call" is set in the alert option.
Use placeholders to automatically replace values in your alert messages like price, target profit, order size etc. (see the indicator inputs).
█ BACKTEST RESULTS
The backtest settings can be seen in the 'Properties' tab of the backtest report below.
Please read the author instructions below for access.
Ebb N Flo Trend [Backtester]Ebb n Flo Trend is a trend indicator that makes use of higher time frame High - Low pivots to determine when a trend has changed
In order to reduce over trading, and to reduce fake outs, the script relies on a clever combination of Fib ratio expansions and an averaged candle close
By combining the above strategies, the trend indicator forms a trailing trend indicator
The script determines when the current market condition has crossed over or under the trailing trend, and based on the closing conditions will change the trend of the script signaling a change. If the trend indicator is below the current market and green, the trend is bullish. If the trend is above the market and red, the trend is bearish
The indicator does not repaint, as such, once a signal has been received, the condition has been met on a previous candle and is final
Trend indicator can be used on any markets, for both Long and Short swings, however is best suited for long term trading on certain crypto markets (based on backtesting results). Be on the lookout for pairs with decent volume on reputable exchanges. It is not a holy grail type script for all markets. The key is to find enough to diversify your trades.
As can be seen in the backtester results, the script performs exceptionally well when trading using the 1W higher time frame (selection in the script settings), in the 1D current time frame (selecting the chart time frame)
The script is ideal for the beginner trader that cannot spend hours everyday looking at charts.
The backtesting results are based on allocating 10% of your portfolio to a single trade - this should be determined by your risk appetite.
There are risks associated with any form of investing. Never invest more than you are willing to lose. Past performance is not a guarantee or predictor of future performance. Do your own due diligence before making any investment decisions.
Configuration:
The dropdown in the script selects the time frame for Highs and Lows that the script must consider, and the chart time frame is the time frame of which closing conditions the script should use
Alerts:
The indicator comes with 2 off alerts: open_LONG and open_SHORT, which in itself is self explanatory, however, due to the slow trading nature of the script, alerts are generally not needed
Once you receive access to the trial version, you will also receive a link to a video that will show you exactly how to set up the script
Happy trading
Pinball Trading Strategy This is a early version of the Pinball Trading Strategy turned into a Tradingview strategy for automated backtesting. I have tried to include as many customization options as possible. Currently you can choose two options to define the trend and 5 options to define your entry. The option 'do you want the acc in your stoploss' makes for unexpected behaviour sometimes so it is advised to keep it turned off for now.
Features: Stoploss gets set to BE automatically at 40% profit. Stoploss and TP are calculated automatically from the internal FNT table (2022).
How to use: in order to backtest the original Pinball Strategy use the 1H timeframe, the 4H data gets calculated by multiplying the 1H data.
1. Select atleast one Trend and Entry option from the Inputs tab in the Options Menu.
2. Take a look at the Style tab from the Options Menu to turn plotting of specific MA's and Conditions on or off.
3. The three plots for Entry, Trend and Long conditions plot your selected rules for Entry and Trend and then ultimately the Entering of a position, respectively. So turn these on and select plotting options that give a clear view of how your selected rules behave on price.
4. I have personally found the 5M timeframe to be most profitable when running this strategy so that might be something to check out!
4. AutoBots Trading - BACKTEST: Bollinger BandsBACKTEST: Bollinger Bands
1. Description: a technical analysis tool defined by a set of trendlines plotted two standard deviations (positively and negatively) away from a simple moving average ( SMA ) of a security's price, but which can be adjusted to user preferences.
2. Strategy rules: defined based on the component, signal count, entry prices, open order count, position check, position averages, conditional closes and close signals.
3. Risk management: system was defined based on the choice of only long, only short or both sides. Defining the choice of take profit, stop loss and trailing stos (no repaint).
4. Symbol: EURUSD (only)
5. Suggested Timeframe: 1H
6. Parameter for optimization: 13, 1.5, side: both, tp: 0.4%, sl: 0.2%, ts: na
7. Walk forward simulation
7.1. In sample period: jan/2018-jan/2020
7.2. Out of sample period: jan/2020 - ago/2020
** For purpose educate only
3. AutoBots Trading - BACKTEST: MACDBACKTEST: Moving Average Convergence Divergence - MACD
1. Description: a trend-following momentum indicator that shows the relationship between two moving averages of a security’s price. The MACD is calculated by subtracting the 26-period Exponential Moving Average ( EMA ) from the 12-period EMA .
2. Strategy rules: defined based on the component, signal count, entry prices, open order count, position check, position averages, conditional closes and close signals.
3. Risk management: system was defined based on the choice of only long, only short or both sides. Defining the choice of take profit, stop loss and trailing stos (no repaint).
4. Symbol: PETR4 (only)
5. Suggested Timeframe: 2H
6. Parameter for optimization: 12, 8, 9, side: long, tp: 3%, sl: 1%, ts: na
7. Walk forward simulation
7.1. In sample period: jan/2018-jan/2020
7.2. Out of sample period: jan/2020 - ago/2020
** For purpose educate only
2. AutoBots Trading - BACKTEST: StochasticBACKTEST: Stochastic
1. Description: a momentum indicator comparing a particular closing price of a security to a range of its prices over a certain period of time. The sensitivity of the oscillator to market movements is reducible by adjusting that time period or by taking a moving average of the result. It is used to generate overbought and oversold trading signals, utilizing a 0-100 bounded range of values.
2. Strategy rules: defined based on the component, signal count, entry prices, open order count, position check, position averages, conditional closes and close signals.
3. Risk management: system was defined based on the choice of only long, only short or both sides. Defining the choice of take profit, stop loss and trailing stos (no repaint).
4. Symbol: BTCUSD (only)
5. Suggested Timeframe: D
6. Parameter for optimization: 7, 11, 1, false, 20, 80, side: both, tp: 5%, sl: 2.5%, ts: 2%/2%
7. Walk forward simulation
7.1. In sample period: jan/2018-jan/2020
7.2. Out of sample period: jan/2020 - ago/2020
** For purpose educate only
1. AutoBots Trading - BACKTEST: RSIBACKTEST: Relative Strength Index - RSI
1. Description: entry point The relative strength index ( RSI ) is a momentum indicator used in technical analysis that measures the magnitude of recent price changes to evaluate overbought or oversold conditions in the price of a stock or other asset. The RSI is displayed as an oscillator (a line graph that moves between two extremes) and can have a reading from 0 to 100. The indicator was originally developed by J. Welles Wilder Jr. and introduced in his seminal 1978 book, "New Concepts in Technical Trading Systems."
2. Strategy rules: defined based on the component, signal count, entry prices, open order count, position check, position averages, conditional closes and close signals.
3. Risk management: system was defined based on the choice of only long, only short or both sides. Defining the choice of take profit, stop loss and trailing stos (no repaint).
4. Symbol: IBOV (only)
5. Suggested Timeframe: 4H
6. Parameter for optimization: 3, 40, 65, side: both, tp: 4%, sl: 2%, ts: na
7. Walk forward simulation
7.1. In sample period: jan/2018-jan/2020
7.2. Out of sample period: jan/2020 - ago/2020
** For purpose educate only
Average True Range BandsThis is a simple script to assist you in manual backtesting! Perfect for the NNFX crowd or anyone that enjoys manual backtesting.
Usage
1. Slap this bad boy on your chart.
2. Adjust period and multiplier (defaults are 14 period and 1.5x).
3. Put on the indicator/system you are testing.
4. Enter bar replay mode.
5. Drag your long/short position take profit and stop loss to the upper and lower bands.
(long/short positions are available on the left-hand toolbar)
6. Profit!
If you enjoy/use this script, drop me a follow and please note me in your code!
I'm *almost* always available for collabs and questions.
My Backtest Module### 📊 Universal Backtest Module - Pro Structure
**A Fully Customizable Strategy Framework for Advanced Backtesting & Signal Analysis**
This powerful Pine Script strategy is designed as a **universal testing module** for traders and developers who want to evaluate custom trading logic across multiple conditions, timeframes, and risk parameters — all within a single, flexible structure.
> ⚠️ **Note:** This script is intended for **educational and backtesting purposes only**. It does **not** provide financial advice, nor does it guarantee profits. Always test strategies thoroughly before applying them to live markets.
---
### 🔧 Key Features
✅ **Multi-Source Entry Signals**
Combine up to two independent buy/sell signals using flexible logic:
- **OR Logic**: Trigger on any signal (edge-based).
- **AND Logic (Latched)**: Requires both signals at any point (flip-flop style).
- **AND No Latch**: Both signals must be active simultaneously.
✅ **Dynamic Trade Direction Control**
Choose between:
- Long & Short (Both)
- Long Only
- Short Only
With optional **close-on-opposite-signal** and **wait-for-opposite-reentry** logic.
✅ **Precision Timing Filters**
- Date range filtering (start/end dates)
- Intraday session control (supports up to 3 custom sessions)
- Visual session shading for clarity
✅ **Advanced Risk Management**
- Multiple Stop Loss types:
- Fixed Points / Percent
- ATR-based (adjustable multiplier)
- Swing-based (automatically detects pivots)
- External SL source
- Dynamic position sizing:
- Fixed lot
- % of equity risk (with max fallback)
✅ **Smart Take Profit Options**
- Fixed Points, Percent, RR Ratio, ATR, Fibonacci extensions
- Support for **external TP levels** (user-defined sources)
- Optional **multiple partial exits** with customizable size distribution
- Fibonacci TP levels (1.0, 1.618, 2.618, 4.236) based on SL distance
✅ **Flexible Exit Tools**
- Breakeven stop activation after TP1 hit
- Internal swing-based trailing stop
- External trailing stop (custom source)
- Max holding time (auto-close after X candles)
- Custom close conditions via user-defined logic
- Close & reverse functionality
✅ **Visual Clarity & Feedback**
- Clear visual markers for Buy/Sell signals
- Real-time SL, Entry, and TP lines with color-coded risk/reward zones
- On-chart TP level labels showing prices and allocation percentages
- Session background highlighting
- Trade statistics summary label
---
### 🛠️ Ideal For:
- Testing new indicator combinations
- Validating entry/exit logic under various market filters
- Comparing signal fusion methods (OR vs AND)
- Simulating professional-grade risk management rules
- Educational demonstrations in algorithmic trading
---
### ⚠️ Important Notes
- This is a **backtesting tool**, not a live trading bot.
- Past performance is **not indicative of future results**.
- Strategy performance depends entirely on the quality of input signals.
- Always validate results across multiple assets and timeframes.
- Use in conjunction with sound money management principles.
---
### 📌 How to Use
1. Attach the script to your chart.
2. Configure **Buy/Sell Signal Sources** (e.g., RSI crossovers, moving averages, etc.)
3. Set your preferred **trade direction, session, and date filters**
4. Define **stop loss and take profit rules**
5. Adjust position sizing and exit behavior
6. Run the backtest and analyze results in the **Strategy Tester tab**
💡 *Tip: Combine with other indicators by referencing their output values as signal sources.*
---
### ❌ Disclaimer
This script is shared for **informational and educational purposes only**. By using it, you agree that:
- The author is **not responsible** for any financial losses.
- Trading involves significant risk; only risk capital should be used.
- You are solely responsible for your trading decisions.
🚫 **This script does not promote get-rich-quick schemes, guaranteed profits, or unverified performance claims.**
---
🔁 **Version:** 5 (Pine Script v5)
📦 **Category:** Strategy
📈 **Overlay:** Yes
🧪 **Purpose:** Backtesting, Signal Validation, Risk Modeling
---
✅ **Safe for Public Sharing**
✔ Complies with TradingView’s community standards
✔ No misleading performance claims
✔ No automated trading promises
✔ No copyrighted or plagiarized content
---
> 💬 *"Knowledge is power — test wisely, trade responsibly."*
---
Let me know if you'd like a **short version** for the script's header comment or a **public post summary** for the TradingView feed!
Fourier For Loop [BackQuant]Fourier For Loop
PLEASE Read the following, as understanding an indicator's functionality is essential before integrating it into a trading strategy. Knowing the core logic behind each tool allows for a sound and strategic approach to trading.
Introducing BackQuant's Fourier For Loop (FFL) — a cutting-edge trading indicator that combines Fourier transforms with a for-loop scoring mechanism. This innovative approach leverages mathematical precision to extract trends and reversals in the market, helping traders make informed decisions. Let's break down the components, rationale, and potential use-cases of this indicator.
Understanding Fourier Transform in Trading
The Fourier Transform decomposes price movements into their frequency components, allowing for a detailed analysis of cyclical behavior in the market. By transforming the price data from the time domain into the frequency domain, this indicator identifies underlying patterns that traditional methods may overlook.
In this script, Fourier transforms are applied to the specified calculation source (defaulted to HLC3). The transformation yields magnitude values that can be used to score market movements over a defined range. This scoring process helps uncover long and short signals based on relative strength and trend direction.
Why Use Fourier Transforms?
Fourier Transforms excel in identifying recurring cycles and smoothing noisy data, making them ideal for fast-paced markets where price movements may be erratic. They also provide a unique perspective on market volatility, offering traders additional insights beyond standard indicators.
Calculation Logic: For-Loop Scoring Mechanism
The For Loop Scoring mechanism compares the magnitude of each transformed point in the series, summing the results to generate a score. This score forms the backbone of the signal generation system.
Long Signals: Generated when the score surpasses the defined long threshold (default set at 40). This indicates a strong bullish trend, signaling potential upward momentum.
Short Signals: Triggered when the score crosses under the short threshold (default set at -10). This suggests a bearish trend or potential downside risk.'
Thresholds & Customization
The indicator offers customizable settings to fit various trading styles:
Calculation Periods: Control how many periods the Fourier transform covers.
Long/Short Thresholds: Adjust the sensitivity of the signals to match different timeframes or risk preferences.
Visualization Options: Traders can visualize the thresholds, change the color of bars based on trend direction, and even color the background for enhanced clarity.
Trading Applications
This Fourier For Loop indicator is designed to be versatile across various market conditions and timeframes. Some of its key use-cases include:
Cycle Detection: Fourier transforms help identify recurring patterns or cycles, giving traders a head-start on market direction.
Trend Following: The for-loop scoring system helps confirm the strength of trends, allowing traders to enter positions with greater confidence.
Risk Management: With clearly defined long and short signals, traders can manage their positions effectively, minimizing exposure to false signals.
Final Note
Incorporating this indicator into your trading strategy adds a layer of mathematical precision to traditional technical analysis. Be sure to adjust the calculation start/end points and thresholds to match your specific trading style, and remember that no indicator guarantees success. Always backtest thoroughly and integrate the Fourier For Loop into a balanced trading system.
Thus following all of the key points here are some sample backtests on the 1D Chart
Disclaimer: Backtests are based off past results, and are not indicative of the future .
INDEX:BTCUSD
INDEX:ETHUSD
BINANCE:SOLUSD
Risk to Reward - FIXED SL BacktesterDon't know how to code? No problem! TradingView is an excellent platform for you. ✅ ✅
If you have an indicator that you want to backtest using a risk-to-reward ratio or fixed take profit/stop loss levels, then the Risk to Reward - FIXED SL Backtester script is the perfect solution for you.
introducing Risk to Reward - FIXED SL Backtester Script which will allow you to test any indicator / Signal with RR or Fixed SL system
How does it work ?!
Once you connect the script to your indicator, it will analyze your entry points and perform calculations based on them. It will then open trades for you according to the specified inputs in the script settings.
HOW TO CONNECT IT to your indicator?
simply open your indicator code and add the below line of code to it
plot(Signal ? 100 : 0,"Signal",display = display.data_window)
Replace Signal with the long condition from your own indicator. You can also modify the value 100 to any number you prefer. After that, open the settings.
Once the script is connected to your indicator, you can choose from two options:
Risk To Reward Ratio System
Fixed TP/ SL System
🔸if you select the Risk to Reward System ⤵️
The Risk-to-Reward System requires the calculation of a stop loss. That's why I have included three different types of stop-loss calculations for you to choose from:
ATR Based SL
Pivot Low SL
VWAP Based SL
Your stop loss and take profit levels will be automatically calculated based on the selected stop loss method and your risk-to-reward ratio.
You can also adjust their values to match your desired risk level. The trades will be displayed on the chart.
with the ability to change their values to match your risk.
once this is done, trades will be displayed on the chart
🔸if you select the Fixed system ⤵️
You have 2 inputs, which are FIXED TP & Fixed SL
input the values you want, and trades will be on your chart...
I have also added a Breakeven feature for you.
with this Breakeven feature the trade will not just move SL to Entry ?! NO NO, it will place it above entry by a % you input yourself, so you always win! 🚀
Here is an example
Enjoy, and have fun, if you have any questions do not hesitate to ask
MACD Strategy - Backtest [AlgoRider]█ OVERVIEW
Hello dear Tradingviewers !
We are excited to share with you this new indicator which simulates a trading strategy based solely on the well-known technical indicator MACD . We designed it for the sole educational and analytical purposes of showing novice traders and new investors that basing a trading strategy only on one such technical indicator is not necessarily a good thing to do. We do not recommend to apply this strategy for real.
Thanks to this indicator redesigned in our own way by incorporating our simple and easy-to-use Backtest functionality, you will be able to see and report on the performance and results that such a strategy has produced in the past.
The configuration window has also been designed to be easily readable and simple to use. Our goal is to make parameter customization as easy as possible.
█ HOW THE STRATEGY WORKS
• The script will simply trigger Long entries when bullish MACD crossings appear (the Macd line crosses the Signal line upwards) and Short entries when bearish MACD crossings appear (the Macd line crosses below the signal line).
• A Short signal ends a Long trade, a Long signal ends a Short trade.
• The script also allows setting up custom TP and SL.
• An option allows you to trigger early crossings, which will influence entries and exits.
• There is no repaint, once an entry/exit symbol or drawing is displayed it doesn't change anymore. The Short and Long signals appear at the open of the candles, just after the signal was confirmed at the close of the previous candle. The custom TP and custom SL signals can appear when a candle is not yet finished, but once displayed they don't change.
█ HOW TO PROCEED
1 — Once the script is applied to your chart, it already works with its default settings. You can already see the performance of the strategy in the data table directly on the chart (in the top right corner by default).
2 — You can customize the strategy and influence the results/performance by modifying its parameters. 3 types of parameters are present and can be modified.
3 — You can use this indicator in all types of markets.
4 — You can apply the script in every timeframe.
█ PARAMETERS
• Settings For Backtesting
- Strategy : Choose from a drop-down list if the strategy should execute only Long trades or only Short trades or both. Default Both.
- Invest. : Choose the amount you want to invest in the simulation. Default 10000.
- Position : Choose the amount of the position (Size order) that will be used during the simulation. This will be the $ amount staked/involved for each trade entry.
Ex: If you put 20000 in position and 10000 in Invest. We consider that you use at least a leverage x2. Default 10000.
- Slipp. TP : Choose the amount in percentage of average slippage for Take Profits. This parameter makes it possible to predict a potential gap between the theoretical exit price for each TP (On the graph) and the real exit price on an exchange when implementing the strategy for real (slippage may be due to a time lag of a few seconds from execution time of the order on the exchange and/or due to the execution of a market order).
Ex: If a TP exit order of a Long trade, with entry $19000 (on BTCUSDT ), is carried out in theory on the chart at $20000, in practice on the exchange the script have indeed sent an exit order at 20000 , but if the true exit price is 20050, the TP slippage is then +0.25%. Default 0.
- Slipp. SL : Choose the amount in percentage of average slippage for Stop Losses. This parameter makes it possible to predict a potential gap between the theoretical exit price for each SL (On the graph) and the real exit price on an exchange when implementing the strategy for real.
Ex: If an SL exit order of a Long trade, entry $19000 (on BTCUSDT ), is carried out in theory on the chart at $18000, in practice on the exchange the script have indeed sent an exit order at 18000 $, but if the true exit price is 17950, the slippage SL is then +0.278%. Default 0.
- Fees % : Choose the percentage amount of fees applied to each trade to simulate the application of the strategy on the exchange of your choice. Applies to the entry and exit of each trade. Ex: For Binance Futures: 0.04; For Bybit futures: 0.06; For Ftx Futures: 0.075. Default 0.
- Cumulate Trades : If you check this, the Backtest will use 100% of the balance as Order Size (Position) for All or in the next X consecutive trades. Default not checked.
⚠️ Be Careful please, this option is available to show the full extent and possibilities of the algorithm when pushed to its limits thanks to the accumulation of profits (cumulative earnings ), but it is a strategy that involves great risk. If a bad trade suffers a -50% loss, 50% of the account balance is lost, if the position is liquidated, the entire account balance is lost.
- All : If you check this All trades will be accumulated. Default not checked.
- Consecutive Trades : Choose the number of trades to accumulate. After X consecutive trades, the algorithm reassigns the initial order size to the current one and starts again for X consecutive trades. Minimum Value 2, Default 2.
• Settings To Optimize Performances and Risk Management
- Fast_MA : Choose the length of the Fast Moving Average. Default 12.
- Slow_MA : Choose the length of the Slow Moving Average. Default 26.
- Enable Early Crossings : If you check this, when the algorithm will detect an early crossing wethere bullish or bearish , it will trigger the Long or Short entries. Default not checked.
- Oscillator MA Type : Choose if the Macd line should be an Exponential Moving Average or a Simple Moving Average . Default Expo.
- Signal Line MA Type : Choose if the Signal line should be an Exponential Moving Average or a Simple Moving Average . Default Expo.
- Use TP / Use SL : If you check these, the algorithm will trigger personalized trade exit signals when the price evolution has reached the amounts indicated since the trade entry. Default not Checked.
- % TP - SL : Indicate here the personalized amount in percentage that you want for your Take Profit and Stop Loss of each trade. Default 15-5.
• Settings For Appearances
- Small-size Data Table : If you check this, the data table will become smaller to free up more space on the chart to make it visually more pleasing. Default not checked.
Hide Table /
- Hide Labels / : You can check these to get a cleaner chart and focus only on what interests you in the indicator. Default not checked.
Hide Risk-Reward Areas
█ LIMITATIONS
• ⚠️ We repeat it once again, this strategy is not intended to be reproduced in real conditions, we have designed it for educational and analytical purposes only.
• Even if you see good performances when you backtest the strategy, you must take into account that these results are performed in the past and that in no case does this guarantee that these same performances will be repeated again in the future.
• When you run for real a trading strategy you must be aware of the fact that you are solely responsible for the results that you will be able to obtain and you must be aware of the possibility at all times of partial or even total losses of your invested capital.
• Keep in mind that generating profits in trading is difficult. A strategy can perform very well at one time in the past during a period that is favorable to it, then from one day to the next it can give really bad results for several months or years.
• When backtesting a trading strategy, there are many factors to consider, not just trade entries to which you add a Take Profit and sometimes a Stop Loss. You must at least take into account the size of the position in relation to the capital you want to invest, the trading fees, the slippages (which can be really important depending on the exchange on which you are trading and depending on the asset you are trading), trading frequency, risk management, momentum, volumes and even more.
The information published here on TradingView is not prohibited, doesn't constitute investment advice, and isn't created solely for qualified investors.
═════════════════════════════════════════════════════════════════════════
Important to note : our indicators with the same backtesting system are published in separate publications, because putting them together in a single script would considerably slow down the execution of the script. In addition each indicator, even when it is based on a simple technical indicator, has several options, parameters and entry/exit conditions specific to the underlying technical indicator. Finally, we want to keep the simplicity of use, configuration and understanding of our indicator by not mixing strategies that have nothing to do with each other.
RSI Strategy - Backtest [AlgoRider]█ OVERVIEW
Hello dear Tradingviewers !
We share with you this new indicator which simulates a trading strategy based solely on the well-known technical indicator RSI . We designed it for the sole educational and analytical purposes of showing novice traders and new investors that basing a trading strategy only on one such technical indicator is not necessarily a good thing to do. We do not recommend to apply this strategy for real.
Thanks to this indicator redesigned in our own way by incorporating our simple and easy-to-use Backtest functionality, you will be able to see and report on the performance and results that such a strategy has produced in the past.
The configuration window has also been designed to be easily readable and simple to use. Our goal is to make parameter customization as easy as possible.
█ HOW THE STRATEGY WORKS
• The script will trigger Long entries when the price crosses upwards the Oversold zone (Default 38.2) and Short entries when the price crosses downward the Overbought zone (Default 61.8).
• A Short signal ends a Long trade, a Long signal ends a Short trade.
• The script also allows setting up custom TP and SL.
• Several options allow you to reverse entry and exit conditions of trades. You can choose to reverse entries or/and exits (Ex: when the script detects a Long Entry, it will actually trigger a Short trade).
• You can also change the entry conditions of the strategy. Instead of entering oversold/overbought zone conditions, it will trigger entries when the Rsi changes direction and reverses (Ex: when the rsi has been going down for 5 candles, and the rsi starts going up) , regardless of the area in which the RSI is located.
• There is no repaint, once an entry/exit symbol or drawing is displayed it doesn't change anymore. The Short and Long signals appear at the open of the candles, just after the signal was confirmed at the close of the previous candle. The custom TP and custom SL signals can appear when a candle is not yet finished, but once displayed they don't change.
█ HOW TO PROCEED
1 — Once the script is applied to your chart, it already works with its default settings. You can already see the performance of the strategy in the data table directly on the chart (in the top right corner by default).
2 — You can customize the strategy and influence the results/performance by modifying its parameters. 4 types of parameters are present and can be modified.
3 — You can use this indicator in all types of markets.
4 — You can apply the script in every timeframe.
█ PARAMETERS
• Settings For Backtesting
- Strategy : Choose from a drop-down list if the strategy should execute only Long trades or only Short trades or both. Default Both.
- Invest. : Choose the amount you want to invest in the simulation. Default 10000.
- Position : Choose the amount of the position (Size order) that will be used during the simulation. This will be the $ amount staked/involved for each trade entry.
Ex: If you put 20000 in position and 10000 in Invest. We consider that you use at least a leverage x2. Default 10000.
- Slipp. TP : Choose the amount in percentage of average slippage for Take Profits. This parameter makes it possible to predict a potential gap between the theoretical exit price for each TP (On the graph) and the real exit price on an exchange when implementing the strategy for real (slippage may be due to a time lag of a few seconds from execution time of the order on the exchange and/or due to the execution of a market order).
Ex: If a TP exit order of a Long trade, with entry $19000 (on BTCUSDT ), is carried out in theory on the chart at $20000, in practice on the exchange the script have indeed sent an exit order at 20000 , but if the true exit price is 20050, the TP slippage is then +0.25%. Default 0.
- Slipp. SL : Choose the amount in percentage of average slippage for Stop Losses. This parameter makes it possible to predict a potential gap between the theoretical exit price for each SL (On the graph) and the real exit price on an exchange when implementing the strategy for real.
Ex: If an SL exit order of a Long trade, entry $19000 (on BTCUSDT ), is carried out in theory on the chart at $18000, in practice on the exchange the script have indeed sent an exit order at 18000 $, but if the true exit price is 17950, the slippage SL is then +0.278%. Default 0.
- Fees % : Choose the percentage amount of fees applied to each trade to simulate the application of the strategy on the exchange of your choice. Applies to the entry and exit of each trade. Ex: For Binance Futures: 0.04; For Bybit futures: 0.06; For Ftx Futures: 0.075. Default 0.
- Cumulate Trades : If you check this, the Backtest will use 100% of the balance as Order Size (Position) for All or in the next X consecutive trades. Default not checked.
⚠️ Be Careful please, this option is available to show the full extent and possibilities of the algorithm when pushed to its limits thanks to the accumulation of profits (cumulative earnings ), but it is a strategy that involves great risk. If a bad trade suffers a -50% loss, 50% of the account balance is lost, if the position is liquidated, the entire account balance is lost.
- All : If you check this All trades will be accumulated. Default not checked.
- Consecutive Trades : Choose the number of trades to accumulate. After X consecutive trades, the algorithm reassigns the initial order size to the current one and starts again for X consecutive trades. Minimum Value 2, Default 2.
• Change Entry & Exit conditions
- Rsi Turns Up/Down : Enable this option to change conditions for trade entries. For Long entries : It will start a Long trade when RSI turns up and the RSI was falling on the last X bar(s). For Short entries : It will start a Short trade when RSI turns down and the RSI was rising on the last X bar(s). Default not checked.
- After Falling/Rising Bars(s) : Choose the number of bars/candles since which the price was falling/rising. Default 5.
- Reverse Entries : Enable this option to reverse conditions for trade entries. When a Short signal appears, it will actually start a Long trade. When a Long signal appears, it will actually start a Short trade. Default not checked.
- Reverse Exits : Enable this option to reverse conditions for trade exits. Default not checked.
- Safety Stop Loss : Enable this option to quickly cut the trade when the price turns quickly. For a Long trade : if the price returns to the oversold zone, it ends the trade. For a Short trade : if the price returns to the overbought zone, it ends the trade. Mainly useful for basic strategy (overbought/oversold conditions). Default not checked.
• Settings To Optimize Performances and Risk Management
- Len RSI : The length of RSI . Default 14.
- Overbuy : You can change the limit value of the overbought zone of the RSI . Default 61.8.
- Oversell : You can change the limit value of the oversell zone of the RSI . Default 38.2.
- Use TP / Use SL : If you check these, the algorithm will trigger personalized trade exit signals when the price evolution has reached the amounts indicated since the trade entry. Default not Checked.
- % TP - SL : Indicate here the personalized amount in percentage that you want for your Take Profit and Stop Loss of each trade. Default 15-5.
• Settings For Appearances
- Small-size Data Table : If you check this, the data table will become smaller to free up more space on the chart to make it visually more pleasing. Default not checked.
Hide Table /
- Hide Labels / : You can check these to get a cleaner chart and focus only on what interests you in the indicator. Default not checked.
Hide Risk-Reward Areas
█ LIMITATIONS
• ⚠️ We repeat it once again, this strategy is not intended to be reproduced in real conditions, we have designed it for educational and analytical purposes only.
• Even if you see good performances when you backtest the strategy, you must take into account that these results are performed in the past and that in no case does this guarantee that these same performances will be repeated again in the future.
• When you run for real a trading strategy you must be aware of the fact that you are solely responsible for the results that you will be able to obtain and you must be aware of the possibility at all times of partial or even total losses of your invested capital.
• Keep in mind that generating profits in trading is difficult. A strategy can perform very well at one time in the past during a period that is favorable to it, then from one day to the next it can give really bad results for several months or years.
• When backtesting a trading strategy, there are many factors to consider, not just trade entries to which you add a Take Profit and sometimes a Stop Loss. You must at least take into account the size of the position in relation to the capital you want to invest, the trading fees, the slippages (which can be really important depending on the exchange on which you are trading and depending on the asset you are trading), trading frequency, risk management, momentum, volumes and even more.
The information published here on TradingView is not prohibited, doesn't constitute investment advice, and isn't created solely for qualified investors.
═════════════════════════════════════════════════════════════════════════
Important to note : our indicators with the same backtesting system are published in separate publications, because putting them together in a single script would considerably slow down the execution of the script. In addition each indicator, even when it is based on a simple technical indicator, has several options, parameters and entry/exit conditions specific to the underlying technical indicator. Finally, we want to keep the simplicity of use, configuration and understanding of our indicator by not mixing strategies that have nothing to do with each other.