Grid Strategy Back Tester (Long/Short/Neutral)Preface
I'd like to send a thank you to @xxattaxx-DisDev.
The 'Line' Code, which was the most difficult to plan the Grid Indicator, was solved through the 'Grid Bot Simulator' script of @xxattaxx-DisDev.
A brief description of the indicators
These indicators are designed for backtesting of grid trading that can be opened on various exchanges.
Grid trading is a method of selling at particular intervals as prices rise and fall for gird interval price range.
This indicator is actually designed to see what the Long / Short / Neutral grid has achieved and how much it has achieved over a given period of time.
How to use
1. Lower Limit and Upper Limit are required when putting indicators on the chart.
After that, choose the 'Time' when to open the grid.
Also, select Long / Short / Neutral direction if necessary.
2. Statistics Table
Matched Grid shows how many grid pairs were engaged during the backtesting period.
The Daily Average Matching Profit is calculated based on the number of these closed grids.
Total Matching Profit is calculated as Matching Grid * Per Matching Profit.
Position Profit/Loss shows the benefits and losses from your current position.
Total Profit/Loss is sum of Total Matching Profit and Position Profit/Loss.
The Expanded APY shows the benefits of running the strategy on these terms for a year.
Max Loss of Upper is the maximum loss assumed to be directly at the top of the grid range.
BEP days (Upper) show how many days of maintenance relative to Average Matching Profit can result in greater profit than maximum loss if the grid continues to move within range.
(In the case of Long Strategy, it appears to be 'Min Profit', which shows minimal benefit if it reaches the top.)
Max Loss of Lower and BEP days (Lower) shows the opposite.
(In the case of Short Strategy, it is also referred to as 'Min Profit', which shows minimal benefit if it reaches the bottom.)
3. Grid Info
Total Grid Number, Upper Limit, and Lower Limit show the values you set in INPUT.
Grid Open Price shows the price for the period you decide to open.
Starting Position shows the number of positions that were initially held in the case of a Long / Short Strategy.
(0 for Neutral Strategy)
Per Grid qty shows how many positions are allocated to one grid
Grid Interval shows the spacing of each grid.
Per Matched Profit shows how much profit is generated when a single grid is matched.
Caution
Backtesting results for these indicators may vary depending on the time frame.
Therefore, I recommend that you use it only to compare Profit/Loss over time.
*In addition, there is a problem that all lines in the grid are not implemented, but it is independent of the backtest results.
--------------------------------------
서문
지표를 기획함에 있어서 가장 어려웠던 line 코드를 @xxattaxx-DisDev의 'Grid Bot Simulator' 스크립트를 통해 해결할 수 있었습니다.
이에 감사의 말씀을 드립니다.
해당 지표에 대한 간단한 설명
해당 지표는 다양한 거래소에서 오픈할 수 있는 그리드 매매에 대한 백테스팅을 위해 만들어졌습니다.
그리드매매는, 특정 가격 구간에 대해 가격이 오르고 내림에 따라 일정 간격에 맞춰 매매를 하는 방식입니다.
이 지표는 실질적으로 롱/숏/중립 그리드가 어떠한 성과를, 특정 기간동안 얼마나 냈는지를 확인하고자 만들어졌습니다.
사용방법
1. 인풋
지표를 차트위에 넣을 때, Lower Limit과 Upper Limit이 필요합니다.
그 후 그리드를 언제부터 오픈할 것인지를 선택하세요.
또, 필요하다면 Long / Short / Neutral의 방향을 선택하세요.
2. 그리드 통계
Matched Grid는, 백테스팅 기간동안 체결된 그리드 쌍이 몇개인지를 보여줍니다.
이 체결된 그리드의 갯수를 바탕으로 Daily Average Matched Profit이 계산됩니다.
Total Matched Profit은, Matched Grid * Per Matched Profit으로 계산됩니다.
Position Profit/Loss는, 현재 갖고 있는 포지션으로 인한 이익과 손실을 보여줍니다.
Total Matched Profit과 Position Profit/Loss를 합친 금액이 Total Profit/Loss가 됩니다.
Expcted APY는, 이러한 조건으로 전략을 1년동안 운영했을 때의 이익을 보여줍니다.
Max Loss of Upper는, 그리드 범위의 최상단에 바로 도달했을 경우를 가정한 최대 손실입니다.
BEP days(Upper)는, 그리드가 범위 내에서 계속 움직일 경우, Average Matched Profit을 기준으로 며칠동안 유지되어야 최대손실보다 더 큰 이익이 발생할 수 있는지를 보여줍니다.
(Long Strategy의 경우, ‘Min Profit’이라고 나타나는데, 최상단에 도달했을 경우 최소한의 이익을 보여줍니다)
Max Loss of Lower는 그 반대의 경우를 보여줍니다.
(Short Strategy의 경우, 역시 ‘Min Profit’이라고 나타나는데, 최하단에 도착했을 경우 최소한의 이익을 보여줍니다)
3. 그리드 정보
그리드 갯수, Upper Limt, Lower Limt은 자신이 설정한 값을 보여줍니다.
Grid Open Price는, 자신이 오픈하기로 정했던 기간의 가격을 보여줍니다.
Starting Position은, 롱/숏 그리드의 경우에 처음에 들고 시작했던 포지션의 갯수를 보여줍니다.
Neutral Strategy의 경우 0입니다.
Per Grid qty는, 하나의 그리드에 얼마만큼의 포지션이 배분되었는지를 보여주며
Grid Interval은 각 그리드의 간격을 보여줍니다.
또, Per Matched Profit은 하나의 그리드가 체결될 때 얼마만큼의 이익이 발생하는 지를 보여줍니다.
이러한 지표에 대한 역테스트 결과는 시간 프레임에 따라 달라질 수 있습니다.
따라서 시간 경과에 따른 손익을 비교할 때만 사용하는 것이 좋습니다.
*추가로, 그리드의 라인이 모두 구현되지 않는 문제가 있지만, 백테스팅 결과와는 무관합니다.
Statistics
Correlation Convergance Divergance (CCD)Hello Traders !
[/bIntro :
Correlation Convergance Divergance (CCD) is a statistic based trend analysis indictor that uses long run and short run correlation averages to determine the stregth of two assets linear association, and bounded average percent change to determine the underpromering reltaive assets.
Rational & "Motivating Idea" :
The motivating idea is that "if two assets are in general historicaly posativley correlated (Their OHLC prices tend to move in one direction) if their correlation deviates this is a high probabality mean reverting buy opportunity for the unederproferming asset" - which is determined buy a divergance of thier standardiesed delta (Percent chnage). i.e. the reltive assets average percent change(red columns) is decreasing relative to the reffernace markets avearge percent change (green columns). note the green and red columns act just like RSI.
Divergances :
These are highlighted buy the yellow columns, As explianed above these are theoreticaly good buy opportunities.
Key Options & Inputs :
* Market Timeframe reselution :
The timeframe of which price data e.g closing prices is sourced for both markets. THIS MUST BE CHANGED TO THE CURRENT TIMFRAME RESULTION.*
* Reffrerance & Relative symbol percenet avergae lookback :
For both sr (short run) correlation averages and Reffrerance & Relative symbol percenet avergaes to start at the same bar this must equal lookback cov lookback + correlation avg lookback
Hope You Enjoy !
TSG's Binance Round NRs - only for BTCThis is good real-time / scalp indicator for those scalping Bitcoin.
It is based solely on Binance's BTCUSDT Perpetuals, but can be used on any BTCUSD pair as I am requesting info directly from Binance's chart.
IDEA
I have spotted that many times, round nrs (most likely caused by algo-trading) mark a top / bottom on a trend. Many times have catched extremes because of this technique and I have now coded it into an indicator on TradingView.
Feel free to test it out - It's not a 100% strategy - but if you spot round nrs around confluences - your odds go up big time.
SETUP
You are able to set the amount of candles you want to search for - default is 20.
Ofcourse we look only for extremes, therefore it will only look for extreme highs and lows within the amount of candles of your input.
HOW TO READ IT
The indicator will mark only the last High and Low matching the criteria - above and below the candle with the price number.
Good luck!
Coin & market cap tableThis table was built specifically for the Crypto market.
It gives you a quick overview of the markets without having to scroll through numerous charts. The information is the overall markets daily change and the charts coins movement on a daily, weekly and monthly basis.
The weeks start on a Monday morning, the months start on the 1st of the month so this is last weeks data and last calendar months data.
It also gives you Bitcoins dominance. (Total2) you can change it to Bitcoin & Ethereum dominance (Total3)
Estimated Time At Price [Kioseff Trading]Hello!
This script uses the same formula as the recently released "Volume Delta" script to ascertain lower timeframe values.
Instead, this script looks to estimate the approximate time spent at price blocks; all time estimates are in minute.second format.
The image above shows functionality. Time spent at price levels/blocks are estimated in duration. The highest estimated block is the highlighted level and a POC line is extended right until violated. Colors, the presence of POC lines and whether they're removed subsequent violation are all configurable.
As show in the image above, the data is displayable in an additional format. When select the "non-classic" format shown above - precise price levels are calculated and the estimated time spent at those levels is summed and displayed right of the current bar. The off-colored level (yellow in the example) denotes the price level encompassing the highest *estimated* time spent.
You can deselect the neon effect and choose to have the script recalculate after any conceivable amount of time has passed.
The script can also calculate for the most current bar should you configure it to do so.
That's all! (for now). A quick/easy script building off an existing foundation.
If you've any ideas for features and ways to "spice up" this script please let me know (: I'll gladly incorporate requests.
Thank you!
iMoku (Ichimoku Complete Tool) - The Quant Science iMoku™ is a professional all-in-one solution for the famous Ichimoku Kinko Hyo indicator.
The algorithm includes:
1. Backtesting spot
2. Visual tool
3. Auto-trading functions
With iMoku you can test four different strategies.
Strategy 1: Cross Tenkan Sen - Kijun Sen
A long position is opened with 100% of the invested capital ($1000) when "Tenkan Sen" crossover "Kijun Sen".
Closing the long position on the opposite condition.
There are 3 different strength signals for this strategy: weak, normal, strong.
Weak : the signal is weak when the condition is true and the price is above the 'Kumo'
Normal : the signal is normal when the condition is true and the price is within the 'Kumo'
Strong : the signal is strong when the condition is true and the price is below the 'Kumo'
Strategy 2: Cross Price - Kijun Sen
A long position is opened with 100% of the invested capital ($1000) when the price crossover the 'Kijun Sen'.
Closing the long position on the opposite condition.
There are 3 different strength signals for this strategy: weak, normal, strong.
Weak : the signal is weak when the condition is true and the price is above the 'Kumo'
Normal : the signal is normal when the condition is true and the price is inside the 'Kumo'
Strong : the signal is strong when the condition is true and the price is below the 'Kumo'
Strategy 3: Kumo Breakout
A long position is opened with 100% of the invested capital ($1000) when the price breakup the 'Kumo'.
Closing the long position with a percentage stop loss and take profit on the invested capital.
Strategy 4: Kumo Twist
A long position is opened with 100% of the invested capital ($1000) when the 'Kumo' goes from negative to positive (called "Twist").
Closing the long position on the opposite condition.
There are 2 different strength signals for this strategy: weak, and strong.
Weak : the signal is weak when the condition is true and the price is above the 'Kumo'
Strong : the signal is strong when the condition is true and the price is below the 'Kumo'
This script is compliant with algorithmic trading.
You can use this script with trading terminals such as 3Commas or CryptoHopper. Connecting this script is very easy.
1. Enter the user interface
2. Select and activate a strategy
3. Copy your bot's links into the dedicated fields
4. Create and activate alert
Disclaimer: algorithmic trading involves risk, the user should consider aspects such as slippage, liquidity and costs when evaluating an asset. The Quant Science is not responsible for any kind of damage resulting from use of this script. By using this script you take all the responsibilities and risks.
RODO Fair Value IndicatorThe indicator calculates the collateral weight across all pools and gives you the average arbitrage value in real time. Fair value is a green line when the price is undervalued and a red line when the price is overvalued.
We do not yet have TradingView data for the RODOUNI, RODOLINK, RODOHEX and RODOBNB pools - the used data is simulated for this pairs.
I will publish the indicator when we have correct data for all pools. Until then, you can keep an eye on it to know how your investment is moving and what the current fair price is between the pools
If you only use it to monitor your position, just enter your average price and number of tokens
If you also use it for arbitrage, you can enter what amount in USD you do arbitrage transactions with on average in the "Trade Value" field and the indicator will automatically calculate
how much money you can make with such a trade (without considering the transaction price).
Accordingly, the pair that is undervalued and the pair that is overvalued are lit in green
Arbitrage means - we buy the undervalued market and sell the overvalued one. With two transactions, we realize a guaranteed profit. Profits are tiny, but it's a safe trade
ILM CFTC COT Legacy PlotUse this indicator on Daily Timeframe
Please refer to the below link for CFTC Disaggregated COT
www.cftc.gov
This script is very similar to COT Financial Plot indicator except that it plots the data for Futures in Legacy buckets Commercial vs. Non-Commercial
Volume percentrank[TV1]Volume percentrank
Volume normalized by percentile.
The indicator calculates the percentile of the trading volume . The volume in the base asset or quote asset can be selected as data. To calculate the volume of a quoted asset, the closing price or another standard method for calculating the price of a bar can be used.
A feature of percentile calculation with a small data sample length is low accuracy. Despite the fact that the script allows you to calculate a percentile with a length of 1, using a percentile length less than 100 is not recommended.
The percentile calculation method does not allow correctly calculating the percentile at the beginning of the chart due to the lack of all data in the selection, therefore, when the date of the first bar changes (this happens on small timeframes if the TradingView subscription does not allow you to see all historical data), the indicator will be repainted up to the bar number equal to the percentile sample length.
Huge values of the percentile length may cause a script error. If the indicator doesn't work, just make the percentile length smaller.
Объем, нормализованный по процентилью.
Индикатор вычисляет процентиль объема торгов. В качестве данных может быть выбран объем в базовом(base) активе или котировочном(quote) активе. Для расчета объема в котировочном активе может использоваться цена закрытия либо другой стандартный метод расчета цены бара.
Особенностью расчета процентиля при малой длине выборки данных является малая точность. Не смотря на то, что скрипт позволяет вычиcлить процентиль с длинной 1, использовать длину процентиля меньше 100 не рекомендуется.
Метод расчета процентиля не позволяет корректно рассчитать процентиль в начале графика из-за отсутствия всех данных в выборке, поэтому при изменении даты первого бара (это происходит на малых таймфреймах, если подписка TradingView не позволяет видеть все исторические данные) индикатор подвержен перерисовке вплоть до номера бара равного длине выборки процентиля.
Большие значения длины процентиля могут приводить к ошибке скрипта. Если индикатор не работает, просто сделайте длину процентиля меньше.
Hurst Exponent (Dubuc's variation method)Library "Hurst"
hurst(length, samples, hi, lo)
Estimate the Hurst Exponent using Dubuc's variation method
Parameters:
length : The length of the history window to use. Large values do not cause lag.
samples : The number of scale samples to take within the window. These samples are then used for regression. The minimum value is 2 but 3+ is recommended. Large values give more accurate results but suffer from a performance penalty.
hi : The high value of the series to analyze.
lo : The low value of the series to analyze.
The Hurst Exponent is a measure of fractal dimension, and in the context of time series it may be interpreted as indicating a mean-reverting market if the value is below 0.5 or a trending market if the value is above 0.5. A value of exactly 0.5 corresponds to a random walk.
There are many definitions of fractal dimension and many methods for its estimation. Approaches relying on calculation of an area, such as the Box Counting Method, are inappropriate for time series data, because the units of the x-axis (time) do match the units of the y-axis (price). Other approaches such as Detrended Fluctuation Analysis are useful for nonstationary time series but are not exactly equivalent to the Hurst Exponent.
This library implements Dubuc's variation method for estimating the Hurst Exponent. The technique is insensitive to x-axis units and is therefore useful for time series. It will give slightly different results to DFA, and the two methods should be compared to see which estimator fits your trading objectives best.
Original Paper:
Dubuc B, Quiniou JF, Roques-Carmes C, Tricot C. Evaluating the fractal dimension of profiles. Physical Review A. 1989;39(3):1500-1512. DOI: 10.1103/PhysRevA.39.1500
Review of various Hurst Exponent estimators for time-series data, including Dubuc's method:
www.intechopen.com
Lagging Session Regression ChannelHello Traders !
Note :
This is my very first published script on trading view & from brainstorming an idea to developing to the finched product it was imperative to me for the indiactor and every one of its features to be of some meaningfull use. If you like the idea of statsitics being able to predict future prices in the market then this indicator may be usefull in your trading arsenal.
Introduction :
Lagging Session Regression Channel (LSRC) is a statistical trend analysis indicator that "laggs" the market by the user defined session, by defualt a day, by doing so the indicator leverges the ability of simple linear regression to predict future asset price.(This can be used on any asset in any market in any time frame)
Options & inputs :
- Bar regression lookback :
The value of bars back from the lats session change, if the seesion time is equivelnt to the the chart timefrmae then the regression line will not lag price, i.e it will act as a stantdard lineer regression channel chnaging on evrey last confimred bar.
- Standard Deviation lookback :
The value of bars from the last session change to cacluate the unbiased standard deviation, The lookback can be set to > or < the regression lookback to cauture > or < less asset volatility. (note this is the same as the residual standard deviation)
- Predicted price at nth bar :
if you whant to know the predicted close price value at any given point in the regression and to the RHS of the regression.
- Regression Line colors group :
Changes the colors of each plotted line.
- OLS Line color : is only changeable when trend color is set to false / unticked.
- Visable deviations group :
Plots the lines that you want on chart, e.g if "Show DEV1" and "Sow DEV SUB1" are the only inputs ticked then they will be the only lines ploted along with the simple linear regression line.
- Regression Line Dynamics group :
All inputs in this group change the regressions calculations given the bar lookback is constant / the same.
- Trend color : if set too true, when the close of the proceding real time bar is greater than the simple linear regression line from the last confimred session the line will be colored green, if otherwise the close is below the simple linear regression line the line will be colored red.
- Extend regression line :
This is the same chart image as seen on the publication chart image but with Extend regression line set to true, this allows the trader to test the valdity of the regression and how well it predicts future price, as seen on the M15 chart of BTCUSD above the indicator was pritty good at doing this.
- Standard deviation channel source :
Source for standard deviation to be calculated on. note if this is set to a varible other than the close then this will no longer be the resdiaul standard deviation, as of now "LSRC 1.0" the regression uses only the close for y / predicted values.
- Time elasped unitl next regression calculation :
The session time until the next LSRC will be calculated and plotted
Label LSRC stats :
- STAN DEV : the standard deviation used to cacluateed the deviation channels
- MIN : The lowest price across the regression
- MAX : The highest price across the regression
- n bars above dev 1 : The number of bars that closed above the first standard deviation channel across the entire regression calculation
- n bars below sub dev1 : The number of bars that closed below the first standard deviation channel.
- Regression Price : The output of "Predicted price at nth bar" input.
Hope you find this usefull !
I will continue too try improve this script and update it accordingly.
ILM CFTC COT Disaggregated PlotUse this indicator on Daily Timeframe
Please refer to the below link for CFTC Disaggregated COT
www.cftc.gov
This script is very similar to COT Financial Plot indicator except that it plots the data for Disaggregated Futures
NetLiquidityLibraryLibrary "NetLiquidityLibrary"
The Net Liquidity Library provides daily values for net liquidity. Net liquidity is measured as Fed Balance Sheet - Treasury General Account - Reverse Repo. Time series for each individual component included too.
get_net_liquidity_for_date(t)
Function takes date in timestamp form and returns the Net Liquidity value for that date. If date is not present, 0 is returned.
Parameters:
t : The timestamp of the date you are requesting the Net Liquidity value for.
Returns: The Net Liquidity value for the specified date.
get_net_liquidity()
Gets the Net Liquidity time series from Dec. 2021 to current. Dates that are not present are represented as 0.
Returns: The Net Liquidity time series.
Beta ScreenerThis script allows you to screen up to 38 symbols for their beta. It also allows you to compare the list to not only SPY but also CRYPTO10! Features include custom time frame and custom colors.
Here is a refresher on what beta is:
Beta (β) is a measure of the volatility—or systematic risk—of a security or portfolio compared to the market as a whole (usually the S&P 500 ). Stocks with betas higher than 1.0 can be interpreted as more volatile than the S&P 500 .
Beta is used in the capital asset pricing model (CAPM), which describes the relationship between systematic risk and expected return for assets (usually stocks). CAPM is widely used as a method for pricing risky securities and for generating estimates of the expected returns of assets, considering both the risk of those assets and the cost of capital.
How Beta Works
A beta coefficient can measure the volatility of an individual stock compared to the systematic risk of the entire market. In statistical terms, beta represents the slope of the line through a regression of data points. In finance, each of these data points represents an individual stock's returns against those of the market as a whole.
Beta effectively describes the activity of a security's returns as it responds to swings in the market. A security's beta is calculated by dividing the product of the covariance of the security's returns and the market's returns by the variance of the market's returns over a specified period.
cov (a,b)/var(b)
ReduceSecurityCallsLibrary "ReduceSecurityCalls"
This library allows you to reduce the number of request.security calls to 1 per symbol per timeframe. Script provides example how to use it with request.security and possible optimisation applied to htf data call.
This data can be used to calculate everything you need and more than that (for example you can calculate 4 emas with one function call on mat_out).
ParseSource(mat_outs, o)
Should be used inside request.security call. Optimise your calls using timeframe.change when htf data parsing! Supports up to 5 expressions (results of expressions must be float or int)
Parameters:
mat_outs : Matrix to be used as outputs, first value is newest
o : Please use parametres in the order they specified (o should be 1st, h should be 2nd etc..)
Returns: outs array, due to weird limitations do not try this :matrix_out = matrix.copy(ParseSource)
GDP BreakdownProvides an easy way for viewing the sub sections that make up a country's total GDP. Not all countries provide data for each subsector (Agriculture, Construction, Manufacturing, Mining, Public Administration, Services, Utilities). Only countries that provide complete data are able to be selected in the settings. If I've missed any please let me know in the comment section so they can be added. This is much easier than having to individually selecting each ticker for each country when looking to compare how diversified an economy is.
Sw1tchFX - Average Daily RangeDESCRIPTION AND OVERVIEW
The Average Daily Range is a measure of volatility (typically across 5 days for the FX markets). I originally saw this being used in a trading system called ANTSSYS by Daryll Guppy and some other developers. I couldn't find it anywhere so I decided to build it from scratch.
What this does is allow you to measure volatility across various FX assets (I will apply other asset classes in the future that this is applicable to i.e. Crypto, Commodities, Blue Chip Stocks), and set realistic targets based off that volatility. Overall, this makes much more sense to me in the FX markets rather than support and resistance lines because it's based off the actual movement of the asset class. Market research shows that an asset class has a 80-85% chance to reach 75% of it's Average Daily Range (ADR).
Let's take a look at the daily ADR on the GBPNZD 15m chart. Notice how the values of the ADR act as real support and resistance based off the volatility of the asset. In this case, price did not quite reach the 75% ADR target.
Let's take a look at another example on EURNZD 15m chart. In this case, price hit the 75% target.
It's important to note that these levels do not bound the price. The probability that price exceeds it's 75% ADR is fairly low, but not impossible. Especially during important news events. Let's look at the recent USDCHF 15m chart for example.
Additionally, you can use these values to measure longer term movements (Weekly, and Monthly)
Here is a weekly view:
And a monthly view:
HOW I USE THIS
I use this in conjunction with some other indicators I've developed. Typically, I use range bars since I only care about price, not time. Additionally, averages are smoother when time is not taken into account and only price.
HOW THE CANDLE OPEN AND CLOSE IS CALCULATED
This is done based off of your own specific time zone and from the daily candle. So for me on PST, the daily candle will close at 1400. Once closed, a new ADR value is automatically calculated and added to the chart. There is an option to show past ADR values if you would like to see them or conduct additional research.
Strategy weekly results as numbers v1This script is based on an idea of monthly statistics that have been found across tradingview community scripts. This is an improved version with weekly results with the ability to define the size of every group (number of weeks within one group).
Initial setup of the strategy
1. Set the period to calculate the results between.
2. Set the statistic precision and group size.
3. Enable "Recalculate" → "On every tick" under the strategy "Properties" section.
The logic under the hood
1. Get the period between which to calculate the strategy.
2. Calculate the first day of the first week within the period.
3. Calculate the latest day of the latest week within the period.
4. Calculate the results of the selected period.
5. Group the values by the defined number of cells.
6. Calculate the summary of every group.
7. Render the table.
Please, be careful . To use this tool you will need to enable the "Recalculate" → "On every tick" option but it means that your strategy will be executed on every tick instead of bar close. It can cause unexpected results in your strategy behaviour.
Opening Range with Infinite Price TargetsOpening Range with Infinite Price Targets is an ORB indicator that automatically generates price targets into infinity based on a user-defined % of range.
This indicator includes many nice-to-have features missing from other indicators. Such as:
Price Target Labels with Price tooltip, want to know exactly what price pt3 is at? Hover over it and see.
Custom Defined Range time, Set your Range Start and end time to whatever you need, Doesn't have to be pinned to opening range!. Note: Time is in chart time.
Historical View (Default off), Tired of your chart looking messy with a ton of lines from historical data? No problem! You can choose to view or not view historical data.
Alerts for Range Breaks, First Range Breaks, and Discovery Price Target hits. As well as Exported Values for Range High, Low, and Mean to set your own alerts from custom sources.
Custom Price Targets, set your price targets to a % of the range based on your own strategy.
Last but not Least, Infinitely Generating Price Targets. They just keep building. New Targets will be generated when the price closes above/below the current farthest target.
Enjoy!
kNNLibrary "kNN"
Collection of experimental kNN functions. This is a work in progress, an improvement upon my original kNN script:
The script can be recreated with this library. Unlike the original script, that used multiple arrays, this has been reworked with the new Pine Script matrix features.
To make a kNN prediction, the following data should be supplied to the wrapper:
kNN : filter type. Right now either Binary or Percent . Binary works like in the original script: the system stores whether the price has increased (+1) or decreased (-1) since the previous knnStore event (called when either long or short condition is supplied). Percent works the same, but the values stored are the difference of prices in percents. That way larger differences in prices would give higher scores.
k : number k. This is how many nearest neighbors are to be selected (and summed up to get the result).
skew : kNN minimum difference. Normally, the prediction is done with a simple majority of the neighbor votes. If skew is given, then more than a simple majority is needed for a prediction. This also means that there are inputs for which no prediction would be given (if the majority votes are between -skew and +skew). Note that in Percent mode more profitable trades will have higher voting power.
depth : kNN matrix size limit. Originally, the whole available history of trades was used to make a prediction. This not only requires more computational power, but also neglects the fact that the market conditions are changing. This setting restricts the memory matrix to a finite number of past trades.
price : price series
long : long condition. True if the long conditions are met, but filters are not yet applied. For example, in my original script, trades are only made on crossings of fast and slow MAs. So, whenever it is possible to go long, this value is set true. False otherwise.
short : short condition. Same as long , but for short condition.
store : whether the inputs should be stored. Additional filters may be applied to prevent bad trades (for example, trend-based filters), so if you only need to consult kNN without storing the trade, this should be set to false.
feature1 : current value of feature 1. A feature in this case is some kind of data derived from the price. Different features may be used to analyse the price series. For example, oscillator values. Not all of them may be used for kNN prediction. As the current kNN implementation is 2-dimensional, only two features can be used.
feature2 : current value of feature 2.
The wrapper returns a tuple: [ longOK, shortOK ]. This is a pair of filters. When longOK is true, then kNN predicts a long trade may be taken. When shortOK is true, then kNN predicts a short trade may be taken. The kNN filters are returned whenever long or short conditions are met. The trade is supposed to happen when long or short conditions are met and when the kNN filter for the desired direction is true.
Exported functions :
knnStore(knn, p1, p2, src, maxrows)
Store the previous trade; buffer the current one until results are in. Results are binary: up/down
Parameters:
knn : knn matrix
p1 : feature 1 value
p2 : feature 2 value
src : current price
maxrows : limit the matrix size to this number of rows (0 of no limit)
Returns: modified knn matrix
knnStorePercent(knn, p1, p2, src, maxrows)
Store the previous trade; buffer the current one until results are in. Results are in percents
Parameters:
knn : knn matrix
p1 : feature 1 value
p2 : feature 2 value
src : current price
maxrows : limit the matrix size to this number of rows (0 of no limit)
Returns: modified knn matrix
knnGet(distance, result)
Get neighbours by getting k results with the smallest distances
Parameters:
distance : distance array
result : result array
Returns: array slice of k results
knnDistance(knn, p1, p2)
Create a distance array from the two given parameters
Parameters:
knn : knn matrix
p1 : feature 1 value
p2 : feature 2 value
Returns: distance array
knnSum(knn, p1, p2, k)
Make a prediction, finding k nearest neighbours and summing them up
Parameters:
knn : knn matrix
p1 : feature 1 value
p2 : feature 2 value
k : sum k nearest neighbors
Returns: sum of k nearest neighbors
doKNN(kNN, k, skew, depth, price, long, short, store, feature1, feature2)
execute kNN filter
Parameters:
kNN : filter type
k : number k
skew : kNN minimum difference
depth : kNN matrix size limit
price : series
long : long condition
short : short condition
store : store the supplied features (if false, only checks the results without storage)
feature1 : feature 1 value
feature2 : feature 2 value
Returns: filter output
Times-Revenue (Fundamental Metric)Times-revenue is calculated by dividing the selling price of a company by the prior 12 months revenue of the company. The result indicates how many times of annual income a buyer was willing to pay for a company.
In color Red: it shows the last annual metric calculated
In color Gray: it shows the last 4 quarters annualized results
Quantitative Backtesting Panel + ROI Table - ShortsThis script is an aggregate of a backtesting panel with quantitative metrics, ROI table and open ROI reader. It also contains a mechanism for having a fixed percentage stop loss, similar to native TV backtester. For shorts only.
Backtesting Panel:
- Certain metrics are color coded, with green being good performance, orange being neutral, red being undesirable.
• ROI : return with the system, in %
• ROI(COMP=1): return if money is compounded at a rate of 100%
• Hit rate: accuracy of the system, as a %
• Profit factor: gross profit/gross loss
• Maximum drawdown: the maximum value from a peak to a successive trough of the system's equity curve
• MAE: Maximum Adverse Excursion. The biggest loss of a trade suffered while the position is still open
• Total trades: total number of closed trades
• Max gain/max loss: shows the biggest win over the biggest loss suffered
• Sharpe ratio: measures the performance of the system with adjusted risk (no comparison to risk-free asset)
• CAGR: Compound Annual Growth Rate. The mean annual rate of growth of the system of n years (provided n>1)
• Kurtosis: measures how heavily the tails of the distribution differ from that of a normal distribution (symmetric on both sides of mean where mean=0, standard deviation=1). A normal distribution has a kurtosis of 3, and skewness of 0. The kurtosis indicates whether or not the tails of the returns contain extreme values
• Skewness: measures the symmetry of the distribution of returns
- Leptokurtic: K > 0. Having more kurtosis than a normal distribution. It's stretched up and to the side too (2nd pic down). High kurtosis (leptokurtic) is bad as the wider tails (called heavy tails) suggest there is relatively high probability of extreme events
- Mesokurtic: K =0. Having the same kurtosis as a normal distribution
- Platykurtic: K < 0. Having less kurtosis than a normal distribution. This suggests there are light tails and fewer extreme events in the distribution
- Skewness is good: +/- 0.5 (fairly symmetrical)
- Skewness is average: -1 to -0.5 or 0.5 to 1 (moderately skewed)
- Skewness is bad: > +/- 1 (highly skewed)
Evolving ROI table:
- The table of ROI values evolve with the year and month. The sum of each year is given. Please avoid using it on non-cryptocurrencies or any market whose trading session is not 24/7
Open ROI reader:
- At the top center is the open ROI of a trade
[ENT] IndicatorsИндикатор показывает:
Открытие и закрытие торговых сессий (KillZones) - Азия, Лондон, Нью-Йорк
Открытие дня
Хай и Лой предыдущего дня
Разделение дней недели и их отображение.
Используйте на здоровье)