The Lazy Trader - Index (ETF) Trend Following Robot50/150 moving average, index (ETF) trend following robot. Coded for people who cannot psychologically handle dollar-cost-averaging through bear markets and extreme drawdowns (although DCA can produce better results eventually), this robot helps you to avoid bear markets. Be a fair-weathered friend of Mr Market, and only take up his offer when the sun is shining! Designed for the lazy trader who really doesn't care...
Recommended Chart Settings:
Asset Class: ETF
Time Frame: Daily
Necessary ETF Macro Conditions:
a) Country must have healthy demographics, good ratio of young > old
b) Country population must be increasing
c) Country must be experiencing price-inflation
Default Robot Settings:
Slow Moving Average: 50 (integer) //adjust to suit your underlying index
Fast Moving Average: 150 (integer) //adjust to suit your underlying index
Bullish Slope Angle: 5 (degrees) //up angle of moving averages
Bearish Slope Angle: -5 (degrees) //down angle of moving averages
Average True Range: 14 (integer) //input for slope-angle formula
Risk: 100 (%) //100% risk means using all equity per trade
ETF Test Results (Default Settings):
SPY (1993 to 2020, 27 years), 332% profit, 20 trades, 6.4 profit factor, 7% drawdown
EWG (1996 to 2020, 24 years), 310% profit, 18 trades, 3.7 profit factor, 10% drawdown
EWH (1996 to 2020, 24 years), 4% loss, 26 trades, 0.9 profit factor, 36% drawdown
QQQ (1999 to 2020, 21 years), 232% profit, 17 trades, 3.6 profit factor, 2% drawdown
EEM (2003 to 2020, 17 years), 73% profit, 17 trades, 1.1 profit factor, 3% drawdown
GXC (2007 to 2020, 13 years), 18% profit, 14 trades, 1.3 profit factor, 26% drawdown
BKF (2009 to 2020, 11 years), 11% profit, 13 trades, 1.2 profit factor, 33% drawdown
A longer time in the markets is better, with the exception of EWH. 6 out of 7 tested ETFs were profitable, feel free to test on your favourite ETF (default settings) and comment below.
Risk Warning:
Not tested on commodities nor other financial products like currencies (code will not work), feel free to leave comments below.
Moving Average Slope Angle Formula:
Reproduced and modified from source:
Cerca negli script per "profit"
MACD+ Strategy [SystemAlpha]This is a strategy based on MACD Oscillator . Instead of using just the normal crossovers, we use trend filters, trailing stop loss and take profit targets. This strategy was developed for crypto, forex and stocks on daily timeframe but feel free to experiment on 15 minutes or higher using heikin ashi or normal candles
In this strategy you have a choice of:
Trend Filters:
- Average Directional Index ( ADX ) – buy when price is trend is up and sell when trend is down.
- Moving Average (MA) – buy when price close above the defined moving average and sell when price close below moving average
- Parabolic SAR – buy when SAR is above price is above price and sell when SAR is below price.
- All - Use ADX , MA and SAR as filters
For MA Filter , you can use the “TF MA Type” and "TF MA Period" parameter to select Simple or Exponential Moving Average and length.
Stop Loss:
- Average True Range (ATR) – ATR % stop as trailing stop loss.
- Parabolic SAR ( SAR ) – Parabolic SAR adapted as trailing stop loss.
For ATR , you can use the “ATR Trailing Stop Multiplier” parameter to set an initial offset for trailing stop loss.
Take Profit Target:
- Average True Range (ATR) – ATR % stop as trailing stop loss.
- Standard % – Percent as target profit
For ATR , you can use the “ATR Take Profit Multiplier” parameter to set an initial offset for trailing stop loss.
Additional feature include:
- Regular and Hidden Divergence display and alerts
STRATEGY ONLY:
- Set back test date range
- Set trade direction - Long, Short or Both
- Use timed exit - Select method and bars
- Method 1: Exit after specified number of bars.
- Method 2: Exit after specified number of bars, ONLY if position is currently profitable.
- Method 3: Exit after specified number of bars, ONLY if position is currently losing.
TradingView Links:
Alerts:
MACD:
How to use:
1. Apply the script by browsing through Indicators --> Invite-Only scripts and select the indicator
2. Once loaded, click the gear (settings) button to select/adjust the parameters based on your preference.
3. Wait for the next BUY or SELL signal to enter the trade!
Disclaimer:
The indicator and signals generated do not constitute investment advice; are provided solely for informational purposes and therefore is not an offer to buy or sell a security; are not warranted to be correct, complete or accurate; and are subject to change without notice.
Mean Deviation Detector - Throw Out All Other IndicatorsI set out this morning to create a script that searches out price moves that went too far too fast relative to historical pricing, given that such situations often result in the most profitable trading opportunities. I came up with the mean deviation detector. This script should be used as a means of judging how far a price is trading, in percent terms, from it's "average trading zone".
This is extremely helpful in a couple scenarios.
First, it can be used to judge a move's volatility relative to it's previous volatility. Put simply, a 5% move in the stock of Coca Cola is a lot more meaningful than a 5% move in the stock of Tesla, and the detector puts moves into historical (visual) perspective.
Second, the indicator can be used in real time as a means of determining when the chances of mean reversion are high or low. Extreme values are unsustainable and often lead to EITHER A.) price mean reversion or B.) time mean reversion. Put simply, prices either went too far and are due to fall back to a historical mean, or they need more time to digest a potentially new pricing zone.
Without getting too deep into volume profile analysis, the MDD can be a simple way of telling that a stock has moved into an "air pocket", where prices will either come back to the previous volume node (price mean reversion) or set up shop in a new, uncharted area (time mean reversion).
An extreme value doesn't always mean a trading opportunity, but it means that something interesting is happening in the stock / instrument.
I use this indicator to help me trade covered calls. Lots of high yielding weekly opportunities are stocks that have moved too far too fast, and I like to use this indicator as a means of either a.) scooping up stocks that have gotten beat up from a historical mean perspective & have likely seen the risk already "beaten" out of them, or to b.) stay away from stocks that have a very high chance of price correcting lower. In situations where I say that the risk has been "beaten" out of something, it doesn't mean that the stock won't continue to fall, it simply means that the degree and acceleration of the fall has peaked and that risk premiums in selling options will / should easily pay for continued losses. In the event that it's a price correction and not a time correction, you also increase your bat rate because you get auto-liquidated at a max profit. It's a really valuable tool in my kit.
You can also feel free to put a Keltner Chanel overlay onto the MDD to filter out noise, identify "extreme" values, and place mean reversion trades if you expect price mean reversion is likely, if you want to use this as the basis of a proper trading strategy. For a high extreme value, you could sell short term OTM call spreads, for example.
The MDD is adaptable to your own trading style & preferences.
Volume Weighted Bollinger Bands Strategy
Simple strategy,
Using Volume weighted Bollinger Bands
> Directions for Usage:
1. Use only in scripts where volume is specified by tradingview
2. Check on which timeframe the script has a profit factor greater than 1.4
3. Use that timeframe for profitability
4. In some high liquid securities there is a decent profit factor even at 5 min scale (optimise at your end!! all i want to say)
Enjoy!
Hope this helps!!
Grid Like StrategyIt is possible to use progressive position sizing in order to recover from past losses, a well-known position sizing system being the "martingale", which consists of doubling your position size after a loss, this allows you to recover any previous losses in a losing streak + winning an extra. This system has seen a lot of attention from the trading community (mostly from beginners), and many strategies have been designed around the martingale, one of them being "grid trading strategies".
While such strategies often shows promising results on paper, they are often subjects to many frictions during live trading that makes them totally unusable and dangerous to the trader. The motivations behind posting such a strategy isn't to glorify such systems, but rather to present the problems behind them, many users come to me with their ideas and glorious ways to make money, sometimes they present strategies using the martingale, and it is important to present the flaws of this methodology rather than blindly saying "you shouldn't use it".
Strategy Settings
Point determines the "grid" size and should be adjusted accordingly to the scale of the symbol you are applying the strategy to. Higher value would require larger price movements in order to trigger a trade, as such higher values will generate fewer trades.
The order size determines the number of contracts/shares to purchase.
The martingale multiplier determines the factor by which the position size is multiplied after a loss, using values higher to 2 will "squarify" your balance, while a value of 1 would use a constant position sizing.
Finally, the anti-martingale parameter determines whether the strategy uses a reverse martingale or not, if set to true then the position size is multiplied after any wins.
The Grid
Grid strategies are commons and do not present huge problems until we use certain position sizing methods such as the martingale. A martingale is extremely sensitive to any kind of friction (frictional costs, slippage...etc), the grid strategy aims to provide a stable and simple environment where a martingale might possibly behave well.
The goal of a simple grid strategy is to go long once the price crossover a certain level, a take profit is set at the level above the current one and stop loss is placed at the level below the current one, in a winning scenario the price reach the take profit, the position is closed and a new one is opened with the same setup. In a losing scenario, the price reaches the stop loss level, the position is closed and a short one is opened, the take profit is set at the level below the current one, and a stop loss is set at the level above the current one. Note that all levels are equally spaced.
It follows from this strategy that wins and losses should be constant over time, as such our balance would evolve in a linear fashion. This is a great setup for a martingale, as we are theoretically assured to recover all the looses in a losing streak.
Martingale - Exponential Decays - Risk/Reward
By using a martingale we double our position size (exposure) each time we lose a trade, if we look at our balance when using a martingale we see significant drawdowns, with our balance peaking down significantly. The martingale sequence is subject to exponential growth, as such using a martingale makes our balance exposed to exponential decays, that's really bad, we could basically lose all the initially invested capital in a short amount of time, it follows from this that the theoretical success of a martingale is determined by what is the maximum losing streak you can endure
Now consider how a martingale affects our risk-reward ratio, assuming unity position sizing our martingale sequence can be described by 2^(x-1) , using this formula we would get the amount of shares/contracts we need to purchase at the x trade of a losing streak, we would need to purchase 256 contracts in order to recover from a losing streak of size 9, this is enormous when you take into account that your wins are way smaller, the risk-reward ratio is totally unfair.
Of course, some users might think that a losing streak of size 9 is pretty unlikely, if the probability of winning and losing are both equal to 0.5, then the probability of 9 consecutive losses is equal to 0.5^9 , there are approximately 0.2% of chance of having such large losing streak, note however that under a ranging market such case scenario could happen, but we will see later that the length of a losing streak is not the only problem.
Other Problems
Having a capital large enough to tank 9any number of consecutive losses is not the only thing one should focus on, as we have to take into account market prices and trading dynamics, that's where the ugly part start.
Our first problem is frictional costs, one example being the spread, but this is a common problem for any strategy, however here a martingale is extra sensitive to it, if the strategy does not account for it then we will still double our positions costs but we might not recover all the losses of a losing streak, instead we would be recovering only a proportion of it, under such scenario you would be certain to lose over time.
Another problem are gaps, market price might open under a stop-loss without triggering it, and this is a big no-no.
Equity of the strategy on AMD, in a desired scenario the equity at the second arrow should have been at a higher position than the equity at the first arrow.
In order for the strategy to be more effective, we would need to trade a market that does not close, such as the cryptocurrency market. Finally, we might be affected by slippage, altho only extreme values might drastically affect our balance.
The Anti Martingale
The strategy lets you use an anti-martingale, which double the position size after a win instead of a loss, the goal here is not to recover from a losing strike but instead to profit from a potential winning streak.
Here we are exposing your balance to exponential gross but you might also lose a trade at the end a winning streak, you will generally want to reinitialize your position size after a few wins instead of waiting for the end of a streak.
Alternative
You can use other-kind of progressions for position sizing, such as a linear one, increasing your position size by a constant number each time you lose. More gentle progressions will recover a proportion of your losses in a losing streak.
You can also simulate the effect of a martingale without doubling your position size by doubling your target profit, if for example you have a 10$ profit-target/stop-loss and lose a trade, you can use a 20$ profit target to recover from the lost trade + gain a profit of 10$. While this approach does not introduce exponential decay in your balance, you are betting on the market reaching your take profits, considering the fact that you are doubling their size you are expecting market volatility to increase drastically over time, as such this approach would not be extremely effective for high losing streak.
Conclusion
You will see a lot of auto-trading strategies that are based on a grid approach, they might even use a martingale. While the backtests will look appealing, you should think twice before using such kind of strategy, remember that frictional costs will be a huge challenge for the strategy, and that it assumes that the trader has an important initial capital. We have also seen that the risk/reward ratio is theoretically the worst you can have on a strategy, having a low reward and a high risk. This does not mean that progressive position sizing is bad, but it should not be pushed to the extreme.
It is nice to note that the martingale is originally a betting system designed for casino games, which unlike trading are not subject to frictional costs, but even casino players don't use it, so why would you?
Thx for reading
13612WThis script is a 13612W momentum filter used in the Vigilant Asset Allocation (VAA) and Defensive Asset Allocation (DAA) created by Wouter J. Keller and Jan Willem Keuning.
This asset allocation strategy was uploaded to SSRN in 2017 and 2018.
13612W Calculation Method
(Profitability in Last 1 months * 12 +
Profitability in Last 3 months * 4 +
Profitability in Last 6 months * 2 +
Profitability in Last 12 months)/4
Let me briefly explain one of the VAAs, VAA-G4.
The VAA-G4 has an annualized return of 17.7%, a Sharpe ratio of 1.07% and Max Drawdown of 16.1%.
(It's too long and complicated to describe all VAA, DAA strategies. Above all, the translator performance is not good.)
VAA Global 4 Universe: SPY, EFA, EEM, AGG
Cash Universe: SHY , IEF, LQD
If 13612W of VAA Global 4 Universe is negative at least one
>> 100% of assets hold one of the highest 13612W of Cash Universe
If all 13612W of VAA Global 4 Universe are positive
>> 100% of assets hold one of the highest 13612W of VAA Global 4 Universe
Rebalancing is done every month according to this method.
inwCoin Martingale Strategy ( for Bitcoin )** Same as my previous martingale script but this version = opensource **
inwCoin Martingale Strategy is the proof of concept strategy that in the end, anyone who using martingale strategy will kaboom their portfolio.
For those who don't know what is "martingale".. it's a simple double down strategy in the hope to cover the loss in previous entry.
Example
In the game that if you win, you'll get 100% of your bet money back.
1st loss = 1$
2nd loss = bet 2$ : if win, get 2$ / real profit = 1$ ( 2-1 )
3rd loss = bet 4$ : if win, get 4$ / real profit = 1$ ( 4 - ( 2+1) )
4th loss = bet 8$ : if win, get 8$ / real profit = 1$ ( 8 - ( 4+2+1 ) )
...
...
10th loss = bet 512$ : if win, get 512$ / real profit = 1$ ( 512 - ( 256+128+64+32+16+8+4+2+1) )
as you can see, the next bet will be first bet x 2^(n-1)
and the profit will equal to your first bet.
==================
In trading and forex EA ( Expert Advisor or bot ) people use this strategy to fool newbies that their martingale system will generate steady income for eternity.
But in reality, this strategy will destroy your whole portfolio eventually some time in the future. Because there will be some "Blackswan event" in market at some point in time. And one who ignore this fact, will lose everything.
But, if you using low risk strategy and generate some profit from your low-risk portfolio. You can take small chunk of that profit and put it in riskier strategy like this martingale, to accerelate your profit snowball.
===================
Parameter Explaination
====================
Price = datasource for indicator calculation
Fixed position size option = if uncheck, the "Start position size" parameter will be % of your initial capital. If checked, it will fixed position size ( like 1 BTC )
Start Position Logic = condition to enter first trade
- MACD singal > 0 : Self explanatory, default macd value
- Stochastic RSI cross up : enter when sto line cross up from bottom ( 20 )
- ATR channel : enter trade if price cross above 2.3 ATR
Take Profit Percent = take profit target % from average entry
Start martingale ..= if price compare to average position entry less than this %, it will start to double down ( martingale )
Martingale Multiplier = you can specific how big you'll double down, default is 2
Trade Direction = long only for now
Use date rang = self explanatory
** make sure to setup your initial capital in properties tab **
On chart
=======
White Line = Average position price
Orange Line = your current equity
If equity less than 0, it will close any remaining positions ( It's mean your position got liquidated )
If price > equity line for "take profit percent" it will close any remaining positions.
=======
As you can see, this strategy survive 2018 drop and pump profit to 1000+% ( Check in the strategy tester tab > list of trades )
But in May 2020 -50% drop in just 3 days, your whole portfolio got liquidated.
Actually, after some digging in profit and backtest result.
This strategy, when it can survive a shape drop, can generate a lot of profit.
So, if you want to use martingale. Make sure to use only small chunk of your profit from "low-risk" strategy to accelerate your profit generation ( aka degen port )
DO NOT greedy and use all of your initial capital or borrowed money to use with this strategy!
Percent Trailing Stop %===========
Percent Trailing Stop %
===========
Another Stop Loss Indicator today - our last Fixed SL/TP script went down quite well, this one is for adding a Percent Trailing Stop from Entry Price to your own strategy.
You can ignore the actual entry/exit orders - they're based on a simple MA cross and are therefore NOT relevant, NOT profitable and NOT recommended!
You should be using this code as a way of adding a % Trailing Stop to your own scripts - hope it helps!
You should also notice that a generally considered losing strategy (a simple MA cross) could actually become profitable with careful money management - try combining this Trailing Stop script with our Fixed Stop/Take Profit script for really accurate management of your capital.
-----------
Good Luck and Happy Trading!
Sell Relative Strength Index [ChuckBanger]This is Sell Relative Strength Index (SRSI or “sell gravitation index”). This indicator was developed by Howard Wand as featured in the February 2019 issue of TASC magazine.
"Traders accumulate profits trade by trade, with the goal of maximizing profits. But selloffs happen and when they do, you see significant price drops that are fast. Here’s an indicator that uses the profit accumulation size to estimate subsequent selloff size.
Green lines represent buy, red represents sell and yellow represents a balance between buy and sell signals on the SRSI."
CBMA Bollinger Bands Strategy directed [ChuckBanger]I just did a Bollinger Bands script with my newly CB moving average
While I'm generally against posting strategies because it's very easy to fake performance numbers... This is just to share a cool strategy snippet. My settings are 10 contracts/order with pyramiding set to 10. You can make the profitability a lot higher if you set the order size higher. But that dosent help you getting more out of this script when u make a bot of this script. I set the order size to 10 contracts to get your attention not to showcase the performance.
When the price is going down and outside of the lower side of the band. And when the price comes back into the channel the strategy buys. Usually that means the price is going up. And when the price is going up and outside of the upper band. The strategy sells when it crosses back in to the channel.
It is a very simple strategy but it is effective. I guess you need a proper stop-loss for this script to bee really profitable in a bot environment.
BitMEX pump catcher - MACDThis is a modified version of the BitMEX pump catcher by Jomy .
I have tweaked the algorithm to use the difference in MACD to get the correct direction of entries rather than using direction of candles which are not always indicative of trend direction. These changes increase net profit, profitable trades, while reducing drawdown.
Below is a copy and paste of Jomy's explanation of the algorithm.
What is going on here? This strategy is pretty simple. We start by measuring a very long chunk of volume history on BitMEX:XBTUSD 1 hour chart to find out if the current volume is high or low. At 1.0 the indicator is showing we are at 100% of normal historical volume . The blue line is a measure of recent volume! This indicator gets interested when the volume drops below 90% of the regular volume (0.9), and then comes back up over 90%. There's usually a pump of increased price activity during this time. When the 0.9 line is crossed by the blue line, the indicator surveys the last 2 bars of price action to figure out which way we're going, long or short. Green is long. Red is short. To exit the trade we use a 7 period fast ema of the volume crossing under an 11 ema slower period which shows declining interest in the market signifying an end to the pump or dump. The profit factor is quite high with 5x leverage, but historically we see 50% drawdown -- very risky. 1x leverage looks nice and tight with very low drawdown. Play with the inputs to see what matches your own risk profile. I would not recommend taking this into much lower timeframes as trading fees are not included in the profit calculations. Please don't get burned trading on stupid high leverage. This indicator is probably not going to work well on alts, as Bitcoin FOMO build up and behavior is different. This whole indicator is tuned to Bitcoin , and attempts to trade only the meatiest part of the market moves.
Jomy should get full credit to this indicator
SMA_Cross + RSI1. long
a. RSI does not open an order when it is overbought, until the RSI falls below a certain threshold, and then open a position
b. There are already many positions. If the RSI is overbought, it will be profitable. When the RSI falls below a certain threshold, open a long position again until the moving average crossover signal turns short.
2. Short
a. RSI does not open an order when it is oversold, and then opens a position after RSI rises to a certain threshold
b. There are already short positions. If the RSI is oversold, it will be profitable to close the short position. When the RSI rises above a certain threshold, open the short position again until there is a reversal of the moving average crossing signal.
1. 做多
a. RSI在超买区间时不开单,直到RSI回落到某个阈值之下,再开仓
b. 已经有多仓,如果RSI超买,则平多获利,当RSI回落到某个阈值之下后,再次开多,直到有均线交叉信号反转做空
2. 做空
a. RSI在超卖区间时不开单,直到RSI上升到某个阈值之后,再开仓
b. 已经有空仓,如果RSI超卖,则平空获利,当RSI上升到某个阈值之上后,再次开空,直到有均线交叉信号反转做多
NR4 / NR7 + Inside BarIndicator Script for identifying Narrow Range 4 / 7 + Inside Bar
It also helps to check whether NR4 / NR7 breakout trading has been profitable or not in the past in a particular instrument.
It has helped me to select profitable scripts and avoid losing ones. Can be used for anytime frame.
SIGNAL
NR4 == Narrowest range of 4 periods + signal day is an inside bar
NR4 & NR7 == Narrowest range of 7 periods + signal day is an inside bar
SIGNAL "PROFIT" -
Prior day was NR4 / NR7 and next day price broke out of prior day range in 1 direction and closed in the direction of breakout away from breakout price, resulting in a profit trade.
SIGNAL "LOSS" -
Prior day was NR4 / NR7 and next day price broke out of prior day range and returned back to close inside the narrow zone OR went in opposite direction after the initial breakout, resulting in a loss trade.
TradingView Alerts to MT4 MT5 + dynamic variables NON-REPAINTINGAccidentally, I’m sharing open-source profitable Forex strategy. Accidentally, because this was aimed to be purely educational material. A few days ago TradingView released a very powerful feature of dynamic values from PineScript now being allowed to be passed in Alerts. And thanks to TradingConnector, they could be instantly executed in MT4 or MT5 platform of any broker in the world. So yeah - TradingConnector works with indices and commodities, too.
The logic of this EURUSD 6h strategy is very simple - it is based on Stochastic crossovers with stop-loss set under most recent pivot point. Setting stop-loss with surgical precision is possible exactly thanks to allowance of dynamic values in alerts. TradingConnector has been also upgraded to take advantage of these dynamic values and it now enables executing trades with pre-calculated stop-loss, take-profit, as well as stop and limit orders.
Another fresh feature of TradingConnector, is closing positions only partly - provided that the broker allows it, of course. A position needs to have trade_id specified at entry, referred to in further alerts with partial closing. Detailed spec of alerts syntax and functionalities can be found at TradingConnector website. How to include dynamic variables in alert messages can be seen at the very end of the script in alertcondition() calls.
The strategy also takes commission into consideration.
Slippage is intentionally left at 0. Due to shorter than 1 second delivery time of TradingConnector, slippage is practically non-existing. This can be achieved especially if you’re using VPS server, hosted in the same datacenter as your brokers’ servers. I am using such setup, it is doable. Small slippage and spread is already included in commission value.
This strategy is NON-REPAINTING and uses NO TRAILING-STOP or any other feature known to be faulty in TradingView backtester. Does it make this strategy bulletproof and 100% success-guaranteed? Hell no! Remember the no.1 rule of backtesting - no matter how profitable and good looking a script is, it only tells about the past. There is zero guarantee the same strategy will get similar results in the future.
To turn this script into study so that alerts can be produced, do 2 things:
1. comment “strategy” line at the beginning and uncomment “study” line
2. comment lines 54-59 and uncomment lines 62-65.
Then add script to the chart and configure alerts.
This script was build for educational purposes only.
Certainly this is not financial advice. Anybody using this script or any of its parts in any way, must be aware of high risks connected with trading.
Thanks @LucF and @a.tesla2018 for helping me with code fixes :)
Backtesting on Non-Standard Charts: Caution! - PineCoders FAQMuch confusion exists in the TradingView community about backtesting on non-standard charts. This script tries to shed some light on the subject in the hope that traders make better use of those chart types.
Non-standard charts are:
Heikin Ashi (HA)
Renko
Kagi
Point & Figure
Range
These chart types are called non-standard because they all transform market prices into synthetic views of price action. Some focus on price movement and disregard time. Others like HA use the same division of bars into fixed time intervals but calculate artificial open, high, low and close (OHLC) values.
Non-standard chart types can provide traders with alternative ways of interpreting price action, but they are not designed to test strategies or run automated traded systems where results depend on the ability to enter and exit trades at precise price levels at specific times, whether orders are issued manually or algorithmically. Ironically, the same characteristics that make non-standard chart types interesting from an analytical point of view also make them ill-suited to trade execution. Why? Because of the dislocation that a synthetic view of price action creates between its non-standard chart prices and real market prices at any given point in time. Switching from a non-standard chart price point into the market always entails a translation of time/price dimensions that results in uncertainty—and uncertainty concerning the level or the time at which orders are executed is detrimental to all strategies.
The delta between the chart’s price when an order is issued (which is assumed to be the expected price) and the price at which that order is filled is called slippage . When working from normal chart types, slippage can be caused by one or more of the following conditions:
• Time delay between order submission and execution. During this delay the market may move normally or be subject to large orders from other traders that will cause large moves of the bid/ask levels.
• Lack of bids for a market sell or lack of asks for a market buy at the current price level.
• Spread taken by middlemen in the order execution process.
• Any other event that changes the expected fill price.
When a market order is submitted, matching engines attempt to fill at the best possible price at the exchange. TradingView strategies usually fill market orders at the opening price of the next candle. A non-standard chart type can produce misleading results because the open of the next candle may or may not correspond to the real market price at that time. This creates artificial and often beneficial slippage that would not exist on standard charts.
Consider an HA chart. The open for each candle is the average of the previous HA bar’s open and close prices. The open of the HA candle is a synthetic value, but the real market open at the time the new HA candle begins on the chart is the unrelated, regular open at the chart interval. The HA open will often be lower on long entries and higher on short entries, resulting in unrealistically advantageous fills.
Another example is a Renko chart. A Renko chart is a type of chart that only measures price movement. The purpose of a Renko chart is to cluster price action into regular intervals, which consequently removes the time element. Because Trading View does not provide tick data as a price source, it relies on chart interval close values to construct Renko bricks. As a consequence, a new brick is constructed only when the interval close penetrates one or more brick thresholds. When a new brick starts on the chart, it is because the previous interval’s close was above or below the next brick threshold. The open price of the next brick will likely not represent the current price at the time this new brick begins, so correctly simulating an order is impossible.
Some traders have argued with us that backtesting and trading off HA charts and other non-standard charts is useful, and so we have written this script to show traders what happens when order fills from backtesting on non-standard charts are compared to real-world fills at market prices.
Let’s review how TV backtesting works. TV backtesting uses a broker emulator to execute orders. When an order is executed by the broker emulator on historical bars, the price used for the fill is either the close of the order’s submission bar or, more often, the open of the next. The broker emulator only has access to the chart’s prices, and so it uses those prices to fill orders. When backtesting is run on a non-standard chart type, orders are filled at non-standard prices, and so backtesting results are non-standard—i.e., as unrealistic as the prices appearing on non-standard charts. This is not a bug; where else is the broker emulator going to fetch prices than from the chart?
This script is a strategy that you can run on either standard or non-standard chart types. It is meant to help traders understand the differences between backtests run on both types of charts. For every backtest, a label at the end of the chart shows two global net profit results for the strategy:
• The net profits (in currency) calculated by TV backtesting with orders filled at the chart’s prices.
• The net profits (in currency) calculated from the same orders, but filled at market prices (fetched through security() calls from the underlying real market prices) instead of the chart’s prices.
If you run the script on a non-standard chart, the top result in the label will be the result you would normally get from the TV backtesting results window. The bottom result will show you a more realistic result because it is calculated from real market fills.
If you run the script on a normal chart type (bars, candles, hollow candles, line, area or baseline) you will see the same result for both net profit numbers since both are run on the same real market prices. You will sometimes see slight discrepancies due to occasional differences between chart prices and the corresponding information fetched through security() calls.
Features
• Results shown in the Data Window (third icon from the top right of your chart) are:
— Cumulative results
— For each order execution bar on the chart, the chart and market previous and current fills, and the trade results calculated from both chart and market fills.
• You can choose between 2 different strategies, both elementary.
• You can use HA prices for the calculations determining entry/exit conditions. You can use this to see how a strategy calculated from HA values can run on a normal chart. You will notice that such strategies will not produce the same results as the real market results generated from HA charts. This is due to the different environment backtesting is running on where for example, position sizes for entries on the same bar will be calculated differently because HA and standard chart close prices differ.
• You can choose repainting/non-repainting signals.
• You can show MAs, entry/exit markers and market fill levels.
• You can show candles built from the underlying market prices.
• You can color the background for occurrences where an order is filled at a different real market price than the chart’s price.
Notes
• On some non-standard chart types you will not obtain any results. This is sometimes due to how certain types of non-standard types work, and sometimes because the script will not emit orders if no underlying market information is detected.
• The script illustrates how those who want to use HA values to calculate conditions can do so from a standard chart. They will then be getting orders emitted on HA conditions but filled at more realistic prices because their strategy can run on a standard chart.
• On some non-standard chart types you will see market results surpass chart results. While this may seem interesting, our way of looking at it is that it points to how unreliable non-standard chart backtesting is, and why it should be avoided.
• In order not to extend an already long description, we do not discuss the particulars of executing orders on the realtime bar when using non-standard charts. Unless you understand the minute details of what’s going on in the realtime bar on a particular non-standard chart type, we recommend staying away from this.
• Some traders ask us: Why does TradingView allow backtesting on non-standard chart types if it produces unrealistic results? That’s somewhat like asking a hammer manufacturer why it makes hammers if hammers can hurt you. We believe it’s a trader’s responsibility to understand the tools he is using.
Takeaways
• Non-standard charts are not bad per se, but they can be badly used.
• TV backtesting on non-standard charts is not broken and doesn’t require fixing. Traders asking for a fix are in dire need of learning more about trading. We recommend they stop trading until they understand why.
• Stay away from—even better, report—any vendor presenting you with strategies running on non-standard charts and implying they are showing reliable results.
• If you don’t understand everything we discussed, don’t use non-standard charts at all.
• Study carefully how non-standard charts are built and the inevitable compromises used in calculating them so you can understand their limitations.
Thanks to @allanster and @mortdiggiddy for their help in editing this description.
Look first. Then leap.
NoNonsense Forex - high timeframe trading absurd NON-REPAINTINGSome time ago I bumped into NoNonsense Forex - pretty good-looking course with well-designed videos, reasonable rules, etc. Nice explanatory videos, not selling anything, building indicators-only strategy. But there was one thing that really annoyed me - it was supposed to work only on Daily timeframe. What is the point in trading such high timeframe, if decisions changing market direction are playing out within 1 minute? What is the point in evaluating trades from 1994 if we are 25 years later?
Anyway, I have developed this strategy, which is:
- non-repainting
- not using trailing-stop
- not using any other known TradingView backtest bugs
And I'm showing it as an example of OVERFITTING. Backtesting results look absurd: 100% profitable. But if you change any of the many parameters in the Settings popup, they will turn into disaster. It means, the rules of this strategy are very fragile. Don't trade this! Remember about backtesting rule #1: past results do not guarantee success in the future.
I'm giving this strategy out with the source code. Feel free to do anything you want with it. But if you find parameters or modifications on, which allow profitable trading on lower timeframes, don't be shy, let me know :)
*********
Forex / Indices / Commodities traders who want to start AUTO-TRADING might want to take a look at "TradingConnector", which allows no-latency trades execution from TradingView to MT4/MT5.
VRSI-MARSI StrategyI wanted to create an indicator which resembles price movement, aside to volume movement.
The "yellow-blue" line is the MA(5) of the RSI (9) of closing price.
The "orange" line is the MA(5) of the RSI (9) of Volume .
(Default plot of RSI and VRSI is not visible but can be made visible ("Settings" > "Style" > set "Opacity" of "RSI & VRSI"))
The Long (Buy) condition is triggered when the MA(5) of the RSI (9, close) goes up.
The Short (Sell) condition is triggered when the MA(5) of the RSI (9, close) goes down.
Comparing the price movement with the "orange" Volume line helps to spot a possible trend change,
for example when price goes up and an ascending Volume line starts to flatten or starts descending,
this could be a sign that the Bullish trend is weakening, predicting a possible trend change.
Or, when for example a downwards price movement is accompanied with a rising Volume line, this can be a sign of large Bearish power.
Because it still is a RSI indicator, the midline (50), and Oversold/Overbought area's (20-30 & 70-80) are important to watch, especially the MARSI!
A second strategy is made (VRSI-MARSI Strategy 2) where the Long/Short condition is triggered when "MA RSI (close) - MA RSI ( Volume )" crosses.
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
The Long & Short entries, as well as the Entry Close are visible 1 bar after the trigger.
When the blue line changes in a yellow line (and vice versa) it will show a candle earlier (see yellow dashed lines = (1)).
Also, the condition is fulfilled when the candle closes (2), but the order doesn't take place in the same bar, but the next (3).
Because this is a strategy the "actual Order" will not take place at the "Close" of the candle (2), but at the "Open" at the NEXT candle (3).
I also have this strategy as a study (A+B), where the "Buy" & "Sell" shows a candle earlier.
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
The entries are default 5% of equity, without pyramiding, which already gives large profits.
A large part of the profit is because of the Entry Close of the Long & Short entries.
You can easily turn these off (Settings > Inputs) to see what profit the strategy gives without Entry Close.
Here they are disabled:
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
More information available in the script ;-)
Directional Movement Index with double exponential moving averagThe Directional system is a trend-following method developed by J. Welles Wilder,
in the mid-1970s. It identifies trends and shows
when a trend is moving fast enough to make it worth following. It helps traders to
profit by taking chunks out of the middle of important trends.
Trading Rules
1. Trade only from the long side when the positive Directional line is above the
negative one. Trade only from the short side when the negative Directional line
is above the positive one. The best time to trade is when the ADX is rising, show-
ing that the dominant group is getting stronger.
2. When ADX declines, it shows that the market is becoming less directional. There
are likely to be many whipsaws. When ADX points down, it is better not to use
a trend-following method.
3. When ADX falls below both Directional lines, it identifies a flat, sleepy mar-
ket. Do not use a trend-following system but get ready to trade, because major
trends emerge from such lulls.
4. The single best signal of the Directional system comes after ADX falls below
both Directional lines. The longer it stays there, the stronger the base for the
next move. When ADX rallies from below both Directional lines, it shows that
the market is waking up from a lull. When ADX rises by four steps
from its lowest point below both Directional lines, it “rings a bell” on a
new trend . It shows that a new bull market or bear market is being
born, depending on what Directional line is on top.
5. When ADX rallies above both Directional lines, it identifies an overheated mar-
ket. When ADX turns down from above both Directional lines, it shows that the
major trend has stumbled. It is a good time to take profits on a directional trade.
If you trade large positions, you definitely want to take partial profits.
This particular version uses DEMA (double exponential moving averages) in attempt to catch moves sooner.
QuantCat Chande Swinger StrategyQuantCat Chande Swinger
This strategy is designed to be used on the 1 minute with mainly bitcoin, and cryptocurrencies. But parameters can be adjusted to ANY pair.
After some long research about chande momentum oscillator, I decided to create a strategy using normal distribution percentage levels to snipe entries. This in turn on the 1 minute can create a nice profit over a consecutive amount of days, the end goal is to get a stronger version of this strategy running on a bot and print some money. This strategy is tightly defined, and can be loosened up to make more trades too- giving a higher sample size and better sharpe ratio.
The strategy checks to see if the Chande value is in an extreme percentile based on the last few hundred chande values- if it is it will open a position.
No stoploss or take profit implemented into the swinger yet, but this will be the next addition to really minimise loss and amplify potential profits.
Any liquid crypto pair on the low timesframes will net a good result with this strategy.
We also have a free 15M and 1H strategy available too.
You can join our discord server to get live alerts for the strategies as well as speak to our devs! Link in signature below!!!
🐮 🆚 🐻 [Alerts]It's a remake of the previous script but for use in reverse positions at the same time.
In this script the reality could be even better than the Backtest, because, only close the position with profit, so profitability should be 100%, and Longs and Shorts don't mix because they are independent.
In real trade, you need an exchange that allows you to go in reverse positions at the same time or where you can have two independent sub-accounts: one for long and one for short and with margin trading. Although, if TP is small and does not mix with other inverse positions, it's not necessary. (With this script, you can go long and short at the same time and with independent configurations)
Settings for ETH at 5 minutes. (If you find good settings please comment)
Enjoy!
🐮 🆚 🐻 [Backtest]It's a remake of the previous script but for use in reverse positions at the same time.
In this script the reality could be even better than the Backtest, because, only close the position with profit, so profitability should be 100%, and Longs and Shorts don't mix because they are independent.
In real trade, you need an exchange that allows you to go in reverse positions at the same time or where you can have two independent sub-accounts: one for long and one for short and with margin trading. Although, if TP is small and does not mix with other inverse positions, it's not necessary. (With this script, you can go long and short at the same time and with independent configurations)
Settings for ETH at 5 minutes. (If you find good settings please comment)
Enjoy!
Bilateral Stochastic Oscillator StrategyIntroduction
Strategy based on the bilateral stochastic oscillator, this oscillator aim to detect trends and possible reversal points of the current trend. The oscillator is composed of 1 bull line in blue and 1 bear line in red as well as a signal line in orange, the strategy have many options such as two different strategy framework and a martingale mode. If you require more information about the indicator go check it into my uploaded indicators.
Strategy Frameworks
There are two frameworks available that can be selected from the strategy settings window. Both have the same closing conditions, the "Bull/Bear Cross" entry conditions are :
Buy : when the bull line cross over the bear line
Sell : when the bear line cross over the bull line
The "Signal Cross" entry conditions are :
Buy : when the bull line cross over the signal line
Sell : when the bear line cross over the signal line
Both have the same close conditions that is : close when bull/bear cross under the signal line.
Introduction To Martingale
The martingale money management system consist to double the order size after a loosing trade and can be described as a 2^x where x is the current number of loosing trades since the last win trade, when we win a trade the order size return to the default order size. Therefore our order size function is based on exponential growth.
This system enable the trader to win back his previous losses plus a potential profit, martingales must always be used with stops and sometimes take profits in order to get control in a strategy.
It must always be taken into account that in a series of losses the balance can exponentially decay thus ending to 0 in a matter of trades, this is why it is not recommended to use such system. The strategy allow you to select a martingale multiplier that can be inferior to 2 thus limiting risks, a multiplied of 1 disable the martingale.
Results
Those are the some statistics of the strategy applied to some forex majors by using the default settings in a time frames of 15 minutes.
//-------------------------------------------------------
EURUSD - Order Size 1000 - Spread 0.0002
Profit : $ 21.08
Trades : 19
PP : 57.89 %
Profit Factor : 3.228
Max Drawdown : -$ 3.81
Average Trade : $ 1.11
//-------------------------------------------------------
GBPUSD - Order Size 1000 - Spread 0.0002
Profit : $ 2.31
Trades : 20
PP : 55 %
Profit Factor : 0.938
Max Drawdown : -$ 20.29
Average Trade : $ 0.12
//-------------------------------------------------------
EURAUD - Order Size 1000 - Spread 0.0002
Profit : -$ 9.22
Trades : 20
PP : 40 %
Profit Factor : 0.698
Max Drawdown : -$ 23.44
Average Trade : $ 0.46
//-------------------------------------------------------
EURCHF - Order Size 1000 - Spread 0.0002
Profit : $ 1.58
Trades : 24
PP : 54.17 %
Profit Factor : 1.103
Max Drawdown : -$ 7.23
Average Trade : $ 0.07
//-------------------------------------------------------
Conclusions
Based on the results the strategy does not posses the sufficient performance in order to apply a martingale or any other growth systems as order size. Parameters might be subject to drastic changes depending on the market/time-frame in order to return long-term positive results. I let you draw your conclusions.
Trade Manager (Open Source Version)Hello my young padawans looking for the FORCE to get richer on your next trade
I got pinged at least three times today asking where the hell is the indicator of the day. You asked, I delivered :)
Here's your free open-source Trade Manager Version. My associates might kill me for sharing that one... anyway this is a real GIFT.
I won't share such quality indicators too often for FREE so hope you'll appreciate its value. It can really help with your day to day trading (on top of making your charts looking more awesome)
This is an even better version compared to my previous Trade Manager Trade-Manager . It's basically a standalone version, meaning you'll have to update with 2 lines your own indicator and follow my educational post from yesterday (pasted it below also) to learn how to do it
Please read this educational post I published for you before proceeding further : How-to-connect-your-indicator-with-the-Trade-Manager
From here you normally connected the data source of your own indicator to the Trade Manager. If not, here's a reminder of the article mentionned above
Step 1 - Update your indicator
For the screenshot you see above, I used this indicator : Two-MM-Cross-MACD/ . "But sir are you really advertising your other indicators here ??" ... hmmm.... YES but I gave them for free so ... stop complaining my friend :)
Somewhere in the code you'll have a LONG and a SHORT condition. If not, please go back to study trading for noobs (I'm kidding !!!)
So it should look to something similar
nUP = ma_crossover and macd_crossover
nDN = ma_crossunder and macd_crossunder
What you will need to add at the very end of your script is a Signal plot that will be captured by the Trade Manager. This will give us :
// Signal plot to be used as external
// if crossover, sends 1, otherwise sends -1
Signal = (nUP) ? 1 : (nDN) ? -1 : na
plot(Signal, title="Signal")
The Trade Manager engines expects to receive 1 for a bullishg signal and -1 for bearish .
Step 2 - Add the Trade Manager to your chart and select the right Data Source
I feel the questions coming so I prefer to anticipate :) When you add the Trade Manager to your chart, nothing will be displayed. THIS IS NORMAL because you'll have to select the Data Source to be "Signal"
Remember our Signal variable from the Two MM Cross from before, now we'll capture it and.....drumb rolll...... that's from that moment that your life became even more AWESOME
The Engine will capture the last signal from the MM cross or any indicator actually and will update the Stop Loss, Take Profit levels based on the parameters you set on the Trade Manager
It should work with any indicator as long as you're providing a plot Signal with values 1 and -1 . In any case, you can change the Trade Manager you'll find a better logic for your trading
Now let's cover the different parameters of the tool
It should be straightforward but better to explain everything here
+Label lines : if unchecked, no SL/TPs/... will be displayed
+Show Stop Loss Signal : Will display the stop loss label. You have the choice between three options :
By default, the Stop Loss is set to NONE. You'll have to select a different option to enable the Stop Loss for real
++Percentage : Will set the SL at a percent distance from the price
++Fixed : SL fixed at a static price
++Trailing % : Trailing stop loss based on percentage level
The following is a KEY feature and I got asked for it many times those past two days. I got annoyed of getting the same request so I just did it
++Trailing TP: Will move the Stop Loss if the take profit levels are hit
Example: if TP1 is hit, SL will be moved to breakeven. If TP2 is hit, SL will be moved from TP1 to TP2
+Take Profit 1,2,3 : Visually define the three Take Profit levels. Those are percentage levels .
Meaning if you set TP1 = 2, it will set the TP1 level 2% away from the entry signal
Please note that once a Take profit level is reached, it will magically disappear. This is to be expected
I'll share in the future a way more complete version with invalidation, stop loss/take profits based on indicator, take profit based on supports/resistances, ...
I believe is such a great tool because can be connected to any indicator. I confess that I tried it only with a few... if you find any that's not working with the Trade manager, please let me know and I'll have a look
PS
I want to give a HUUUUUUUGE shoutout to the PineCoders community who helped me finishing it
Wishing you all the best and a pleasant experience with my work
David