Intramarket Difference Index StrategyHi Traders !!
The IDI Strategy:
In layman’s terms this strategy compares two indicators across markets and exploits their differences.
note: it is best the two markets are correlated as then we know we are trading a short to long term deviation from both markets' general trend with the assumption both markets will trend again sometime in the future thereby exhausting our trading opportunity.
📍 Import Notes:
This Strategy calculates trade position size independently (i.e. risk per trade is controlled in the user inputs tab), this means that the ‘Order size’ input in the ‘Properties’ tab will have no effect on the strategy. Why ? because this allows us to define custom position size algorithms which we can use to improve our risk management and equity growth over time. Here we have the option to have fixed quantity or fixed percentage of equity ATR (Average True Range) based stops in addition to the turtle trading position size algorithm.
‘Pyramiding’ does not work for this strategy’, similar to the order size input togeling this input will have no effect on the strategy as the strategy explicitly defines the maximum order size to be 1.
This strategy is not perfect, and as of writing of this post I have not traded this algo.
Always take your time to backtests and debug the strategy.
🔷 The IDI Strategy:
By default this strategy pulls data from your current TV chart and then compares it to the base market, be default BINANCE:BTCUSD . The strategy pulls SMA and RSI data from either market (we call this the difference data), standardizes the data (solving the different unit problem across markets) such that it is comparable and then differentiates the data, calling the result of this transformation and difference the Intramarket Difference (ID). The formula for the the ID is
ID = market1_diff_data - market2_diff_data (1)
Where
market(i)_diff_data = diff_data / ATR(j)_market(i)^0.5,
where i = {1, 2} and j = the natural numbers excluding 0
Formula (1) interpretation is the following
When ID > 0: this means the current market outperforms the base market
When ID = 0: Markets are at long run equilibrium
When ID < 0: this means the current market underperforms the base market
To form the strategy we define one of two strategy type’s which are Trend and Mean Revesion respectively.
🔸 Trend Case:
Given the ‘‘Strategy Type’’ is equal to TREND we define a threshold for which if the ID crosses over we go long and if the ID crosses under the negative of the threshold we go short.
The motivating idea is that the ID is an indicator of the two symbols being out of sync, and given we know volatility clustering, momentum and mean reversion of anomalies to be a stylised fact of financial data we can construct a trading premise. Let's first talk more about this premise.
For some markets (cryptocurrency markets - synthetic symbols in TV) the stylised fact of momentum is true, this means that higher momentum is followed by higher momentum, and given we know momentum to be a vector quantity (with magnitude and direction) this momentum can be both positive and negative i.e. when the ID crosses above some threshold we make an assumption it will continue in that direction for some time before executing back to its long run equilibrium of 0 which is a reasonable assumption to make if the market are correlated. For example for the BTCUSD - ETHUSD pair, if the ID > +threshold (inputs for MA and RSI based ID thresholds are found under the ‘‘INTRAMARKET DIFFERENCE INDEX’’ group’), ETHUSD outperforms BTCUSD, we assume the momentum to continue so we go long ETHUSD.
In the standard case we would exit the market when the IDI returns to its long run equilibrium of 0 (for the positive case the ID may return to 0 because ETH’s difference data may have decreased or BTC’s difference data may have increased). However in this strategy we will not define this as our exit condition, why ?
This is because we want to ‘‘let our winners run’’, to achieve this we define a trailing Donchian Channel stop loss (along with a fixed ATR based stop as our volatility proxy). If we were too use the 0 exit the strategy may print a buy signal (ID > +threshold in the simple case, market regimes may be used), return to 0 and then print another buy signal, and this process can loop may times, this high trade frequency means we fail capture the entire market move lowering our profit, furthermore on lower time frames this high trade frequencies mean we pay more transaction costs (due to price slippage, commission and big-ask spread) which means less profit.
By capturing the sum of many momentum moves we are essentially following the trend hence the trend following strategy type.
Here we also print the IDI (with default strategy settings with the MA difference type), we can see that by letting our winners run we may catch many valid momentum moves, that results in a larger final pnl that if we would otherwise exit based on the equilibrium condition(Valid trades are denoted by solid green and red arrows respectively and all other valid trades which occur within the original signal are light green and red small arrows).
another example...
Note: if you would like to plot the IDI separately copy and paste the following code in a new Pine Script indicator template.
indicator("IDI")
// INTRAMARKET INDEX
var string g_idi = "intramarket diffirence index"
ui_index_1 = input.symbol("BINANCE:BTCUSD", title = "Base market", group = g_idi)
// ui_index_2 = input.symbol("BINANCE:ETHUSD", title = "Quote Market", group = g_idi)
type = input.string("MA", title = "Differrencing Series", options = , group = g_idi)
ui_ma_lkb = input.int(24, title = "lookback of ma and volatility scaling constant", group = g_idi)
ui_rsi_lkb = input.int(14, title = "Lookback of RSI", group = g_idi)
ui_atr_lkb = input.int(300, title = "ATR lookback - Normalising value", group = g_idi)
ui_ma_threshold = input.float(5, title = "Threshold of Upward/Downward Trend (MA)", group = g_idi)
ui_rsi_threshold = input.float(20, title = "Threshold of Upward/Downward Trend (RSI)", group = g_idi)
//>>+----------------------------------------------------------------+}
// CUSTOM FUNCTIONS |
//<<+----------------------------------------------------------------+{
// construct UDT (User defined type) containing the IDI (Intramarket Difference Index) source values
// UDT will hold many variables / functions grouped under the UDT
type functions
float Close // close price
float ma // ma of symbol
float rsi // rsi of the asset
float atr // atr of the asset
// the security data
getUDTdata(symbol, malookback, rsilookback, atrlookback) =>
indexHighTF = barstate.isrealtime ? 1 : 0
= request.security(symbol, timeframe = timeframe.period,
expression = [close , // Instentiate UDT variables
ta.sma(close, malookback) ,
ta.rsi(close, rsilookback) ,
ta.atr(atrlookback) ])
data = functions.new(close_, ma_, rsi_, atr_)
data
// Intramerket Difference Index
idi(type, symbol1, malookback, rsilookback, atrlookback, mathreshold, rsithreshold) =>
threshold = float(na)
index1 = getUDTdata(symbol1, malookback, rsilookback, atrlookback)
index2 = getUDTdata(syminfo.tickerid, malookback, rsilookback, atrlookback)
// declare difference variables for both base and quote symbols, conditional on which difference type is selected
var diffindex1 = 0.0, var diffindex2 = 0.0,
// declare Intramarket Difference Index based on series type, note
// if > 0, index 2 outpreforms index 1, buy index 2 (momentum based) until equalibrium
// if < 0, index 2 underpreforms index 1, sell index 1 (momentum based) until equalibrium
// for idi to be valid both series must be stationary and normalised so both series hae he same scale
intramarket_difference = 0.0
if type == "MA"
threshold := mathreshold
diffindex1 := (index1.Close - index1.ma) / math.pow(index1.atr*malookback, 0.5)
diffindex2 := (index2.Close - index2.ma) / math.pow(index2.atr*malookback, 0.5)
intramarket_difference := diffindex2 - diffindex1
else if type == "RSI"
threshold := rsilookback
diffindex1 := index1.rsi
diffindex2 := index2.rsi
intramarket_difference := diffindex2 - diffindex1
//>>+----------------------------------------------------------------+}
// STRATEGY FUNCTIONS CALLS |
//<<+----------------------------------------------------------------+{
// plot the intramarket difference
= idi(type,
ui_index_1,
ui_ma_lkb,
ui_rsi_lkb,
ui_atr_lkb,
ui_ma_threshold,
ui_rsi_threshold)
//>>+----------------------------------------------------------------+}
plot(intramarket_difference, color = color.orange)
hline(type == "MA" ? ui_ma_threshold : ui_rsi_threshold, color = color.green)
hline(type == "MA" ? -ui_ma_threshold : -ui_rsi_threshold, color = color.red)
hline(0)
Note it is possible that after printing a buy the strategy then prints many sell signals before returning to a buy, which again has the same implication (less profit. Potentially because we exit early only for price to continue upwards hence missing the larger "trend"). The image below showcases this cenario and again, by allowing our winner to run we may capture more profit (theoretically).
This should be clear...
🔸 Mean Reversion Case:
We stated prior that mean reversion of anomalies is an standerdies fact of financial data, how can we exploit this ?
We exploit this by normalizing the ID by applying the Ehlers fisher transformation. The transformed data is then assumed to be approximately normally distributed. To form the strategy we employ the same logic as for the z score, if the FT normalized ID > 2.5 (< -2.5) we buy (short). Our exit conditions remain unchanged (fixed ATR stop and trailing Donchian Trailing stop)
🔷 Position Sizing:
If ‘‘Fixed Risk From Initial Balance’’ is toggled true this means we risk a fixed percentage of our initial balance, if false we risk a fixed percentage of our equity (current balance).
Note we also employ a volatility adjusted position sizing formula, the turtle training method which is defined as follows.
Turtle position size = (1/ r * ATR * DV) * C
Where,
r = risk factor coefficient (default is 20)
ATR(j) = risk proxy, over j times steps
DV = Dollar Volatility, where DV = (1/Asset Price) * Capital at Risk
🔷 Risk Management:
Correct money management means we can limit risk and increase reward (theoretically). Here we employ
Max loss and gain per day
Max loss per trade
Max number of consecutive losing trades until trade skip
To read more see the tooltips (info circle).
🔷 Take Profit:
By defualt the script uses a Donchain Channel as a trailing stop and take profit, In addition to this the script defines a fixed ATR stop losses (by defualt, this covers cases where the DC range may be to wide making a fixed ATR stop usefull), ATR take profits however are defined but optional.
ATR SL and TP defined for all trades
🔷 Hurst Regime (Regime Filter):
The Hurst Exponent (H) aims to segment the market into three different states, Trending (H > 0.5), Random Geometric Brownian Motion (H = 0.5) and Mean Reverting / Contrarian (H < 0.5). In my interpretation this can be used as a trend filter that eliminates market noise.
We utilize the trending and mean reverting based states, as extra conditions required for valid trades for both strategy types respectively, in the process increasing our trade entry quality.
🔷 Example model Architecture:
Here is an example of one configuration of this strategy, combining all aspects discussed in this post.
Future Updates
- Automation integration (next update)
Index
EHMA Range Index Basket StrategyThis script is a modified version of my EHMA Range Strategy.
EHMA Range Strategy
In addition to the EHMA, this script works with a range around the EHMA (which can be modified), in an attempt to be robust against fake signals. Many times a bar will close below a moving average, only to reverse again the next bar, which eats away at your profits. Especially on shorter timeframes, but also on choppy longer timeframes this can make a strategy unattractive to use.
With the range around the EHMA, the strategy only enters a long/exit-short position if a bar crosses above the upper range. Vice versa, it only enters a short/exit-long position if a bar crosses below the lower range. This avoids positions if bars behave choppy within the EHMA range & only enters a position if the market is confident in it's direction. Having said that, fakeouts are still possible, but a lot less frequent. Having backtested this strategy vs the regular EHMA strategy (and having experimented with various settings), this version seems to be a lot more robust & profitable!
EHMA Range Index Basket Strategy
The EHMA Range Index Basket Strategy aims to make the EHMA Range Strategy even more robust, by taking nearly 40 of the most traded crypto trading pairs and applying the EHMA Range Strategy to them. For each pair it assigns a 0 (Sell signal) or 1 (Buy signal) and adds them up. If the number of Buy signals outweigh the number of Sell signals, the index strategy triggers its Buy signal (and vice versa). The results are even more profitable & robust than with the EHMA Range Strategy on its own. Next to that, it performs a lot better on most crypto pairs, due to it's robustness. Because of that, this strategy is a lot less prone to overfitting and will likely produce better results during live trading conditions!
Disclaimer
Please remember that past performance may not be indicative of future results.
Due to various factors, including changing market conditions, the strategy may no longer perform as good as in historical backtesting.
This post and the script don’t provide any financial advice.
[Pt] Premarket Breakout StrategyThis is a 1 trade per day strategy for trading SPY or QQQ index. By default, this is designed for 1 min time frame. This was an experimental script that seems to be profitable at the time of publication.
How it works:
Pre-market high and low is defined per trading day between 9:00 to 9:30 EST.
Then we looking for the first breakout on either PM high or PM low.
- Breakout high = long trade
- Breakout low = short trade
If long trade, we wait until Stochastic RSI D signal line to hit a lower threshold (18 by default). Then we enter long when K crosses above D line.
If short trade, we wait until Stochastic RSI D signal line to hit an upper threshold (82 by default). Then we enter short when K crosses below D line.
Stop loss for long
- set to PM low if entry is above PM high + %ATR buffer
- or set to PM range + %ATR buffer
Stop loss for short
- set to PM high if entry is below PM low + %ATR buffer
- or set to PM range + %ATR buffer
Profit target is set to 2x the risk by default.
*Note: Different Stochastic RSI lengths should be used if trading 5 min time frame. See tooltip.
Happy trading~~!
The Impossible TraderTHE IMPOSSIBLE TRADER
A simple, but effective High Freq Strategy script based on MACD or RSI trend, with extra customizable Alert Messages for Bots.
WHAT IT DOES
This script (works best at lower TimeFrames) just follow the trend of MACD or RSI on your asset.
Why it should work? Because in an upper trend, there are more chance of green candles than reds. And in dump trend there are more chance of red candles than greens.
While trend is positive, it will try to open Long orders as fast as possible at market price.
While trend is negative, it will try to open Short orders as fast as possible at market price.
HOW TO SETUP YOUR PREFERENCES
Capital : Insert a % of Margin you want to use for your positions (usually 30% is quite good)
Leverage : Choose leverage based on your plans
Trail Tick @ : This value (in Tick) tell the script "when" the "Trail Stop" order must be activated (from the Entry price)
Offset Tick @ : This is the price (in Tick) from the Trail Stop Price activated. Basically it is a Stop Loss that follow the price at a fixed distance.
SL Tick @ : Set a Stop Loss at amount Tick distance from the Entry Price. (Let's call it a Safety Stop Loss for bad decisions...)
TP Tick @ : Set a Take Profit at amount Tick distance from the Entry Price. Sometimes is better to exit in full Gain than keep positions.
Strategy : You can choose a Only Long, Only Short or Long+Short sametime strategy.
with MACD or RSI : You can try the strategy applied on MACD or applied on customizable RSI EMA
EMA : If you choosed RSI EMA, you can set any value for your testing (usually 80-120 works very nice)
Exit order after bars : Some Exchanges / Brokers apply fixed cost, and a strategy too fast could not be productive. This set will let you to delay the Exit Order on already Opened positions.
Keep Stop Loss active : If you are planning a delay for Exit Orders, sometime could be useful to keep activated Stop Loss.
Strategy Preset : Some preset I've found interesting, with good results.
BackTest Days : If there are too many results and script doesn't work, you can choose a closer range to show results.
EXTRA FEATURES
On Screen Display : OSD will show you some realtime stats about your strategy, like Asset Tick, Trading Period Range, Drawdown, Gains and not closed trade.
Alert Message : You can enter custom Long Entry/Exit and Short Entry/Exit message for your Bots (like AutoView, WunderBit, etc...). When alert is triggered, you can send custom message with {{strategy.order.comment}} in the text field
AutoView Alert Message : If you are user of AutoView, you can generate your calls. Those are tested only on Oanda with index like Sp500, US100, Us30.
TIPS ON USE
Some asset on TradingView require an higher initial capital. Go to this Script Settings -> Properties and rise Initial Capital.
Be aware of commissions and spread when evalutating a strategy. Go to this Script Settings -> Properties and set Commission and Slippage
Trail Stop and Ticks could be difficult to understand, but very profitable. Please take your time and study how it works.
Consider Tick like the minimum movement your asset can do. Ticks occurs "intra-bar", so some of your positions could be closed almost instantly.
Consider Trail Stop like a Stop Loss that keep always the same distance from your positions, but never came back . If you are in gain, say of 10 Ticks, and your Trail have 5 Ticks, this means for sure a close at minimum 5 Ticks from Entry Price.
On Screen Display will show you Ticks for your asset. This will help you on strategy settings, because not all asset responds on the same way.
ONLY LONG EXAMPLE
ONLY SHORT EXAMPLE
Ichimoku with MACD/ CMF/ TSIThis is a very powerful trend strategy designed for markets such as stocks market , stock index and crypto.
For time frames I found out that 1h seems to do the trick.
Components:
Ichimoku full pack
MACD histogram
CMF oscillator
TSI oscillator
Rules for entry
Long :
For Ichimoku:Tenkan part of cloud is bigger than kijun, Chikou is above 0 , close of a candle is above the Senkou
MACD histogram is above 0
CMF oscillator is positive and bigger than 0.1
TSI oscillator is above 0
Short:
For Ichimoku:Tenkan part of cloud is smaller than kijun, Chikou is below 0 , close of a candle is belowthe Senkou
MACD histogram is below 0
CMF oscillator is negative and below -0.1
TSI oscillator is below 0
Rules for exit
This strategy does not have any risk management inside. Instead it exits whenver it receives an opposite signal form the original one used for entry.
If you have any questions let me know !
Combo Backtest 123 Reversal & Positive Volume Index This is combo strategies for get a cumulative signal.
First strategy
This System was created from the Book "How I Tripled My Money In The
Futures Market" by Ulf Jensen, Page 183. This is reverse type of strategies.
The strategy buys at market, if close price is higher than the previous close
during 2 days and the meaning of 9-days Stochastic Slow Oscillator is lower than 50.
The strategy sells at market, if close price is lower than the previous close price
during 2 days and the meaning of 9-days Stochastic Fast Oscillator is higher than 50.
Second strategy
The theory behind the indexes is as follows: On days of increasing volume,
you can expect prices to increase, and on days of decreasing volume, you can
expect prices to decrease. This goes with the idea of the market being in-gear
and out-of-gear. Both PVI and NVI work in similar fashions: Both are a running
cumulative of values, which means you either keep adding or subtracting price
rate of change each day to the previous day`s sum. In the case of PVI, if today`s
volume is less than yesterday`s, don`t add anything; if today`s volume is greater,
then add today`s price rate of change. For NVI, add today`s price rate of change
only if today`s volume is less than yesterday`s.
WARNING:
- For purpose educate only
- This script to change bars colors.
MACD oscillator with EMA strategy 4H This is a simple, yet efficient strategy, which is made from a combination of an oscillator and a moving average.
Its setup for 4h candles with the current settings, however it can be adapted to other different timeframes.
It works nicely ,beating the buy and hold for both BTC and ETH over the last 3 years.
As well with some optimizations and modifications it can be adapted to futures market, indexes(NASDAQ,NIFTY etc), forex(GBPUSD), stocks and so on.
Components:
MACD
EMA
Time condition
Long/short option
For long/exit short we enter when we are above the ema, histogram is positive and current candle is higher than previous.
For short /exit long , when close below ema, histo negative and current candles smaller than previous
If you have any questions please let me know !
Combo Backtest 123 Reversal & MASS Index This is combo strategies for get a cumulative signal.
First strategy
This System was created from the Book "How I Tripled My Money In The
Futures Market" by Ulf Jensen, Page 183. This is reverse type of strategies.
The strategy buys at market, if close price is higher than the previous close
during 2 days and the meaning of 9-days Stochastic Slow Oscillator is lower than 50.
The strategy sells at market, if close price is lower than the previous close price
during 2 days and the meaning of 9-days Stochastic Fast Oscillator is higher than 50.
Second strategy
The Mass Index was designed to identify trend reversals by measuring
the narrowing and widening of the range between the high and low prices.
As this range widens, the Mass Index increases; as the range narrows
the Mass Index decreases.
The Mass Index was developed by Donald Dorsey.
WARNING:
- For purpose educate only
- This script to change bars colors.
Combo Backtest 123 Reversal & Market Facilitation Index This is combo strategies for get a cumulative signal.
First strategy
This System was created from the Book "How I Tripled My Money In The
Futures Market" by Ulf Jensen, Page 183. This is reverse type of strategies.
The strategy buys at market, if close price is higher than the previous close
during 2 days and the meaning of 9-days Stochastic Slow Oscillator is lower than 50.
The strategy sells at market, if close price is lower than the previous close price
during 2 days and the meaning of 9-days Stochastic Fast Oscillator is higher than 50.
Second strategy
The Market Facilitation Index is an indicator that relates price range to
volume and measures the efficency of price movement. Use the indicator to
determine if the market is trending. If the Market Facilitation Index increased,
then the market is facilitating trade and is more efficient, implying that the
market is trending. If the Market Facilitation Index decreased, then the market
is becoming less efficient, which may indicate a trading range is developing that
may be a trend reversal.
WARNING:
- For purpose educate only
- This script to change bars colors.
Bollinger Bands Strategy with Intraday Intensity IndexFor Educational Purposes. Results can differ on different markets and can fail at any time. Profit is not guaranteed.
This only works in a few markets and in certain situations. Changing the settings can give better or worse results for other markets.
This is a mean reversion strategy based on Bollinger Bands and the Intraday Intensity Index (a volume indicator). John Bollinger mentions that the Intraday Intensity Index can be used with Bollinger Bands and is one of the top indicators he recommends in his book. It seems he prefers it over the other volume indicators that he compares to for some reason. III looks a lot like Chaikin Money Flow but without the denominator in that calculation. On the default settings of the BBs, the III helps give off better entry signals. John Bollinger however is vague on how to use the BBs and it's hard to say if one should enter when it is below/above the bands or when the price crosses them. I find that with many indicators and strategies it's best to wait for a confirmation of some sort, in this case by waiting for some crossover of a band. Like most mean reversion strategies, the exit is very loose if using BBs alone. Usually the plan to exit is when the price finally reverts back to the mean or in this case the middle band. This can potentially lead to huge drawdowns and/or losses. Mean reversion strategies can have high win/loss ratios but can still end up unprofitable because of the huge losses that can occur. These drawdowns/losses that mean reversion strategies suffer from can potentially eat away at a large chunk of all that was previously made or perhaps up to all of it in the worst cases, can occur weeks or perhaps up to months after being profitable trading such a strategy, and will take a while and several trades to make it all back or keep a profitable track record. It is important to have a stop loss, trailing stop, or some sort of stop plan with these types of strategies. For this one, in addition to exiting the trade when price reverts to the middle band, I included a time-based stop plan that exits with a gain or with a loss to avoid potentially large losses, and to exit after only a few periods after taking the trade if in profit instead of waiting for the price to revert back to the mean.
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:
Systematic Momentum strategy v 1.0Systematic Momentum strategy v 1.0
This is a long-only strategy optimized taking into consideration the underlying's momentum and volatily.
Long story short it opens positions when the momentum is highest and the risk is lowest and closes the same position when the risk-to-reward is no longer optimal.
How to use:
-> To be used on an Index or a tracker ETF
-> Position sizing should be set up to 100% of the portfolio
Mean Reversion w/ Bollinger BandsThis is a more advanced version of my original mean reversion script.
It employs the famous Bollinger Bands.
This robot will buy when price falls below the lower Bollinger Band, and sell when price moves above the upper Bollinger Band.
I've only tested it on the S&P 500, though you could try it out on other assets to see the backtest performance.
During the recent COVID-19 bear market drop, it produced several buy signals on the S&P which I followed, and made some nice gains so far.
I still think this would make a better investing strategy (buy undervalued / sell over-valued), rather than a trading strategy.
I use this robot for my long term portfolio.
XPloRR S&P500 Stock Market Crash Detection Strategy v2XPloRR S&P500 Stock Market Crash Detection Strategy v2
Long-Term Trailing-Stop strategy detecting S&P500 Stock Market Crashes/Corrections and showing Volatility as warning signal for upcoming crashes
Detecting or avoiding stock market crashes seems to be the 'Holy Grail' of strategies.
Since none of the strategies that I tested can beat the long term Buy&Hold strategy, the purpose was to detect a stock market crash on the S&P500 and step out in time to minimize losses and beat the Buy&Hold strategy. So beat the Buy&Hold strategy with around 10 trades. 100% capitalize sold trade into new trade.
With the default parameters the strategy generates 10262% profit (starting at 01/01/1962 until release date), with 10 closed trades, 100% profitable, while the Buy&Hold strategy only generates 3633% profit, so this strategy beats the Buy&Hold strategy by 2.82 times !
Also the strategy detects all major S&P500 stock market crashes and corrections since 1962 depending on the Trailing Stop Smoothness parameter, and steps out in time to cut losses and steps in again after the bottom has been reached. The 5 major crashes/corrections of 1987, 1990, 2001, 2008 and 2010 were successfully detected with the default parameters.
The script was first released on November 03 2019 and detected the Corona Crash on March 04 2020 with a Volatility crash-alert and a Sell crash-alert.
I have also created an Alerter Study Script based on the engine of this script, which generates Buy, Sell and Volatility signals.
If you are interested in this Alerter version script, please drop me a mail.
The script shows a lot of graphical information:
the Close value is shown in light-green. When the Close value is temporarily lower than the Buy value, the Close value is shown in light-red. This way it is possible to evaluate the virtual losses during the current trade.
the Trailing Stop value is shown in dark-green. When the Sell value is lower than the Buy value, the last color of the trade will be red (best viewed when zoomed)
the EMA and SMA values for both Buy and Sell signals are shown as colored graphs
the Buy signals are labeled in blue and the Sell signals are labeled in purple
the Volatility is shown below in green and red. The Alert Threshold (red) is default set to 2 (see Volatility Threshold parameter below)
How to use this Strategy?
Select the SPX (S&P500) graph and add this script to the graph.
Look in the strategy tester overview to optimize the values Percent Profitable and Net Profit (using the strategy settings icon, you can increase/decrease the parameters), then keep using these parameters for future Buy/Sell signals on the S&P500.
More trades don't necessarily generate more overall profit. It is important to detect only the major crashes and avoid closing trades on the smaller corrections. Bearing the smaller corrections generates a higher profit.
Watch out for the Volatility Alerts generated at the bottom (red). The Threshold can by changed by the Volatility Threshold parameter (default=2% ATR). In almost all crashes/corrections there is an alert ahead of the crash.
Although the signal doesn't predict the exact timing of the crash/correction, it is a clear warning signal that bearish times are ahead!
The correction in December 2018 was not a major crash but there was already a red Volatility warning alert. If the Volatility Alert repeats the next weeks/months, chances are higher that a bigger crash or correction is near. As can be seen in the graphic, the deeper the crash is, the higher and wider the red Volatility signal goes. So keep an eye on the red flag!
Here are the parameters:
Fast MA Buy: buy trigger when Fast MA Buy crosses over the Slow MA Buy value (use values between 10-20)
Slow MA Buy: buy trigger when Fast MA Buy crosses over the Slow MA Buy value (use values between 21-50)
Minimum Buy Strength: minimum upward trend value of the Fast MA Buy value (directional coefficient)(use values between 10-100)
Fast MA Sell: sell trigger when Fast MA Sell crosses under the Slow MA Sell value (use values between 10-20)
Slow MA Sell: sell trigger when Fast MA Sell crosses under the Slow MA Sell value (use values between 21-50)
Minimum Sell Strength: minimum downward trend value of the Fast MA Sell value (directional coefficient)(use values between 10-100)
Trailing Stop ATR: trailing stop % distance from the smoothed Close value (use values between 2-20)
Trailing Stop Smoothness: MA value for smoothing out the Trailing Stop close value
Buy On Start Date: force Buy on start date even without Buy signal (default: true)
Sell On End Date: force Sell on end date even without Sell signal (default: true)
Volatility EMA Period: MA value of the Volatility value (default 15)
Volatility Threshold: Threshold value to change volatility graph to red (default 2)
Volatility Graph Scaler: Scaling of the volatility graph (default 5)
Important : optimizing and using these parameters is no guarantee for future winning trades!
Amrullah Deep Liquidity for S&P 500Amrullah Deep Liquidity (ADL)
Amrullah Deep Liquidity (ADL) is a high profit factor strategy based on models designed by Muhd Amrullah.
Choosing your trading pair that you are planning to backtest
Check that you have been given access to Amrullah Deep Liquidity (ADL). Select SPX500USD with the default 4H time frame. Once done, open Indicators > Invite-Only Scripts > Amrullah Deep Liquidity %.
Choosing your initial capital that you want to begin backtesting
Go to Settings > Properties > Initial Capital and type in the amount of capital you're starting with. For the SPX500USD trading pair, the initial capital is denominated in USD.
Adjusting your equity at risk until the trades match your risk profile and comfort level
Go to Inputs > Equity Risk and adjust the value you are comfortable with. To analyse performance, you also want to choose the Start Year, Start Month and Start Date. Select lower equity risk for trades that you intend to take without the use of leverage. You can select an equity risk from 0.001 to 0.05 or all the way to 1.
Finding the time frame with the highest profit factor
Profit factor is defined as the gross profit a strategy makes across a defined period of time divided by its gross loss. You may choose to scroll through other time frames to find better models. You can select a different time frame from 1 min to 1H or all the way to 1M. Once you find the model you desire, you are encouraged to check that the model has a backtested profit factor of >3.5. You can then begin looking through the Performance Summary to find other detailed statistics.
Analysing the equity curve from the Amrullah Deep Liquidity (ADL) strategy
A green equity curve indicates that the trades are accumulating profits. A red equity curve indicates that the trades are accumulating losses. A healthy equity curve is one that is green and grows steadily to the right and upward direction.
Analysing the display arrows on the chart
Amrullah Deep Liquidity (ADL) tells you when to take a trade and how much to put in a trade. ADL can do this as the model identifies inventory risk in traders and market makers in the chosen market. On your Tradingview chart, ADL will display an arrow that tells you when to enter a trade. You can also see the amount to trade beside the arrow.
Opting for a trial
Yes you may opt for a trial which has limited availability.
The author's background and experience
My career in software and deep learning development spans across more than 5 years. At work, I lead a team to solve core computer vision tasks for large companies. I continually read all kinds of computer science books and papers, and follows progress on tools used in financial markets.
[STRATEGY] Jurik RSXA private strategy from the Profitable Jurik RSX preview for backtesting purposes.
Combo Strategy 123 Reversal & CCI This is combo strategies for get a cumulative signal.
First strategy
This System was created from the Book "How I Tripled My Money In The
Futures Market" by Ulf Jensen, Page 183. This is reverse type of strategies.
The strategy buys at market, if close price is higher than the previous close
during 2 days and the meaning of 9-days Stochastic Slow Oscillator is lower than 50.
The strategy sells at market, if close price is lower than the previous close price
during 2 days and the meaning of 9-days Stochastic Fast Oscillator is higher than 50.
Second strategy
The Commodity Channel Index (CCI) is best used with markets that display cyclical or
seasonal characteristics, and is formulated to detect the beginning and ending of these
cycles by incorporating a moving average together with a divisor that reflects both possible
and actual trading ranges. The final index measures the deviation from normal, which indicates
major changes in market trend.
To put it simply, the Commodity Channel Index (CCI) value shows how the instrument is trading
relative to its mean (average) price. When the CCI value is high, it means that the prices are
high compared to the average price; when the CCI value is down, it means that the prices are low
compared to the average price. The CCI value usually does not fall outside the -300 to 300 range
and, in fact, is usually in the -100 to 100 range.
WARNING:
- For purpose educate only
- This script to change bars colors.
Commodity Selection Index Backtest The Commodity Selection Index ("CSI") is a momentum indicator. It was
developed by Welles Wilder and is presented in his book New Concepts in
Technical Trading Systems. The name of the index reflects its primary purpose.
That is, to help select commodities suitable for short-term trading.
A high CSI rating indicates that the commodity has strong trending and volatility
characteristics. The trending characteristics are brought out by the Directional
Movement factor in the calculation--the volatility characteristic by the Average
True Range factor.
Wilder's approach is to trade commodities with high CSI values (relative to other
commodities). Because these commodities are highly volatile, they have the potential
to make the "most money in the shortest period of time." High CSI values imply
trending characteristics which make it easier to trade the security.
The Commodity Selection Index is designed for short-term traders who can handle
the risks associated with highly volatile markets.
WARNING:
- For purpose educate only
- This script to change bars colors.