Strength Momentum IndicatorThis indicator is a fork of . It takes it a step further by including RSI and ADX information, which are represented in this indicator as follows:
MOM: The histogram itself is a linear regression curve, by default for the study period the Fibonacci series and exponential moving average were used. You can adjust the settings to your liking.
RSI: Whenever the RSI is outside the normal ranges (which you can adjust in the settings), the bar in the histogram will turn amber to warn you.
ADX: Crosses are drawn along the 0 line to indicate the ADX . Blue means that the ADX is below the trend level (adjustable in the settings), and orange means that it is above that level. Darker colors indicate that the ADX has risen from the previous bar, while lighter colors indicate that it has fallen.
Almost all of the normally adjustable values can be adjusted in the settings for each of the base indicators. Also adjustable:
The RSI alert levels (30 and 70 by default).
The ADX crossover, i.e. the point at which the ADX value is considered to indicate a strong trend (25 by default).
All colors, naturally.
在腳本中搜尋"curve"
Ranging Market Detector [AstrideUnicorn]Determining if the market is in a trend or a range regime is a very complex problem. And knowing the answer can be, in some situations, the real holy grail. If the trader knows when the market is in a range regime, they can avoid overtrading and make moving average crossover strategies more profitable. A regime switch from a trend to a range can be a signal to close open positions. It can also be helpful when trading such instruments as short-term binary options. When the market is ranging directional moves are not expected, and the trader should be careful as opening a position in such conditions is, by some degree, a random outcome game. Range breakouts trading is one more example when knowing the market regime is critical.
We have created an indicator that predicts the current market regime. It smooths the price using the Kalman filter and analyzes the curve's slope. If the absolute value of the slope is low, then the market is in range mode and vice versa. To distinguish between the two regimes, the algorithm compares the absolute value of the slope with its long-term average.
HOW TO USE
The indicator shows the difference between the absolute slope value and its long-term average as a histogram. When a bar of the histogram is higher than the threshold level presented by the red line, the market is in a trending regime. In this regime, the background of the indicator is blue. When the market is in a range regime, the indicator background turns red.
The threshold level helps to control the lag. The greater it is, the more lagging the indicator will be. By default, this value is set to a negative value. It means that the indicator switches from range to trend a little bit earlier than the slope gets higher than the average slope. You can use the value of zero or low negative values to find the optimal tradeoff between the strength of the signals and their lag.
SETTINGS
The indicator has one input parameter called Threshold. It sets the threshold level described above. Its value should be close to zero. The less the value is, the less is the indicator's lag, but at the same time, the less confirmed the regime-switching signals are.
The use cases can be very different. And as the code is open, you can also use the indicator as a building block for your custom trading strategies.
Let us know your thoughts and suggestions!
VertLine on Moonhe sixth Mount type is the Lunarian, so named from the fact that the portion of the hand by which they are identified is the Mount of Luna or, as it is more commonly designated, the Mount of the Moon.
As single signs or in combination, the star, triangle, circle, single vertical line, square, or trident strengthen the Mount of the Moon.
Grilles, crosses, cross-bars, islands, dots, or badly formed stars indicate defects of the Mount, either of health or character.
Color, nails, and other matters detailed in the course of this chapter will determine which (119). The mount of the Moon must be judged both by the strength of its curve outwardly on the percussion of the hand and by the size of the pad it forms on the inside of the palm. If it is seen forming a decided bulge outwardly, call it a well developed Mount (120); if in addition it is exceedingly thick, forming a large pad on the inside of the hand, it must be regarded as a very strong Mount (121); and it the outward protuberance and the thick pad are both unusually large, you have an excessive Lunarian subject (122). In this type vertical lines on the Mount add strength to it and cross lines show defects. If you see a strong vertical line extending the length or nearly so of the Mount, it will indicate and added strength, and a number of vertical lines if lying close together will also increase its power. These lines on a Mount developed at the side, but flat in the palm, will be nearly as powerful as if the Mount showed a medium development inside the palm. If the outward development and the large pad in the palm is seen, which has also a deep, well-cut vertical line or lines, it will show an excessively developed Lunarian reaching to the danger-point of the type.
Mean Reversion Strategy v2 [KL]Description :
This strategy will enter a position when the following conditions are met:
a) Main signal: When source data (ATR) diverts from its moving average value, and
b) Confirmation: If predicted direction of trend is favorable.
Assumptions :
During periods of high price volatility, ATR diverts from its moving average value. Eventually, ATR should revert. But since just knowing the magnitude of increase/decrease of ATR does not indicate a trend signal, we need to introduce a model to predict the current trend.
In short:
• Trend Prediction : This strategy calculates the expected logarithmic return of the security (the "Drift") and considers prices to be moving in uptrend if the drift curve is upward sloping.
• Assessment of ATR diversion : To determine "yes/no" regarding whether ATR at a given point in time has diverted, this script conducts a two-tailed hypothesis test at each candlestick period. The null hypothesis (H0) is that the fast moving average value should equal the slow moving average value (say, denoted as H0: atr14 == atr28; it is assumed that atr28 is more meaningful for the purpose of describing the current trend because it has a larger sample size). Investopedia has an article summarizing this topic .
Exit Condition :
When trailing stop loss hits.
Previous version :
This strategy is based on Version 1 published back in September . This older version considers +/- one standard deviation to be the critical values relative to average ATR when testing whether ATR has diverted from the mean. This does not take Standard Error ("SE") into account. As a result, the threshold is often too wide and it generates too many entry signals.
Volume Difference Delta Cycle OscillatorVolume Difference Delta Cycle Oscillator indicator:
Using the power of my Volume Difference Indicator and standard deviations based on Bollinger Bands and more, we present this wonderful indicator with the following features:
Price Action Histogram: This is the bread and butter of this graph, if the PAH is above 0, this is considered a BULL cycle, and if below 0, this is considered a BEAR cycle. The histogram will move up and down based on the Histagram settings you set in the properties field. Be careful, we advise using default settings.
Custom Overbought & Oversold Lines:mean
These lines can be used to identify when to buy and sell the security, and help you make sense of the action of the histogram. Change the color, size, and linewidth!
These lines are what are used to perform the trades with the strategy as well, so if you change them, they will make an impact on the strategy itself.
EzSpot Background:
Do you want to turn your brain off and just trade when you you're inside an Overbought or Oversold line? Awesome! Turn on EzSpot backgrounds, and when it's green, go long, when it's red go short! Simple as that!
How it works:
By taking the Delta of the Volume Difference Indicator we're able to find the rate of change of the amount of change of volume, allowing us to see changes in volume before price changes. To add onto these, we supercharge it by taking the output of this line as the input source of bollinger bands which we use to output the %B of the Delta of the Volume Difference Indicator.
Separately, we calculate the %B of the current close to use later.
The final step is taking the second %B (which is an indication of where price lies on the curve of historical price data), and from it subtract the first %B, which allows us to visualize the standard deviation of the closing price, minus the standard deviation of Delta of the Volume Difference , which in essence allows us to see when volume changes but price does not and vice versa.
This final output is then plotted along with an over bought and over sold line, which we use to perform our trades on.
Simplified: This indicator shows the cycles of price action - volume based on the rate of the rate of volume changes based on price and the closing price.
Super Simple: Notice when volume increases but price hasn't, and vice versa with this indicator.
taLibrary "ta"
█ OVERVIEW
This library holds technical analysis functions calculating values for which no Pine built-in exists.
Look first. Then leap.
█ FUNCTIONS
cagr(entryTime, entryPrice, exitTime, exitPrice)
It calculates the "Compound Annual Growth Rate" between two points in time. The CAGR is a notional, annualized growth rate that assumes all profits are reinvested. It only takes into account the prices of the two end points — not drawdowns, so it does not calculate risk. It can be used as a yardstick to compare the performance of two instruments. Because it annualizes values, the function requires a minimum of one day between the two end points (annualizing returns over smaller periods of times doesn't produce very meaningful figures).
Parameters:
entryTime : The starting timestamp.
entryPrice : The starting point's price.
exitTime : The ending timestamp.
exitPrice : The ending point's price.
Returns: CAGR in % (50 is 50%). Returns `na` if there is not >=1D between `entryTime` and `exitTime`, or until the two time points have not been reached by the script.
█ v2, Mar. 8, 2022
Added functions `allTimeHigh()` and `allTimeLow()` to find the highest or lowest value of a source from the first historical bar to the current bar. These functions will not look ahead; they will only return new highs/lows on the bar where they occur.
allTimeHigh(src)
Tracks the highest value of `src` from the first historical bar to the current bar.
Parameters:
src : (series int/float) Series to track. Optional. The default is `high`.
Returns: (float) The highest value tracked.
allTimeLow(src)
Tracks the lowest value of `src` from the first historical bar to the current bar.
Parameters:
src : (series int/float) Series to track. Optional. The default is `low`.
Returns: (float) The lowest value tracked.
█ v3, Sept. 27, 2022
This version includes the following new functions:
aroon(length)
Calculates the values of the Aroon indicator.
Parameters:
length (simple int) : (simple int) Number of bars (length).
Returns: ( [float, float ]) A tuple of the Aroon-Up and Aroon-Down values.
coppock(source, longLength, shortLength, smoothLength)
Calculates the value of the Coppock Curve indicator.
Parameters:
source (float) : (series int/float) Series of values to process.
longLength (simple int) : (simple int) Number of bars for the fast ROC value (length).
shortLength (simple int) : (simple int) Number of bars for the slow ROC value (length).
smoothLength (simple int) : (simple int) Number of bars for the weigted moving average value (length).
Returns: (float) The oscillator value.
dema(source, length)
Calculates the value of the Double Exponential Moving Average (DEMA).
Parameters:
source (float) : (series int/float) Series of values to process.
length (simple int) : (simple int) Length for the smoothing parameter calculation.
Returns: (float) The double exponentially weighted moving average of the `source`.
dema2(src, length)
An alternate Double Exponential Moving Average (Dema) function to `dema()`, which allows a "series float" length argument.
Parameters:
src : (series int/float) Series of values to process.
length : (series int/float) Length for the smoothing parameter calculation.
Returns: (float) The double exponentially weighted moving average of the `src`.
dm(length)
Calculates the value of the "Demarker" indicator.
Parameters:
length (simple int) : (simple int) Number of bars (length).
Returns: (float) The oscillator value.
donchian(length)
Calculates the values of a Donchian Channel using `high` and `low` over a given `length`.
Parameters:
length (int) : (series int) Number of bars (length).
Returns: ( [float, float, float ]) A tuple containing the channel high, low, and median, respectively.
ema2(src, length)
An alternate ema function to the `ta.ema()` built-in, which allows a "series float" length argument.
Parameters:
src : (series int/float) Series of values to process.
length : (series int/float) Number of bars (length).
Returns: (float) The exponentially weighted moving average of the `src`.
eom(length, div)
Calculates the value of the Ease of Movement indicator.
Parameters:
length (simple int) : (simple int) Number of bars (length).
div (simple int) : (simple int) Divisor used for normalzing values. Optional. The default is 10000.
Returns: (float) The oscillator value.
frama(source, length)
The Fractal Adaptive Moving Average (FRAMA), developed by John Ehlers, is an adaptive moving average that dynamically adjusts its lookback period based on fractal geometry.
Parameters:
source (float) : (series int/float) Series of values to process.
length (int) : (series int) Number of bars (length).
Returns: (float) The fractal adaptive moving average of the `source`.
ft(source, length)
Calculates the value of the Fisher Transform indicator.
Parameters:
source (float) : (series int/float) Series of values to process.
length (simple int) : (simple int) Number of bars (length).
Returns: (float) The oscillator value.
ht(source)
Calculates the value of the Hilbert Transform indicator.
Parameters:
source (float) : (series int/float) Series of values to process.
Returns: (float) The oscillator value.
ichimoku(conLength, baseLength, senkouLength)
Calculates values of the Ichimoku Cloud indicator, including tenkan, kijun, senkouSpan1, senkouSpan2, and chikou. NOTE: offsets forward or backward can be done using the `offset` argument in `plot()`.
Parameters:
conLength (int) : (series int) Length for the Conversion Line (Tenkan). The default is 9 periods, which returns the mid-point of the 9 period Donchian Channel.
baseLength (int) : (series int) Length for the Base Line (Kijun-sen). The default is 26 periods, which returns the mid-point of the 26 period Donchian Channel.
senkouLength (int) : (series int) Length for the Senkou Span 2 (Leading Span B). The default is 52 periods, which returns the mid-point of the 52 period Donchian Channel.
Returns: ( [float, float, float, float, float ]) A tuple of the Tenkan, Kijun, Senkou Span 1, Senkou Span 2, and Chikou Span values. NOTE: by default, the senkouSpan1 and senkouSpan2 should be plotted 26 periods in the future, and the Chikou Span plotted 26 days in the past.
ift(source)
Calculates the value of the Inverse Fisher Transform indicator.
Parameters:
source (float) : (series int/float) Series of values to process.
Returns: (float) The oscillator value.
kvo(fastLen, slowLen, trigLen)
Calculates the values of the Klinger Volume Oscillator.
Parameters:
fastLen (simple int) : (simple int) Length for the fast moving average smoothing parameter calculation.
slowLen (simple int) : (simple int) Length for the slow moving average smoothing parameter calculation.
trigLen (simple int) : (simple int) Length for the trigger moving average smoothing parameter calculation.
Returns: ( [float, float ]) A tuple of the KVO value, and the trigger value.
pzo(length)
Calculates the value of the Price Zone Oscillator.
Parameters:
length (simple int) : (simple int) Length for the smoothing parameter calculation.
Returns: (float) The oscillator value.
rms(source, length)
Calculates the Root Mean Square of the `source` over the `length`.
Parameters:
source (float) : (series int/float) Series of values to process.
length (int) : (series int) Number of bars (length).
Returns: (float) The RMS value.
rwi(length)
Calculates the values of the Random Walk Index.
Parameters:
length (simple int) : (simple int) Lookback and ATR smoothing parameter length.
Returns: ( [float, float ]) A tuple of the `rwiHigh` and `rwiLow` values.
stc(source, fast, slow, cycle, d1, d2)
Calculates the value of the Schaff Trend Cycle indicator.
Parameters:
source (float) : (series int/float) Series of values to process.
fast (simple int) : (simple int) Length for the MACD fast smoothing parameter calculation.
slow (simple int) : (simple int) Length for the MACD slow smoothing parameter calculation.
cycle (simple int) : (simple int) Number of bars for the Stochastic values (length).
d1 (simple int) : (simple int) Length for the initial %D smoothing parameter calculation.
d2 (simple int) : (simple int) Length for the final %D smoothing parameter calculation.
Returns: (float) The oscillator value.
stochFull(periodK, smoothK, periodD)
Calculates the %K and %D values of the Full Stochastic indicator.
Parameters:
periodK (simple int) : (simple int) Number of bars for Stochastic calculation. (length).
smoothK (simple int) : (simple int) Number of bars for smoothing of the %K value (length).
periodD (simple int) : (simple int) Number of bars for smoothing of the %D value (length).
Returns: ( [float, float ]) A tuple of the slow %K and the %D moving average values.
stochRsi(lengthRsi, periodK, smoothK, periodD, source)
Calculates the %K and %D values of the Stochastic RSI indicator.
Parameters:
lengthRsi (simple int) : (simple int) Length for the RSI smoothing parameter calculation.
periodK (simple int) : (simple int) Number of bars for Stochastic calculation. (length).
smoothK (simple int) : (simple int) Number of bars for smoothing of the %K value (length).
periodD (simple int) : (simple int) Number of bars for smoothing of the %D value (length).
source (float) : (series int/float) Series of values to process. Optional. The default is `close`.
Returns: ( [float, float ]) A tuple of the slow %K and the %D moving average values.
supertrend(factor, atrLength, wicks)
Calculates the values of the SuperTrend indicator with the ability to take candle wicks into account, rather than only the closing price.
Parameters:
factor (float) : (series int/float) Multiplier for the ATR value.
atrLength (simple int) : (simple int) Length for the ATR smoothing parameter calculation.
wicks (simple bool) : (simple bool) Condition to determine whether to take candle wicks into account when reversing trend, or to use the close price. Optional. Default is false.
Returns: ( [float, int ]) A tuple of the superTrend value and trend direction.
szo(source, length)
Calculates the value of the Sentiment Zone Oscillator.
Parameters:
source (float) : (series int/float) Series of values to process.
length (simple int) : (simple int) Length for the smoothing parameter calculation.
Returns: (float) The oscillator value.
t3(source, length, vf)
Calculates the value of the Tilson Moving Average (T3).
Parameters:
source (float) : (series int/float) Series of values to process.
length (simple int) : (simple int) Length for the smoothing parameter calculation.
vf (simple float) : (simple float) Volume factor. Affects the responsiveness.
Returns: (float) The Tilson moving average of the `source`.
t3Alt(source, length, vf)
An alternate Tilson Moving Average (T3) function to `t3()`, which allows a "series float" `length` argument.
Parameters:
source (float) : (series int/float) Series of values to process.
length (float) : (series int/float) Length for the smoothing parameter calculation.
vf (simple float) : (simple float) Volume factor. Affects the responsiveness.
Returns: (float) The Tilson moving average of the `source`.
tema(source, length)
Calculates the value of the Triple Exponential Moving Average (TEMA).
Parameters:
source (float) : (series int/float) Series of values to process.
length (simple int) : (simple int) Length for the smoothing parameter calculation.
Returns: (float) The triple exponentially weighted moving average of the `source`.
tema2(source, length)
An alternate Triple Exponential Moving Average (TEMA) function to `tema()`, which allows a "series float" `length` argument.
Parameters:
source (float) : (series int/float) Series of values to process.
length (float) : (series int/float) Length for the smoothing parameter calculation.
Returns: (float) The triple exponentially weighted moving average of the `source`.
trima(source, length)
Calculates the value of the Triangular Moving Average (TRIMA).
Parameters:
source (float) : (series int/float) Series of values to process.
length (int) : (series int) Number of bars (length).
Returns: (float) The triangular moving average of the `source`.
trima2(src, length)
An alternate Triangular Moving Average (TRIMA) function to `trima()`, which allows a "series int" length argument.
Parameters:
src : (series int/float) Series of values to process.
length : (series int) Number of bars (length).
Returns: (float) The triangular moving average of the `src`.
trix(source, length, signalLength, exponential)
Calculates the values of the TRIX indicator.
Parameters:
source (float) : (series int/float) Series of values to process.
length (simple int) : (simple int) Length for the smoothing parameter calculation.
signalLength (simple int) : (simple int) Length for smoothing the signal line.
exponential (simple bool) : (simple bool) Condition to determine whether exponential or simple smoothing is used. Optional. The default is `true` (exponential smoothing).
Returns: ( [float, float, float ]) A tuple of the TRIX value, the signal value, and the histogram.
uo(fastLen, midLen, slowLen)
Calculates the value of the Ultimate Oscillator.
Parameters:
fastLen (simple int) : (series int) Number of bars for the fast smoothing average (length).
midLen (simple int) : (series int) Number of bars for the middle smoothing average (length).
slowLen (simple int) : (series int) Number of bars for the slow smoothing average (length).
Returns: (float) The oscillator value.
vhf(source, length)
Calculates the value of the Vertical Horizontal Filter.
Parameters:
source (float) : (series int/float) Series of values to process.
length (simple int) : (simple int) Number of bars (length).
Returns: (float) The oscillator value.
vi(length)
Calculates the values of the Vortex Indicator.
Parameters:
length (simple int) : (simple int) Number of bars (length).
Returns: ( [float, float ]) A tuple of the viPlus and viMinus values.
vzo(length)
Calculates the value of the Volume Zone Oscillator.
Parameters:
length (simple int) : (simple int) Length for the smoothing parameter calculation.
Returns: (float) The oscillator value.
williamsFractal(period)
Detects Williams Fractals.
Parameters:
period (int) : (series int) Number of bars (length).
Returns: ( [bool, bool ]) A tuple of an up fractal and down fractal. Variables are true when detected.
wpo(length)
Calculates the value of the Wave Period Oscillator.
Parameters:
length (simple int) : (simple int) Length for the smoothing parameter calculation.
Returns: (float) The oscillator value.
█ v7, Nov. 2, 2023
This version includes the following new and updated functions:
atr2(length)
An alternate ATR function to the `ta.atr()` built-in, which allows a "series float" `length` argument.
Parameters:
length (float) : (series int/float) Length for the smoothing parameter calculation.
Returns: (float) The ATR value.
changePercent(newValue, oldValue)
Calculates the percentage difference between two distinct values.
Parameters:
newValue (float) : (series int/float) The current value.
oldValue (float) : (series int/float) The previous value.
Returns: (float) The percentage change from the `oldValue` to the `newValue`.
donchian(length)
Calculates the values of a Donchian Channel using `high` and `low` over a given `length`.
Parameters:
length (int) : (series int) Number of bars (length).
Returns: ( [float, float, float ]) A tuple containing the channel high, low, and median, respectively.
highestSince(cond, source)
Tracks the highest value of a series since the last occurrence of a condition.
Parameters:
cond (bool) : (series bool) A condition which, when `true`, resets the tracking of the highest `source`.
source (float) : (series int/float) Series of values to process. Optional. The default is `high`.
Returns: (float) The highest `source` value since the last time the `cond` was `true`.
lowestSince(cond, source)
Tracks the lowest value of a series since the last occurrence of a condition.
Parameters:
cond (bool) : (series bool) A condition which, when `true`, resets the tracking of the lowest `source`.
source (float) : (series int/float) Series of values to process. Optional. The default is `low`.
Returns: (float) The lowest `source` value since the last time the `cond` was `true`.
relativeVolume(length, anchorTimeframe, isCumulative, adjustRealtime)
Calculates the volume since the last change in the time value from the `anchorTimeframe`, the historical average volume using bars from past periods that have the same relative time offset as the current bar from the start of its period, and the ratio of these volumes. The volume values are cumulative by default, but can be adjusted to non-accumulated with the `isCumulative` parameter.
Parameters:
length (simple int) : (simple int) The number of periods to use for the historical average calculation.
anchorTimeframe (simple string) : (simple string) The anchor timeframe used in the calculation. Optional. Default is "D".
isCumulative (simple bool) : (simple bool) If `true`, the volume values will be accumulated since the start of the last `anchorTimeframe`. If `false`, values will be used without accumulation. Optional. The default is `true`.
adjustRealtime (simple bool) : (simple bool) If `true`, estimates the cumulative value on unclosed bars based on the data since the last `anchor` condition. Optional. The default is `false`.
Returns: ( [float, float, float ]) A tuple of three float values. The first element is the current volume. The second is the average of volumes at equivalent time offsets from past anchors over the specified number of periods. The third is the ratio of the current volume to the historical average volume.
rma2(source, length)
An alternate RMA function to the `ta.rma()` built-in, which allows a "series float" `length` argument.
Parameters:
source (float) : (series int/float) Series of values to process.
length (float) : (series int/float) Length for the smoothing parameter calculation.
Returns: (float) The rolling moving average of the `source`.
supertrend2(factor, atrLength, wicks)
An alternate SuperTrend function to `supertrend()`, which allows a "series float" `atrLength` argument.
Parameters:
factor (float) : (series int/float) Multiplier for the ATR value.
atrLength (float) : (series int/float) Length for the ATR smoothing parameter calculation.
wicks (simple bool) : (simple bool) Condition to determine whether to take candle wicks into account when reversing trend, or to use the close price. Optional. Default is `false`.
Returns: ( [float, int ]) A tuple of the superTrend value and trend direction.
vStop(source, atrLength, atrFactor)
Calculates an ATR-based stop value that trails behind the `source`. Can serve as a possible stop-loss guide and trend identifier.
Parameters:
source (float) : (series int/float) Series of values that the stop trails behind.
atrLength (simple int) : (simple int) Length for the ATR smoothing parameter calculation.
atrFactor (float) : (series int/float) The multiplier of the ATR value. Affects the maximum distance between the stop and the `source` value. A value of 1 means the maximum distance is 100% of the ATR value. Optional. The default is 1.
Returns: ( [float, bool ]) A tuple of the volatility stop value and the trend direction as a "bool".
vStop2(source, atrLength, atrFactor)
An alternate Volatility Stop function to `vStop()`, which allows a "series float" `atrLength` argument.
Parameters:
source (float) : (series int/float) Series of values that the stop trails behind.
atrLength (float) : (series int/float) Length for the ATR smoothing parameter calculation.
atrFactor (float) : (series int/float) The multiplier of the ATR value. Affects the maximum distance between the stop and the `source` value. A value of 1 means the maximum distance is 100% of the ATR value. Optional. The default is 1.
Returns: ( [float, bool ]) A tuple of the volatility stop value and the trend direction as a "bool".
Removed Functions:
allTimeHigh(src)
Tracks the highest value of `src` from the first historical bar to the current bar.
allTimeLow(src)
Tracks the lowest value of `src` from the first historical bar to the current bar.
trima2(src, length)
An alternate Triangular Moving Average (TRIMA) function to `trima()`, which allows a
"series int" length argument.
MACD Alert [All MA in one] [Smart Crypto Trade (SCT)]This code is a gift from "Smart Crypto Trade (SCT)" group
MACD indicator contains 3 EMA, I think one of the best usage of MACD is trend detection and divergences.
In our indicator, you can select the type of Moving averages that used in macd.
You can using "MACD" based on several types of moving averages including:
Exponential Moving Average ( EMA )
Volume-Weighted Moving Average ( VWMA )
Simple Moving Average ( SMA )
Weighted Moving Average ( WMA )
Exponentially Weighted Moving Average (RMA) that used in RSI
Smoothed Moving Average ( SMMA )
Arnaud Legoux Moving Average ( ALMA )
Double EMA ( DEMA )
Double SMA (DSMA)
Double WMA (DWMA)
Double RMA (DRMA)
Triple EMA ( TEMA )
Triple SMA (TSMA)
Triple WMA (TWMA)
Triple RMA (TRMA)
Linear regression curve Moving Average ( LSMA )
Variable Index Dynamic Average ( VIDYA )
Fractal Adaptive Moving Average ( FRAMA )
In other words we tried to collect all the most popular MAs in our MACD indicator.
In addition, you can use four types of alert or alarm conditions for detection LONG or SHORT positions and trends. For this, you must set an alert in alert tab and set the condition based on four defaults conditions.
Enjoy
Kaufman's Efficiency Ratio IndicatorKaufman Efficiency Ratio ("ER")
This ratio was developed by a systematic trader by the name of Perry J. Kaufman.
Formula
The formula is:
= A divided by B ,
where:
A = Current closing price minus the closing price at the start of the lookback period
B = Sum of differences between closing prices (in absolute terms) of consecutive bars over the lookback period
Under default settings, closing price is used as source data, and the ER value is expressed in +ve/-ve signs (non-absolute), representing whether price had moved upward/downward over the period.
What this script does:
This script plots out ER and fills in the area beneath the curve with colors according to whether ER is classified as low/medium/high. There are two modes:
- Dynamic mode: low/medium/high is determined by ER value relative to it's mean +/- 'multiple' of standard deviation
- Static mode: low/medium/high is based on user defined thresholds
Applications:
- Can be used for identifying bullish moves in instances where price had already gone up steeply, but rests. If speculating that price will continually rise, then can enter during resting phase.
- Can be used to filter out choppy entry signals produced by existing trade strategies. If trying to enter during periods of consolidation, then ER should ideally be low. On the other hand, for mean reversion strategies, ER should be expected high.
Vector2OperationsLibrary "Vector2Operations"
functions to handle vector2 operations.
math_fractional(_value) computes the fractional part of the argument value.
Parameters:
_value : float, value to compute.
Returns: float, fractional part.
atan2(_a) Approximation to atan2 calculation, arc tangent of y/ x in the range radians.
Parameters:
_a : vector2 in the form of a array .
Returns: float, value with angle in radians. (negative if quadrante 3 or 4)
set_x(_a, _value) Set the x value of vector _a.
Parameters:
_a : vector2 in the form of a array .
_value : value to replace x value of _a.
Returns: void Modifies vector _a.
set_y(_a, _value) Set the y value of vector _a.
Parameters:
_a : vector in the form of a array .
_value : value to replace y value of _a.
Returns: void Modifies vector _a.
get_x(_a) Get the x value of vector _a.
Parameters:
_a : vector in the form of a array .
Returns: float, x value of the vector _a.
get_y(_a) Get the y value of vector _a.
Parameters:
_a : vector in the form of a array .
Returns: float, y value of the vector _a.
get_xy(_a) Return the tuple of vector _a in the form
Parameters:
_a : vector2 in the form of a array .
Returns:
length_squared(_a) Length of vector _a in the form. , for comparing vectors this is computationaly lighter.
Parameters:
_a : vector in the form of a array .
Returns: float, squared length of vector.
length(_a) Magnitude of vector _a in the form.
Parameters:
_a : vector in the form of a array .
Returns: float, Squared length of vector.
vmin(_a) Lowest element of vector.
Parameters:
_a : vector in the form of a array .
Returns: float
vmax(_a) Highest element of vector.
Parameters:
_a : vector in the form of a array .
Returns: float
from(_value) Assigns value to a new vector x,y elements.
Parameters:
_value : x and y value of the vector. optional.
Returns: float vector.
new(_x, _y) Creates a prototype array to handle vectors.
Parameters:
_x : float, x value of the vector. optional.
_y : float, y number of the vector. optional.
Returns: float vector.
down() Vector in the form . Returns: float vector.
left() Vector in the form . Returns: float vector.
one() Vector in the form . Returns: float vector.
right() Vector in the form . Returns: float vector
up() Vector in the form . Returns: float vector
zero() Vector in the form . Returns: float vector
add(_a, _b) Adds vector _b to _a, in the form
.
Parameters:
_a : vector in the form of a array .
_b : vector in the form of a array .
Returns:
subtract(_a, _b) Subtract vector _b from _a, in the form
.
Parameters:
_a : vector in the form of a array .
_b : vector in the form of a array .
Returns:
multiply(_a, _b) Multiply vector _a with _b, in the form
Parameters:
_a : vector in the form of a array .
_b : vector in the form of a array .
Returns:
divide(_a, _b) Divide vector _a with _b, in the form
Parameters:
_a : vector in the form of a array .
_b : vector in the form of a array .
Returns:
negate(_a) Negative of vector _a, in the form
Parameters:
_a : vector in the form of a array .
Returns:
perp(_a) Perpendicular Vector of _a.
Parameters:
_a : vector in the form of a array .
Returns:
vfloor(_a) Compute the floor of argument vector _a.
Parameters:
_a : vector in the form of a array .
Returns:
fractional(_a) Compute the fractional part of the elements from vector _a.
Parameters:
_a : vector in the form of a array .
Returns:
vsin(_a) Compute the sine of argument vector _a.
Parameters:
_a : vector in the form of a array .
Returns:
equals(_a, _b) Compares two vectors
Parameters:
_a : vector in the form of a array .
_b : vector in the form of a array .
Returns: boolean value representing the equality.
dot(_a, _b) Dot product of 2 vectors, in the form
Parameters:
_a : vector in the form of a array .
_b : vector in the form of a array .
Returns: float
cross_product(_a, _b) cross product of 2 vectors, in the form
Parameters:
_a : vector in the form of a array .
_b : vector in the form of a array .
Returns: float
scale(_a, _scalar) Multiply a vector by a scalar.
Parameters:
_a : vector in the form of a array .
_scalar : value to multiply vector elements by.
Returns: float vector
normalize(_a) Vector _a normalized with a magnitude of 1, in the form.
Parameters:
_a : vector in the form of a array .
Returns: float vector
rescale(_a) Rescale a vector to a new Magnitude.
Parameters:
_a : vector in the form of a array .
Returns:
rotate(_a, _radians) Rotates vector _a by angle value
Parameters:
_a : vector in the form of a array .
_radians : Angle value.
Returns:
rotate_degree(_a, _degree) Rotates vector _a by angle value
Parameters:
_a : vector in the form of a array .
_degree : Angle value.
Returns:
rotate_around(_center, _target, _degree) Rotates vector _target around _origin by angle value
Parameters:
_center : vector in the form of a array .
_target : vector in the form of a array .
_degree : Angle value.
Returns:
vceil(_a, _digits) Ceils vector _a
Parameters:
_a : vector in the form of a array .
_digits : digits to use as ceiling.
Returns:
vpow(_a) Raise both vector elements by a exponent.
Parameters:
_a : vector in the form of a array .
Returns:
distance(_a, _b) vector distance between 2 vectors.
Parameters:
_a : vector in the form of a array .
_b : vector in the form of a array .
Returns: float, distance.
project(_a, _axis) Project a vector onto another.
Parameters:
_a : vector in the form of a array .
_axis : float vector2
Returns: float vector
projectN(_a, _axis) Project a vector onto a vector of unit length.
Parameters:
_a : vector in the form of a array .
_axis : vector in the form of a array .
Returns: float vector
reflect(_a, _b) Reflect a vector on another.
Parameters:
_a : vector in the form of a array .
_b : vector in the form of a array .
Returns: float vector
reflectN(_a, _b) Reflect a vector to a arbitrary axis.
Parameters:
_a : vector in the form of a array .
_b : vector in the form of a array .
Returns: float vector
angle(_a) Angle in radians of a vector.
Parameters:
_a : vector in the form of a array .
Returns: float
angle_unsigned(_a, _b) unsigned degree angle between 0 and +180 by given two vectors.
Parameters:
_a : vector in the form of a array .
_b : vector in the form of a array .
Returns: float
angle_signed(_a, _b) Signed degree angle between -180 and +180 by given two vectors.
Parameters:
_a : vector in the form of a array .
_b : vector in the form of a array .
Returns: float
angle_360(_a, _b) Degree angle between 0 and 360 by given two vectors
Parameters:
_a : vector in the form of a array .
_b : vector in the form of a array .
Returns: float
clamp(_a, _vmin, _vmax) Restricts a vector between a min and max value.
Parameters:
_a : vector in the form of a array .
_vmin : vector in the form of a array .
_vmax : vector in the form of a array .
Returns: float vector
lerp(_a, _b, _rate_of_move) Linearly interpolates between vectors a and b by _rate_of_move.
Parameters:
_a : vector in the form of a array .
_b : vector in the form of a array .
_rate_of_move : float value between (a:-infinity -> b:1.0), negative values will move away from b.
Returns: vector in the form of a array
herp(_a, _b, _rate_of_move) Hermite curve interpolation between vectors a and b by _rate_of_move.
Parameters:
_a : vector in the form of a array .
_b : vector in the form of a array .
_rate_of_move : float value between (a-infinity -> b1.0), negative values will move away from b.
Returns: vector in the form of a array
area_triangle(_a, _b, _c) Find the area in a triangle of vectors.
Parameters:
_a : vector in the form of a array .
_b : vector in the form of a array .
_c : vector in the form of a array .
Returns: float
to_string(_a) Converts vector _a to a string format, in the form "(x, y)"
Parameters:
_a : vector in the form of a array .
Returns: string in "(x, y)" format
vrandom(_max) 2D random value
Parameters:
_max : float vector, vector upper bound
Returns: vector in the form of a array
noise(_a) 2D Noise based on Morgan McGuire @morgan3d
thebookofshaders.com
www.shadertoy.com
Parameters:
_a : vector in the form of a array .
Returns: vector in the form of a array
array_new(_size, _initial_vector) Prototype to initialize a array of vectors.
Parameters:
_size : size of the array.
_initial_vector : vector to be used as default value, in the form of array .
Returns: _vector_array complex Array in the form of a array
array_size(_id) number of vector elements in array.
Parameters:
_id : ID of the array.
Returns: int
array_get(_id, _index) Get the vector in a array, in the form of a array
Parameters:
_id : ID of the array.
_index : Index of the vector.
Returns: vector in the form of a array
array_set(_id, _index, _a) Sets the values vector in a array.
Parameters:
_id : ID of the array.
_index : Index of the vector.
_a : vector, in the form .
Returns: Void, updates array _id.
array_push(_id, _a) inserts the vector at the end of array.
Parameters:
_id : ID of the array.
_a : vector, in the form .
Returns: Void, updates array _id.
array_unshift(_id, _a) inserts the vector at the begining of array.
Parameters:
_id : ID of the array.
_a : vector, in the form .
Returns: Void, updates array _id.
array_pop(_id, _a) removes the last vector of array and returns it.
Parameters:
_id : ID of the array.
_a : vector, in the form .
Returns: vector2, updates array _id.
array_shift(_id, _a) removes the first vector of array and returns it.
Parameters:
_id : ID of the array.
_a : vector, in the form .
Returns: vector2, updates array _id.
array_sum(_id) Total sum of all vectors.
Parameters:
_id : ID of the array.
Returns: vector in the form of a array
array_center(_id) Finds the vector center of the array.
Parameters:
_id : ID of the array.
Returns: vector in the form of a array
array_rotate_points(_id) Rotate Array vectors around origin vector by a angle.
Parameters:
_id : ID of the array.
Returns: rotated points array.
array_scale_points(_id) Scale Array vectors based on a origin vector perspective.
Parameters:
_id : ID of the array.
Returns: rotated points array.
array_tostring(_id, _separator) Reads a array of vectors into a string, of the form " ""
Parameters:
_id : ID of the array.
_separator : string separator for cell splitting.
Returns: string Translated complex array into string.
line_new(_a, _b) 2 vector line in the form.
Parameters:
_a : vector, in the form .
_b : vector, in the form .
Returns:
line_get_a(_line) Start vector of a line.
Parameters:
_line : vector4, in the form .
Returns: float vector2
line_get_b(_line) End vector of a line.
Parameters:
_line : vector4, in the form .
Returns: float vector2
line_intersect(_line1, _line2) Find the intersection vector of 2 lines.
Parameters:
_line1 : line of 2 vectors in the form of a array .
_line2 : line of 2 vectors in the form of a array .
Returns: vector in the form of a array .
draw_line(_line, _xloc, _extend, _color, _style, _width) Draws a line using line prototype.
Parameters:
_line : vector4, in the form .
_xloc : string
_extend : string
_color : color
_style : string
_width : int
Returns: draw line object
draw_triangle(_v1, _v2, _v3, _xloc, _color, _style, _width) Draws a triangle using line prototype.
Parameters:
_v1 : vector4, in the form .
_v2 : vector4, in the form .
_v3 : vector4, in the form .
_xloc : string
_color : color
_style : string
_width : int
Returns: tuple with 3 line objects.
draw_rect(_v1, _size, _angle, _xloc, _color, _style, _width) Draws a square using vector2 line prototype.
Parameters:
_v1 : vector4, in the form .
_size : float
_angle : float
_xloc : string
_color : color
_style : string
_width : int
Returns: tuple with 3 line objects.
Nifty yield curveREAL-CASE SCENARIO:-
IN10Y(10yr yield t- bill) are govt. backed bonds provide basic interest or coupon rate. If the coupon rate falls below (yield =(1/price) the coupon rates of 3 month bond IN03MY(3m yield t- bill), investors are pessimistic about future growth of the economy.
This pessimistic behavior can be seen in the graph when change in background color.
While optimistic behavior scenario when investors no longer interested in long-term bonds and dumping 10Y T-bills causing yields to raise above short term 3m T-bill .
[KL] Mean Reversion (ATR) StrategyThis strategy will enter into a position when price volatility is relative high, betting that price will subsequently trend in a favourable direction.
Hypothesis : During periods of high price volatility, ATR will divert from its moving average by at least +/- one standard deviation. Eventually, ATR will revert back to the mean. However, just knowing the magnitude of increase/decrease of ATR does not give a trend signal, so we need to introduce a model in this script to predict whether the next bars will be up/down.
Trend Prediction : This strategy calculates the expected logarithmic return of the security (the "Drift") and considers prices to be moving in uptrend if the drift curve is upward sloping or if the drift value is positive.
Entry Conditions : Long position is entered when:
(a) ATR has diverted from mean by one standard deviation, and
(b) trend is predicted to move in our favor.
Exit Condition : When trailing stop loss is hit.
Results from backtesting against VOO (1H timeframe):
- approx 46% win rate over 491 trades, on average holding for 20 hours per trade
- price at the beginning of backtest (Jan. 2015) was $187.52, giving holding period return of ~120% had we not sold in between ("HPR of HODL'ing")
- this strategy gained ~159%, exceeding ~120% HPR of HODL'ing
QuantAnna: Relative Strength Plus (RS+)NSE:TATAMOTORS
Relative strength indicator which shows ratio between two stocks/assets .. usually between stock & its indices
features of indicator is as following.
1. Values oscillates around zero, it is bullish when above zero & bearish when below zero.
1. Weighted smoothing which removes unwanted whipsaws but keeps trend curve intact.
3. In-Built list of Nifty sector indices to show stocks comparison with its sector
please do send your feedback and suggestions.
JCipher Stochastic RSI Crossover AlertsCustom indicator to plot the stochastic RSI and print a highlighting bar to indicate when the fast signal curve crosses the slower one from underneath (crossover), to indicate a bullish trend change.
TradePro Parabolic SAR BackgroundTradePro Parabolic SAR Background
This indicator is a small tribute to youtuber TradePro
The operation is simple. It is the same Parabolic SAR indicator with its default configuration, but in background format. It is a new way to visualize the same information, more understandably. It is in itself a complete trading system, it can be used in conjunction with the traditional Parabolic SAR to locate the stop loss.
Parabolic SAR
In stock and securities market technical analysis, parabolic SAR (parabolic stop and reverse) is a method devised by J. Welles Wilder, Jr., to find potential reversals in the market price direction of traded goods such as securities or currency exchanges such as forex. It is a trend-following (lagging) indicator and may be used to set a trailing stop loss or determine entry or exit points based on prices tending to stay within a parabolic curve during a strong trend.
Similar to option theory's concept of time decay, the concept draws on the idea that "time is the enemy". Thus, unless a security can continue to generate more profits over time, it should be liquidated. The indicator generally works only in trending markets, and creates "whipsaws" during ranging or, sideways phases. Therefore, Wilder recommends first establishing the direction or change in direction of the trend through the use of parabolic SAR, and then using a different indicator such as the Average Directional Index to determine the strength of the trend.
A parabola below the price is generally bullish, while a parabola above is generally bearish. A parabola below the price may be used as support, whereas a parabola above the price may represent resistance.
[blackcat] L2 Sine-Weighted Moving Average (SWMA)Level: 2
Background
Invented by Patrick Lafferty in 1999, a Sine Weighted Moving Average (SWMA) takes its weighting from the first half of a Sine wave cycle and accordingly, the most weighting is given to the data in the middle of the data set. It is therefore very similar to the Triangular Moving Average.
Function
A sine weighted moving average (Sine-MA) applies weights to each bar in the shape of the bulge in a sine curve from 0 to pi. For an N-bar average the weightings are
/ 1 \ / 2 \ / N \
sin | --- * pi |, sin | --- * pi |, ..., sin | --- * pi |
\ N+1 / \ N+1 / \ N+1 /
The effect is that middle prices have the greatest weight (much like the TMA, Triangular Moving Average). A Sine Weighted Moving Average ( Sine WMA ) takes its weighting from the first half of a Sine wave cycle and accordingly, the most weighting is given to the data in the middle of the data set.
Key Signal
SWMA(FastLength) --> SWMA Fast Line.
SWMA(SlowLength) --> SWMA Slow Line.
Remarks
This is a Level 2 free and open source indicator.
Feedbacks are appreciated.
Multiple Regression Polynomial ForecastEXPERIMENTAL:
Forecasting using a polynomial regression over the estimates of multiple linear regression forecasts.
note: on low data the estimates are skewd away of initial value, i added the i_min_estimate option in to try curve this issue with limited success "o_o.
Financial Astrology Moon SpeedThe acceleration of the Moon seems to be important in determining the periods of increasing volatility, when the speed is accelerating we can note that the price range of the candles during the acceleration period is greater than the candles during the deceleration period. In other words, the speed increase produce stronger effect in the price action and is expected that Moon aspects during speed acceleration are more intense than the ones formed during deceleration.
In order to evaluate this astro trading pattern, observe when Moon touch the speed minima around 11.5 degrees per day, at that point the speed curve start to increase until it reach the maxima around 15 degrees per day, within this period the candles price range seems to be more intense.
Note: The Moon speed indicator is based on an ephemeris array that covers years 2010 to 2030, prior or after this years the speed is not available, this daily ephemeris are based on UTC time so in order to align properly with the price bars times you should set UTC as your chart timezone.
[blackcat] L1 Mel Widner Rainbow ChartNOTE: Because the originally released script failed to comply with the House Rule in the description, it was banned. After revising and reviewing the description, it is republished again. Please forgive the inconvenience caused.
Level: 1
Background
The Rainbow Charts indicator is a technical analysis tool that follows trend. It helps traders to visualize a full spectrum of trends in the market. Mel Widner developed the indicator and elaborated it in the 1997 issue of Technical Analysis of Stocks and Commodities magazine. It uses 10 simple moving averages and hence, it is a very interesting take on a simple moving average.
Function
The basis of the Rainbow Charts indicator are 10 moving averages. The first Rainbow Moving Average is a 2-period simple moving average. It applies recursive smoothing to this first SMA. The first moving average is the base of nine other simple Rainbow Moving Averages of different lengths. Each SMA bases on the previous SMA. The application of the recursive smoothing enables the indicator to create a full spectrum of the current trends in the market. As we know that the financial markets are full of wonders and surprises and we have an indicator that also surprises us. Yes, it is none other than the Rainbow Charts indicator that presents information on the charts in the form of a rainbow. That is the reason that it is known as the Rainbow Charts indicator.
The interpretation of the Rainbow Charts indicator is quite straightforward. The Rainbow Moving Average with the least recursive smoothing stays at the very top of the Rainbow during a bullish trend in the market. Conversely, the moving average with the most recursive smoothing stays at the bottom of the Rainbow.
On the other hand, the positions of the least and the most smoothed moving averages reverses during a bearish trend in the market. Now the least smoothed moving average stays at the bottom while the most smoothed moving average stays at the top of the Rainbow.
The Rainbow Charts indicator’s moving averages track the uptrend or downtrend in the market. The moving averages track the trend as it progresses and cross each other in a sequential order. The distancing of the price from the Rainbow indicates the continuation of the current market trend. Conversely, if the price moves closer to the Rainbow, it suggests that a potential trend reversal is imminent.
The use of the indicator is also quite simple. Traders should look for initiating a buy position as soon as a strong positive move starts. Similarly, they should look for opening a sell position at the very beginning of a strong negative trend. It is important to note that the angle of the moving averages helps to identify the strength of a trend. The steeper curve suggests a stronger trend and vice versa.
Traders can also use the tool in combination with other technical analysis tools as a trend-following indicator. Traders can enter a buy position when indicators suggest a strong bullish trend. They can initiate a sell position when indicators indicate a bearish trend. Technical analysts and experts always suggest to use the Rainbow Charts indicator in combination with other technical analysis tools for successful trading.
Key Signal
Plot a1~c4 --> 10 Rainbow Moving Averages.
Remarks
This is a Level 1 free and open source indicator.
Feedbacks are appreciated.
MashumeHullTV█ OVERVIEW
This plots the Hull Moving Average Turning Points and Concavity
with the addition of colored segments representing concavity and turning points: maxima, minima and inflection.
a fast way to determine the trend direction and possible reversals based on concavity of the trend
Dark Green: Concave Up but HMA decreasing. The 'mood' has changed and the declining trend of the HMA is slowing. Possible trend change to Uptrend soon
Light Green: Concave up and HMA increasing. Price is increasing, and since the curve is still concave up, it is accelerating upward. Uptrend
Orange: Concavity is now downward, and though price is still increasing, the rate has slowed, perhaps the mood has become less enthusiastic. Possible trend change to Downtrend soon
Red: Concave down and HMA decreasing. Downtrend
Buy signals generated when Hull turns from Dark Green -> Light Green
Sell signals generated when Hull turns from Orange -> Red
To best determine if this is a entry point or a trend reversal, it is recommended to use in conjunction with the QQEMoMoTV indicator
█ FEATURES
Calculations
Calculates the concavity of the Hull Moving Average comparing the Hull concavity of the current bar to the previous bar and displays the concavity in the form of 4 different colors.
Note: may cause repainting, so recommended to use with another indicator such as the QQEMoMoTV indicator to confirm signals.
Calculates divergence between the calculated HMA and the actual price and displays this in the Divergence Label.
Calculates the local minima, maxima and inflection points with the ability to display these as auto support/resistance lines.
Inputs
You can use the script's inputs to configure:
• Calculation Source (default HL2)
• HMA Length (default 21)
• Lookback (default 2)
• Whether to show Auto Support/Resist Lines
• Whether to show Buy/Sell Arrows
• Whether to show Divergence Label
• Whether to extend Local Auto Support/Resist Lines
Alerts
Buy Signal alert based on HMA crossing above MA_Min/Hull Support, when Hull turns from Dark Green -> Light Green, Bullish
Sell Signal alert based on HMA crossing below MA_Max/Hull Resistance, when Hull turns from Orange -> Red, Bearish
Experimental support for applying the indicator to higher time frames
eg. charting the hourly MashumeHull indicator on 15 min chart. See the commented code to access this feature
█ CREDITS
Original Author: Seth Urion (Mashume)
Feature upgrades and usage: Xiuying
Converted to Tradingview by: Machdragon
Inverse BandsI'm very new to trading. I've been toying with moving averages to trigger swing trades and wanted an indicator that would swell when price moves sideways and squeeze when price is trending.
So this is the inverse of the popular Bollinger Bands indicator. It makes a very easy identifier for price breakout when paired with your favorite fast moving average. When MA falls outside the bands, it indicates an emerging trend. Still requires some curve fitting, but it is a work in progress.
I hope this isn't a direct copy of something I am not aware of.
Moving Average BandsUse this script to find buy and sell zones for BTC based on momentum of the move relative to the average asset price over a given period. The script plots a series of offset bands above and below the Simple Moving Average. When price crosses another band further from the SMA, the background is rendered brighter. The brighter the background, the stronger the buy and sell signal is, as the expectation is that price wants to return to the SMA. Settings are adjustable to fine tune to various time frames and assets. Good settings for BTC Daily are length 30, layers at 10, 20, 30, and 40.
On 1H BTC/USD I use length 200, layers at 5, 10, 15, 20 to find decent swing trading opportunities.
On BTC/USD 1D chart, combine with Bitcoin Logarithmic Growth Curve from @mabonyi (original by @quantadelic )for confluence of very reliable signals.
SMA&BOLL脚本用来将sma和布林带统一呈现, 方便及时捕捉价格的走势与波动区间. 只要简单地修改SMA的两条线, 布林带的中间线同时作为SMA的第三条长周期参考线也作为布林带的基础计算曲线, 一线双用节省资源.
The script is used to present the sma and Bollinger bands in a unified manner, which is convenient to capture the price trend and fluctuation range in time. Just simply modify the two lines of the SMA, and the middle line of the Bollinger bands serves as the third long-period reference line of the SMA and also serves as the Bollinger bands The basic calculation curve, one-line dual-use saves resources.
Bollinger DCA v1Simple "benchmark" strategy for ETFs, Stocks and Crypto! Super-easy to implement for beginners, a BTD (buy-the-dip) strategy means that you buy a fixed amount of an ETF / Stock / Crypto every time it falls. For instance, to BTD the S&P 500 ( SPY ), you could purchase $500 USD each time the price falls. Assuming the macro-economic conditions of the underlying country remain favourable, BTD strategies will result in capital gains over a period of many years, e.g. 10 years.
Recommended Chart Settings:
Asset Class: ETF / Stocks / Crypto
Time Frame: H1 (Hourly) / D1 (Daily) / W1 (Weekly) / M1 (Monthly)
Necessary ETF Macro Conditions:
1. Country must have healthy demographics, good ratio of young > old
2. Country population must be increasing
3. Country must be experiencing price-inflation
Necessary Stock Conditions:
1. Growing revenue
2. Growing net income
3. Consistent net margins
4. Higher gross/net profit margin compared to its peers in the industry
5. Growing share holders equity
6. Current ratios > 1
7. Debt to equity ratio (compare to peers )
8. Debt servicing ratio < 30%
9. Wide economic moat
10. Products and services used daily, and will stay relevant for at least 1 decade
Necessary Crypto Conditions:
1. Honest founders
2. Competent technical co-founders
3. Fair or non-existent pre-mine
4. Solid marketing and PR
5. Legitimate use-cases / adoption
Default Robot Settings:
Contribution (USD): $500
When: Dips below lower Bollinger Band
*Robot buys $500 worth of ETF , Stock, Crypto, every time price falls below the lower Bollinger Band
*Equity curve can be seen from the bottom panel*
Risk Warning:
This strategy is low-risk, however it assumes you have a long time horizon of at least 5 to 10 years. The longer your holding-period, the better your returns. The only thing the user has to keep-in-mind are the macro-economic conditions as stated above. If unsure, please stick to ETFs rather than buying individual stocks or cryptocurrencies.