VOLD Ratio (Volume Difference Ratio) by TenozenAnother helpful indicator is here! VOLD Ratio is calculated by the net volume of a buying candle, divided by the net volume of a sell candle.
Formula:
buying net volume/selling net volume
It's a simple indicator, but don't underestimate this simplicity. It's a powerful indicator that would help you to decide whether the volume is getting interested in the direction that the market would take. So assume when the market is above the Bollinger Bands, it means that the volume is at a buying extreme, by that, we could expect the market to get back towards the mean, as there is a lot of buying demand that entered the market. How about below the Bollinger Bands? it means that the volume is at a selling extreme, we could expect that there is a lot of volume getting in toward the sellers, so we could take advantage of the opportunity to go for a long. Lastly, the Bollinger Bands would help you guys to determine the liquidity of the market, if the Bollinger Bands get smaller over time, it means there is no interest for the market to enter yet, and if the Bollinger Bands get bigger over time, it means there is interest for the market to enter in the session.
Tips & Reminder:
- We shouldn't use this indicator by itself, make sure to use an Indicator that would help you guys to determine the momentum and the liquidity of the market.
- The higher the timeframe, the slower this indicator would signal an entry, by that use a smaller timeframe... I suggest using a 15M chart for the execution.
- Always trade in the medium-longterm direction if you want to have a high probability trade.
- Be patient in your execution, it's more likely the market would go higher or lower after going in the extreme of the Bollinger Bands.
Well, that's it! Hope you guys enjoy using this indicator, let me know if there is any question or suggestion. Ciao...
Cari dalam skrip untuk "TAKE"
Swing Volume Profiles [LuxAlgo]The Swing Volume Profiles indicator aims to calculate and highlight trading activity at specific price levels between two swing points; allowing traders to reveal dominant and/or significant price levels based on volume.
By measuring traded volume at all price levels in the market over a specified time period, the script can also be used to detect some key analysis generally such as supply & demand, buy-side & sell-side liquidity levels, unfilled liquidity voids, and imbalances that can highlight on the chart.
🔶 USAGE
A volume profile is an advanced charting tool that displays the traded volume at different price levels over a specific period. It helps you visualize where the majority of trading activity has occurred.
Key Levels are the areas where the volume is concentrated or where there are significant volume spikes. These levels are known as key support and resistance levels. High-volume nodes indicate areas of high activity and are likely to act as support or resistance in the future.
Volume profile also helps identify value areas, which represent the price levels where the most trading activity has taken place. These levels can act as areas of support or resistance as traders perceive them as fair value.
The Point of Control describes the price level where the most volume was traded. A Naked Point of Control (also called a Virgin Point of Control) is a previous POC that has not been traded. Extending PoC options 'Until Bar Cross' or 'Until Bar Touch' helps in identifying Naked Point of Control Lines.
Previous PoC levels can serve as support and resistance for future price movements. Extending PoC Level 'Until Last Bar' option will help to identify such levels.
🔶 DETAILS
One of the unique features of the script is its ability to detect some other key levels such as levels of acceptance and rejection.
Levels of rejection we may summarize as supply and demand levels, these are also referred to as buy-side and sell-side liquidity levels. They usually occur at extreme highs or lows, where prices may be too high for buyers (high supply, low demand) or too low for sellers (low supply, high demand)
Levels of acceptance are the levels where Liquidity Voids occur, these are also referred to imbalances. Liquidity voids are sudden changes in price when the price jumps from one level to another. The peculiar thing about liquidity voids is that they almost always fill up, so we call them levels of acceptance.
🔶 ALERTS
When an alert is configured, the user will have the ability to be notified in case:
Point Of Control Line is touched/crossed
Value Area High Line is touched/crossed
Value Area Low Line is touched/crossed
🔶 SETTINGS
🔹 Display Options
Mode: Controls the lookback length of detection and visualization, where Present assumes last X bars specifid in '# Bars' option and Historical assumes all data available to the user as well as allowed limits of visiual objects (boxs, lines, labels etc)
# Bars: Controls the lookback length.
🔹 Swing Volume Profiles
The script takes into account user-defined parameters and plots volume profiles. Due to Pine Script™ drwaing objects limit only total volume profiles are presented.
Swing Detection Length: Lookback period
Swing Volume Profiles: Toggles the visibility of the Volume Profiles, with color options to differentiate the Value Area within a profile.
Profile Range Background Fill: Toggles the visibility of the Volume Profiles Range
🔹 Point of Control (PoC)
Point of Control (POC) – The price level for the time period with the highest traded volume
Point of Control (PoC): Toggles the visibility of the Point of Control
Developing PoC: Toggles the visibility of the Developing PoC
Extend PoC: Option that allows detecting virgin PoC levels. Virgin Point of Control (VPoC) is defined as a Point of Control that has never been revisited or touched. The option also allows PoC levels to extend till the last bar aiming to present levels from history where the levels were traded significantly and those levels can be used as support and resistance levels.
🔹 Value Area (VA)
Value Area (VA) – The range of price levels in which the specified percentage of all volume was traded during the time period.
Value Area Volume %: Specifies percentage of the Value Area
Value Area High (VAH): Toggles the visibility of the Value Area High, the highest price level within the Value Area
Value Area Low (VAL): Toggles the visibility of the Value Area Low, the lowest price level within the Value Area
Value Area (VA) Background Fill: Toggles the visibility of the Value Area Range
🔹 Liquidity Levels / Voids
Unfilled Liquidity, Thresh: Enable display of the Unfilled Liquidity Levels and Liquidity Voids, where threshold value defines the significance of the level.
🔹 Profile Stats
Position, Size: Specifies the position and the size of the label presenting Profile Stats, the tooltip of the label includes all related info for each profile.
Price, Price Change, and Cumulative Volume: Enable display of the given options on the chart.
🔹 Volume Profile Others
Number of Rows: Specify how many rows each histogram will have. Caution, having it set to high values will quickly hit Pine Script™ drawing objects limit and may cause fewer historical profiles to be displayed.
Placement: Place profile either left or right.
Profile Width %: Alters the width of the rows in the histogram, relative to the calculated profile length.
🔶 RELATED SCRIPTS
Alternative Liquidity Void Detection script, Buyside-Sellside-Liquidity
RSI of Zero Lag MA (ValueRay)The RSI of a Zero Lag Moving Average a powerful tool for for reliable exit signals.
The Relative Strength Index (RSI) is a widely recognized momentum oscillator that measures the speed and change of price movements. It provides valuable insights into overbought and oversold conditions, enabling traders to identify potential reversal points and take advantage of market inefficiencies.
The RSI of a Zero Lag Indicator takes this concept a step further by incorporating the Zero Lag Moving Average. The Zero Lag Moving Average is a cutting-edge indicator that minimizes lag and provides a smoother representation of price action, allowing for quicker and more precise responses to market movements.
By combining the RSI with the Zero Lag Moving Average, this indicator offers traders a superior exit strategy. When the RSI reaches extreme levels of overbought or oversold conditions, it indicates a potential reversal in the market. The Zero Lag Moving Average further enhances this signal by reducing delays and providing timely exit points.
Moreover, the RSI of a Zero Lag Indicator is not limited to mean reversion strategies. While it excels in identifying mean reversion opportunities, it can also be used in conjunction with other trading approaches. Traders can take advantage of its objective signals to exit trades profitably, regardless of their chosen strategy.
With its ability to accurately pinpoint overbought and oversold conditions, the RSI of a Zero Lag Indicator offers traders a competitive edge in the market. By providing timely exit signals and minimizing lag, it helps traders optimize their trading decisions and increase their chances of success.
Mad_StandardpartsLibrary "Mad_Standardparts"
This are my Standardparts used in upcoming scipts
roundTo(_value, _decimals)
Round a floating point value to a specified number of decimal places.
@description This function takes a floating point value and rounds it to a specified number of decimal places.
Parameters:
_value (float) : The floating point value to be rounded.
_decimals (int) : The number of decimal places to round to. Must be a non-negative integer.
Returns: The rounded value, as a floating point number.
clear_all()
Delete all drawings on the chart.
@description This function deletes all drawings on the chart, including lines, boxes, and labels.
Returns: None.
shifting(_value)
Create a string of spaces to shift text over by a specified amount.
@description This function takes an integer value and returns a string consisting of that many spaces, which can be used to shift text over in a PineScript chart.
Parameters:
_value (int) : The number of spaces to create in the output string.
Returns: A string consisting of the specified number of spaces.
fromLog(_value)
Convert a linear value to a logarithmic value.
@description This function takes a linear value and converts it to a logarithmic value, using the formula specified in the code.
Parameters:
_value (float)
Returns: The corresponding logarithmic value, as a floating point number.
toLog(_value)
Convert a logarithmic value to a linear value.
@description This function takes a logarithmic value and converts it to a linear value, using the formula specified in the code.
Parameters:
_value (float)
Returns: The corresponding linear value, as a floating point number.
f_getbartime()
Calculate the time per bar on the chart.
@description This function calculates the time per bar on the chart based on the first 100 bars.
Returns: The time per bar, as an integer value.
Volatility patterns / quantifytools- Overview
Volatility patterns detect various forms of indecisive price action, on a larger scale as a compressed range and on a smaller scale as indecision candles. Indecisive and volatility suppressing price action can be thought of as a spring being pressed down. The more suppression, the more tension is built and eventually released as a spike or series of spikes in volatility. Each volatility pattern is assigned an influence period, during which average and peak relative volatility is recorded and stored to volatility metrics.
- Patterns
The following scenarios are qualified as indecision candles: inside candles, indecision engulfing candles and volatility shifts.
By default, each indecision candle is considered a valid pattern only when another indecision candle has taken place within 3 periods, e.g. prior inside candle + indecision engulfing candle = valid volatility pattern. This measurement is taken to filter noise by looking for multiple hints of pending volatility, rather than just one. Level of tolerated noise can be changed via input menu by using sensitivity setting, by default set to 2.
Sensitivity at 1: Any single indecision candle is considered a valid pattern
Sensitivity at 2: 2 indecision candles within 3 bars is considered a valid pattern
Sensitivity at 3: 2 indecision candles within 2 bars (consecutive) is considered a valid pattern
The following scenarios are qualified as range patterns: series of lower highs/higher lows and series of low volatility pivots.
A pivot is defined by highest/lowest point in price, by default within 2 periods back and 2 periods forward. When 4 pivots with qualities mentioned above are found, a box indicating compressed range will appear. Both required pivots and pivot definition can be adjusted via input menu.
- Influence time and metrics
By default, influence time for each volatility pattern is set to 6 candles, a period for which spike(s) in volatility is expected. For each influence period, average relative volatility (volatility relative to volatility SMA 20) and peak relative volatility is recorded and stored to volatility metrics. All metrics used in calculations are visible in "Data Window "tab. Average and peak volatility during influence period will vary depending on chart, timeframe and chosen settings. Tweaking the settings might result in an improvement and is worth experimenting with.
- Visuals
By default, indecision candles are visualized as yellow lines and range patterns as orange boxes. Influence time periods are respectively visualized as colored candle borders, applied as long as influence time period is active. All colors are fully customizable via input menu.
- Practical guide
Volatility patterns depict moments of equal strength from both bulls and bears. While this equilibrium is in place, price is stagnant and compresses until either side initiates volatility, releasing the built up tension. On top of hedging and playing the volatility using volatility based instruments, some other methods can be applied to take advantage of the somewhat tricky areas of indecision.
Example #1: Trading volatility
Volatility is not a bad thing from a trading perspective, but can actually be fertile ground for executing trade setups. Trading volatility influence periods from higher timeframes on lower timeframes gives greater resolution to work with and opportunities to take advantage of the wild swings created.
Example #2: Finding bias for patterns
Points of confluence where it anyway makes sense to favor one side over the other can be used for establishing bias for indecisive price action as well. At face value, it makes sense to expect bearish reactions at range highs and bullish reactions at range low, for which volatility patterns can provide a catalyst.
Example #3: Betting on initiation direction
Betting on direction of the first volatile move can easily go against you, but if risk/reward is able to compensate for the poor win rate, it's a valid idea to consider and explore.
Gaussian Fisher Transform Price Reversals - FTRHello Traders !
Looking for better trading results ?
"This indicator shows you how to identify price reversals in a timely manner." John F. Ehlers
Introduction :
The Gaussian Fisher Transform Price Reversals indicator, dubbed FTR for short, is a stat based price reversal detection indicator inspired by and based on the work of the electrical engineer now private trader John F. Ehlers.
The Fisher Transform :
It is a common assumption that prices have a gaussian / normal probability density function(PDF), i.e. a sample of n close prices would be normally distributed if the probability of observing a price value say at any given standard deviation range is equal to that probability in the case of the normal distribution, e.g. 68% off all samples fell within one standard deviation around the mean, which is what we would expect if the data was normal.
However Price Action is not normally distributed and thus can not be conventionally interpreted in this way, Formally the Fisher Transform, transforms the distribution of bounded ranging price action (were price action takes values in a range from -1 to 1) into that of a normal distribution, alternatively it may be said the Fisher Transform changes the PDF of any waveform so that the transformed output has n approximately Gaussian PDF, It does so through the following equations. taken directly from the work of John F. Ehlers - Using The Fisher Transform
By substituting price data in the above formulas, bounded ranging price actions (over a given user defined period lookback - this determines the range price ranges in, see the Intermediate formula above) distribution is transformed to that in the normal case. This means when the input, the Intermediate ,(the Midpoint - see formula above) approaches either limit within the range the outputs are greatly amplified, this amplification accentuates /puts more weight on the larger deviations or limits within the range, conversely when price action is varying round the mean of the range the output is approximately equal to unity (the input is approximately equal to the input, the intermediate)
The inputs (Intermediates) are converted to normal outputs and the nonlinear Transfer of the Fisher Transform with varying senesitivity's (gammas) can be seen in the graph / image above. Although sensitivity adjustments are not currently available in this script (I forgot to add it) the outputs may be greatly amplified as gamma (the coefficient of the Fisher Transformation - see Fish equation) approaches 1. the purple line show this graphically, as a higher gamma leads to a greater amplification than in the standard case (the red line which is the standard fisher transformation, the black plot is the Fish with a gamma of 1, which is unity sensativity)
Reversal plots and Breakouts :
- Support lines are plotted with their corresponding Fish value when there is a crossover of the Fish and Fish SMA <= a given standard deviation of Fish
- Resistance lines are plotted with their corresponding Fish value when there is a crossunder of the Fish and Fish SMA >= a given standard deviation of Fish
- Reversals are these support and resistance line plots
Breakouts and Volume bars :
Breakouts cause the reversal lines to break (when the high/low is above the resistance/support), Breakouts are more "high quality" when they occur conditional on high volume, the highlighted bars represent volume standard deviations ranging from -3 to 3. When breakouts occure on high volume this may be a sign of the continutaion of the trend (reversals would signify the start of a new trend).
Hope you enjoy, Happy Trading !
(be sure to rocket the script if you liked it, this helps me know which of my scripts are the most useful)
Net Unrealized Profit/Loss (NUPL)Indicator Overview
This indicator is derived from Market Value and Realized Value, which can be defined as:
Market Value: The current price of Bitcoin multiplied by the number of coins in circulation. This is like market cap in traditional markets i.e. share price multiplied by number of shares.
Realized Value: Rather than taking the current price of Bitcoin, Realized Value takes the price of each Bitcoin when it was last moved i.e. the last time it was sent from one wallet to another wallet. It then adds up all those individual prices and takes an average of them. It then multiplies that average price by the total number of coins in circulation.
By subtracting Realized Value from Market Value we calculate Unrealized Profit/Loss.
Unrealized Profit/Loss estimates the total paper profits/losses in Bitcoin held by investors. This is interesting to know but of greater value is identifying how this changes relatively over time.
To do this we can divide Unrealized Profit/Loss by Market Cap. This creates Net Unrealized Profit/Loss, sometimes referred to as NUPL, which is very useful to track investor sentiment over time for Bitcoin.
Relative Unrealised Profit/Loss is another name used for this analysis.
How To View The Chart
The key principle of this tool is in the ratio between market cap and Bitcoin investors taking profit.
When market cap rises much faster than profit taking we see that the market is overheating, one could say due to investor greed (red band). For the strategic investor such times have historically been favourable to take profit.
We can break down different percentages of Bitcoin Relative Unrealized Profit/Loss to determine what stage of the market we are in. This can be advantageous for the long term strategic investor.
Created By
Tamas Blummer, Tuur Demeester and Michiel Lescrauwaet
SPY 4 Hour Swing TraderThe purpose of this script is to spot 4 hour pivots that indicate ~30 trading day swings. As VIX starts to drop options trading will get more boring and as we get back on the bull and can benefit from swing trading strategy. Swing trading doesn't make a whole lot of sense when VIX is above 28. Seems to get best results on 4 hour chart for this one. This indicator spots a go long opportunity when the 5 ema crosses the 13 ema on the 4 hour along with the RSI > 50 and the ADX > 20 and Stoichastic values (smoothed line < 80 or line < 90) and close > last candle close and the True Range < 6. It also spots uses a couple different means to determine when to exit the trade. Sell condition is primarily when the 13 ema crosses the 5 ema and the MACD line crosses below the signal line and the smoothed Stoichastic appears oversold (greater than 60) and slop of RSI < -.2. Stop Losses and Take Profits are configurable in Inputs along with ability to include short trades plus other MACD and Stoichastic settings. If a stop loss is encountered the trade will close. Also once twice the expected move is encountered partial profits will taken and stop losses and take profits will be re-established based on most recent close. Also a VIX above 28 will trigger any open positions to close. If trying to use this for something other than SPXL it is best to update stop losses and take profit percentages and check backtest results to ensure proper levels have been selected and the script gives satisfactory results.
SPY 1 Hour Swing TraderThe purpose of this script is to spot 1 hour pivots that indicate ~5 to 6 trading day swings. Results indicate that swings are held approximately 5 to 6 trading days on average, over the last 6 years. This indicator spots a go long opportunity when the 5 ema crosses the 13 ema on the 1 hour along with the RSI > 50. It also spots uses a couple different means to determine when to exit the trade. Sell condition is primarily when the 13 ema crosses the 5 ema and the MACD line crosses below the signal line and the smoothed Stoichastic appears oversold (greater than 60). Stop Losses and Take Profits are configurable in Inputs along with ability to include short trades plus other MACD and Stoichastic settings. If a stop loss is encountered the trade will close. Also once twice the expected move is encountered partial profits will taken and stop losses and take profits will be re-established based on most recent close. Once long trades are exited, short trades will be initiated if recent conditions appeared oversold and input option for short trading is enabled. If trying to use this for something other than SPXL it is best to update stop losses and take profit percentages and check backtest results to ensure proper levels have been selected and the script gives satisfactory results.
BTCUSD Price prediction based on central bank liquidityIn recent months the idea that Bitcoin prices are increasingly linked to liquidity provided by central banks has gained strength. Multiple opinion leaders in the bitcoin space have shared their thoughts to explain why this is happening and why it makes sense. Some of these people I'm talking about are Preston Pysh, Dr. Jeff Ross, Steven McClurg, Lynn Alden among others.
The reality is that the correlation between market liquidity, measured as Assets held by the Federal Reserve, Bank of Japan and European Central bank, and Bitcoin prices is high. This made me wonder whether a regression between "market liquidity" and BTCUSD prices made sense in order to understand where Bitcoin prices are in relation to the liquidity in the market. After several trials I ended up fitting a polynomial regression of degree 5 between Market Liquidity and BTCUSD prices since 2013. This regression resulted in r-squared value of 90.93%. I initially visualized the results in python notebooks but then I thought it would be cool to be able to see them in real-time in tradingview.
That's where this script comes handy...
This script takes the coefficients and intercept from the polynomial regression I built and applies them to the "market_liquidity" index. In addition, it adds upper and lower bound lines to the prediction based on a 95% confidence interval. As you will see, particularly since 2020, the price of bitcoin has rarely been above or below the lines representing the 95% confidence interval. When price has actually crossed these lines it's been in moments where Bitcoin was highly overbought or oversold. Therefore this indicator could be used to understand when it's a good moment to enter or exit the market based on central bank fundamentals.
Here's the detailed step-by-step description of what the script does
1) It defines the coefficients obtained from running the regression betweeen "market liquidity" and BTCUSD. Market liquidity is defined as:
Market liquidity = FRED:WALCL + FX_IDX:JPYUSD*FRED:JPNASSETS + FX:EURUSD*FRED:ECBASSETSW - FRED:RRPONTSYD - FRED:WTREGEN
2) It defines a scale factor. The reason for this is that coefficients from the regression are very small numbers, given the huge numbers of the value of assets held by central banks. Pinescript doesn't support numbers with many decimals and rounds them to 0, so the coefficients had to be scaled up in order to be able to calculate the regression results.
3) It calculates market liquity with the formula defined above. Market liquidity is calculated in US Dollars.
4) It calculates the predicted BTCUSD price based on the coefficients and the market liquidity values.
5) It scales down the values by the same factor used to scale the coefficients up
6) It defines the standard deviation of the "potential_btcusd_price_scaled" and the actual BTCUSD prices.
7) It defines upper and lower bounds to the BTCUSD price prediction using a z-score of 1.96, which is equivalent to 95% confidence interval.
8) Lastly it plots the BTCUSD price prediction (orange) and the upper (red) and lower(green) confidence intervals.
The script can be updated as the correlation of BTCUSD to central bank assets changes (the slope values can be updated).
How to use it:
When actual BTCUSD price (blue line in the chart) crosses over the red line (upper bound) or crosses under the green line (lower bound) it should be taken as a sign that the price of BTCUSD may be overvalued or undervalued based on the value of assets held by major central banks.
Net Positions (Net Longs & Net Shorts) - By LeviathanThis script is an experimental indicator that visualizes the entering and exiting of long and short positions in the market. It also includes other useful tools, such as NL/NS Profile, NL/NS Delta, NL/NS Ratio, Volume Heatmap, Divergence finder, Relative Strength Index of Net Longs and Net Shorts, EMAs and VWMAs and more.
To avoid misinterpretation, it's important to understand some basics. The “real” ratio between net long and net short positions in a given market is always 1:1. A futures contract is an agreement between two parties to buy or sell an underlying asset at an agreed-upon price. Each contract has a long side and a short side, with one party agreeing to buy (long) and the other party agreeing to sell (short) the asset at the agreed-upon price. The long position holder anticipates that the asset's price will rise, while the short position holder expects it to fall. Because every futures contract involves both a buyer and a seller, it is impossible to have more net longs than net shorts or vice versa (in terms of the net value). For every long position opened, there must be a corresponding short position taken by another market participant (and vice versa), thus maintaining the 1:1 ratio between longs and shorts. While there can be an imbalance in the number of traders/accounts holding long and short contracts, the net value of positions held on each side remains 1 to 1.
Open Interest (OI) is a metric that tracks the number of open (unsettled) contracts in a given market. For example, Open Interest of 100 BTC means that there are currently 100 BTC worth of longs and 100 BTC worth of shorts open in the market. There may be more traders on one side holding smaller positions, and fewer traders on the other side holding larger positions, but the net value of positions on one side is equal to the net value of positions on the other side → 100 BTC in longs and 100 BTC in shorts (1:1). Consider a scenario in which a trader decides to open a long position for 1 BTC at a price of HKEX:30 ,000. For this long order to be executed, a counterparty must take the opposite side of the contract by placing an order to short 1 BTC at the same price of HKEX:30 ,000. When both the long and short orders are matched and executed, the open interest increases by 1 BTC, reflecting the addition of this new contract to the market.
Changes in Open Interest essentially tell us 3 things:
- OI Increase - new positions entered the market (both longs and shorts!)
- OI Decrease - positions exited the market (both longs and shorts!)
- OI Flat - no change in open positions due to low activity or simply lots of transfers of contracts
However, different concepts can be used to analyze sentiment, aggressiveness, and activity in the market by analyzing data such as Open Interest, price, volume, etc. This indicator combines Open Interest data and price action to simplify the visualization of positions entering and exiting the market. It is based on the following concept:
Increase in Open Interest + Increase in price = Longs Opening
Decrease in Open Interest + Decrease in price = Longs Closing
Increase in Open Interest + Decrease in price = Shorts Opening
Decrease in Open Interest + Increase in price = Shorts Closing
When "Longs Opening" occurs, the OI Delta value is added to the running total of Net Longs, and when "Longs Closing" occurs, the OI Delta value is subtracted from the running total of Net Longs.
When "Shorts Opening" occurs, the OI Delta value is added to the running total of Net Shorts, and when "Shorts Closing" occurs, the OI Delta value is subtracted from the running total of Net Shorts.
To summarize:
Net Longs: Cumulative value of Longs Opening and Longs Closing (LO - LC)
Net Shorts: Cumulative value of Shorts Opening and Shorts Closing (SO - SC)
Net Delta: Net Longs - Net Shorts
Net Ratio: Net Longs / Net Shorts
This is the fundamental logic of how this script functions, but it also includes several other tools and options. Here is an overview of the settings:
Type:
- Net Positions (display values of Net Longs, Net Shorts, Net Delta, Net Ratio as described above)
- Relative Strength (display Net Longs, Net Shorts, Net Delta, Net Ratio in the form of a momentum oscillator that measures the speed and change of movements. Same logic as RSI for price)
Display as:
- Candles (display the data in the form of candlesticks)
- Lines (display the data in the form of candlesticks)
- Columns (display the data in the form of columns)
Cumulation:
- Visible Range (data is cumulated from the first visible bar on your chart)
- Full Data (data is cumulated from the beginning)
Quoted in:
- Base Currency (all data is presented in the pair’s base currency eg. BTC)
- Quote Currency (all data is presented in the pair’s quote currency eg USDT)
OI Sources
- Pick the sources from where the data is collected (if available).
Net Positions:
- NET LONGS (show/hide Net Longs plot, choose candle colors, choose line color)
- NET SHORTS (show/hide Net Shorts plot, choose candle colors, choose line color)
- NET DELTA (show/hide Net Delta plot, choose candle colors, choose line color)
- NET RATIO (show/hide Net Ratio plot, choose candle colors, choose line color)
Moving Averages:
- Type (choose between EMA and Volume Weighted Moving Average)
- NET LONGS (show/hide NL moving average plot, choose length, choose color)
- NET SHORTS (show/hide NS moving average plot, choose length, choose color)
- NET DELTA (show/hide ND moving average plot, choose length, choose color)
- NET RATIO (show/hide NR moving average plot, choose length, choose color)
Profile:
- Profile Data (choose the source data of the profile)
- Value Area % (set the percentage width of profile’s value area)
- Positions (set the position of the profile to left or right of the visible range)
- Node Size (set the relative size of nodes to make them appear smaller or larger)
- Rows (select the amount of rows displayed by the profile to control granularity)
- POC (show/hide POC- Point Of Control and select its color)
- VA (show/hide VA- Value Area and select its color)
Divergence finder
- Source (choose the source data used by the script to compare it with price pivot points)
- Maximum distance (the maximum distance between two divergent pivot points)
- Lookback Bars Left (the number of bars to the left of the current bar that the function will consider when looking for a pivot point)
- Lookback Bars Right (the number of bars to the right of the current bar that the function will consider when looking for a pivot point)
Stats:
- Show/Hide the Stats table
- Bars Back (choose the length of data analyzed for stats in number of bars)
- Position (choose the position of the Stats table)
- Select Data you want to display in the Stats table
Additional Settings:
- Volume Heatmap (show/hide volume heatmap and select its color)
- Label Offset (select how much the plot label is shifted to the right
- Position Relative Strength Length (select the length used in the calculation)
- Value Label (show/hide OI Delta values when candles are displayed)
- Plot Labels (show/hide the labels next to the plot)
- Wicks (show/hide wick when candles are displayed)
Code used for generating profiles is taken from @KioseffTrading's "Profile Any Indicator" script (used with author's permission)
loxxfftLibrary "loxxfft"
This code is a library for performing Fast Fourier Transform (FFT) operations. FFT is an algorithm that can quickly compute the discrete Fourier transform (DFT) of a sequence. The library includes functions for performing FFTs on both real and complex data. It also includes functions for fast correlation and convolution, which are operations that can be performed efficiently using FFTs. Additionally, the library includes functions for fast sine and cosine transforms.
Reference:
www.alglib.net
fastfouriertransform(a, nn, inversefft)
Returns Fast Fourier Transform
Parameters:
a (float ) : float , An array of real and imaginary parts of the function values. The real part is stored at even indices, and the imaginary part is stored at odd indices.
nn (int) : int, The number of function values. It must be a power of two, but the algorithm does not validate this.
inversefft (bool) : bool, A boolean value that indicates the direction of the transformation. If True, it performs the inverse FFT; if False, it performs the direct FFT.
Returns: float , Modifies the input array a in-place, which means that the transformed data (the FFT result for direct transformation or the inverse FFT result for inverse transformation) will be stored in the same array a after the function execution. The transformed data will have real and imaginary parts interleaved, with the real parts at even indices and the imaginary parts at odd indices.
realfastfouriertransform(a, tnn, inversefft)
Returns Real Fast Fourier Transform
Parameters:
a (float ) : float , A float array containing the real-valued function samples.
tnn (int) : int, The number of function values (must be a power of 2, but the algorithm does not validate this condition).
inversefft (bool) : bool, A boolean flag that indicates the direction of the transformation (True for inverse, False for direct).
Returns: float , Modifies the input array a in-place, meaning that the transformed data (the FFT result for direct transformation or the inverse FFT result for inverse transformation) will be stored in the same array a after the function execution.
fastsinetransform(a, tnn, inversefst)
Returns Fast Discrete Sine Conversion
Parameters:
a (float ) : float , An array of real numbers representing the function values.
tnn (int) : int, Number of function values (must be a power of two, but the code doesn't validate this).
inversefst (bool) : bool, A boolean flag indicating the direction of the transformation. If True, it performs the inverse FST, and if False, it performs the direct FST.
Returns: float , The output is the transformed array 'a', which will contain the result of the transformation.
fastcosinetransform(a, tnn, inversefct)
Returns Fast Discrete Cosine Transform
Parameters:
a (float ) : float , This is a floating-point array representing the sequence of values (time-domain) that you want to transform. The function will perform the Fast Cosine Transform (FCT) or the inverse FCT on this input array, depending on the value of the inversefct parameter. The transformed result will also be stored in this same array, which means the function modifies the input array in-place.
tnn (int) : int, This is an integer value representing the number of data points in the input array a. It is used to determine the size of the input array and control the loops in the algorithm. Note that the size of the input array should be a power of 2 for the Fast Cosine Transform algorithm to work correctly.
inversefct (bool) : bool, This is a boolean value that controls whether the function performs the regular Fast Cosine Transform or the inverse FCT. If inversefct is set to true, the function will perform the inverse FCT, and if set to false, the regular FCT will be performed. The inverse FCT can be used to transform data back into its original form (time-domain) after the regular FCT has been applied.
Returns: float , The resulting transformed array is stored in the input array a. This means that the function modifies the input array in-place and does not return a new array.
fastconvolution(signal, signallen, response, negativelen, positivelen)
Convolution using FFT
Parameters:
signal (float ) : float , This is an array of real numbers representing the input signal that will be convolved with the response function. The elements are numbered from 0 to SignalLen-1.
signallen (int) : int, This is an integer representing the length of the input signal array. It specifies the number of elements in the signal array.
response (float ) : float , This is an array of real numbers representing the response function used for convolution. The response function consists of two parts: one corresponding to positive argument values and the other to negative argument values. Array elements with numbers from 0 to NegativeLen match the response values at points from -NegativeLen to 0, respectively. Array elements with numbers from NegativeLen+1 to NegativeLen+PositiveLen correspond to the response values in points from 1 to PositiveLen, respectively.
negativelen (int) : int, This is an integer representing the "negative length" of the response function. It indicates the number of elements in the response function array that correspond to negative argument values. Outside the range , the response function is considered zero.
positivelen (int) : int, This is an integer representing the "positive length" of the response function. It indicates the number of elements in the response function array that correspond to positive argument values. Similar to negativelen, outside the range , the response function is considered zero.
Returns: float , The resulting convolved values are stored back in the input signal array.
fastcorrelation(signal, signallen, pattern, patternlen)
Returns Correlation using FFT
Parameters:
signal (float ) : float ,This is an array of real numbers representing the signal to be correlated with the pattern. The elements are numbered from 0 to SignalLen-1.
signallen (int) : int, This is an integer representing the length of the input signal array.
pattern (float ) : float , This is an array of real numbers representing the pattern to be correlated with the signal. The elements are numbered from 0 to PatternLen-1.
patternlen (int) : int, This is an integer representing the length of the pattern array.
Returns: float , The signal array containing the correlation values at points from 0 to SignalLen-1.
tworealffts(a1, a2, a, b, tn)
Returns Fast Fourier Transform of Two Real Functions
Parameters:
a1 (float ) : float , An array of real numbers, representing the values of the first function.
a2 (float ) : float , An array of real numbers, representing the values of the second function.
a (float ) : float , An output array to store the Fourier transform of the first function.
b (float ) : float , An output array to store the Fourier transform of the second function.
tn (int) : float , An integer representing the number of function values. It must be a power of two, but the algorithm doesn't validate this condition.
Returns: float , The a and b arrays will contain the Fourier transform of the first and second functions, respectively. Note that the function overwrites the input arrays a and b.
█ Detailed explaination of each function
Fast Fourier Transform
The fastfouriertransform() function takes three input parameters:
1. a: An array of real and imaginary parts of the function values. The real part is stored at even indices, and the imaginary part is stored at odd indices.
2. nn: The number of function values. It must be a power of two, but the algorithm does not validate this.
3. inversefft: A boolean value that indicates the direction of the transformation. If True, it performs the inverse FFT; if False, it performs the direct FFT.
The function performs the FFT using the Cooley-Tukey algorithm, which is an efficient algorithm for computing the discrete Fourier transform (DFT) and its inverse. The Cooley-Tukey algorithm recursively breaks down the DFT of a sequence into smaller DFTs of subsequences, leading to a significant reduction in computational complexity. The algorithm's time complexity is O(n log n), where n is the number of samples.
The fastfouriertransform() function first initializes variables and determines the direction of the transformation based on the inversefft parameter. If inversefft is True, the isign variable is set to -1; otherwise, it is set to 1.
Next, the function performs the bit-reversal operation. This is a necessary step before calculating the FFT, as it rearranges the input data in a specific order required by the Cooley-Tukey algorithm. The bit-reversal is performed using a loop that iterates through the nn samples, swapping the data elements according to their bit-reversed index.
After the bit-reversal operation, the function iteratively computes the FFT using the Cooley-Tukey algorithm. It performs calculations in a loop that goes through different stages, doubling the size of the sub-FFT at each stage. Within each stage, the Cooley-Tukey algorithm calculates the butterfly operations, which are mathematical operations that combine the results of smaller DFTs into the final DFT. The butterfly operations involve complex number multiplication and addition, updating the input array a with the computed values.
The loop also calculates the twiddle factors, which are complex exponential factors used in the butterfly operations. The twiddle factors are calculated using trigonometric functions, such as sine and cosine, based on the angle theta. The variables wpr, wpi, wr, and wi are used to store intermediate values of the twiddle factors, which are updated in each iteration of the loop.
Finally, if the inversefft parameter is True, the function divides the result by the number of samples nn to obtain the correct inverse FFT result. This normalization step is performed using a loop that iterates through the array a and divides each element by nn.
In summary, the fastfouriertransform() function is an implementation of the Cooley-Tukey FFT algorithm, which is an efficient algorithm for computing the DFT and its inverse. This FFT library can be used for a variety of applications, such as signal processing, image processing, audio processing, and more.
Feal Fast Fourier Transform
The realfastfouriertransform() function performs a fast Fourier transform (FFT) specifically for real-valued functions. The FFT is an efficient algorithm used to compute the discrete Fourier transform (DFT) and its inverse, which are fundamental tools in signal processing, image processing, and other related fields.
This function takes three input parameters:
1. a - A float array containing the real-valued function samples.
2. tnn - The number of function values (must be a power of 2, but the algorithm does not validate this condition).
3. inversefft - A boolean flag that indicates the direction of the transformation (True for inverse, False for direct).
The function modifies the input array a in-place, meaning that the transformed data (the FFT result for direct transformation or the inverse FFT result for inverse transformation) will be stored in the same array a after the function execution.
The algorithm uses a combination of complex-to-complex FFT and additional transformations specific to real-valued data to optimize the computation. It takes into account the symmetry properties of the real-valued input data to reduce the computational complexity.
Here's a detailed walkthrough of the algorithm:
1. Depending on the inversefft flag, the initial values for ttheta, c1, and c2 are determined. These values are used for the initial data preprocessing and post-processing steps specific to the real-valued FFT.
2. The preprocessing step computes the initial real and imaginary parts of the data using a combination of sine and cosine terms with the input data. This step effectively converts the real-valued input data into complex-valued data suitable for the complex-to-complex FFT.
3. The complex-to-complex FFT is then performed on the preprocessed complex data. This involves bit-reversal reordering, followed by the Cooley-Tukey radix-2 decimation-in-time algorithm. This part of the code is similar to the fastfouriertransform() function you provided earlier.
4. After the complex-to-complex FFT, a post-processing step is performed to obtain the final real-valued output data. This involves updating the real and imaginary parts of the transformed data using sine and cosine terms, as well as the values c1 and c2.
5. Finally, if the inversefft flag is True, the output data is divided by the number of samples (nn) to obtain the inverse DFT.
The function does not return a value explicitly. Instead, the transformed data is stored in the input array a. After the function execution, you can access the transformed data in the a array, which will have the real part at even indices and the imaginary part at odd indices.
Fast Sine Transform
This code defines a function called fastsinetransform that performs a Fast Discrete Sine Transform (FST) on an array of real numbers. The function takes three input parameters:
1. a (float array): An array of real numbers representing the function values.
2. tnn (int): Number of function values (must be a power of two, but the code doesn't validate this).
3. inversefst (bool): A boolean flag indicating the direction of the transformation. If True, it performs the inverse FST, and if False, it performs the direct FST.
The output is the transformed array 'a', which will contain the result of the transformation.
The code starts by initializing several variables, including trigonometric constants for the sine transform. It then sets the first value of the array 'a' to 0 and calculates the initial values of 'y1' and 'y2', which are used to update the input array 'a' in the following loop.
The first loop (with index 'jx') iterates from 2 to (tm + 1), where 'tm' is half of the number of input samples 'tnn'. This loop is responsible for calculating the initial sine transform of the input data.
The second loop (with index 'ii') is a bit-reversal loop. It reorders the elements in the array 'a' based on the bit-reversed indices of the original order.
The third loop (with index 'ii') iterates while 'n' is greater than 'mmax', which starts at 2 and doubles each iteration. This loop performs the actual Fast Discrete Sine Transform. It calculates the sine transform using the Danielson-Lanczos lemma, which is a divide-and-conquer strategy for calculating Discrete Fourier Transforms (DFTs) efficiently.
The fourth loop (with index 'ix') is responsible for the final phase adjustments needed for the sine transform, updating the array 'a' accordingly.
The fifth loop (with index 'jj') updates the array 'a' one more time by dividing each element by 2 and calculating the sum of the even-indexed elements.
Finally, if the 'inversefst' flag is True, the code scales the transformed data by a factor of 2/tnn to get the inverse Fast Sine Transform.
In summary, the code performs a Fast Discrete Sine Transform on an input array of real numbers, either in the direct or inverse direction, and returns the transformed array. The algorithm is based on the Danielson-Lanczos lemma and uses a divide-and-conquer strategy for efficient computation.
Fast Cosine Transform
This code defines a function called fastcosinetransform that takes three parameters: a floating-point array a, an integer tnn, and a boolean inversefct. The function calculates the Fast Cosine Transform (FCT) or the inverse FCT of the input array, depending on the value of the inversefct parameter.
The Fast Cosine Transform is an algorithm that converts a sequence of values (time-domain) into a frequency domain representation. It is closely related to the Fast Fourier Transform (FFT) and can be used in various applications, such as signal processing and image compression.
Here's a detailed explanation of the code:
1. The function starts by initializing a number of variables, including counters, intermediate values, and constants.
2. The initial steps of the algorithm are performed. This includes calculating some trigonometric values and updating the input array a with the help of intermediate variables.
3. The code then enters a loop (from jx = 2 to tnn / 2). Within this loop, the algorithm computes and updates the elements of the input array a.
4. After the loop, the function prepares some variables for the next stage of the algorithm.
5. The next part of the algorithm is a series of nested loops that perform the bit-reversal permutation and apply the FCT to the input array a.
6. The code then calculates some additional trigonometric values, which are used in the next loop.
7. The following loop (from ix = 2 to tnn / 4 + 1) computes and updates the elements of the input array a using the previously calculated trigonometric values.
8. The input array a is further updated with the final calculations.
9. In the last loop (from j = 4 to tnn), the algorithm computes and updates the sum of elements in the input array a.
10. Finally, if the inversefct parameter is set to true, the function scales the input array a to obtain the inverse FCT.
The resulting transformed array is stored in the input array a. This means that the function modifies the input array in-place and does not return a new array.
Fast Convolution
This code defines a function called fastconvolution that performs the convolution of a given signal with a response function using the Fast Fourier Transform (FFT) technique. Convolution is a mathematical operation used in signal processing to combine two signals, producing a third signal representing how the shape of one signal is modified by the other.
The fastconvolution function takes the following input parameters:
1. float signal: This is an array of real numbers representing the input signal that will be convolved with the response function. The elements are numbered from 0 to SignalLen-1.
2. int signallen: This is an integer representing the length of the input signal array. It specifies the number of elements in the signal array.
3. float response: This is an array of real numbers representing the response function used for convolution. The response function consists of two parts: one corresponding to positive argument values and the other to negative argument values. Array elements with numbers from 0 to NegativeLen match the response values at points from -NegativeLen to 0, respectively. Array elements with numbers from NegativeLen+1 to NegativeLen+PositiveLen correspond to the response values in points from 1 to PositiveLen, respectively.
4. int negativelen: This is an integer representing the "negative length" of the response function. It indicates the number of elements in the response function array that correspond to negative argument values. Outside the range , the response function is considered zero.
5. int positivelen: This is an integer representing the "positive length" of the response function. It indicates the number of elements in the response function array that correspond to positive argument values. Similar to negativelen, outside the range , the response function is considered zero.
The function works by:
1. Calculating the length nl of the arrays used for FFT, ensuring it's a power of 2 and large enough to hold the signal and response.
2. Creating two new arrays, a1 and a2, of length nl and initializing them with the input signal and response function, respectively.
3. Applying the forward FFT (realfastfouriertransform) to both arrays, a1 and a2.
4. Performing element-wise multiplication of the FFT results in the frequency domain.
5. Applying the inverse FFT (realfastfouriertransform) to the multiplied results in a1.
6. Updating the original signal array with the convolution result, which is stored in the a1 array.
The result of the convolution is stored in the input signal array at the function exit.
Fast Correlation
This code defines a function called fastcorrelation that computes the correlation between a signal and a pattern using the Fast Fourier Transform (FFT) method. The function takes four input arguments and modifies the input signal array to store the correlation values.
Input arguments:
1. float signal: This is an array of real numbers representing the signal to be correlated with the pattern. The elements are numbered from 0 to SignalLen-1.
2. int signallen: This is an integer representing the length of the input signal array.
3. float pattern: This is an array of real numbers representing the pattern to be correlated with the signal. The elements are numbered from 0 to PatternLen-1.
4. int patternlen: This is an integer representing the length of the pattern array.
The function performs the following steps:
1. Calculate the required size nl for the FFT by finding the smallest power of 2 that is greater than or equal to the sum of the lengths of the signal and the pattern.
2. Create two new arrays a1 and a2 with the length nl and initialize them to 0.
3. Copy the signal array into a1 and pad it with zeros up to the length nl.
4. Copy the pattern array into a2 and pad it with zeros up to the length nl.
5. Compute the FFT of both a1 and a2.
6. Perform element-wise multiplication of the frequency-domain representation of a1 and the complex conjugate of the frequency-domain representation of a2.
7. Compute the inverse FFT of the result obtained in step 6.
8. Store the resulting correlation values in the original signal array.
At the end of the function, the signal array contains the correlation values at points from 0 to SignalLen-1.
Fast Fourier Transform of Two Real Functions
This code defines a function called tworealffts that computes the Fast Fourier Transform (FFT) of two real-valued functions (a1 and a2) using a Cooley-Tukey-based radix-2 Decimation in Time (DIT) algorithm. The FFT is a widely used algorithm for computing the discrete Fourier transform (DFT) and its inverse.
Input parameters:
1. float a1: an array of real numbers, representing the values of the first function.
2. float a2: an array of real numbers, representing the values of the second function.
3. float a: an output array to store the Fourier transform of the first function.
4. float b: an output array to store the Fourier transform of the second function.
5. int tn: an integer representing the number of function values. It must be a power of two, but the algorithm doesn't validate this condition.
The function performs the following steps:
1. Combine the two input arrays, a1 and a2, into a single array a by interleaving their elements.
2. Perform a 1D FFT on the combined array a using the radix-2 DIT algorithm.
3. Separate the FFT results of the two input functions from the combined array a and store them in output arrays a and b.
Here is a detailed breakdown of the radix-2 DIT algorithm used in this code:
1. Bit-reverse the order of the elements in the combined array a.
2. Initialize the loop variables mmax, istep, and theta.
3. Enter the main loop that iterates through different stages of the FFT.
a. Compute the sine and cosine values for the current stage using the theta variable.
b. Initialize the loop variables wr and wi for the current stage.
c. Enter the inner loop that iterates through the butterfly operations within each stage.
i. Perform the butterfly operation on the elements of array a.
ii. Update the loop variables wr and wi for the next butterfly operation.
d. Update the loop variables mmax, istep, and theta for the next stage.
4. Separate the FFT results of the two input functions from the combined array a and store them in output arrays a and b.
At the end of the function, the a and b arrays will contain the Fourier transform of the first and second functions, respectively. Note that the function overwrites the input arrays a and b.
█ Example scripts using functions contained in loxxfft
Real-Fast Fourier Transform of Price w/ Linear Regression
Real-Fast Fourier Transform of Price Oscillator
Normalized, Variety, Fast Fourier Transform Explorer
Variety RSI of Fast Discrete Cosine Transform
STD-Stepped Fast Cosine Transform Moving Average
Lorentzian Classification Strategy Based in the model of Machine learning: Lorentzian Classification by @jdehorty, you will be able to get into trending moves and get interesting entries in the market with this strategy. I also put some new features for better backtesting results!
Backtesting context: 2022-07-19 to 2023-04-14 of US500 1H by PEPPERSTONE. Commissions: 0.03% for each entry, 0.03% for each exit. Risk per trade: 2.5% of the total account
For this strategy, 3 indicators are used:
Machine learning: Lorentzian Classification by @jdehorty
One Ema of 200 periods for identifying the trend
Supertrend indicator as a filter for some exits
Atr stop loss from Gatherio
Trade conditions:
For longs:
Close price is above 200 Ema
Lorentzian Classification indicates a buying signal
This gives us our long signal. Stop loss will be determined by atr stop loss (white point), break even(blue point) by a risk/reward ratio of 1:1 and take profit of 3:1 where half position will be closed. This will be showed as buy.
The other half will be closed when the model indicates a selling signal or Supertrend indicator gives a bearish signal. This will be showed as cl buy.
For shorts:
Close price is under 200 Ema
Lorentzian Classification indicates a selling signal
This gives us our short signal. Stop loss will be determined by atr stop loss (white point), break even(blue point) by a risk/reward ratio of 1:1 and take profit of 3:1 where half position will be closed. This will be showed as sell.
The other half will be closed when the model indicates a buying signal or Supertrend indicator gives a bullish signal. This will be showed as cl sell.
Risk management
To calculate the amount of the position you will use just a small percent of your initial capital for the strategy and you will use the atr stop loss or last swing for this.
Example: You have 1000 usd and you just want to risk 2,5% of your account, there is a buy signal at price of 4,000 usd. The stop loss price from atr stop loss or last swing is 3,900. You calculate the distance in percent between 4,000 and 3,900. In this case, that distance would be of 2.50%. Then, you calculate your position by this way: (initial or current capital * risk per trade of your account) / (stop loss distance).
Using these values on the formula: (1000*2,5%)/(2,5%) = 1000usd. It means, you have to use 1000 usd for risking 2.5% of your account.
We will use this risk management for applying compound interest.
> In settings, with position amount calculator, you can enter the amount in usd of your account and the amount in percentage for risking per trade of the account. You will see this value in green color in the upper left corner that shows the amount in usd to use for risking the specific percentage of your account.
> You can also choose a fixed amount, so you will have to activate fixed amount in risk management for trades and set the fixed amount for backtesting.
Script functions
Inside of settings, you will find some utilities for display atr stop loss, break evens, positions, signals, indicators, a table of some stats from backtesting, etc.
You will find the settings for risk management at the end of the script if you want to change something or trying new values for other assets for backtesting.
If you want to change the initial capital for backtest the strategy, go to properties, and also enter the commisions of your exchange and slippage for more realistic results.
In risk managment you can find an option called "Use leverage ?", activate this if you want to backtest using leverage, which means that in case of not having enough money for risking the % determined by you of your account using your initial capital, you will use leverage for using the enough amount for risking that % of your acount in a buy position. Otherwise, the amount will be limited by your initial/current capital
I also added a function for backtesting if you had added or withdrawn money frequently:
Adding money: You can choose how often you want to add money (Monthly, yearly, daily or weekly). Then a fixed amount of money and activate or deactivate this function
Withdraw money: You can choose if you want to withdraw a fixed amount or a percentage of earnings. Then you can choose a fixed amount of money, the period of time and activate or deactivate this function. Also, the percentage of earnings if you choosed this option.
Some other assets where strategy has worked
BTCUSD 4H, 1D
ETHUSD 4H, 1D
BNBUSD 4H
SPX 1D
BANKNIFTY 4H, 15 min
Some things to consider
USE UNDER YOUR OWN RISK. PAST RESULTS DO NOT REPRESENT THE FUTURE.
DEPENDING OF % ACCOUNT RISK PER TRADE, YOU COULD REQUIRE LEVERAGE FOR OPEN SOME POSITIONS, SO PLEASE, BE CAREFULL AND USE CORRECTLY THE RISK MANAGEMENT
Do not forget to change commissions and other parameters related with back testing results!. If you have problems loading the script reduce max bars back number in general settings
Strategies for trending markets use to have more looses than wins and it takes a long time to get profits, so do not forget to be patient and consistent !
Please, visit the post from @jdehorty called Machine Learning: Lorentzian Classification for a better understanding of his script!
Any support and boosts will be well received. If you have any question, do not doubt to ask!
Stochastic RSI of Smoothed Price [Loxx]What is Stochastic RSI of Smoothed Price?
This indicator is just as it's title suggests. There are six different signal types, various price smoothing types, and seven types of RSI.
This indicator contains 7 different types of RSI:
RSX
Regular
Slow
Rapid
Harris
Cuttler
Ehlers Smoothed
What is RSI?
RSI stands for Relative Strength Index . It is a technical indicator used to measure the strength or weakness of a financial instrument's price action.
The RSI is calculated based on the price movement of an asset over a specified period of time, typically 14 days, and is expressed on a scale of 0 to 100. The RSI is considered overbought when it is above 70 and oversold when it is below 30.
Traders and investors use the RSI to identify potential buy and sell signals. When the RSI indicates that an asset is oversold, it may be considered a buying opportunity, while an overbought RSI may signal that it is time to sell or take profits.
It's important to note that the RSI should not be used in isolation and should be used in conjunction with other technical and fundamental analysis tools to make informed trading decisions.
What is RSX?
Jurik RSX is a technical analysis indicator that is a variation of the Relative Strength Index Smoothed ( RSX ) indicator. It was developed by Mark Jurik and is designed to help traders identify trends and momentum in the market.
The Jurik RSX uses a combination of the RSX indicator and an adaptive moving average (AMA) to smooth out the price data and reduce the number of false signals. The adaptive moving average is designed to adjust the smoothing period based on the current market conditions, which makes the indicator more responsive to changes in price.
The Jurik RSX can be used to identify potential trend reversals and momentum shifts in the market. It oscillates between 0 and 100, with values above 50 indicating a bullish trend and values below 50 indicating a bearish trend . Traders can use these levels to make trading decisions, such as buying when the indicator crosses above 50 and selling when it crosses below 50.
The Jurik RSX is a more advanced version of the RSX indicator, and while it can be useful in identifying potential trade opportunities, it should not be used in isolation. It is best used in conjunction with other technical and fundamental analysis tools to make informed trading decisions.
What is Slow RSI?
Slow RSI is a variation of the traditional Relative Strength Index ( RSI ) indicator. It is a more smoothed version of the RSI and is designed to filter out some of the noise and short-term price fluctuations that can occur with the standard RSI .
The Slow RSI uses a longer period of time than the traditional RSI , typically 21 periods instead of 14. This longer period helps to smooth out the price data and makes the indicator less reactive to short-term price fluctuations.
Like the traditional RSI , the Slow RSI is used to identify potential overbought and oversold conditions in the market. It oscillates between 0 and 100, with values above 70 indicating overbought conditions and values below 30 indicating oversold conditions. Traders often use these levels as potential buy and sell signals.
The Slow RSI is a more conservative version of the RSI and can be useful in identifying longer-term trends in the market. However, it can also be slower to respond to changes in price, which may result in missed trading opportunities. Traders may choose to use a combination of both the Slow RSI and the traditional RSI to make informed trading decisions.
What is Rapid RSI?
Same as regular RSI but with a faster calculation method
What is Harris RSI?
Harris RSI is a technical analysis indicator that is a variation of the Relative Strength Index ( RSI ). It was developed by Larry Harris and is designed to help traders identify potential trend changes and momentum shifts in the market.
The Harris RSI uses a different calculation formula compared to the traditional RSI . It takes into account both the opening and closing prices of a financial instrument, as well as the high and low prices. The Harris RSI is also normalized to a range of 0 to 100, with values above 50 indicating a bullish trend and values below 50 indicating a bearish trend .
Like the traditional RSI , the Harris RSI is used to identify potential overbought and oversold conditions in the market. It oscillates between 0 and 100, with values above 70 indicating overbought conditions and values below 30 indicating oversold conditions. Traders often use these levels as potential buy and sell signals.
The Harris RSI is a more advanced version of the RSI and can be useful in identifying longer-term trends in the market. However, it can also generate more false signals than the standard RSI . Traders may choose to use a combination of both the Harris RSI and the traditional RSI to make informed trading decisions.
What is Cuttler RSI?
Cuttler RSI is a technical analysis indicator that is a variation of the Relative Strength Index ( RSI ). It was developed by Curt Cuttler and is designed to help traders identify potential trend changes and momentum shifts in the market.
The Cuttler RSI uses a different calculation formula compared to the traditional RSI . It takes into account the difference between the closing price of a financial instrument and the average of the high and low prices over a specified period of time. This difference is then normalized to a range of 0 to 100, with values above 50 indicating a bullish trend and values below 50 indicating a bearish trend .
Like the traditional RSI , the Cuttler RSI is used to identify potential overbought and oversold conditions in the market. It oscillates between 0 and 100, with values above 70 indicating overbought conditions and values below 30 indicating oversold conditions. Traders often use these levels as potential buy and sell signals.
The Cuttler RSI is a more advanced version of the RSI and can be useful in identifying longer-term trends in the market. However, it can also generate more false signals than the standard RSI . Traders may choose to use a combination of both the Cuttler RSI and the traditional RSI to make informed trading decisions.
What is Ehlers Smoothed RSI?
Ehlers smoothed RSI is a technical analysis indicator that is a variation of the Relative Strength Index ( RSI ). It was developed by John Ehlers and is designed to help traders identify potential trend changes and momentum shifts in the market.
The Ehlers smoothed RSI uses a different calculation formula compared to the traditional RSI . It uses a smoothing algorithm that is designed to reduce the noise and random fluctuations that can occur with the standard RSI . The smoothing algorithm is based on a concept called "digital signal processing" and is intended to improve the accuracy of the indicator.
Like the traditional RSI , the Ehlers smoothed RSI is used to identify potential overbought and oversold conditions in the market. It oscillates between 0 and 100, with values above 70 indicating overbought conditions and values below 30 indicating oversold conditions. Traders often use these levels as potential buy and sell signals.
The Ehlers smoothed RSI can be useful in identifying longer-term trends and momentum shifts in the market. However, it can also generate more false signals than the standard RSI . Traders may choose to use a combination of both the Ehlers smoothed RSI and the traditional RSI to make informed trading decisions.
What is Stochastic RSI?
Stochastic RSI (StochRSI) is a technical analysis indicator that combines the concepts of the Stochastic Oscillator and the Relative Strength Index (RSI). It is used to identify potential overbought and oversold conditions in financial markets, as well as to generate buy and sell signals based on the momentum of price movements.
To understand Stochastic RSI, let's first define the two individual indicators it is based on:
Stochastic Oscillator: A momentum indicator that compares a particular closing price of a security to a range of its prices over a certain period. It is used to identify potential trend reversals and generate buy and sell signals.
Relative Strength Index (RSI): A momentum oscillator that measures the speed and change of price movements. It ranges between 0 and 100 and is used to identify overbought or oversold conditions in the market.
Now, let's dive into the Stochastic RSI:
The Stochastic RSI applies the Stochastic Oscillator formula to the RSI values, essentially creating an indicator of an indicator. It helps to identify when the RSI is in overbought or oversold territory with more sensitivity, providing more frequent signals than the standalone RSI.
The formula for StochRSI is as follows:
StochRSI = (RSI - Lowest Low RSI) / (Highest High RSI - Lowest Low RSI)
Where:
RSI is the current RSI value.
Lowest Low RSI is the lowest RSI value over a specified period (e.g., 14 days).
Highest High RSI is the highest RSI value over the same specified period.
StochRSI ranges from 0 to 1, but it is usually multiplied by 100 for easier interpretation, making the range 0 to 100. Like the RSI, values close to 0 indicate oversold conditions, while values close to 100 indicate overbought conditions. However, since the StochRSI is more sensitive, traders typically use 20 as the oversold threshold and 80 as the overbought threshold.
Traders use the StochRSI to generate buy and sell signals by looking for crossovers with a signal line (a moving average of the StochRSI), similar to the way the Stochastic Oscillator is used. When the StochRSI crosses above the signal line, it is considered a bullish signal, and when it crosses below the signal line, it is considered a bearish signal.
It is essential to use the Stochastic RSI in conjunction with other technical analysis tools and indicators, as well as to consider the overall market context, to improve the accuracy and reliability of trading signals.
Signal types included are the following;
Fixed Levels
Floating Levels
Quantile Levels
Fixed Middle
Floating Middle
Quantile Middle
Extras
Alerts
Bar coloring
Loxx's Expanded Source Types
X48 - Indicator | Midnight Hunter | V.1Thanks For Ogirinal Source Script From mladen for Engulfing Script and @KP_House, @JusInNovel, @jdehorty for Dashboard
and Indicator Original From X4815162342 MA TYPE Cross Edit For Forex Engulfing and HH LL Trading Style
Let's Me Explain About This Indicator
LightGreen Diamond "3Engulfing" is Bullish Confrim Engulfing 3 Candle
LightRed Diamond "3Engulfing" is Bearish Confrim Engulfing 3 Candle
Yellow ArrowUp is Normal Bullish Engulfing Candle
White ArrowDown is Normal Bearish Engulfing Candle
UpperBandLine, MiddleBandLine, LowerBandLine is Range Of Swing Price
Little Green Triangle is Signal To Buy
Little Red Triangle is Signal To Sell
How To Use Indicator For Trading
1. Confrim Signal Step
1.1) Bullish Trend
1.1.1) If Close Price < LowerBandLine
1.1.2) Must Have LightGreen Diamond "3Engulfing"
1.1.3) Direction Of BandLine are Up like this (↗)
1.1.4) Have a Cluster of Green Triangle
1.1.5) Sto Background Color is Green
**1.1.6) It's Good If Have a Yellow Direction Arrow Up (↗) but If Not Have a Yellow Direction Arrow Up (↗) No Problem
1.2) Bearish Trend
1.2.1) If Close Price > UpperBandLine
1.2.2) Must Have LightRed Diamond "3Engulfing"
1.2.3) Direction Of BandLine are Down like this (↘)
1.2.4) Have a Cluster of Red Triangle
1.1.5) Sto Background Color is Red
**1.2.6) It's Good If Have a White Direction Arrow Down (↘) but If Not Have a White Direction Arrow Down (↘) No Problem
2. Trend Following for Short-Term/Mid-Term
2.1) Bullish Follow
2.1.1) Have a Cluster of Green Triangle
2.1.2) Have a Yellow Direction Arrow Up (↗) >>(or)<< LightGreen Diamond "3Engulfing"
2.2) Bearish Follow
2.2.1) Have a Cluster of Red Triangle
2.2.2) Have a White Direction Arrow Down (↘) >>(or)<< LightRed Diamond "3Engulfing"
3. TP and SL - If You Following Trend or Confirm Signal
3.1) Bullish TP/SL
3.1.1) TakeProfit (TP)
3.1.1.1) Can TP IF Close > MiddleBandLine or CrossingUp (Sometime Not Large But More Time for TP From Intraday)
3.1.1.2) Can TP If Price Candle Breake UpperBandLine and Have a LightGreen Diamond "3Engulfing" or Have a Invert Arrow Direction
3.1.2) StopLoss (SL)
3.1.2.1) Can SL After Your Open Long/Buy Position by SwingLowLine
3.2) Bearish TP/SL
3.2.1) TakeProfit (TP)
3.2.1.1) Can TP If Close < MiddleBandLine or CrossingDown (Sometime Not Large But More Time for TP From Intraday)
3.2.1.2) Can TP If Price Candle Breake LowerBandLine and Have a LightRed Diamond "3Engulfing" or Have a Invert Arrow Direction
3.1.2) StopLoss (SL)
3.1.2.1) Can SL After Your Open Short/Sell Position by SwingHighLine
Synthetic, Smoothed Variety RSI [Loxx]Synthetic, Smoothed Variety RSI is an RSI indicator that combines three RSI calculations into one to create a synthetic RSI output.
How this is done:
1. Three EMAs are created using different period inputs
2. Three RSIs are created using different period inputs and the EMA output from the first step
3. These three RSIs are averaged to create the Synthetic, Smoothed Variety RSI
This indicator contains 7 different types of RSI:
RSX
Regular
Slow
Rapid
Harris
Cuttler
Ehlers Smoothed
What is RSI?
RSI stands for Relative Strength Index . It is a technical indicator used to measure the strength or weakness of a financial instrument's price action.
The RSI is calculated based on the price movement of an asset over a specified period of time, typically 14 days, and is expressed on a scale of 0 to 100. The RSI is considered overbought when it is above 70 and oversold when it is below 30.
Traders and investors use the RSI to identify potential buy and sell signals. When the RSI indicates that an asset is oversold, it may be considered a buying opportunity, while an overbought RSI may signal that it is time to sell or take profits.
It's important to note that the RSI should not be used in isolation and should be used in conjunction with other technical and fundamental analysis tools to make informed trading decisions.
What is RSX?
Jurik RSX is a technical analysis indicator that is a variation of the Relative Strength Index Smoothed ( RSX ) indicator. It was developed by Mark Jurik and is designed to help traders identify trends and momentum in the market.
The Jurik RSX uses a combination of the RSX indicator and an adaptive moving average (AMA) to smooth out the price data and reduce the number of false signals. The adaptive moving average is designed to adjust the smoothing period based on the current market conditions, which makes the indicator more responsive to changes in price.
The Jurik RSX can be used to identify potential trend reversals and momentum shifts in the market. It oscillates between 0 and 100, with values above 50 indicating a bullish trend and values below 50 indicating a bearish trend . Traders can use these levels to make trading decisions, such as buying when the indicator crosses above 50 and selling when it crosses below 50.
The Jurik RSX is a more advanced version of the RSX indicator, and while it can be useful in identifying potential trade opportunities, it should not be used in isolation. It is best used in conjunction with other technical and fundamental analysis tools to make informed trading decisions.
What is Slow RSI?
Slow RSI is a variation of the traditional Relative Strength Index ( RSI ) indicator. It is a more smoothed version of the RSI and is designed to filter out some of the noise and short-term price fluctuations that can occur with the standard RSI .
The Slow RSI uses a longer period of time than the traditional RSI , typically 21 periods instead of 14. This longer period helps to smooth out the price data and makes the indicator less reactive to short-term price fluctuations.
Like the traditional RSI , the Slow RSI is used to identify potential overbought and oversold conditions in the market. It oscillates between 0 and 100, with values above 70 indicating overbought conditions and values below 30 indicating oversold conditions. Traders often use these levels as potential buy and sell signals.
The Slow RSI is a more conservative version of the RSI and can be useful in identifying longer-term trends in the market. However, it can also be slower to respond to changes in price, which may result in missed trading opportunities. Traders may choose to use a combination of both the Slow RSI and the traditional RSI to make informed trading decisions.
What is Rapid RSI?
Same as regular RSI but with a faster calculation method
What is Harris RSI?
Harris RSI is a technical analysis indicator that is a variation of the Relative Strength Index ( RSI ). It was developed by Larry Harris and is designed to help traders identify potential trend changes and momentum shifts in the market.
The Harris RSI uses a different calculation formula compared to the traditional RSI . It takes into account both the opening and closing prices of a financial instrument, as well as the high and low prices. The Harris RSI is also normalized to a range of 0 to 100, with values above 50 indicating a bullish trend and values below 50 indicating a bearish trend .
Like the traditional RSI , the Harris RSI is used to identify potential overbought and oversold conditions in the market. It oscillates between 0 and 100, with values above 70 indicating overbought conditions and values below 30 indicating oversold conditions. Traders often use these levels as potential buy and sell signals.
The Harris RSI is a more advanced version of the RSI and can be useful in identifying longer-term trends in the market. However, it can also generate more false signals than the standard RSI . Traders may choose to use a combination of both the Harris RSI and the traditional RSI to make informed trading decisions.
What is Cuttler RSI?
Cuttler RSI is a technical analysis indicator that is a variation of the Relative Strength Index ( RSI ). It was developed by Curt Cuttler and is designed to help traders identify potential trend changes and momentum shifts in the market.
The Cuttler RSI uses a different calculation formula compared to the traditional RSI . It takes into account the difference between the closing price of a financial instrument and the average of the high and low prices over a specified period of time. This difference is then normalized to a range of 0 to 100, with values above 50 indicating a bullish trend and values below 50 indicating a bearish trend .
Like the traditional RSI , the Cuttler RSI is used to identify potential overbought and oversold conditions in the market. It oscillates between 0 and 100, with values above 70 indicating overbought conditions and values below 30 indicating oversold conditions. Traders often use these levels as potential buy and sell signals.
The Cuttler RSI is a more advanced version of the RSI and can be useful in identifying longer-term trends in the market. However, it can also generate more false signals than the standard RSI . Traders may choose to use a combination of both the Cuttler RSI and the traditional RSI to make informed trading decisions.
What is Ehlers Smoothed RSI?
Ehlers smoothed RSI is a technical analysis indicator that is a variation of the Relative Strength Index ( RSI ). It was developed by John Ehlers and is designed to help traders identify potential trend changes and momentum shifts in the market.
The Ehlers smoothed RSI uses a different calculation formula compared to the traditional RSI . It uses a smoothing algorithm that is designed to reduce the noise and random fluctuations that can occur with the standard RSI . The smoothing algorithm is based on a concept called "digital signal processing" and is intended to improve the accuracy of the indicator.
Like the traditional RSI , the Ehlers smoothed RSI is used to identify potential overbought and oversold conditions in the market. It oscillates between 0 and 100, with values above 70 indicating overbought conditions and values below 30 indicating oversold conditions. Traders often use these levels as potential buy and sell signals.
The Ehlers smoothed RSI can be useful in identifying longer-term trends and momentum shifts in the market. However, it can also generate more false signals than the standard RSI . Traders may choose to use a combination of both the Ehlers smoothed RSI and the traditional RSI to make informed trading decisions.
Extras
Alerts
Signals
Loxx's Expanded Source Types, see here:
Multi-Timeframe High Low (@JP7FX)Multi-Timeframe High Low Levels (@JP7FX)
This Price Action indicator displays high and low levels from a selected timeframe on your current chart.
These levels COULD represent areas of potential liquidity, providing key price points where traders can target entries, reversals, or continuation trades.
Key Features:
Display high and low levels from a selected timeframe.
Customize line width, colors for high and low levels, and label text color.
Enable or disable the display of high levels, low levels, and labels.
Receive alerts when the price takes out high or low levels.
How to use:
It is important to note that using this indicator on it's own is not advisable. Instead, it should be combined with other tools and analysis for a more comprehensive trading strategy.
Possibly look to use my MTF Supply and Demand Indicator to look for zones to trade from at these levels?
If the price breaks above a high level, you might consider entering a long position, with the expectation that the price will continue to rise. Conversely, if the price breaks below a low level, you may think about entering a short position, anticipating further downward movement.
On the other hand, you can also use high or low levels to look for reversal trades, as these areas can represent attractive liquidity zones.
By identifying these key price points, you could take advantage of potential market reversals and capitalise on new trading opportunities.
Always remember to use this indicator in conjunction with other technical analysis tools for the best results.
Additionally, you can enable alerts to notify you when the price takes out high or low levels, helping you stay informed about significant price movements.
This indicator could be a valuable tool for traders looking to identify key price points for potential trading opportunities.
As always with the markets, Trade Safe :)
The Flash-Strategy (Momentum-RSI, EMA-crossover, ATR)The Flash-Strategy (Momentum-RSI, EMA-crossover, ATR)
Are you tired of manually analyzing charts and trying to find profitable trading opportunities? Look no further! Our algorithmic trading strategy, "Flash," is here to simplify your trading process and maximize your profits.
Flash is an advanced trading algorithm that combines three powerful indicators to generate highly selective and accurate trading signals. The Momentum-RSI, Super-Trend Analysis and EMA-Strategy indicators are used to identify the strength and direction of the underlying trend.
The Momentum-RSI signals the strength of the trend and only generates trading signals in confirmed upward or downward trends. The Super-Trend Analysis confirms the trend direction and generates signals when the price breaks through the super-trend line. The EMA-Strategy is used as a qualifier for the generation of trading signals, where buy signals are generated when the EMA crosses relevant trend lines.
Flash is highly selective, as it only generates trading signals when all three indicators align. This ensures that only the highest probability trades are taken, resulting in maximum profits.
Our trading strategy also comes with two profit management options. Option 1 uses the so-called supertrend-indicator which uses the dynamic ATR as a key input, while option 2 applies pre-defined, fixed SL and TP levels.
The settings for each indicator can be customized, allowing you to adjust the length, limit value, factor, and source value to suit your preferences. You can also set the time period in which you want to run the backtest and how many dollar trades you want to open in each position for fully automated trading.
Choose your preferred trade direction and stop-loss/take-profit settings, and let Flash do the rest. Say goodbye to manual chart analysis and hello to consistent profits with Flash. Try it now!
General Comments
This Flash Strategy has been developed in cooperation between Baby_whale_to_moon and JS-TechTrading. Cudos to Baby_whale_to_moon for doing a great job in transforming sophisticated trading ideas into pine scripts.
Detailed Description
The “Flash” script considers the following indicators for the generation of trading signals:
1. Momentum-RSI
2. ‘Super-Trend’-Analysis
3. EMA-Strategy
1. Momentum-RSI
• This indicator signals the strength of the underlying upward- or downward-trend.
• The signal range of this indicator is from 0 to 100. Values > 60 indicate a confirmed upward- or downward-trend.
• The strategy will only generate trading signals in case the stock (or any other financial security) is in a confirmed upward- (long entry signals) or downward-trend (short entry signals).
• This indicator provides information with regards to the strength of the underlying trend and it does not give any insight with regard to the direction of the trend. Therefore, this strategy also considers other indicators which provide technical confirmation with regards to the direction of the underlying trend.
Graph 1 shows this concept:
• The Momentum-RSI indicator gives lower readings during consolidation phases and no trading signals are generated during these periods.
Example (graph 2):
2. Super-Trend Analysis
• The red line in the graph below represents the so-called super-trend-line. Trading signals are only generated in case the price action breaks through this super-trend-line indicating a new confirmed upward-trend (or downward-trend, respectively).
• If that happens, the super trend-line changes its color from red to green, giving confirmation that the trend changed from bearish to bullish and long-entries can be considered.
• The vice-versa approach can be considered for short entries.
Graph 3 explains this concept:
3. Exponential Moving Average / EMA-Strategy
The functionality of this EMA-element of the strategy has been programmed as follows:
• The exponential moving average and two other trend lines are being used as qualifiers for the generation of trading-signals.
• Buy-signals for long-entries are only considered in case the EMA (yellow line in the graph below) crosses the red line.
• Sell-signals for short-entries are only considered in case the EMA (yellow line in the graph below) crosses the green line.
An example is shown in graph 4 below:
We use this indicator to determine the new trend direction that may occur by using the data of the price's past movement.
4. Bringing it all together
This section describes in detail, how this strategy combines the Momentum-RSI, the super-trend analysis and the EMA-strategy.
The strategy only generates trading-signals in case all of the following conditions and qualifiers are being met:
1. Momentum-RSI is higher than the set value of this strategy. The standard and recommended value is 60 (graph 5):
2. The super-trend analysis needs to indicate a confirmed upward-trend (for long-entry signals) or a confirmed downward-trend (for short-entry signals), respectively.
3. The EMA-strategy needs to indicate that the stock or financial security is in a confirmed upward-trend (long-entries) or downward-trend (short-entries), respectively.
The strategy will only generate trading signals if all three qualifiers are being met. This makes this strategy highly selective and is the key secret for its success.
Example for Long-Entry (graph 6):
When these conditions are met, our Long position is opened.
Example for Short-Entry (graph 7):
Trade Management Options (graph 8)
Option 1
In this dynamic version, the so-called supertrend-indicator is being used for the trade exit management. This supertrend-indicator is a sophisticated and optimized methodology which uses the dynamic ATR as one of its key input parameters.
The following settings of the supertrend-indicator can be changed and optimized (graph 9):
The dynamic SL/TP-lines of the supertrend-indicator are shown in the charts. The ATR-length and the supertrend-factor result in a multiplier value which can be used to fine-tune and optimize this strategy based on the financial security, timeframe and overall market environment.
Option 2 (graph 10):
Option 2 applies pre-defined, fixed SL and TP levels which will appear as straight horizontal lines in the chart.
Settings options (graph 11):
The following settings can be changed for the three elements of this strategy:
1. (Length Mom-Rsi): Length of our Mom-RSI indicator.
2. Mom-RSI Limit Val: the higher this number, the more momentum of the underlying trend is required before the strategy will start creating trading signals.
3. The length and factor values of the super trend indicator can be adjusted:ATR Length SuperTrend and Factor Super Trend
4. You can set the source value used by the ema trend indicator to determine the ema line: Source Ema Ind
5. You can set the EMA length and the percentage value to follow the price: Length Ema Ind and Percent Ema Ind
6. The backtesting period can be adjusted: Start and End time of BackTest
7. Dollar cost per position: this is relevant for 100% fully automated trading.
8. Trade direction can be adjusted: LONG, SHORT or BOTH
9. As we explained above, we can determine our stop-loss and take-profit levels dynamically or statically. (Version 1 or Version 2 )
Display options on the charts graph 12):
1. Show horizontal lines for the Stop-Loss and Take-profit levels on the charts.
2. Display relevant Trend Lines, including color setting options for the supertrend functionality. In the example below, green lines indicate a confirmed uptrend, red lines indicate a confirmed downtrend.
Other comments
• This indicator has been optimized to be applied for 1 hour-charts. However, the underlying principles of this strategy are supply and demand in the financial markets and the strategy can be applied to all timeframes. Daytraders can use the 1min- or 5min charts, swing-traders can use the daily charts.
• This strategy has been designed to identify the most promising, highest probability entries and trades for each stock or other financial security.
• The combination of the qualifiers results in a highly selective strategy which only considers the most promising swing-trading entries. As a result, you will normally only find a low number of trades for each stock or other financial security per year in case you apply this strategy for the daily charts. Shorter timeframes will result in a higher number of trades / year.
• Consequently, traders need to apply this strategy for a full watchlist rather than just one financial security.
Volatility Percentile (H-LINES)A simple script that adjusts the Volatility Percentile Indicator visibly in order to better accommodate entries/exits and certain trading setups/strategies.
--------------------------------------------------------------------------------------------------------------------------------------------------------
TL;DR - Remember after a full reset, we are looking for initial crosses UP on the UpperSwingline and crosses DOWN on the LowerSwingline for primary and secondary signal derivation.
Vice versa also works great but the prior method mentioned is a little more consistent in my experience, but you should mess around and optimise this for your own setups and strategies anyway.
--------------------------------------------------------------------------------------------------------------------------------------------------------
ORIGINAL SCRIPT HERE:
^Click image for a redirect to that script.
ALL CREDIT GOES TO: www.tradingview.com
He wrote everything so give credit where it's due, good bit of kit this here script is.
--------------------------------------------------------------------------------------------------------------------------------------------------------
HOW I USE MY VISUALLY ALTERED VERSION OF THIS SCRIPT
First of all, the alterations I've made seem only to be consistently viable with renko charts though if you can get the sought after results using candles or any other chart type then perfect, but be wary. All my back-testing done only with LinReg, HMA and SWMA - ATR type settings exclusively on renko charts. The changes I've made to the original script essentially just turns it visibly into an oscillator and uses a couple horizontal lines to generate signals, very simple - absolutely nothing has changed in the actual code of calculating this indicator.
What I believe my adjustments have achieved is quite simple. A full reset/oscillation on the indicator tries to map the strongest parts of a move or at least the part of the move where volume and the rate of transactions is at its peak to even facilitate said move. *take this statement with a pinch of salt though I do believe it's interacting with accumulation/distribution patterns, which is expected of volatility*
For ease of communication let's refer to the area between the the first UpperSwingline cross to the subsequent LowerSwingline cross, as the primary move. Then afterwards when it crosses the UpperSwingline again to make the full reset, the area in between those two points referred to as the secondary move.
Though more interestingly/practically the indicator ends up giving you two signals. In order for this to work we have to first decide that a spike up in volatility which crosses the UpperSwingline implies a significant level of interest at that price level. Usually that means a reversal is brewing, if price has already moved, trended and is approaching a certain area of value; which causes a spike of new positions to be taken, then you know that this is a level where contrarians are looking to enter. Now here's the tricky part, when volatility crosses the LowerSwingline price action becomes a little more open for interpretation, the way I personally like to look at this secondary signal is the potential for an exhaustion period to prolong itself a little longer. I know that's not the perfect analysis for what's going on, a more in-depth look into what's going on would best be described using Elliott Wave Theory, if a cross on the UpperSwingline near a significant area of value gives us a reversal trade lets just assume for the sake of argument that a new Elliott Wave can begin forming here. Making the move from that initial UpperSwngline cross to the cross on the LowerSwingline, the area that encompasses those two points: the impulse wave. After this point my analogy kind of falls apart and sadly my knowledge just isn't what it needs to be in order for me to properly analyse what's going on here but I must digress. Price after crossing the LowerSwingline up until the point where it makes a full reset by crossing the UpperSwingline again, within this area price seems to do either one of two things:
Situation 1 - Most likely occurs after a major trend reversal from major support/resistance or area of value (price has trended to new territory, maybe spent time a little time consolidating but hasn't broken the key level, momentum shifts, price action breaks current structure and you get the signal that primary move is a reversal) = Exhaustion Period, price will continue in direction of primary move during the secondary move. This here is for our trend-followers, you wanna take a continuation trade? Just wait for the pullback/rally to hit a FiB retracement level and enter - or any other means to find a decent support/resistance to enter.
Situation 2 - Most likely occurs when market enters a range or consolidation (price was previously seen as being at either a discount or premium so Situation 1 could have already played out and now you're looking at a full reset after that, imagine this spot to be the centre line of a linear regression channel or bang in the middle of your range, could even occur if price breaks a key moving average and decides it ought to consolidate around it for a while. Basically at any point where a somewhat prolonged consolidation is expected and not a quick reversal) = Corrective Wave, price will move against the direction of primary move during the secondary move. Now you might be expecting me to say this ones for you reversal traders but not really, if this is occurring then there probably isn't a definitive direction the market has chosen so you can use this opportunity to take range trades in the direction or against the direction of whatever the current trend or latest trend was depending on whatever slight bias you may have. <--- Situation 2 is very useful for finding cleaner entries if you do have a trend bias, say price underwent Situation 1, is now at key moving average but your bias is that it will break and continue up, so you wait and allow the secondary move of Situation 2 to take your entry to a much better R:R before entering a position.
--------------------------------------------------------------------------------------------------------------------------------------------------------
Simple_RSI+PA+DCA StrategyThis strategy is a result of a study to understand better the workings of functions, for loops and the use of lines to visualize price levels. The strategy is a complete rewrite of the older RSI+PA+DCA Strategy with the goal to make it dynamic and to simplify the strategy settings to the bare minimum.
In case you are not familiar with the older RSI+PA+DCA Strategy, here is a short explanation of the idea behind the strategy:
The idea behind the strategy based on an RSI strategy of buying low. A position is entered when the RSI and moving average conditions are met. The position is closed when it reaches a specified take profit percentage. As soon as the first the position is opened multiple PA (price average) layers are setup based on a specified percentage of price drop. When the price hits the layer another position with the same position size is is opened. This causes the average cost price (the white line) to decrease. If the price drops more, another position is opened with another price average decrease as result. When the price starts rising again the different positions are separately closed when each reaches the specified take profit. The positions can be re-opened when the price drops again. And so on. When the price rises more and crosses over the average price and reached the specified Stop level (the red line) on top of it, it closes all the positions at once and cancels all orders. From that moment on it waits for another price dip before it opens a new position.
This is the old RSI+PA+DCA Strategy:
The reason to completely rewrite the code for this strategy is to create a more automated, adaptable and dynamic system. The old version is static and because of the linear use of code the amount of DCA levels were fixed to max 6 layers. If you want to add more DCA layers you manually need to change the script and add extra code. The big difference in the new version is that you can specify the amount of DCA layers in the strategy settings. The use of 'for loops' in the code gives the possibility to make this very dynamic and adaptable.
The RSI code is adapted, just like the old version, from the RSI Strategy - Buy The Dips by Coinrule and is used for study purpose. Any other low/dip finding indicator can be used as well
The distance between the DCA layers are calculated exponentially in a function. In the settings you can define the exponential scale to create the distance between the layers. The bigger the scale the bigger the distance. This calculation is not working perfectly yet and needs way more experimentation. Feel free to leave a comment if you have a better idea about this.
The idea behind generating DCA layers with a 'for loop' is inspired by the Backtesting 3commas DCA Bot v2 by rouxam .
The ideas for creating a dynamic position count and for opening and closing different positions separately based on a specified take profit are taken from the Simple_Pyramiding strategy I wrote previously.
This code is a result of a study and not intended for use as a full functioning strategy. To make the code understandable for users that are not so much introduced into pine script (like myself), every step in the code is commented to explain what it does. Hopefully it helps.
Enjoy!
Strategy for UT Bot Alerts indicator Using the UT Bot alerts indicator by @QuantNomad, this strategy was designed for showing an example of how this indicator could be used, also, it has the goal to help some people from a group that use to use this indicator for their trading. Under any circumstance I recommend to use it without testing it before in real time.
Backtesting context: 2020-02-05 to 2023-02-25 of BTCUSD 4H by Tvc. Commissions: 0.03% for each entry, 0.03% for each exit. Risk per trade: 2.5% of the total account
For this strategy, 3 indicators are used:
UT Bot Alerts indicator by Quantnomad
One Ema of 200 periods for indicate the trend
Atr stop loss from Gatherio
Trade conditions:
For longs:
Close price is higher than Atr from UT Bot
Ema from UT Bot cross over Atr from UT Bot.
This gives us our long signal. Stop loss will be determined by atr stop loss (white point), break even(blue point) by a risk/reward ratio of 0.75:1 and take profit of 3:1 where half position will be closed. This will be showed as buy (open long position)
The other half will be closed when close price is lower than Atr and Ema from UT Bot cross under Atr. This will be showed as cl buy (close long position)
For shorts:
Close price is lower than Atr from UT Bot
Ema from UT Bot cross over Atr from UT Bot.
This gives us our short signal. Stop loss will be determined by atr stop loss (white point), break even(blue point) by a risk/reward ratio of 0.75:1 and take profit of 3:1 where half position will be closed. This will be showed as sell (open short position)
The other half will be closed when close price is higher than Atr and Ema from UT Bot cross over Atr. This will be showed as cl sell (close short position)
Risk management
For calculate the amount of the position you will use just a small percent of your initial capital for the strategy and you will use the atr stop loss for this.
Example: You have 1000 usd and you just want to risk 2,5% of your account, there is a long signal at price of 20,000 usd. The stop loss price from atr stop loss is 19,000. You calculate the distance in percent between 20,000 and 19,000. In this case, that distance would be of 5,0%. Then, you calculate your position by this way: (initial or current capital * risk per trade of your account) / (stop loss distance).
Using these values on the formula: (1000*2,5%)/(5,0%) = 500usd. It means, you have to use 500 usd for risking 2.5% of your account.
We will use this risk management for apply compound interest.
In settings, with position amount calculator, you can enter the amount in usd of your account and the amount in percentage for risking per trade of the account. You will see this value in green color in the upper left corner that shows the amount in usd to use for risking the specific percentage of your account.
Script functions
Inside of settings, you will find some utilities for display atr stop loss, break evens, positions, signals, indicators, etc.
You will find the settings for risk management at the end of the script if you want to change something. But rebember, do not change values from indicators, the idea is to not over optimize the strategy.
If you want to change the initial capital for backtest the strategy, go to properties, and also enter the commisions of your exchange and slippage for more realistic results.
In risk managment you can find an option called "Use leverage ?", activate this if you want to backtest using leverage, which means that in case of not having enough money for risking the % determined by you of your account using your initial capital, you will use leverage for using the enough amount for risking that % of your acount in a buy position. Otherwise, the amount will be limited by your initial/current capital
---> Do not forget to deactivate Trades on chart option in style settings for a cleaner look of the chart <---
Some things to consider
USE UNDER YOUR OWN RISK. PAST RESULTS DO NOT REPRESENT THE FUTURE.
DEPENDING OF % ACCOUNT RISK PER TRADE, YOU COULD REQUIRE LEVERAGE FOR OPEN SOME POSITIONS, SO PLEASE, BE CAREFULL AND USE CORRECTLY THE RISK MANAGEMENT
Do not forget to change commissions and other parameters related with back testing results!
Strategies for trending markets use to have more looses than wins and it takes a long time to get profits, so do not forget to be patient and consistent !
---> The strategy can still be improved, you can change some parameters depending of the asset and timeframe like risk/reward for taking profits, for break even, also the main parameters of the UT Bot Alerts <----
Strat Dashboard [TFO]The Strat Dashboard tracks up to 10 signals while highlighting common strat reversal patterns, the SSS 50% rule, timeframe continuity, and some additional criteria with VWAP and moving averages.
With the strat, all price action bars/candles are simplified into 3 total possibilities: 1 (inside bar), 2 (a bar that takes the previous bar's high OR low), and 3 (outside bar). The first table column for Last X Candles shows the most recent candles according to this notation, for example, 1 - 2D - 2U. This would mean we had an inside bar, followed by a bar that took the previous bar's low, followed then by a bar that took the previous bar's high. Note that the colors in this column are set according to whether the current bar's close exceeds the previous bar's high/low. By default, these colors are green if above the previous bar's highs, or red if below the previous bar's lows. If the current close is in between the previous candle's high and low (even after already taking the prior high or low), no color will be applied.
The SSS 50% column shows a yes or no value for whether the current bar aligns with the SSS 50% rule, where a bar has taken either the previous high or low, and has since reversed to at least the midway point of the previous bar's height - essentially anticipating a 2 that may become a 3 (outside bar).
Timeframe continuity (TFC) shows a yes or no value for when the current candle on multiple timeframes are all green or red (above the open price or below the open price, respectively). For example, if you were looking at the current 15m, 1h, and 1D bars, and they were all above the open price, you could say there's TFC between all three timeframes. As of the initial release, you can select up to 3 different timeframes. The table values will only be true when all selected timeframes are in alignment. When setting alerts, first deselect the timeframes if you don't want TFC logic to impact alerts.
The "Last" column shows the last strat reversal pattern that was confirmed (after the last bar closes). Waiting for a candle close is the safer option since a 2 can turn into a 3; however for higher timeframes, it may be beneficial to make an update to this indicator in which you can have live alerts as well (not waiting for a candle close). You can select which strat reversals you want to be shown from the settings. Various strat reversals may be selected for alerts of type "Any"; for example, if setting up an alert for "Any" strat reversal on Symbol 1, then this alert will go off when any of the *selected* strat reversals occur for that specific symbol. Deselect any strat reversals that you don't want to be included in these alerts.
Lastly, the EMA and VWAP columns simply show whether price is above or below said value. This tracks the current candle close, and may repaint/change several times if the current bar is oscillating above and below these values.
Morning Option Pullback IndicatorI designed this indicator to help me identify Option CALL and PUT signals for the QQQ and SPY on the 1 min chart.
Summary of how it works
1. It identifies the Pre-Market channel High and Low and draws green and red lines for the day at these levels.
2. Waits for a morning or afternoon sessions breakout/breakdown of price out of that channel.
3. The buy a CALL or PUT signal is when price pulls back to the EMA Medium line after breaking out of the channel.
4. Settings allow adjusting of when the signal happens
5. EMA Short (5) and EMA Medium (20) must stay apart for a selectable number of bars
6. For a CALL signal, the Price and EMA Medium (20) must be above the Pre Market High line when price pulls back to EMA Medium (20) line
7. There is a selectable adjustment to allow the signal to trigger when the price comes within a close enough range of the EMA Medium and PM High lines
8. There is a TICK.US filter that you can use to only signal a CALL when the TICK.US 10 min chart shows the average of the EMA5 and EMA20 is over 100
9. It has Buy and Sell signal Alerts and user adjustable Stop Loss and Profit Taker settings.
10. EMA Settings are adjustable and can show up to 3 EMA's on the chart. I personally like the EMA5 and 20. Others may use something similar like 9 and 21. It's user selectable.