Volume in Base CurrencyShows the volume in USD, EUR, etc (whatever the base currency is for the asset) instead of number of stocks, bitcoins, etc.
ค้นหาในสคริปต์สำหรับ "bitcoin"
Supply Weighted Moving Average: OnchinUse this Onchain Channel in Weekly Timeframe - on BTCUSD BUTSTAMP Chart:
This Moving average channel is weighted based on BTC's new Supply:
I believe the slope of the Bitcoin trend line is correlated to the new supply and the issue of Halving.
The chart below shows this:
In fact, after each Halving, the supply is halved. Halving the supply increases the demand-for-supply ratio and increases the price. But the uptrend slope also halves after each halving.
Therefore, the slope of the bitcoin trend is correlated with the new supply rate. This is the logic of this new metric.
Accordingly, the moving average is weighted based on the new supply. This new channel can identify where bitcoin is too cheap or too expensive in the historical chart. It has also marked support/resistance Supply Weighted Moving Average.
BTC Supply weighted channel: OnchainUse this oscillator in the weekly time frame and then draw the above linear channel
The premise of this idea is that the trend slope of the bitcoin price correlates with the bitcoin supply chart, which shows the total amount of bitcoin ever created/issued.
Therefore, Bitcoin price is weighted based on Bitcoin supply.
As a result, the above channel has been created, which is a linear channel, and it seems that it can be an oscillator to determine the bitcoin trend, as well as the tops and bottoms of the market.
Bitcoin seems to respect the bottom and top lines of this channel as well as its midline
ETH MA ChannelThe 200-week moving average for bitcoin is considered to be the most popular bitcoin support and determines the bitcoin price bottom. But examining this index in the case of bitcoin does not have the same result for Ethereum. The above moving average channel is designed according to the price action of ETH to determine its top and bottom based on the 200w moving average. This channel has a good performance on the historical chart.
BlackMEX - Production CostBitcoin's Value as determined by Joules of energy input only
Calculations per Medium article EV = (Energy-in) / (Supply Growth Rate) * (Fiat Factor)
Historic Energy Efficiency data can only be entered monthly due to processing speed constraints of below data load and should be considred an estimate only.
Energy Efficiency Data requires manual updating. Currently accurate as of 28 December 2019
Bitcoin Production Cost
Cambridge Bitcoin Electricity Consumption Index (CBECI) - Bitcoin's global electricity consumption in TwH.
NB: Uses MONTHLY averages of raw data from CBECI. TV script run-time is too slow with Daily/Weekly data here.
This requires manual updating once a month for ongoing accuracy.
Moving Average Multipliers MTF (Mescu)Includes 4 customizable Moving Average with multipliers and multi-timeframe (MTF).
Tweaks the parameters to your liking, it should be pretty simple to understand
Used here with BTC/USD (1W) to identify good sell and buy zone for Bitcoin.
Got the idea from the 2-year MA Multiplier indicator, but didn't find something of my liking on TradingView, so I made my own.
Drop me a comment if you have any questions, suggestions, improvements.
Mescu
www.tradingview.com
BTC Spot/Futures Volume RatioShows the ratio between the spot trading volume versus futures trading volume for Bitcoin. This ratio may be interpreted as how active the market currently is, and may lead to various interpretations. For example, when the price is at a high level and this ratio gradually decreases, it may imply the end of the distribution phase; when the price is low and the ratio is at the bottom, it may imply the bottom of the price.
V/T Ratio: Onchain BTC MetricThis is a New Onchain metric that is designed for bitcoin by myself Mjshahsavar (Ghoddusifar), and it is published for the first time in this trading view in this post.
I think this metric has a very high capability to determine the ATH and bottom of the market. This metric can solve a problem that channels are unable to solve. this could be the equivalent of what is known in the stock market as P/E
Calculations:
V/T RATIO = MA (7) of Log ((THE TOTAL VOLUME OF BITCOIN TRANSFERRED ONCHAIN IN USD)/(THE TOTAL AMOUNT OF TRANSACTIONS))
INTERPRETATION:
What is the long-term price channel of Bitcoin? Have you ever thought that maybe drawing a price channel is not right and maybe we should look for something else?
Channel drawing for the price is a subjective and interpretive subject. Look at the charts below, they are all correct in terms of drawing, but no one can say which one will happen. There is no certainty because drawing them is objective.
But who can say which one will definitely work?
We need something more objective. I think V/T Ratio does that.
Just draw the channel. There is only one channel for it. And it has worked historically well to this day.
Compare the drawn channel with the price chart. It works right. When the metric reaches the top line of the channel, it indicates the new ATH and the end of the cycle.
When it reaches the bottom line of the channel, it indicates that the price has reached the bottom.
A Market Cycle:
According to this metric, the bitcoin cycle has 5 stages:
1- Bottom Price: which V/T Ratio touches the bottom line of the channel: In this case, we expect the price to reach the bottom.
2- Semi-high price: that the metric reaches the middle line of the channel: In this case, Bitcoin creates a local top in the MID-Term and Long-Term timeframes
3- Semi-low price: which has a metric return to the lower part of the channel (but the price can still increase)
4- ATH: that Bitcoin reaches its highest historical price
5- It starts after the ATH until the metric reaches the bottom part of the channel again.
RSI Cor Bias [Moto]Hello traders,
This is a pretty simple script. It gives a background directional bias color respective to RSI levels from input thresholds in the settings. Users can choose the upper and lower thresholds and the symbol that the RSI is from.
For example, by default, the upper threshold is 52 and the lower 48. If Bitcoins RSi is above 52, the background color will be green, below 48 it's pink, between and no color will be applied.
Generally, buying should be occurring in pink to green transition or in green, and conversely selling should be occurring in green to pink transition or in pink.
Thanks,
Moto
Macro EMA Correlation
This script is useful to see correlation between macroeconomic assets, displayed in different ema line shown in percentage to compare these assets on the same basis. Percentage will depend on the time frame selection. In the higher timeframe you will see higher variation and in small timeframe smaller variation.
You can select the timeframe who suit your trading style. The 1h and 4h fit well for longer trend swing trade and the lower time frame 15m, 5m, 1m are good for scalping or daily trading.
The following asset are available:
Bitcoin
Ethereum
Gold
Crypto total market cap excluding bitcoin (total2)
United state 10-year government bond (US10Y)
Usdt dominance show the concentration of usdt hold. For example, when trader are fearful they sell their crypto position to keep more usdt in their portfolio (USDT.D)
The USD/JPY pair the dollar usd versus the Japanese Yen one of the most forex traded pair.
You can clic on parameter to select the asset you want to analyse.
The main correlation observed are:
bitcoin negatively correlated with the usdt dominance.
bitcoin negatively correlated with the usd/jpy pair
bitcoin is positively correlated to eth, total2 (altcoin)
bitcoin positively correlated with gold
bitcoin is mostly negatively correlated to us10y
The basis of correlation is that positively correlated asset goes in the same direction and that the negatively correlated goes in opposite direction.
So, the idea is to use these information to see trend reversing.
Example 1: when bitcoin and usdt dominance are extended in opposite direction we look for a possible retracement toward 1% wich is the middle base.
Example 2 : when bitcoin make a move we look for ethereum and total 2 to follow
Fusion: Big Arty CandlesAnyone who follows Arty knows about his "Big A** Candle" strategies.
I didn't like the BAC indicators that had code available so I wrote this one that has some decent flexibility and display options.
You can use this to enter a trade immediately after a BAC, probably in the opposite direction and ride the pullback that usually occurs or just use it to avoid trading until things settle down. I use it to avoid trading for a few bars on the 15 minute timeframe on bitcoin.
The settings are certainly not optimized so set them to whatever suits your needs as the defaults will probably be wrong for you.
The code is structured to easily drop into a bigger system so use it as a lone indicator or add the code to some bigger project you are creating. If you do integrate it into something else then send me a note as it would be nice to know it's being well used.
Finally, if you find value please do make a comment, give a thumbs up etc.
Enjoy and good luck!
Benjamin Cowen's Simplified Risk MetricJust a simple risk indicator for Bitcoin. Originally created by the great Benjamin Cowen. I just put his idea to code.
Triple ThreatThis indicator provides buy and sell signals for Bitcoin based on confluence from well-known momentum, volatility, and trend indicators. It has successfully captured the major directional trends on Bitcoin's daily chart since 2018, and the settings are currently optimized for this chart in particular. This indicator implements RSI to gauge momentum, BBWP to gauge volatility, and an EMA to gauge trend. Maximum confluence signals are represented by horizontal bars in the indicator's pane, where the tallest green bar is a confirmed buy signal, and the tallest red bar is a confirmed sell signal. The shortest bar represents a momentum-only signal, and the second-shortest bar represents a volatility signal in confluence with the previously given momentum signal.
To track momentum, the RSI is plotted to the indicator plane against a moving average of the RSI. A momentum signal is generated when the RSI crosses over its moving average, retests/approaches the moving average, and then continues in the crossover direction (i.e., it fails to cross the moving average to the opposite side, creating a successful retest). The settings that affect this trigger are the "Crossover Threshold," which specifies how much the RSI should exceed the moving average to be considered a crossover, and the "Retest threshold," which specifies how closely the RSI should approach the moving average to be considered a retest. A momentum signal is ALSO generated if the RSI or its moving average exceed their counterpart by a certain threshold. For example, if the threshold was set at 10, a BUY signal would be generated when the RSI exceeds the moving average by 10, or a SELL signal would be generated when the moving average exceeds the RSI by 10. This threshold can be set using the "Instant Signal Threshold" setting. Either type of momentum signal will be plotted on the pane as the shortest horizontal bar, with its color indicating the signal's direction.
Volatility is primarily measured using the Bollinger Band Width Percentile (BBWP) indicator, which was created by The_Caretaker. BBWP plots the volatility of the asset's price, given by Bollinger Band width, relative to past volatility by assigning the volatility readings into percentiles. The indicator also includes a moving average of the BBWP itself, where a crossover to the upside represents expanding volatility and a crossover to the downside represents contracting volatility. This indicator is used to confirm a signal given by the momentum indicators - a momentum signal that is given during a period of expanding volatility has a greater likelihood of success. Therefore, when the BBWP crosses above its moving average by a given threshold, a previously triggered momentum signal is considered to be "confirmed." The threshold for this crossover can be set using the "BBWP Confirmation Threshold" setting. However, it is also relevant that periods of extreme volatility often accompany an extremity in price action (a "top" or "bottom"), in which case the BBWP is likely to contract after price reaches such an extremity. This phenomenon is captured by also using "extreme reads" on the momentum indicator to signal that there has already been enough volatility to confirm a momentum signal. If the RSI gives an "extreme read" before triggering a signal, the momentum signal is also considered to be confirmed. For example, if the RSI is above 80, breaks below 80, and then gives a SELL signal, this sell signal is considered to be confirmed without requiring the BBWP to crossover its moving average to the upside. The threshold that would confirm a SELL signal can be set with the "Overbought" setting, and the threshold that would confirm a BUY signal can be set with the "Oversold" setting. Whenever a volatility signal confirms a momentum signal, a medium-sized horizontal bar will be plotted on the pane in the same directional color as the momentum signal. Note that a momentum signal may trigger at the exact same time as the volatility signal which confirms it; in this case, only the medium-sized bar will be visible on the pane, but its direction can still be identified by its color.
Lastly, to reduce the likelihood of "false signals," a trend indicator is used to confirm the direction of the signal. This is typically an exponential moving average. If a confirmed volatility SELL signal is given, and the closing price is below the moving average, then the SELL signal is also confirmed by the trend. Likewise, if a confirmed volatility BUY signal is given, and the closing price is above the moving average, then the BUY signal is confirmed by the trend. The type and length of the moving average used to verify the trend can be set using the "Moving Average Type" and "Moving Average Length" settings found below the momentum/volatility settings. A trend signal is plotted on the pane as a tall horizontal bar, and is more deeply colored than the momentum and volatility signals.
For maximum confluence, it is recommended that the trend signal, given by the tallest bar, is the one that forms the basis of trades executed while using the Triple Threat indicator. It is possible to enter more aggressive trades with better entries by using only the volatility signal, given by the medium-sized bar, however this entails greater risk and should only be done in confluence with an additional trading strategy of your own discretion. Backtesting has shown that using the volatility signal alone underperforms using the volatility signal in confluence with the trend signal.
Please also be advised that the default setting are optimized for Bitcoin's daily chart only. The indicator is still applicable to other timeframes and asset classes, but the settings may need to be modified. I have a list of settings for other Bitcoin timeframes, and I would be happy to share them upon request.
I hope you can find this indicator to be of some use to your trading strategies. I'd be happy to hear any feedback from the community, so please don't hesitate to reach out. Stay safe, and happy trading.
100W sma/200W smaThis is an Indicator specifically made for BTC/USD ( Index)
Zoom out on Daily and Weekly candles as much and you can SEE a trend . A very very important trend and you shall remember this indicator with Years to come . This is a VERY long term type indicator and can help you with long term hodling investor mindset analysis .
SARWThis indicator aims to indicate the correlation between two assets(Current and Base), it does NOT show entries or help your chart analysis directly.
The main features of this Correlation indicator is :
Correlation type : Direct Correlation | Inverse Correlation | No Correlation
Correlation Percentage : as its name, it calculate the Correlation Percentage between Current and base assets if exist
How to use: Chose the base asset (default: bitcoin) and open any other chart to be the other -Current- asset
inputs:
Max Lookback length : how many candles will be included in the scan.
Swing intensity : How many candle should be counted to confirm a Swing, If you are confused leave it as its default.
Base Asset : The base asset to calculate the current asset correlation with.
Important Notes:
As I promised, the previous correlation indicator used each candle alone, while this one uses waves and swings.
The Current asset has more power over the base, because it compares the Base to current, but not the opposite((E.g. if you want to check if some coin have correlation with bitcoin, it's better to use bitcoin and put the other coin name in the input field)).
For any notes on the indicator to be edited, or for another indicator ideas please comment.
BTC Golden Bottom with Adaptive Moving AverageIntroduction:
This study uses Adaptive Moving Average with 1 year of length to plot on all time history Index Calculated by Tradingview . All previous $BTC bear runs bottomed on this curve which makes it important enough. Use this only on " "
Default Values:
AMA length is 1 year
Minor length is 50
Major length is 100
Mazuuma Churn IndicatorThis indicator was specifically made to confirm a periode of sideways movement (churn) on Bitcoin. It can probably be used for other cryptocurrencies as well. I use it on the daily timeframe.
Yellow means "Unconfirmed".
Orange means "Partially Confirmed".
Red means "Confirmed"
The indicator is not perfect, so use your common sense.
Churn starts when at least 2 of the conditions below are met (use also your common sense):
1. ATR < MA 20 on ATR
2. Distance to EMA 200 must be ≤ 16% at “Open churn”
3. EMA 12 on RSI between 40 and 60
4. ADX < 25
The above are weighted. Meaning no 1 has most significance. The numbers can be tweaked.
Reversal coming
* The indicators above break out, especially the ATR
* Color shift of the Heikin Ashi candle on weekly timeframe
* Engulfing candle on weekly timeframe
Because of the offset of the EMA 200, the precision of the Churn predictor can be off after a VERY big spike up or down, e.g. dec 2017. After such a spike use your common sense.
Personally I use this for bot trading, i.e. turn off trend following bots when in sideways market and use grid bots or other means of trading instead.
3RSI 3CCI BB 5orders DCA strategy+This strategy is just an attempt to find the indicator values for the trading bot service that I use (link in profile). Due to the use of the “request.security” function in the code, the indicators can be redrawn, but this is not important in history. The strategy used only 5 orders for the "DCA" - bot, located at the same distance in the price overlap range. I only use this strategy when trading in pairs against bitcoin.
Эта стратегия – просто попытка подобрать значения индикаторов для сервиса торговых ботов, который я использую (ссылка в профиле). Из-за использования в коде функции «request.security» возможна перерисовка индикаторов, но на истории это не важно. В стратегии использовано всего 5 ордеров для «DCA» - бота, находящихся на одинаковом расстоянии в диапазоне перекрытия цены. Я использую данную стратегию только при торговле в парах к биткоину.
Live off your portofolio (decumulate)This indicator simulates living off your portofolio consisting of a single security or stock such as the SPY etf or even Bitcoin. The simulation starts at a certain point on the chart (which you input as year and month).
Withrawals from the portofolio are made each month according to the yearly withdrawal rate you enter, such as the 4% SWR. The monthly withdrawal income is calculated in USD at the beginning of the retirement period and then adjusted according to the US inflation (CPI) on 01/01 of each year.
The blue graph represents the USD value of the remaining portofolio.
This indicator is meant to be used on daily, weekly or monthly time frame. It may not work properly (and makes little sense to use) on intraday timeframe or larger time frames such as quarterly (3M).
When withdrawing, the indicator considers that fractional stock values can be used (the portofolio value is kept as a float). This may not be true, as most stock brokers currently don't allow this.
It does not explicitly take into account dividends. In order to do this you will have to enable "Adjust for dividends" by clicking on "adj" in the lower right corner of the screen, or by using the indicator on a Total Return (TR) index such as DAX. Unfortunately SPX does not have dividend data, you will have to use the SPY etf (which doesn't have a long history)
Half-Pi Cycle CKB top indicator (insanely experimental)This is an insanely experimental script. It's a modified version of the Bitcoin pi-cycle top indicator.
It changes the Bitcoin pi-cycle top formula by halving the number of days in the two DMAs used in calculation, from 350/111 to 175/56. So I call it the half-pi cycle. It correctly picked the top of CKB (Nervos Network) vs USDT on Huobi in spring 2021 within three days.
It probably is a coincidence, and could very easily not pick the next cycle peak correctly at all. Using such a short number of days makes it a little dubious, but I had no choice since there's only so much price history for this coin. I strongly advise you to not make any trades based on this script ! I cannot be held accountable if you lose money due to this script. It hasn't been shown to be accurate multiple times like the Bitcoin pi-cycle top indicator. I simply find this interesting and want to see if it works next time.
Mayer MAMayer Multiple Price Bands Explained
The Mayer Multiple Price Bands chart is a simple modification to the original Mayer Multiple chart explained here.
Summary of Mayer Multiple
The Mayer Multiple is calculated by taking the price of Bitcoin and dividing it by the 200 day moving average value. The thinking behind the multiple is that by comparing the current price of bitcoin and its longer term moving average, you get a sense of if it is overbought (overvalued) or oversold (undervalued).
Adding Bands
The addition of price bands takes the multiple a step further by attempting to tell you how overbought or oversold bitcoin is with more detail. Instead of just three labels (overbought, fairly priced, and undervalued), you are given more granular labels: Oversold, Bearish, Bullish, Bullish Extension, and Overbought.
How to Calculate Mayer Multiple Bands
The Mayer multiple is calculated by taking the price of Bitcoin and dividing it by the 200 day moving average value. We take this a step further and display various prices that represent ‘bands’ of over and undervalued Bitcoin based on the multiple. They are as follows:
>2.5x: Overbought
>1.7x and <2.5x: Bullish Overextension
>1.1x and <1.7x Bullish Channel
>0.55x and <1.1x: Bearish Channel
<0.55x: Oversold
VCC Impulse 101Title = VCC Impulse 101
Version = v1.2.0
Author = Vic Cebedo
A cryptocurrency Buy and Sell signal indicator.
BUY SIGNAL (green background) is triggered if Buy Score (black line) reaches (4) Points.
1 Point is added to Buy Score if:
- The Closing Price is above all Moving Averages (7, 21, 50, 100, and 200), and
- If the 200MA is above the other Moving Averages (7, 21, 50, 100).
1 Point is added to Buy Score if:
- MACD is greater than MACD Signal, and
- MACD is greater than zero, and
- MACD Signal is greater than zero, and
- MACD is greater than previous value.
1 Point is added to Buy Score if:
- SMI is greater than zero, and
- SMI is greater than previous value.
1 Point is added to Buy Score if:
- RSI is greater than 50.
The SELL SIGNAL (red background) is triggered if EITHER Ethereum Sell Score (purple line) OR Bitcoin Sell Score (red line), reaches (-3) Points.
2 Points is deducted from the Ethereum Sell Score if:
- The number of Ethereum Short positions is greater than the Longs.
1 Point is deducted from the Ethereum Sell Score if:
- The Ethereum RSI is greater than 75.
2 Points is deducted from the Bitcoin Sell Score if:
- The number of Bitcoin Short positions is greater than the Longs.
1 Point is deducted from the Bitcoin Sell Score if:
- The Bitcoin RSI is greater than 75.
Webhook Starter Kit [HullBuster]
Introduction
This is an open source strategy which provides a framework for webhook enabled projects. It is designed to work out-of-the-box on any instrument triggering on an intraday bar interval. This is a full featured script with an emphasis on actual trading at a brokerage through the TradingView alert mechanism and without requiring browser plugins.
The source code is written in a self documenting style with clearly defined sections. The sections “communicate” with each other through state variables making it easy for the strategy to evolve and improve. This is an excellent place for Pine Language beginners to start their strategy building journey. The script exhibits many Pine Language features which will certainly ad power to your script building abilities.
This script employs a basic trend follow strategy utilizing a forward pyramiding technique. Trend detection is implemented through the use of two higher time frame series. The market entry setup is a Simple Moving Average crossover. Positions exit by passing through conditional take profit logic. The script creates ten indicators including a Zscore oscillator to measure support and resistance levels. The indicator parameters are exposed through 47 strategy inputs segregated into seven sections. All of the inputs are equipped with detailed tool tips to help you get started.
To improve the transition from simulation to execution, strategy.entry and strategy.exit calls show enhanced message text with embedded keywords that are combined with the TradingView placeholders at alert time. Thereby, enabling a single JSON message to generate multiple execution events. This is genius stuff from the Pine Language development team. Really excellent work!
This document provides a sample alert message that can be applied to this script with relatively little modification. Without altering the code, the strategy inputs can alter the behavior to generate thousands of orders or simply a few dozen. It can be applied to crypto, stocks or forex instruments. A good way to look at this script is as a webhook lab that can aid in the development of your own endpoint processor, impress your co-workers and have hours of fun.
By no means is a webhook required or even necessary to benefit from this script. The setups, exits, trend detection, pyramids and DCA algorithms can be easily replaced with more sophisticated versions. The modular design of the script logic allows you to incrementally learn and advance this script into a functional trading system that you can be proud of.
Design
This is a trend following strategy that enters long above the trend line and short below. There are five trend lines that are visible by default but can be turned off in Section 7. Identified, in frequency order, as follows:
1. - EMA in the chart time frame. Intended to track price pressure. Configured in Section 3.
2. - ALMA in the higher time frame specified in Section 2 Signal Line Period.
3. - Linear Regression in the higher time frame specified in Section 2 Signal Line Period.
4. - Linear Regression in the higher time frame specified in Section 2 Signal Line Period.
5. - DEMA in the higher time frame specified in Section 2 Trend Line Period.
The Blue, Green and Orange lines are signal lines are on the same time frame. The time frame selected should be at least five times greater than the chart time frame. The Purple line represents the trend line for which prices above the line suggest a rising market and prices below a falling market. The time frame selected for the trend should be at least five times greater than the signal lines.
Three oscillators are created as follows:
1. Stochastic - In the chart time frame. Used to enter forward pyramids.
2. Stochastic - In the Trend period. Used to detect exit conditions.
3. Zscore - In the Signal period. Used to detect exit conditions.
The Stochastics are configured identically other than the time frame. The period is set in Section 2.
Two Simple Moving Averages provide the trade entry conditions in the form of a crossover. Crossing up is a long entry and down is a short. This is in fact the same setup you get when you select a basic strategy from the Pine editor. The crossovers are configured in Section 3. You can see where the crosses are occurring by enabling Show Entry Regions in Section 7.
The script has the capacity for pyramids and DCA. Forward pyramids are enabled by setting the Pyramid properties tab with a non zero value. In this case add on trades will enter the market on dips above the position open price. This process will continue until the trade exits. Downward pyramids are available in Crypto and Range mode only. In this case add on trades are placed below the entry price in the drawdown space until the stop is hit. To enable downward pyramids set the Pyramid Minimum Span In Section 1 to a non zero value.
This implementation of Dollar Cost Averaging (DCA) triggers off consecutive losses. Each loss in a run increments a sequence number. The position size is increased as a multiple of this sequence. When the position eventually closes at a profit the sequence is reset. DCA is enabled by setting the Maximum DCA Increments In Section 1 to a non zero value.
It should be noted that the pyramid and DCA features are implemented using a rudimentary design and as such do not perform with the precision of my invite only scripts. They are intended as a feature to stress test your webhook endpoint. As is, you will need to buttress the logic for it to be part of an automated trading system. It is for this reason that I did not apply a Martingale algorithm to this pyramid implementation. But, hey, it’s an open source script so there is plenty of room for learning and your own experimentation.
How does it work
The overall behavior of the script is governed by the Trading Mode selection in Section 1. It is the very first input so you should think about what behavior you intend for this strategy at the onset of the configuration. As previously discussed, this script is designed to be a trend follower. The trend being defined as where the purple line is predominately heading. In BiDir mode, SMA crossovers above the purple line will open long positions and crosses below the line will open short. If pyramiding is enabled add on trades will accumulate on dips above the entry price. The value applied to the Minimum Profit input in Section 1 establishes the threshold for a profitable exit. This is not a hard number exit. The conditional exit logic must be satisfied in order to permit the trade to close. This is where the effort put into the indicator calibration is realized. There are four ways the trade can exit at a profit:
1. Natural exit. When the blue line crosses the green line the trade will close. For a long position the blue line must cross under the green line (downward). For a short the blue must cross over the green (upward).
2. Alma / Linear Regression event. The distance the blue line is from the green and the relative speed the cross is experiencing determines this event. The activation thresholds are set in Section 6 and relies on the period and length set in Section 2. A long position will exit on an upward thrust which exceeds the activation threshold. A short will exit on a downward thrust.
3. Exponential event. The distance the yellow line is from the blue and the relative speed the cross is experiencing determines this event. The activation thresholds are set in Section 3 and relies on the period and length set in the same section.
4. Stochastic event. The purple line stochastic is used to measure overbought and over sold levels with regard to position exits. Signal line positions combined with a reading over 80 signals a long profit exit. Similarly, readings below 20 signal a short profit exit.
Another, optional, way to exit a position is by Bale Out. You can enable this feature in Section 1. This is a handy way to reduce the risk when carrying a large pyramid stack. Instead of waiting for the entire position to recover we exit early (bale out) as soon as the profit value has doubled.
There are lots of ways to implement a bale out but the method I used here provides a succinct example. Feel free to improve on it if you like. To see where the Bale Outs occur, enable Show Bale Outs in Section 7. Red labels are rendered below each exit point on the chart.
There are seven selectable Trading Modes available from the drop down in Section 1:
1. Long - Uses the strategy.risk.allow_entry_in to execute long only trades. You will still see shorts on the chart.
2. Short - Uses the strategy.risk.allow_entry_in to execute short only trades. You will still see long trades on the chart.
3. BiDir - This mode is for margin trading with a stop. If a long position was initiated above the trend line and the price has now fallen below the trend, the position will be reversed after the stop is hit. Forward pyramiding is available in this mode if you set the Pyramiding value in the Properties tab. DCA can also be activated.
4. Flip Flop - This is a bidirectional trading mode that automatically reverses on a trend line crossover. This is distinctively different from BiDir since you will get a reversal even without a stop which is advantageous in non-margin trading.
5. Crypto - This mode is for crypto trading where you are buying the coins outright. In this case you likely want to accumulate coins on a crash. Especially, when all the news outlets are talking about the end of Bitcoin and you see nice deep valleys on the chart. Certainly, under these conditions, the market will be well below the purple line. No margin so you can’t go short. Downward pyramids are enabled for Crypto mode when two conditions are met. First the Pyramiding value in the Properties tab must be non zero. Second the Pyramid Minimum Span in Section 1 must be non zero.
6. Range - This is a counter trend trading mode. Longs are entered below the purple trend line and shorts above. Useful when you want to test your webhook in a market where the trend line is bisecting the signal line series. Remember that this strategy is a trend follower. It’s going to get chopped out in a range bound market. By turning on the Range mode you will at least see profitable trades while stuck in the range. However, when the market eventually picks a direction, this mode will sustain losses. This range trading mode is a rudimentary implementation that will need a lot of improvement if you want to create a reliable switch hitter (trend/range combo).
7. No Trade. Useful when setting up the trend lines and the entry and exit is not important.
Once in the trade, long or short, the script tests the exit condition on every bar. If not a profitable exit then it checks if a pyramid is required. As mentioned earlier, the entry setups are quite primitive. Although they can easily be replaced by more sophisticated algorithms, what I really wanted to show is the diminished role of the position entry in the overall life of the trade. Professional traders spend much more time on the management of the trade beyond the market entry. While your trade entry is important, you can get in almost anywhere and still land a profitable exit.
If DCA is enabled, the size of the position will increase in response to consecutive losses. The number of times the position can increase is limited by the number set in Maximum DCA Increments of Section 1. Once the position breaks the losing streak the trade size will return the default quantity set in the Properties tab. It should be noted that the Initial Capital amount set in the Properties tab does not affect the simulation in the same way as a real account. In reality, running out of money will certainly halt trading. In fact, your account would be frozen long before the last penny was committed to a trade. On the other hand, TradingView will keep running the simulation until the current bar even if your funds have been technically depleted.
Entry and exit use the strategy.entry and strategy.exit calls respectfully. The alert_message parameter has special keywords that the endpoint expects to properly calculate position size and message sequence. The alert message will embed these keywords in the JSON object through the {{strategy.order.alert_message}} placeholder. You should use whatever keywords are expected from the endpoint you intend to webhook in to.
Webhook Integration
The TradingView alerts dialog provides a way to connect your script to an external system which could actually execute your trade. This is a fantastic feature that enables you to separate the data feed and technical analysis from the execution and reporting systems. Using this feature it is possible to create a fully automated trading system entirely on the cloud. Of course, there is some work to get it all going in a reliable fashion. Being a strategy type script place holders such as {{strategy.position_size}} can be embedded in the alert message text. There are more than 10 variables which can write internal script values into the message for delivery to the specified endpoint.
Entry and exit use the strategy.entry and strategy.exit calls respectfully. The alert_message parameter has special keywords that my endpoint expects to properly calculate position size and message sequence. The alert message will embed these keywords in the JSON object through the {{strategy.order.alert_message}} placeholder. You should use whatever keywords are expected from the endpoint you intend to webhook in to.
Here is an excerpt of the fields I use in my webhook signal:
"broker_id": "kraken",
"account_id": "XXX XXXX XXXX XXXX",
"symbol_id": "XMRUSD",
"action": "{{strategy.order.action}}",
"strategy": "{{strategy.order.id}}",
"lots": "{{strategy.order.contracts}}",
"price": "{{strategy.order.price}}",
"comment": "{{strategy.order.alert_message}}",
"timestamp": "{{time}}"
Though TradingView does a great job in dispatching your alert this feature does come with a few idiosyncrasies. Namely, a single transaction call in your script may cause multiple transmissions to the endpoint. If you are using placeholders each message describes part of the transaction sequence. A good example is closing a pyramid stack. Although the script makes a single strategy.close() call, the endpoint actually receives a close message for each pyramid trade. The broker, on the other hand, only requires a single close. The incongruity of this situation is exacerbated by the possibility of messages being received out of sequence. Depending on the type of order designated in the message, a close or a reversal. This could have a disastrous effect on your live account. This broker simulator has no idea what is actually going on at your real account. Its just doing the job of running the simulation and sending out the computed results. If your TradingView simulation falls out of alignment with the actual trading account lots of really bad things could happen. Like your script thinks your are currently long but the account is actually short. Reversals from this point forward will always be wrong with no one the wiser. Human intervention will be required to restore congruence. But how does anyone find out this is occurring? In closed systems engineering this is known as entropy. In practice your webhook logic should be robust enough to detect these conditions. Be generous with the placeholder usage and give the webhook code plenty of information to compare states. Both issuer and receiver. Don’t blindly commit incoming signals without verifying system integrity.
Setup
The following steps provide a very brief set of instructions that will get you started on your first configuration. After you’ve gone through the process a couple of times, you won’t need these anymore. It’s really a simple script after all. I have several example configurations that I used to create the performance charts shown. I can share them with you if you like. Of course, if you’ve modified the code then these steps are probably obsolete.
There are 47 inputs divided into seven sections. For the most part, the configuration process is designed to flow from top to bottom. Handy, tool tips are available on every field to help get you through the initial setup.
Step 1. Input the Base Currency and Order Size in the Properties tab. Set the Pyramiding value to zero.
Step 2. Select the Trading Mode you intend to test with from the drop down in Section 1. I usually select No Trade until I’ve setup all of the trend lines, profit and stop levels.
Step 3. Put in your Minimum Profit and Stop Loss in the first section. This is in pips or currency basis points (chart right side scale). Remember that the profit is taken as a conditional exit not a fixed limit. The actual profit taken will almost always be greater than the amount specified. The stop loss, on the other hand, is indeed a hard number which is executed by the TradingView broker simulator when the threshold is breached.
Step 4. Apply the appropriate value to the Tick Scalar field in Section 1. This value is used to remove the pipette from the price. You can enable the Summary Report in Section 7 to see the TradingView minimum tick size of the current chart.
Step 5. Apply the appropriate Price Normalizer value in Section 1. This value is used to normalize the instrument price for differential calculations. Basically, we want to increase the magnitude to significant digits to make the numbers more meaningful in comparisons. Though I have used many normalization techniques, I have always found this method to provide a simple and lightweight solution for less demanding applications. Most of the time the default value will be sufficient. The Tick Scalar and Price Normalizer value work together within a single calculation so changing either will affect all delta result values.
Step 6. Turn on the trend line plots in Section 7. Then configure Section 2. Try to get the plots to show you what’s really happening not what you want to happen. The most important is the purple trend line. Select an interval and length that seem to identify where prices tend to go during non-consolidation periods. Remember that a natural exit is when the blue crosses the green line.
Step 7. Enable Show Event Regions in Section 7. Then adjust Section 6. Blue background fills are spikes and red fills are plunging prices. These measurements should be hard to come by so you should see relatively few fills on the chart if you’ve set this up as intended. Section 6 includes the Zscore oscillator the state of which combines with the signal lines to detect statistically significant price movement. The Zscore is a zero based calculation with positive and negative magnitude readings. You want to input a reasonably large number slightly below the maximum amplitude seen on the chart. Both rise and fall inputs are entered as a positive real number. You can easily use my code to create a separate indicator if you want to see it in action. The default value is sufficient for most configurations.
Step 8. Turn off Show Event Regions and enable Show Entry Regions in Section 7. Then adjust Section 3. This section contains two parts. The entry setup crossovers and EMA events. Adjust the crossovers first. That is the Fast Cross Length and Slow Cross Length. The frequency of your trades will be shown as blue and red fills. There should be a lot. Then turn off Show Event Regions and enable Display EMA Peaks. Adjust all the fields that have the word EMA. This is actually the yellow line on the chart. The blue and red fills should show much less than the crossovers but more than event fills shown in Step 7.
Step 9. Change the Trading Mode to BiDir if you selected No Trades previously. Look on the chart and see where the trades are occurring. Make adjustments to the Minimum Profit and Stop Offset in Section 1 if necessary. Wider profits and stops reduce the trade frequency.
Step 10. Go to Section 4 and 5 and make fine tuning adjustments to the long and short side.
Example Settings
To reproduce the performance shown on the chart please use the following configuration: (Bitcoin on the Kraken exchange)
1. Select XBTUSD Kraken as the chart symbol.
2. On the properties tab set the Order Size to: 0.01 Bitcoin
3. On the properties tab set the Pyramiding to: 12
4. In Section 1: Select “Crypto” for the Trading Model
5. In Section 1: Input 2000 for the Minimum Profit
6. In Section 1: Input 0 for the Stop Offset (No Stop)
7. In Section 1: Input 10 for the Tick Scalar
8. In Section 1: Input 1000 for the Price Normalizer
9. In Section 1: Input 2000 for the Pyramid Minimum Span
10. In Section 1: Check mark the Position Bale Out
11. In Section 2: Input 60 for the Signal Line Period
12. In Section 2: Input 1440 for the Trend Line Period
13. In Section 2: Input 5 for the Fast Alma Length
14. In Section 2: Input 22 for the Fast LinReg Length
15. In Section 2: Input 100 for the Slow LinReg Length
16. In Section 2: Input 90 for the Trend Line Length
17. In Section 2: Input 14 Stochastic Length
18. In Section 3: Input 9 Fast Cross Length
19. In Section 3: Input 24 Slow Cross Length
20. In Section 3: Input 8 Fast EMA Length
21. In Section 3: Input 10 Fast EMA Rise NetChg
22. In Section 3: Input 1 Fast EMA Rise ROC
23. In Section 3: Input 10 Fast EMA Fall NetChg
24. In Section 3: Input 1 Fast EMA Fall ROC
25. In Section 4: Check mark the Long Natural Exit
26. In Section 4: Check mark the Long Signal Exit
27. In Section 4: Check mark the Long Price Event Exit
28. In Section 4: Check mark the Long Stochastic Exit
29. In Section 5: Check mark the Short Natural Exit
30. In Section 5: Check mark the Short Signal Exit
31. In Section 5: Check mark the Short Price Event Exit
32. In Section 5: Check mark the Short Stochastic Exit
33. In Section 6: Input 120 Rise Event NetChg
34. In Section 6: Input 1 Rise Event ROC
35. In Section 6: Input 5 Min Above Zero ZScore
36. In Section 6: Input 120 Fall Event NetChg
37. In Section 6: Input 1 Fall Event ROC
38. In Section 6: Input 5 Min Below Zero ZScore
In this configuration we are trading in long only mode and have enabled downward pyramiding. The purple trend line is based on the day (1440) period. The length is set at 90 days so it’s going to take a while for the trend line to alter course should this symbol decide to node dive for a prolonged amount of time. Your trades will still go long under those circumstances. Since downward accumulation is enabled, your position size will grow on the way down.
The performance example is Bitcoin so we assume the trader is buying coins outright. That being the case we don’t need a stop since we will never receive a margin call. New buy signals will be generated when the price exceeds the magnitude and speed defined by the Event Net Change and Rate of Change.
Feel free to PM me with any questions related to this script. Thank you and happy trading!
CFTC RULE 4.41
These results are based on simulated or hypothetical performance results that have certain inherent limitations. Unlike the results shown in an actual performance record, these results do not represent actual trading. Also, because these trades have not actually been executed, these results may have under-or over-compensated for the impact, if any, of certain market factors, such as lack of liquidity. Simulated or hypothetical trading programs in general are also subject to the fact that they are designed with the benefit of hindsight. No representation is being made that any account will or is likely to achieve profits or losses similar to these being shown.