Configurable BB+RSI+Aroon strategy backtest for binary optionsI wanted to share this strategy that I use myself for binary options trading. After trading binary options for several years I have learned that every single day is unique... assets behave differently every single day. So, when I start the day I want to know which is the optimum combination of parameters in my indicators that will give me the signals I want during the day and I get that by doing a quick backtest of the parameters combination in a specific asset that same day. When trading Binary Options I usually do 3 or 4 trades max per day and, yes, there are moments in which even with the right backtest data the signals fail (I strongly believe that there is no strategy that guarantees 100% success in any type of trade, and this one here is not an exception - but has worked well with some assets). So, here is my contribution to improve your productivity by automating a bit that backtesting part.
How this script works?
It is a simple price crossunder / crossover Bollinger Bands (BB) with a confirmation from RSI overbought / oversold signals and a fast Aroon. You will see the BB plotted with its confirmations:
(1) a blue circle that plots in the chart when the price is coming back inside the channel (within the Bollinger Bands)
(2) an orange square that plots in the chart when the RSI is coming back from the overbought or oversold areas
(3) a triangle that could be red or green depending on the Aroon confirmation: Red if Aroon Down is crossing down Aroon Up or green if vice versa.
The strategy will call for long (Call) if:
(1) the price is crossing over the lower band of the Bollinger Bands, coming back inside the channel
(2) Aroon Up is crossing or has crossed above Aroon Down
(3) RSI is crossing over the oversold limit
Consequently, the strategy will call for a short (Put) if:
(1) the price is crossing down the upper band of the Bollinger Bands, coming back inside the channel
(2) Aroon Down is crossing or has crossed below Aroon Up
(3) RSI is crossing under the overbought limit
You can configure:
1. Aroon length (keep it as fast as possible: 3, 4 or 5 are recommended values)
2. The point where Aroon Up and Aroon Down cross to make the signal valid (50 is by default. It could also be 25 or 75)
3. The RSI length
4. RSI Overbought and Oversold limits (they do not need to be symmetric: you can use 29 and 93, for example)
5. Bollinger Bands length and standard deviation
6. Number of bars to keep your option open. Depending on the timeframe used, this will determine the time you will keep your binary option open. If you are in a 1 min chart and keep this parameter in 3, then you will need to configure your binary option to expire in 3 minutes.
How to evaluate your backtest?
In Binary Options you only need the success rate, so what I do is that when I am manually updating the parameters I keep my strategy tester window open checking the winning trades vs losing trades ratio ("Percent Profitable"). I personally will only keep an asset monitored looking for signals that day if the Percent Profitable on the backtest of the same day is above 80%.
Regarding the code: it is open, public and free. No need to ask for permission if you want to copy+paste and use it in whole or parts.
Happy pip hunting!
-marco
חפש סקריפטים עבור "ha溢价率"
Pi-cycle top for Bitcoin bull-runUsage
Whenever the Pi-Cycle top conditions are met, the red circle appears at the bottom of the chart. Theoretically, this marks the top of the bull-run in Bitcoin within 3 days.
Credit and overview
Indicator Overview
The Pi Cycle Top Indicator has historically been effective in picking out the timing of market cycle highs to within 3 days.
It uses the 111 day moving average (111DMA) and a newly created multiple of the 350 day moving average, the 350DMA x 2.
Note: The multiple is of the price values of the 350DMA not the number of days.
For the past three market cycles, when the 111DMA moves up and crosses the 350DMA x 2 we see that it coincides with the price of Bitcoin peaking.
It is also interesting to note that 350 / 111 is 3.153, which is very close to Pi = 3.142. In fact, it is the closest we can get to Pi when dividing 350 by another whole number.
It once again demonstrates the cyclical nature of Bitcoin price action over long time frames. Though in this instance it does so with a high degree of accuracy over the past 7 years.
How It Can Be Used
Pi Cycle Top is useful to indicate when the market is very overheated. So overheated that the shorter term moving average, which is the 111 day moving average, has reached a x2 multiple of the 350 day moving average. Historically it has proved advantageous to sell Bitcoin at this time in Bitcoin’s price cycles.
Created By Philip Swift
Using The AM/GM Inequality To Estimate VolatilityA volatility indicator derived from the AM/GM inequality. I don't think it will be necessary to describe the usage and interpretation of such indicator, and I don't think it is super useful, however, this is not the case of the script, which contains three ways to compute the geometric mean, with a classic, a simple, and an efficient way. The AM/GM inequality is also a really interesting concept, and I'll try to"prove" it in this post by using DSP. I also added more comments in the script in order to highlight some stuff.
The AM/GM Inequality
When we talk about the mean, we are referring to the "arithmetic" one by default, but there exist more types of means. Two other ones include the "geometric" and "harmonic" means, both are part of the Pythagorean means with the arithmetic mean.
Each one of them as several properties, but the most interesting aspect is their inequality, that is:
HM <= GM <= AM
The arithmetic mean is the one with the highest value, while the harmonic mean is the one with the lowest value. In the case each data point is equal to each other, all the means have the same value.
In our case, the inequality of interest is the inequality between the geometric and arithmetic mean, where the geometric mean is lower or equal than the arithmetic one. Many proofs/explanations exist, I'll try my version using DSP, where instead of thinking about means, we think about rolling means, which allows us to interpret them as low-pass filters. So we end up having the geometric moving average (GMA) and arithmetic moving average (SMA).
We know that GMA <= SMA , the SMA has a unity passband, this implies that the GMA has a passband lower than 1 (for non-equal input values), this explains why the GMA is smaller than the SMA. In order for a FIR filter to have a passband lower than 1, the sum of the filter coefficients must be lower than 1. In order to further proves this consider the following equation:
sqrt(a×b) = k×a + k×b
Here sqrt(a×b) is the geometric mean of a and b , the right-hand side of the equation is a weighted sum between a and b and coefficient k , we want to solve the equation with respect to k , if k×2 < 1 then we have the proof that GMA < SMA . The solution with respect to k is:
k = sqrt(a×b)/(a+b)
which always gives a number lower than 0.5, as such k×2 < 1 and thus the passband is lower than 1. If our input values are equal to each other, we end up with the following solution for k :
k = sqrt(a×a)/(a+a) = a/(2×a) = 0.5
as such the GMA has the coefficients of an SMA as long as the input values are equal to each other.
Because of this inequality, we can subtract the SMA to a GMA and take the square root of the result in order to have a volatility indicator, however, both moving averages are still pretty close to each other, which gives a very small result for the indicator.
Uwu I am a bit tired, better indicators coming up
Mean Deviation Detector - Throw Out All Other IndicatorsI set out this morning to create a script that searches out price moves that went too far too fast relative to historical pricing, given that such situations often result in the most profitable trading opportunities. I came up with the mean deviation detector. This script should be used as a means of judging how far a price is trading, in percent terms, from it's "average trading zone".
This is extremely helpful in a couple scenarios.
First, it can be used to judge a move's volatility relative to it's previous volatility. Put simply, a 5% move in the stock of Coca Cola is a lot more meaningful than a 5% move in the stock of Tesla, and the detector puts moves into historical (visual) perspective.
Second, the indicator can be used in real time as a means of determining when the chances of mean reversion are high or low. Extreme values are unsustainable and often lead to EITHER A.) price mean reversion or B.) time mean reversion. Put simply, prices either went too far and are due to fall back to a historical mean, or they need more time to digest a potentially new pricing zone.
Without getting too deep into volume profile analysis, the MDD can be a simple way of telling that a stock has moved into an "air pocket", where prices will either come back to the previous volume node (price mean reversion) or set up shop in a new, uncharted area (time mean reversion).
An extreme value doesn't always mean a trading opportunity, but it means that something interesting is happening in the stock / instrument.
I use this indicator to help me trade covered calls. Lots of high yielding weekly opportunities are stocks that have moved too far too fast, and I like to use this indicator as a means of either a.) scooping up stocks that have gotten beat up from a historical mean perspective & have likely seen the risk already "beaten" out of them, or to b.) stay away from stocks that have a very high chance of price correcting lower. In situations where I say that the risk has been "beaten" out of something, it doesn't mean that the stock won't continue to fall, it simply means that the degree and acceleration of the fall has peaked and that risk premiums in selling options will / should easily pay for continued losses. In the event that it's a price correction and not a time correction, you also increase your bat rate because you get auto-liquidated at a max profit. It's a really valuable tool in my kit.
You can also feel free to put a Keltner Chanel overlay onto the MDD to filter out noise, identify "extreme" values, and place mean reversion trades if you expect price mean reversion is likely, if you want to use this as the basis of a proper trading strategy. For a high extreme value, you could sell short term OTM call spreads, for example.
The MDD is adaptable to your own trading style & preferences.
QuantNomad - Heikin-Ashi PSAR StrategyContinue experimenting with different combinations of strategies.
Here is the PSAR Strategy calculated based on HA candles. HA is already calculated inside the script, do not apply it to HA candles.
Strategy is calculated based on 25% equity invested with 0.1% commission.
####################
Disclaimer
Please remember that past performance may not be indicative of future results.
Due to various factors, including changing market conditions, the strategy may no longer perform as good as in historical backtesting.
This post and the script don’t provide any financial advice.
Bitcoin Block Height (Total Blocks)Bitcoin Block Height by RagingRocketBull 2020
Version 1.0
Differences between versions are listed below:
ver 1.0: compare QUANDL Difficulty vs Blockchain Difficulty sources, get total error estimate
ver 2.0: compare QUANDL Hash Rate vs Blockchain Hash Rate sources, get total error estimate
ver 3.0: Total Blocks estimate using different methods
--------------------------------
This indicator estimates Bitcoin Block Height (Total Blocks) using Difficulty and Hash Rate in the most accurate way possible, since
QUANDL doesn't provide a direct source for Bitcoin Block Height (neither QUANDL:BCHAIN, nor QUANDL:BITCOINWATCH/MINING).
Bitcoin Block Height can be used in other calculations, for instance, to estimate the next date of Bitcoin Halving.
Using this indicator I demonstrate:
- that QUANDL data is not accurate and differ from Blockchain source data (industry standard), but still can be used in calculations
- how to plot a series of data points from an external csv source and compare it with another source
- how to accurately estimate Bitcoin Block Height
Features:
- compare QUANDL Difficulty source (EOD, D1) with external Blockchain Difficulty csv source (EOD, D1, embedded)
- show/hide Quandl/Blockchain Difficulty curves
- show/hide Blockchain Difficulty candles
- show/hide differences (aqua vertical lines)
- show/hide time gaps (green vertical lines)
- count source differences within data range only or for the whole history
- multiply both sources by alpha to match before comparing
- floor/round both matched sources when comparing
- Blockchain Difficulty offset to align sequences, bars > 0
- count time gaps and missing bars (as result of time gaps)
WARNING:
- This indicator hits the max 1000 vars limit, adding more plots/vars/data points is not possible
- Both QUANDL/Blockchain provide daily EOD data and must be plotted on a daily D1 chart otherwise results will be incorrect
- current chart must not have any time gaps inside the range (time gaps outside the range don't affect the calculation). Time gaps check is provided.
Otherwise hardcoded Blockchain series will be shifted forward on gaps and the whole sequence become truncated at the end => data comparison/total blocks estimate will be incorrect
Examples of valid charts that can run this indicator: COINBASE:BTCUSD,D1 (has 8 time gaps, 34 missing bars outside the range), QUANDL:BCHAIN/DIFF,D1 (has no gaps)
Usage:
- Description of output plot values from left to right:
- c_shifted - 4x blockchain plotcandles ohlc, green/black (default na)
- diff - QUANDL Difficulty
- c_shifted - Blockchain Difficulty with offset
- QUANDL Difficulty multiplied by alpha and rounded
- Blockchain Difficulty multiplied by alpha and rounded
- is_different, bool - cur bar's source values are different (1) or not (0)
- count, number of differences
- bars, total number of bars/data points in the range
- QUANDL daily blocks
- Blockchain daily blocks
- QUANDL total blocks
- Blockchain total blocks
- total_error - difference between total_blocks estimated using both sources as of cur bar, blocks
- number_of_gaps - number of time gaps on a chart
- missing_bars - number of missing bars as result of time gaps on a chart
- Color coding:
- Blue - QUANDL data
- Red - Blockchain data
- Black - Is Different
- Aqua - number of differences
- Green - number of time gaps
- by default the indicator will show lots of vertical aqua lines, 138 differences, 928 bars, total error -370 blocks
- to compare the best match of the 2 sources shift Blockchain source 1 bar into the future by setting Blockchain Difficulty offset = 1, leave alpha = 0.01 =>
this results in no vertical aqua lines, 0 differences, total_error = 0 blocks
if you move the mouse inside the range some bars will show total_error = 1 blocks => total_error <= 1 blocks
- now uncheck Round Difficulty Values flag => some filled aqua areas, 218 differences.
- now set alpha = 1 (use raw source values) instead of 0.01 => lots of filled aqua areas, 871 differences.
although there are many differences this still doesn't affect the total_blocks estimate provided Difficulty offset = 1
Methodology:
To estimate Bitcoin Block Height we need 3 steps, each step has its own version:
- Step 1: Compare QUANDL Difficulty vs Blockchain Difficulty sources and estimate error based on differences
- Step 2: Compare QUANDL Hash Rate vs Blockchain Hash Rate sources and estimate error based on differences
- Step 3: Estimate Bitcoin Block Height (Total Blocks) using different methods in the most accurate way possible
QUANDL doesn't provide block time data, but we can calculate it using the Hash Rate approximation formula:
estimated Hash rate/sec H = 2^32 * D / T, where D - Difficulty, T - block time, sec
1. block time (T) can be derived from the formula, since we already know Difficulty (D) and Hash Rate (H) from QUANDL
2. using block time (T) we can estimate daily blocks as daily time / block time
3. block height (total blocks) = cumulative sum of daily blocks of all bars on the chart (that's why having no gaps is important)
Notes:
- This code uses Pinescript v3 compatibility framework
- hash rate is in THash/s, although QUANDL falsely states in description GHash/s! THash = 1000 GHash
- you can't read files, can only embed/hardcode raw data in script
- both QUANDL and Blockchain sources have no gaps
- QUANDL and Blockchain series are different in the following ways:
- all QUANDL data is already shifted 1 bar into the future, i.e. prev day's value is shown as cur day's value => Blockchain data must be shifted 1 bar forward to match
- all QUANDL diff data > 1 bn (10^12) are truncated and have last 1-2 digits as zeros, unlike Blockchain data => must multiply both values by 0.01 and floor/round the results
- QUANDL sometimes rounds, other times truncates those 1-2 last zero digits to get the 3rd last digit => must use both floor/round
- you can only shift sequences forward into the future (right), not back into the past (left) using positive offset => only Blockchain source can be shifted
- since total_blocks is already a cumulative sum of all prev values on each bar, total_error must be simple delta, can't be also int(cum()) or incremental
- all Blockchain values and total_error are na outside the range - move you mouse cursor on the last bar/inside the range to see them
TLDR, ver 1.0 Conclusion:
QUANDL/Blockchain Difficulty source differences don't affect total blocks estimate, total error <= 1 block with avg 150 blocks/day is negligible
Both QUANDL/Blockchain Difficulty sources are equally valid and can be used in calculations. QUANDL is a relatively good stand in for Blockchain industry standard data.
Links:
QUANDL difficulty source: www.quandl.com
QUANDL hash rate source: www.quandl.com
Blockchain difficulty source (export data as csv): www.blockchain.com
[PX] External LevelHello everyone,
today I'd like to share a script, which enables you to use external logic to plot levels on your chart.
How does it work?
The concept is based on two scripts. One script, which uses an external input as a trigger to print a new level and one script that calculates an output, which will be fetched.
Sounds complicated? It really is not! Let's take a closer look.
// This source code is subject to the terms of the Mozilla Public License 2.0 at mozilla.org
// © paaax
//@version=4
study("RSI OS/OB")
l = input(14, "RSI Length")
ob = input(70, "Overbought")
os = input(30, "Oversold")
r = rsi(close, l)
hline(ob)
hline(os)
plot(r, "RSI", color=color.orange)
// The following plot produces an output, which will be fetched the "External Level"-script.
// It evaluates to one of the following three values: 1.0, -1.0 or 0.0
plot(crossover(r, ob) ? 1.0 : crossunder(r, os) ? -1.0 : 0.0, "Output", transp=100)
The example script above uses an RSI and two threshold levels (70 and 30). The logic here is, that whenever the RSI is crossing down the lower threshold or crossing up the upper threshold we'd consider the current movement to be either oversold or overbought. Therefore, it's a point of interest, which we could visualize with a level.
The script creates an output when the crossover or crossunder of a threshold happens. A crossover would result in a value of 1.0, a crossunder in a value of -1.0. In all other cases the value would be 0.0.
The output of the RSI script would then be used as an input of the External Level script, which has a "Source"-parameter in its input-section. If the fetched input shows 1.0, then the script prints a resistance level. If it shows -1.0 a support level will be printed. And that's basically it. A very simple approach to print levels on your chart with an infinite number of use cases.
For example, you could use fetch outputs from a MACD script, MA script, outputs based on volume or price movement. Just remember the output has to evaluate to either 1.0 or -1.0 and has to be selected in the input-section.
Hope that might be useful to some of you :)
Please click the "Like"-button and follow me for future open-source script publications.
If you are looking for help with your custom PineScript development, don't hesitate to contact me directly here on Tradingview or through the link in my signature :)
Price Action Trading System v0.3 by JustUncleL with modifcationsThe base of this script is the Price Action Trading System from JustUncle .
I have first combined it with script ADX and DI by BeikabuOyaji to indicate when the +DI is above the -DI and the ADX is above 20. This is represented by crosses at the top of the page: green indicating that the +DI is above the -DI and ADX above 20, and red if -DI is above the +DI and ADX above 20. If the ADX is increasing in slope while the +DI is above the -DI, an up green arrow is shown at the bottom of the page, indicating an increase in this trend, and the slope of the ADX is increasing and the -DI is above the +DI, a down arrow is shown at the bottom. One could think to a green cross with a green up arrow as a potential buy opportunity, and a red cross with a red down arrow as a potential sell opportunity.
Next, I have combined this script with the Indicator: WaveTrend Oscillator from Lazybear . If the oscillator has readings below -45 and the slope of the line is increasing, a green diamond appears above the chart. This indicates a potential buy opportunity. If the oscillator has readings above 50 and the slope of the line is decreasing, a red diamond appears above the chart. This indicates a potential sell opportunity. Now if the slope of the oscillator is rising significantly but does not hit the -45 threshold to start its increase, but is negative in value, a green flag appears at the top of the page. This represents a potential buy opportunity. If the slope of the oscillator is significantly decreasing and is positive in value, a red flag appears at the bottom of the page. This represents a potential sell opportunity.
The base of this script, the Price Action Trading System v0.3 by JustUncle , has many of its own features that I have kept. If the MACD is positive, the background colour is green. If it is negative, the colour is red. If the CCI and RSI indicate an oversold opportunity and the MACD is positive, you get an up olive arrow below the chart. If they indicate an overbought opportunity and the MACD is negative, you get a red down arrow above the chart. If the CCI value stays oversold after a green arrow, the candle chart turns turquoise, and if overbought, turns black after a red arrow.
You can use these indicators in combination to help you with your trading strategy.
CPR - VSD_TamizhTrader DAY/WEEK/MONTH/YEAR1. CPR FOR DAY/WEEK/MONTH/YEAR HAS BEEN CODED
2. IT HAS OFFSET FOR TOMORROW CPR LEVELS (HAS TO BE ADJUSTED IN INDICATOR SETTINGS DEPENDING ON TIME FRAME)
3. UNIQUE AS I DID NOT FIND A CPR FOR ALL TIME FRAMES
4. USEFUL FOR BEGINNERS
VAMA Volume Adjusted Moving AverageRichard Arms' Volume Adjusted Moving Average
Settings:
• Inp Avg Vol: Input - Purist method but not intended for live analysis, to retroactively alter MA curve enter Avg Vol from value shown on label into Use Avg Vol field.
• Inp Avg Vol: Current - Live method using current volume , to retroactively alter past MA curve toggle any setting back and forth to force recalculation.
• Inp Avg Vol: Subset - Similar to Current, but uses a subset rather than all bars for avg vol.
• Use Avg Vol - Used for Inp Avg Vol: Input mode. Enter volume from Avg Vol label here after each new bar closes, label will turn green, else red.
• Subset Data - Lookback length used for Inp Avg Vol: Subset mode.
• VAMA Length - Specified number of volume ratio buckets to be reached.
• Volume Incr - Size of volume ratio buckets.
• VAMA Source - Price used for volume weighted calculations.
• VAMA Strict - Must meet desired volume requirements, even if N bars has to exceed VAMA Length to do it.
• Show Avg Vol Label - Displays label on chart of total chart volume.
Notes: VAMA was created by Richard Arms. It utilizes a period length that is based on volume increments rather than time. It is an unusual indicator in that it cannot be used in some platforms in realtime mode as Arms had originally intended. VAMA requires that the average volume first be calculated for the entire chart duration, then that average volume is used to derive the variable adaptive length of the moving average. The consequence of this is that with each new bar, the new average volume alters the moving average period for the entire history. Since Pine scripts evaluate all historical bars only once upon initial script execution, there is no way to automatically shift the previous moving average values retroactively once a new bar has formed. Thus the historical plot of the moving average cannot be updated in realtime, but instead can only plot through previous bar that existed upon load or reinitialization through changing some setting.
Setting Use Avg Vol to Input mode the average volume through previous bar shown in label can be entered (input) into the Inp Avg Vol setting after each new bar closes. Entering this total chart volume forces the script to reevaluate historical bars which in turn allows the historical moving average to update the plot. When using Input mode the color of the label is green when Inp Avg Vol value matches current label value, the label color red signifies Inp Avg Vol value has not been entered or is stale.
Setting Use Avg Vol to Current mode allows the script to correctly calculate and plot the correct moving average upon initial load and the realtime moving average moving forward, but can not retroactively alter the plot of the past moving average unless some change is made in the script settings, such as toggling the Use Avg Vol from Current to some other choice and then back to Current .
Setting Use Avg Vol to Subset mode uses a rolling window of volume data to calculate the average volume and can be used in realtime, but should be noted it is a deviation from Richard Arms' original specification.
VAMA info: "Trading Without Fear" by Richard W Arms, Jr, www.fidelity.com
NOTICE: This is an example script and not meant to be used as an actual strategy. By using this script or any portion thereof, you acknowledge that you have read and understood that this is for research purposes only and I am not responsible for any financial losses you may incur by using this script!
Weis pip zigzag jayyWhat you see here is the Weis pip zigzag wave plotted directly on the price chart. This script is the companion to the Weis pip wave ( ) which is plotted in the lower panel of the displayed chart and can be used as an alternate way of plotting the same results. The Weis pip zigzag wave shows how far in terms of price a Weis wave has traveled through the duration of a Weis wave. The Weis pip zigzag wave is used in combination with the Weis cumulative volume wave. The two waves must be set to the same "wave size".
To use this script you must set the wave size. Using the traditional Weis method simply enter the desired wave size in the box "Select Weis Wave Size" In this example, it is set to 5. Each wave for each security and each timeframe requires its own wave size. Although not the traditional method a more automatic way to set wave size would be to use ATR. This is not the true Weis method but it does give you similar waves and, importantly, without the hassle described above. Once the Weis wave size is set then the pip wave will be shown.
I have put a pip zigzag of a 5 point Weis wave on the bar chart - that is a different script. I have added it to allow your eye to see what a Weis wave looks like. You will notice that the wave is not in straight lines connecting wave tops to bottoms this is a function of the limitations of Pinescript version 1. This script would need to be in version 4 to allow straight lines. There are too many calculations within this script to allow conversion to Pinescript version 4 or even Version 3. I am in the process of rewriting this script to reduce the number of calculations and streamline the algorithm.
The numbers plotted on the chart are calculated to be relative numbers. The script is limited to showing only three numbers vertically. Only the highest three values of a number are shown. For example, if the highest recent pip value is 12,345 only the first 3 numerals would be displayed ie 123. But suppose there is a recent value of 691. It would not be helpful to display 691 if the other wave size is shown as 123. To give the appropriate relative value the script will show a value of 7 instead of 691. This informs you of the relative magnitude of the values. This is done automatically within the script. There is likely no need to manually override the automatically calculated value. I will create a video that demonstrates the manual override method.
What is a Weis wave? David Weis has been recognized as a Wyckoff method analyst he has written two books one of which, Trades About to Happen, describes the evolution of the now popular Weis wave. The method employed by Weis is to identify waves of price action and to compare the strength of the waves on characteristics of wave strength. Chief among the characteristics of strength is the cumulative volume of the wave. There are other markers that Weis uses as well for example how the actual price difference between the start of the Weis wave from start to finish. Weis also uses time, particularly when using a Renko chart. Weis specifically uses candle or bar closes to define all wave action ie a line chart.
David Weis did a futures io video which is a popular source of information about his method.
This is the identical script with the identical settings but without the offending links. If you want to see the pip Weis method in practice then search Weis pip wave. If you want to see Weis chart in pdf then message me and I will give a link or the Weis pdf. Why would you want to see the Weis chart for May 27, 2020? Merely to confirm the veracity of my algorithm. You could compare my Weis chart here () from the same period to the David Weis chart from May 27. Both waves are for the ES!1 4 hour chart and both for a wave size of 5.
Weis Pip Wave jayyWhat you see here is the Weis pip wave. The Weis pip wave shows how far in price a Weis wave has traveled through the duration of a Weis wave. The Weis pip wave is used in combination with the Weis cumulative volume wave. The two waves must be set to the same "wave size" and using the same method as described by Weis.
Using the traditional Weis method simply enter the desired wave size in the box "Select Weis Wave Size". In the example shown, it is set to 5 points. Each wave for each security and each timeframe requires its own wave size. Although not the traditional method a more automatic way to set wave size would be to use ATR. This is not the true Weis method but it does give you similar waves and, importantly, without the hassle of selecting a wave size for every chart. Once the Weis wave size is set then the pip wave will be shown.
I have put a zigzag of a 5 point Weis wave on the above bar chart. I have added it to allow your eye to get a better appreciation for Weis wave pivot points. You will notice that the wave is not in straight lines connecting wave tops to bottoms this is a function of the limitations of Pinescript version 1. This script would need to be in version 4 to allow straight lines. I will elaborate on the Weis pip zigzag script.
What is a Weis wave? David Weis has been recognized as a Wyckoff method analyst he has written two books one of which, Trades About to Happen, describes the evolution of the now popular Weis wave. The method employed by Weis is to identify waves of price action and to compare the strength of the waves on characteristics of wave strength. Chief among the characteristics of strength is the cumulative volume of the wave. There are other markers that Weis uses as well for example how the actual price difference between the start of the Weis wave from start to finish. Weis also uses time, particularly when using a Renko chart. Weis specifically uses candle/bar closes to define all wave action.
David Weis did a futures.io video which is a popular source of information about his method.
Cheers jayy
PS This script was published a day ago, however, I had included some links to the website of a person that uses Weis pip waves and also a dropbox link that contains the Weis wave chart for May 27, 2020, published by David Weis. Providing those links is against TV policy and so the script was hidden by TV. This is the identical script with the identical settings but without the offending links. If you want to see the pip Weis method in practice then search Weis pip wave. I have absolutely no affiliation. If you want to see Weis chart in pdf then message me and I will give a link or the Weis pdf. Why would you want to see the Weis chart for May 27, 2020? Merely to confirm the veracity of my algorithm. You could compare my chart () from the same period to the Weis chart. Both waves are for the ES!1 4 hour chart and both for a wave size of 5.
Slope VortexI stumbled upon creating this and thought it was cool and worth sharing. If anyone has ever dabbled with the Aroon or Vortex Indicators, there is some similarity to how it can be used visually.
The indicator basically takes two slopes from the trailing time period you indicate- one from the highest point in that time period, and one from the lowest point. It then plots both.
Here are some of the ways I think this indicator can be used--
Crossover This is the most obvious way, visually. If the blue line crosses under the red, an uptrend has ended or is testing support here. The opposite can be used as well. When the blue line crosses above the red an uptrend is starting or it is testing resistance.
Trending or Ranging If the two bands are moving away from each other/increasing the width between them, there is definite trending action going on. If the two are very narrow or keep crossing each other, whatever symbol you're looking at is likely ranging or consolidating. The black "midpoint" line can also be used to help identify-- if this line is moving up, regardless of if the blue or red band is above, the trend has momentum; if it is going down or flat the previous trend is either slowing greatly or we are ranging.
Support & Resistance Crosses can identify meaningful support and resistance. Having both lines kiss or get very close to the black midpoint line but not cross can also indicate S/R or confirm trend strength.
Here are some snippets of examples I outlined-
I purposely kept this indicator as clean and simple as possible for publication. But I already have tinkered around with taking the output and putting it through the likes of RSI, Stoch, etc. and I think the outcomes are pretty intriguing as well for something so simple. I think dropping the length too much makes it too noisy, so 20, 50, 100 look most useful.
Black-Scholes Options Pricing ModelThis is an updated version of my "Black-Scholes Model and Greeks for European Options" indicator, that i previously published. I decided to make this updated version open-source, so people can tweak and improve it.
The Black-Scholes model is a mathematical model used for pricing options. From this model you can derive the theoretical fair value of an options contract. Additionally, you can derive various risk parameters called Greeks. This indicator includes three types of data: Theoretical Option Price (blue), the Greeks (green), and implied volatility (red); their values are presented in that order.
1) Theoretical Option Price:
This first value gives only the theoretical fair value of an option with a given strike based on the Black-Scholes framework. Remember this is a model and does not reflect actual option prices, just the theoretical price based on the Black-Scholes model and its parameters and assumptions.
2)Greeks (all of the Greeks included in this indicator are listed below):
a)Delta is the rate of change of the theoretical option price with respect to the change in the underlying's price. This can also be used to approximate the probability of your option expiring in the money. For example, if you have an option with a delta of 0.62, then it has about a 62% chance of expiring in-the-money. This number runs from 0 to 1 for Calls, and 0 to -1 for Puts.
b)Gamma is the rate of change of delta with respect to the change in the underlying's price.
c)Theta, aka "time decay", is the rate of change in the theoretical option price with respect to the change in time. Theta tells you how much an option will lose its value day by day.
d) Vega is the rate of change in the theoretical option price with respect to change in implied volatility .
e)Rho is the rate of change in the theoretical option price with respect to change in the risk-free rate. Rho is rarely used because it is the parameter that options are least effected by, it is more useful for longer term options, like LEAPs.
f)Vanna is the sensitivity of delta to changes in implied volatility . Vanna is useful for checking the effectiveness of delta-hedged and vega-hedged portfolios.
g)Charm, aka "delta decay", is the instantaneous rate of change of delta over time. Charm is useful for monitoring delta-hedged positions.
h)Vomma measures the sensitivity of vega to changes in implied volatility .
i)Veta measures the rate of change in vega with respect to time.
j)Vera measures the rate of change of rho with respect to implied volatility .
k)Speed measures the rate of change in gamma with respect to changes in the underlying's price. Speed can be used when evaluating delta-hedged and gamma hedged portfolios.
l)Zomma measures the rate of change in gamma with respect to changes in implied volatility . Zomma can be used to evaluate the effectiveness of a gamma-hedged portfolio.
m)Color, aka "gamma decay", measures the rate of change of gamma over time. This can also be used to evaluate the effectiveness of a gamma-hedged portfolio.
n)Ultima measures the rate of change in vomma with respect to implied volatility .
o)Probability of Touch, is not a Greek, but a metric that I included, which tells you the probability of price touching your strike price before expiry.
3) Implied Volatility:
This is the market's forecast of future volatility . Implied volatility is directionless, it cannot be used to forecast future direction. All it tells you is the forecast for future volatility.
How to use this indicator:
1st. Input the strike price of your option. If you input a strike that is more than 3 standard deviations away from the current price, the model will return a value of n/a.
2nd. Input the current risk-free rate.(Including this is optional, because the risk-free rate is so small, you can just leave this number at zero.)
3rd. Input the time until expiry. You can enter this in terms of days, hours, and minutes.
4th.Input the chart time frame you are using in terms of minutes. For example if you're using the 1min time frame input 1, 4 hr time frame input 480, daily time frame input 1440, etc.
5th. Pick what style of option you want data for, European Vanilla or Binary.
6th. Pick what type of option you want data for, Long Call or Long Put.
7th . Finally, pick which Greek you want displayed from the drop-down list.
*Remember the Option price presented, and the Greeks presented, are theoretical in nature, and not based upon actual option prices. Also, remember the Black-Scholes model is just a model based upon various parameters, it is not an actual representation of reality, only a theoretical one.
*Note 1. If you choose binary, only data for Long Binary Calls will be presented. All of the Greeks for Long Binary Calls are available, except for rho and vera because they are negligible.
*Note 2. Unlike vanilla european options, the delta of a binary option cannot be used to approximate the probability of the option expiring in-the-money. For binary options, if you want to approximate the probability of the binary option expiring in-the-money, use the price. The price of a binary option can be used to approximate its probability of expiring in-the-money. So if a binary option has a price of $40, then it has approximately a 40% chance of expiring in-the-money.
*Note 3. As time goes on you will have to update the expiry, this model does not do that automatically. So for example, if you originally have an option with 30 days to expiry, tomorrow you would have to manually update that to 29 days, then the next day manually update the expiry to 28, and so on and so forth.
There are various formulas that you can use to calculate the Greeks. I specifically chose the formulations included in this indicator because the Greeks that it presents are the closest to actual options data. I compared the Greeks given by this indicator to brokerage option data on a variety of asset classes from equity index future options to FX options and more. Because the indicator does not use actual option prices, its Greeks do not match the brokerage data exactly, but are close enough.
I may try to make future updates that include data for Long Binary Puts, American Options, Asian Options, etc.
ATR _NormalizedThis script is good to use with Williams %R indicator, to find out when price has bottomed out.
ATR has to be over 90 and Williams %R ( lenght 52 ) has to be over 95 to find out level around which one is good to buy.
You can check back, to see that this worked very well over history. Best way to use this 2 indicators is with DCA ( dollar cost average ), as area where to buy can go a little bit down and up for as long as few months. So dont just jump in, use DCA .
Short-Term Ichimoku Kinko-hyo+This Ichimoku Kinko-Hyo is an indicator which has been changed for short-term trading and, It has a “target price theory(one of three theory of Ichimoku Kinko-Hyo) function.”
Also, In this indicator, It can be plotting the “Span model”, “Super Bollinger Bands” which has Invented by a Japanese currency dealer Toshihiko Masaki, And Moving Average.
In addition, you can select setting only “clouds” and “Lagging span” or displaying Default Ichimoku Kinko-Hyo.
This indicator is modified original Ichimoku Kinko-Hyo, but It made based on the true usage of Ichimoku Kinko-Hyo.
For the evidence, I referred to the book supervised by Ichimoku-Sanjin the third generation.
Describe below about features↓↓↓.
- 2nd Cloud to check relation two Lead Lines and Lagging span.
- Background-color for discovering “Three Roles Improvement (In Japanese: 三役好転)” and “Three Roles Reversal (In Japanese: 三役逆転)”.
- Signal of Crossing Base Line and Conversion Line.
- mode selection of Ichimoku Kinko Hyo.
- Calculation feature for Target Price theory.
- A switch to replace Base Line and Conversion Line with 3 Moving Average lines.
- And others...
Rate Of Change - Weekly SignalsRate of Change - Weekly Signals
This indicator gives a potential "buy signal" using Rate of Change of SPX and VIX together,
using the following criteria:
SPX Weekly ROC(10) has been BELOW -9 and now rises ABOVE -5
*PLUS*
VIX Weekly ROC(10) has been ABOVE +80 and now falls BELOW +10
The background will turn RED when ROC(SPX) is below -9 and ROC(VIX) is above +80.
The background will turn GREEN when ROC(SPX) is above -5 and ROC(VIX) is below +10.
So the potential "buy signal" is when you start to get GREEN BARS AFTER RED - usually with
some white/empty bars in between...but wait for the green. This indicates that the volatility
has settled down, and the market is starting to turn up.
This indicator gives excellent entry points, but be careful of the occasional false signals.
See Nov. 2001 and Nov. 2008, in both cases the market dropped another 25-30% before the final
bottom was formed. Always have an exit strategy, especially when buying in after a downtrend.
How I use this indicator, pretty much as shown in the preview. Weekly SPX as the main chart with
some medium/long moving averages to identify the trend, VIX added as a "Compare Symbol" in red,
and then the Weekly ROC signals below.
For the ROC graphs, you can show SPX+VIX together, SPX alone, or VIX alone. I prefer to display
them separately because they don't scale well together (VIX crowds out the SPX when it spikes).
Background color is still based on both SPX/VIX together, regardless of which graph is shown.
Note that there is no VIX data available on Trading View prior to 1990, so for those dates the
formula is using only ROC(SPX) and the assigned thresholds (-9 and -5, or whatever you choose).
(JS) Squeeze Pro OverlaysSo this was something I planned on doing in the future, I knew it would take some time to put together but here it is, the Squeeze Pro 2 Overlays.
On my original Squeeze Pro, I had made several overlay indicators to go along with it, this time my goal was to combine all that stuff into a single indicator and allow the user to turn on and off the specific features they'd prefer to use. The version illustrated in the preview has everything turned on. What is "everything"? Here's the breakdown...
First of all - the color schemes in the Squeeze Pro match the color schemes in the Overlays indicator, so you can match them up (Color Scheme 3 in example). There are 6 schemes, option 1 is the original Squeeze colors.
There's also an option to make the light squeeze black, rather than white. This is for people who aren't using Dark Mode. It will flip all white to black, to make your charts better to read!
So there are 4 main overlays that can be switched on and off with this indicator, they include;
1. Early Signal Candles
2. BBMA Basis Line
3. Bollinger Bands/Keltner Channel Breaches
4. Signal Arrows
Early Signal Candles
The Early Signal Candles have two parameters, the entry smoothing period and the exit smoothing period.
There is a different type of early entry signal for each type of squeeze.
Low Squeeze generates white dots on the highs of the candles.
Mid Squeeze generates a lime green candle (or purple candle in color scheme 3).
High Squeeze generates a bigger purple circle on the high of the candle.
These three signals are made to mimic the original Early In/Out Candles from John Carter and represent the same thing (they work the same way).
As for the early exit, that would be determined by the color of the candle vs the color of the squeeze, works the same way as the original as well.
BBMA Basis Line
The BBMA (Bollinger Bands Momentum Average) was a moving average I had made to use with the squeeze on the previous version.
It is the basis line of the BB and KC used to make up the Squeeze (a 20 SMA). There are 4 different colors to it on this version.
1. Orange - This means no squeeze.
2. White/Black - Low Squeeze
3. Red - Mid Squeeze
4. Yellow - High Squeeze
You'll also notice these colors are light and dark in different spots - this is a representation of whether the Bollinger Bands are expanding or contracting. Dark means expanding, light means contracting.
Bollinger Bands/Keltner Channel Breaches
This is a pretty simple feature. If there is an ongoing squeeze, and a candle closes above or below the Bollinger Bands or Keltner Channels, a circle appears at the top or the bottom of the chart telling you which way the channel has been breached.
Signal Arrows
This is what makes up most of the overlay indicator. If you turn it on, the default is set to work just like the original. There are lots of options with this though.
First, you can turn each type of Squeeze Arrow on or off by checking/unchecking the boxes for them.
Now allow me to explain the "Signal Length", as there are several options.
The default is "6 Dots", this generates a signal when a particular type of Squeeze reaches the 6th dot ("12 Dots" works the same way).
"End of Squeeze" generates a signal once a type of Squeeze has concluded.
"End of Early Signal" generates a signal when the early dots (or candle) finishes.
"Custom" allows you to select your own dot duration to produce a signal, you select that number in the field below.
The other portion of this is the "Signal Type", this is where you select how each signal is generated once the selected amount of time takes place.
The default is the same as the original "+/-", this generates a signal based on whether Squeeze momentum is positive or negative.
"Rising/Falling" will only generate a signal if the Squeeze momentum maintains consistently over the last 6 bars.
"Crossed Zero" only generates a signal if the Squeeze momentum crosses above or below the zero line.
"Basis Line Momentum" is based on the BBMA. A signal is generated based on whether the current candle closes above or below the basis line.
"Divergence" only generates a signal if there is a divergence signal present at the time of the signal.
"Current Momentum" generates a signal based simply on the current direction of Squeeze momentum.
"Sum of Change" generates a signal based on the sum of the change in the Squeeze momentum being positive (long) or negative (short) over the length of time you select in the "Sum of Change Length" field.
Then "Combo" tries to take a look at everything and generates a score based on these parameters. Positive score = long, negative = short.
I hope I gave a detailed enough explanation on how everything works, let me know if you have any questions! Hope you like it!
True Accumulation/DistributionAccumulation/Distribution is developed by Marc Chaikin to provide insight into strength of a trend by measuring flow of buy and sell volume.
The fact that A/D only factors current period's range for calculating the volume multiplier causes problem with price gaps. They are ignored or even misinterpreted.
True Accumulation/Distribution solves the problem by using True Range instead of only relying on current period's high and low.
In this example you can see when a gap has occurred in Amazon Inc.'s daily chart True A/D has handled it better than Accumulation/Distribution which a bearish close in period's range has caused it to misinterpret the strong buy pressure as sell volume.
ATR Percentage of PriceThis indicator takes the standard ATR and expresses it as a percentage of the OHLC4 price. This has the advantage of normalising the ATR value across the history of an asset. For example, an ATR of value 20 when the price is 2000 actually has a very different meaning when the price rises to 4000. The ATR may be the same value but actually the volatility it represents has halved.
I also add an SMA to the value and a histogram which shows the difference between the two. Positive values mean that volatility is expanding while negative values mean volatility is contracting.
SD-Break
The supply trend line and the demand trend line are used to judge the main trend trend, and the supply and demand trend line is used to judge the local supply and demand intensity. When the supply and demand channel is located under the supply and demand trend channel, it is a strong downward trend; when the supply and demand channel is located above the supply and demand trend channel, it is a strong upward trend.In an uptrend, when the candle chart shows a significant uprush and the closing price has not been able to break through the supply line since then, we think the uptrend will present a red flag.In a downtrend, when the candle chart has a significant downtrend rebound and the closing price has not been able to break the demand line since then, we believe that the downtrend will be reversed.
Uhl MA Crossover SystemToday proposed indicator is based on the corrected moving average, an indicator originally proposed by Andreas Uhl professor at Salzburg University. This moving average is not the most well known, which is a pity since its design is extremely elegant.
The corrected moving average (CMA) is an adaptive moving average based on exponential averaging and aim to correct common problems of classical moving averages such as crosses occurring during sideway markets, more details will be introduced in the calculation section. The CMA aim to act as a slow moving average in a moving average crossover system.
Here a new fast adaptive moving average named corrected trend step (CTS) based on the CMA is introduced in order to provide a full moving average crossover system based on A. Uhl design.
To Andreas Uhl
Calculation And Understanding The CTS
Even if the code is quite compact, the original idea behind the CMA can be blurry for some users, however it is actually relatively simple to understand. The CMA is based on exponential averaging and a smoothing variable is therefore required, in the CMA the calculation of the smoothing variable is based on the squared distance between the precedent CMA output and a simple moving average, and the rolling variance, where the rolling variance act as threshold.
The CTS work the same way but instead of using the squared error between a simple moving average and the previous CMA output, we use the squared error between the closing price and the previous CTS output, this allow the CTS to better fit with the closing price. As said before the rolling variance act as threshold, if the squared error is lower than the rolling variance this mean that the CTS is close to the price, which can indicate a sideway market, therefore we should filter the entirety of the current price, therefore on sideways market the CTS is equal to the precedent value of the CTS.
In trending/volatile markets we expect the price to go away from the CTS, thus having an high squared error, if the squared error is greater than the rolling variance, the smoothing variable is equal to 1 - variance/squared error , here variance/squared error < 1 since the squared error is greater than the rolling variance ( remember that the smoothing variable need to be in a (0,1) range ), however if the squared error is way higher than variance this ratio will be small, which would return a non reactive output, but thats not what we want ! This is why we subtract 1 by this ratio in order to make the CTS more reactive instead of less reactive.
In case the squared error is greater than the rolling variance during sideway markets we would not expect a huge difference anyway, that is squared error ≈ variance and therefore:
1 - variance/squared error ≈ 1 - 1/1 ≈ 1 - 1 ≈ 0
This is a beautiful way to make an adaptive moving average, the CMA is not a flashy indicator, but when we look at the details behind the design we can only get amazed, or maybe that its just me, truly a great adaptive moving average.
The System
length control the filtering amount of both moving averages, with higher values of length returning larger filtering amount. Mult multiply the rolling variance by an user selected value, this also allow a greater amount of filtering.
The CTS act as a fast moving average while the CMA act as a slow moving average.
Here the indicator with length = 200, we can see how a sideway market who could have generated a large amount of signals don't affect our system.
Unlike classical crossovers systems where the slow moving average will rarely produce a cross with the fast moving average and price at the same time, the Uhl system can actually do that:
Conclusion
A moving average crossover system based on the corrected moving average proposed by Andreas Uhl has been presented, a new moving average that aim to produce good fits with the price has been created especially for this system. The logic behind the CMA has also been explained. A possible strategy analysis could be presented in the future.
In conclusion i would say the CMA is a bit underrated, in a field where arrows, signals, alerts are the only things appreciated by peoples, original content is slowly dying, this actually make today technical indicators have a pretty bad academic reputations. I'am afraid that today haiku master is Uhl rather than me, i hope to see more indicators from him in the future.
Thanks for reading !
Original paper: www.buero-uhl.de
Shapeshifting Moving Average - Switching From Low-Lag To SmoothThe term "shapeshifting" is more appropriate when used with something with a shape that isn't supposed to change, this is not the case of a moving average whose shape can be altered by the length setting or even by an external factor in the case of adaptive moving averages, but i'll stick with it since it describe the purpose of the proposed moving average pretty well.
In the case of moving averages based on convolution, their properties are fully described by the moving average kernel ( set of weights ), smooth moving averages tend to have a symmetrical bell shaped kernel, while low lag moving averages have negative weights. One of the few moving averages that would let the user alter the shape of its kernel is the Arnaud Legoux moving average, which convolve the input signal with a parametric gaussian function in which the center and width can be changed by the user, however this moving average is not a low-lagging one, as the weights don't include negative values.
Other moving averages where the user can change the kernel from user settings where already presented, i posted a lot of them, but they only focused on letting the user decrease or increase the lag of the moving average, and didn't included specific parameters controlling its smoothness. This is why the shapeshifting moving average is proposed, this parametric moving average will let the user switch from a smooth moving average to a low-lagging one while controlling the amount of lag of the moving average.
Settings/Kernel Interaction
Note that it could be possible to design a specific kernel function in order to provide a more efficient approach to today goal, but the original indicator was a simple low-lag moving average based on a modification of the second derivative of the arc tangent function and because i judged the indicator a bit boring i decided to include this parametric particularity.
As said the moving average "kernel", who refer to the set of weights used by the moving average, is based on a modification of the second derivative of the arc tangent function, the arc tangent function has a "S" shaped curve, "S" shaped functions are called sigmoid functions, the first derivative of a sigmoid function is bell shaped, which is extremely nice in order to design smooth moving averages, the second derivative of a sigmoid function produce a "sinusoid" like shape ( i don't have english words to describe such shape, let me know if you have an idea ) and is great to design bandpass filters.
We modify this 2nd derivative in order to have a decreasing function with negative values near the end, and we end up with:
The function is parametric, and the user can change it ( thus changing the properties of the moving average ) by using the settings, for example an higher power value would reduce the lag of the moving average while increasing overshoots. When power < 3 the moving average can act as a slow moving average in a moving average crossover system, as weights would not include negative values.
Here power = 0 and length = 50. The shapeshifting moving average can approximate a simple moving average with very low power values, as this would make the kernel approximate a rectangular function, however this is only a curiosity and not something you should do.
As A Smooth Moving Average
“So smooth, and so tranquil. It doesn't get any quieter than this”
A smooth moving average kernel should be : symmetrical, not to width and not to sharp, bell shaped curve are often appropriates, the proposed moving average kernel can be symmetrical and can return extremely smooth results. I will use the Blackman filter as comparison.
The smooth version of the moving average can be used when the "smooth" setting is selected. Here power can only be an even number, if power is odd, power will be equal to the nearest lowest even number. When power = 0, the kernel is simply a parabola:
More smoothness can be achieved by using power = 2
In red the shapeshifting moving average, in green a Blackman filter of both length = 100. Higher values of power will create lower negative values near the border of the kernel shape, this often allow to retain information about the peaks and valleys in the input signal. Power = 6 approximate the Blackman filter pretty well.
Conclusion
A moving average using a modification of the 2nd derivative of the arc tangent function as kernel has been presented, the kernel is parametric and allow the user to switch from a low-lag moving average where the lag can be increased/decreased to a really smooth moving average.
As you can see once you get familiar with a function shape, you can know what would be the characteristics of a moving average using it as kernel, this is where you start getting intimate with moving averages.
On a side note, have you noticed that the views counter in posted ideas/indicators has been removed ? This is truly a marvelous idea don't you think ?
Thanks for reading !