[blackcat] L1 Larry Williams VixFix IndicatorLevel : L1
Larry Williams, had this idea to create a synthetic VIX for more than just the main stock indices. Check out the formula for Williams VixFix:
```
VIX Fix Formula = (Highest(Close, 22) – Low) / (Highest(Close, 22)) * 100
```
What does this even mean? In normal person terms, here's what it's all about:
1. Find the highest close over the last 22 days and subtract today's low (or the current bar).
2. Divide that by the highest close of the past 22 days.
3. Multiply the result by 100 to "normalize" the indicator.
Why 22 days, you ask? That's how long the normal month of trading days is.
So, you see, the formula is pretty chill. It's just a way to measure the price volatility of the last 22 trading days. It's a bit of a lagging indicator, but it gets the job done.
Here my version of this scriptcreates a custom technical indicator called "L1 Larry Williams VixFix" that measures the distance between the highest high and the lowest low of a security's price over a specified period.
The user can adjust the period length and source price used in the VixFix calculation. The period length is set to 22 by default, but can be modified by the user with the "Length" input parameter. The source price is set to "close" by default, meaning it will use the closing price of each bar to calculate the VixFix. However, the user can also choose a different type of price data, such as open, high, or low.
The VixFix is calculated as a percentage of the difference between the highest close and the lowest low over the specified period. This percentage is then multiplied by 100 to create a more readable value.
Finally, the code plots the VixFix line on the chart with a yellow color and a thickness of 2. This allows the user to easily visualize the VixFix value and incorporate it into their trading decisions.
Overall, this script provides a powerful tool for technical analysis that can help traders identify potential trend changes and market reversals.
Komut dosyalarını "摩根纳斯达克100基金风险大吗" için ara
Fib TSIFib TSI = Fibonacci True Strength Index
The Fib TSI indicator uses Fibonacci numbers input for the True Strength Index moving averages. Then it is converted into a stochastic 0-100 scale.
The Fibonacci sequence is the series of numbers where each number is the sum of the two preceding numbers. 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610...
TSI uses moving averages of the underlying momentum of a financial instrument.
Stochastic is calculated by a formula of high and low over a length of time on a scale of 0-100.
How to use Fib TSI:
100 = overbought
0 = oversold
Rising = bullish
Falling = bearish
crossover 50 = bullish
crossunder 50 = bearish
The default input settings are:
2 = Stoch D smoothing
3 = TSI signal
TSI uses 2 moving averages compared with each other.
5 = TSI fastest
TSI uses 2 moving averages compared with each other.
Default value is 3/5.
color = white
8 = TSI fast
TSI uses 2 moving averages compared with each other.
Default value is 5/8.
color = blue
13 = TSI mid
TSI uses 2 moving averages compared with each other.
Default value is 8/13.
color = orange
21 = TSI slow
TSI uses 2 moving averages compared with each other.
Default value is 13/21.
color = purple
34 = TSI slowest
TSI uses 2 moving averages compared with each other.
Default value is 21/34.
color = yellow
55 = Stoch K length
All total / 5 = All TSI
color rising above 50 = bright green
color falling above 50 = mint green
color falling below 50 = bright red
color rising below 50 = pink
Up bullish reversal = green arrow up
bullish trend = green dots
Down bearish reversal = red arrow down
bearish trend = red dots
Horizontal lines:
100
75
50
25
0
2 different visual options example snapshot:
Short Term IndeXThe Short-Term Index (STIX) is a simple market indicator designed to assess short-term overbought or oversold conditions in the stock market. Leveraging a combination of advancing and declining issues, STIX provides valuable insights into market sentiment and potential reversals. To enhance its interpretability and reveal the underlying trend with greater clarity, STIX has been refined through a Heiken-Ashi transformation, ensuring a smoother representation of market dynamics.
Calculation and Methodology:
stix = ta.ema(adv / (adv + dec) * 100, len)
STIX is calculated by dividing the difference between the sum of advancing issues (ADV) by the total number of issues traded (ADV + DEC). This quotient is multiplied by 100 to express the result as a percentage. The STIX index ranges from 0 to 100, where extreme values indicate potential overbought (mainly above 60) or oversold (mainly below 40) market conditions.
Heiken-Ashi Transformation:
By applying a Heiken-Ashi transformation to STIX, the indicator gains improved visual clarity and noise reduction. This transformation enhances the ability to identify trend shifts and potential reversal points, making it an even more valuable tool for traders and investors.
Utility and Use Cases:
-The Short-Term Index (STIX) offers a range of practical applications-
1. Overbought/Oversold Conditions: STIX provides a clear indication of short-term overbought or oversold conditions, helping traders anticipate potential market reversals.
2. Reversal Points: STIX can help pinpoint potential reversal points in short-term market trends, providing traders with opportunities to enter or exit positions.
3. Trend Analysis: By observing STIX values over time, traders can assess the strength and sustainability of short-term trends, aiding in trend-following strategies.
The Short-Term Index (STIX), enhanced by its Heiken-Ashi transformation, equips traders and investors with a tool for assessing short-term market conditions, confirming price movements, and identifying potential reversal points. Its robust methodology and refined presentation contribute to a more comprehensive understanding of short-term market dynamics, enabling traders to make well-informed trading decisions.
See Also:
- Other Market Breadth Indicators-
Strategy - Relative Volume GainersStrategy - Relative Volume Gainers
Overview:
This trading strategy, called "Relative Volume Gainers," is designed for Long Entry opportunities in the stock market. The strategy aims to identify potential trading candidates based on specific technical conditions, including volume, price movements, and indicator alignments.
Strategy Rules:
The strategy is focused solely on Long Entry positions.
The volume for the current trading day must be greater than or equal to the volume of the previous day.
The percentage change in price must be greater than or equal to 2.5%.
The Last Traded Price (LTP) must be greater than or equal to the Exponential Moving Average (EMA) 200.
The Relative Volume for the current trading day (calculated over the last 30 days) must be greater than or equal to the Simple Moving Average (SMA) of Relative Volume over the same 30 days.
The current candle on the chart should be Green or Bullish, indicating positive price movement.
The price difference between bid and ask prices should be kept to a minimum.
It's recommended to also analyze market depth for better insights.
Strategy Requirements:
Add the Exponential Moving Average (EMA) 200 to your trading chart.
This strategy can be applied on charts of any timeframe.
For intraday trading, particularly for early entry, consider using a 1-minute timeframe.
It is advisable to create a screener to identify potential trades in real-time market conditions.
Risk Warning:
Stocks that meet the strategy criteria might exhibit high volatility and a high beta, making them inherently risky to trade. Exercise caution and adhere to predetermined risk management strategies.
Determine your trading quantity based on your entry price and stop loss in order to manage risk effectively.
Quantity Calculation Formula:
Quantity calculation is crucial to manage risk and position sizing. The following formulas can be used based on your trading scenario:
Quantity with Leverage:
Quantity = (((Using Capital / 100) * Risk Percent) / (Entry Price - Stop Loss)) * Leverage
Eg: Quantity = (((10000 / 100) * 0.2) / (405.5 - 398.5)) * 5
Quantity = 14
Risk = Rs.100 (Rs.100 is 1% of Rs.10000. So the risk is 1%, means we lose only Rs.100 when the SL is hit. If SL is increased the Quantity will get reduced to maintain a fixed risk of Rs.100)
Quantity without Leverage:
Quantity = (((Using Capital / 100) * Risk Percent) / (Entry Price - Stop Loss))
Note:
Always stay informed about market conditions and be prepared for potential rapid price movements when trading stocks that meet the strategy criteria. Strictly adhere to your predefined risk management strategy to safeguard your capital.
adaptive_mfi
█ Description
Money flow an indexed value-based price and volume for the specified input length (lookback period). In summary, a momentum indicator that attempt to measure the flow of money (identify buying/selling pressure) through the asset within a specified period of time. MFI will oscillate between 0 to 100, oftentimes comprehend the analysis with oversold (20) or overbought (80) level, and a divergence that spotted to signaling a further change in trend/direction. As similar to many other indicators that use length (commonly a fixed value) as an input parameter, can be optimized by applied an adaptive filter (Ehlers), to solve the measuring cycle period. In this indicator, the adaptive measure of dominant cycle as an input parameter for the lookback period/n, will be applied to the money flow index.
█ Money Flow Index
mfi = 100 - (100/(1 + money_flow_ratio))
where:
n = int(dominant_cycle)
money_flow_ratio = n positive raw_money_flow / n negative raw_money_flow
raw_money_flow = typical_price * volume
typical_price = hlc3
█ Feature
The indicator will have a specified default parameter of: hp_period = 48; source = ohlc4
Horizontal line indicates positive/negative money flow
MFI Color Scheme: Solid; Normalized
CNTLibraryLibrary "CNTLibrary"
Custom Functions To Help Code In Pinescript V5
Coded By Christian Nataliano
First Coded In 10/06/2023
Last Edited In 22/06/2023
Huge Shout Out To © ZenAndTheArtOfTrading and his ZenLibrary V5, Some Of The Custom Functions Were Heavily Inspired By Matt's Work & His Pine Script Mastery Course
Another Shout Out To The TradingView's Team Library ta V5
//====================================================================================================================================================
// Custom Indicator Functions
//====================================================================================================================================================
GetKAMA(KAMA_lenght, Fast_KAMA, Slow_KAMA)
Calculates An Adaptive Moving Average Based On Perry J Kaufman's Calculations
Parameters:
KAMA_lenght (int) : Is The KAMA Lenght
Fast_KAMA (int) : Is The KAMA's Fastes Moving Average
Slow_KAMA (int) : Is The KAMA's Slowest Moving Average
Returns: Float Of The KAMA's Current Calculations
GetMovingAverage(Source, Lenght, Type)
Get Custom Moving Averages Values
Parameters:
Source (float) : Of The Moving Average, Defval = close
Lenght (simple int) : Of The Moving Average, Defval = 50
Type (string) : Of The Moving Average, Defval = Exponential Moving Average
Returns: The Moving Average Calculation Based On Its Given Source, Lenght & Calculation Type (Please Call Function On Global Scope)
GetDecimals()
Calculates how many decimals are on the quote price of the current market © ZenAndTheArtOfTrading
Returns: The current decimal places on the market quote price
Truncate(number, decimalPlaces)
Truncates (cuts) excess decimal places © ZenAndTheArtOfTrading
Parameters:
number (float)
decimalPlaces (simple float)
Returns: The given number truncated to the given decimalPlaces
ToWhole(number)
Converts pips into whole numbers © ZenAndTheArtOfTrading
Parameters:
number (float)
Returns: The converted number
ToPips(number)
Converts whole numbers back into pips © ZenAndTheArtOfTrading
Parameters:
number (float)
Returns: The converted number
GetPctChange(value1, value2, lookback)
Gets the percentage change between 2 float values over a given lookback period © ZenAndTheArtOfTrading
Parameters:
value1 (float)
value2 (float)
lookback (int)
BarsAboveMA(lookback, ma)
Counts how many candles are above the MA © ZenAndTheArtOfTrading
Parameters:
lookback (int)
ma (float)
Returns: The bar count of how many recent bars are above the MA
BarsBelowMA(lookback, ma)
Counts how many candles are below the MA © ZenAndTheArtOfTrading
Parameters:
lookback (int)
ma (float)
Returns: The bar count of how many recent bars are below the EMA
BarsCrossedMA(lookback, ma)
Counts how many times the EMA was crossed recently © ZenAndTheArtOfTrading
Parameters:
lookback (int)
ma (float)
Returns: The bar count of how many times price recently crossed the EMA
GetPullbackBarCount(lookback, direction)
Counts how many green & red bars have printed recently (ie. pullback count) © ZenAndTheArtOfTrading
Parameters:
lookback (int)
direction (int)
Returns: The bar count of how many candles have retraced over the given lookback & direction
GetSwingHigh(Lookback, SwingType)
Check If Price Has Made A Recent Swing High
Parameters:
Lookback (int) : Is For The Swing High Lookback Period, Defval = 7
SwingType (int) : Is For The Swing High Type Of Identification, Defval = 1
Returns: A Bool - True If Price Has Made A Recent Swing High
GetSwingLow(Lookback, SwingType)
Check If Price Has Made A Recent Swing Low
Parameters:
Lookback (int) : Is For The Swing Low Lookback Period, Defval = 7
SwingType (int) : Is For The Swing Low Type Of Identification, Defval = 1
Returns: A Bool - True If Price Has Made A Recent Swing Low
//====================================================================================================================================================
// Custom Risk Management Functions
//====================================================================================================================================================
CalculateStopLossLevel(OrderType, Entry, StopLoss)
Calculate StopLoss Level
Parameters:
OrderType (int) : Is To Determine A Long / Short Position, Defval = 1
Entry (float) : Is The Entry Level Of The Order, Defval = na
StopLoss (float) : Is The Custom StopLoss Distance, Defval = 2x ATR Below Close
Returns: Float - The StopLoss Level In Actual Price As A
CalculateStopLossDistance(OrderType, Entry, StopLoss)
Calculate StopLoss Distance In Pips
Parameters:
OrderType (int) : Is To Determine A Long / Short Position, Defval = 1
Entry (float) : Is The Entry Level Of The Order, NEED TO INPUT PARAM
StopLoss (float) : Level Based On Previous Calculation, NEED TO INPUT PARAM
Returns: Float - The StopLoss Value In Pips
CalculateTakeProfitLevel(OrderType, Entry, StopLossDistance, RiskReward)
Calculate TakeProfit Level
Parameters:
OrderType (int) : Is To Determine A Long / Short Position, Defval = 1
Entry (float) : Is The Entry Level Of The Order, Defval = na
StopLossDistance (float)
RiskReward (float)
Returns: Float - The TakeProfit Level In Actual Price
CalculateTakeProfitDistance(OrderType, Entry, TakeProfit)
Get TakeProfit Distance In Pips
Parameters:
OrderType (int) : Is To Determine A Long / Short Position, Defval = 1
Entry (float) : Is The Entry Level Of The Order, NEED TO INPUT PARAM
TakeProfit (float) : Level Based On Previous Calculation, NEED TO INPUT PARAM
Returns: Float - The TakeProfit Value In Pips
CalculateConversionCurrency(AccountCurrency, SymbolCurrency, BaseCurrency)
Get The Conversion Currecny Between Current Account Currency & Current Pair's Quoted Currency (FOR FOREX ONLY)
Parameters:
AccountCurrency (simple string) : Is For The Account Currency Used
SymbolCurrency (simple string) : Is For The Current Symbol Currency (Front Symbol)
BaseCurrency (simple string) : Is For The Current Symbol Base Currency (Back Symbol)
Returns: Tuple Of A Bollean (Convert The Currency ?) And A String (Converted Currency)
CalculateConversionRate(ConvertCurrency, ConversionRate)
Get The Conversion Rate Between Current Account Currency & Current Pair's Quoted Currency (FOR FOREX ONLY)
Parameters:
ConvertCurrency (bool) : Is To Check If The Current Symbol Needs To Be Converted Or Not
ConversionRate (float) : Is The Quoted Price Of The Conversion Currency (Input The request.security Function Here)
Returns: Float Price Of Conversion Rate (If In The Same Currency Than Return Value Will Be 1.0)
LotSize(LotSizeSimple, Balance, Risk, SLDistance, ConversionRate)
Get Current Lot Size
Parameters:
LotSizeSimple (bool) : Is To Toggle Lot Sizing Calculation (Simple Is Good Enough For Stocks & Crypto, Whilst Complex Is For Forex)
Balance (float) : Is For The Current Account Balance To Calculate The Lot Sizing Based Off
Risk (float) : Is For The Current Risk Per Trade To Calculate The Lot Sizing Based Off
SLDistance (float) : Is The Current Position StopLoss Distance From Its Entry Price
ConversionRate (float) : Is The Currency Conversion Rate (Used For Complex Lot Sizing Only)
Returns: Float - Position Size In Units
ToLots(Units)
Converts Units To Lots
Parameters:
Units (float) : Is For How Many Units Need To Be Converted Into Lots (Minimun 1000 Units)
Returns: Float - Position Size In Lots
ToUnits(Lots)
Converts Lots To Units
Parameters:
Lots (float) : Is For How Many Lots Need To Be Converted Into Units (Minimun 0.01 Units)
Returns: Int - Position Size In Units
ToLotsInUnits(Units)
Converts Units To Lots Than Back To Units
Parameters:
Units (float) : Is For How Many Units Need To Be Converted Into Lots (Minimun 1000 Units)
Returns: Float - Position Size In Lots That Were Rounded To Units
ATRTrail(OrderType, SourceType, ATRPeriod, ATRMultiplyer, SwingLookback)
Calculate ATR Trailing Stop
Parameters:
OrderType (int) : Is To Determine A Long / Short Position, Defval = 1
SourceType (int) : Is To Determine Where To Calculate The ATR Trailing From, Defval = close
ATRPeriod (simple int) : Is To Change Its ATR Period, Defval = 20
ATRMultiplyer (float) : Is To Change Its ATR Trailing Distance, Defval = 1
SwingLookback (int) : Is To Change Its Swing HiLo Lookback (Only From Source Type 5), Defval = 7
Returns: Float - Number Of The Current ATR Trailing
DangerZone(WinRate, AvgRRR, Filter)
Calculate Danger Zone Of A Given Strategy
Parameters:
WinRate (float) : Is The Strategy WinRate
AvgRRR (float) : Is The Strategy Avg RRR
Filter (float) : Is The Minimum Profit It Needs To Be Out Of BE Zone, Defval = 3
Returns: Int - Value, 1 If Out Of Danger Zone, 0 If BE, -1 If In Danger Zone
IsQuestionableTrades(TradeTP, TradeSL)
Checks For Questionable Trades (Which Are Trades That Its TP & SL Level Got Hit At The Same Candle)
Parameters:
TradeTP (float) : Is The Trade In Question Take Profit Level
TradeSL (float) : Is The Trade In Question Stop Loss Level
Returns: Bool - True If The Last Trade Was A "Questionable Trade"
//====================================================================================================================================================
// Custom Strategy Functions
//====================================================================================================================================================
OpenLong(EntryID, LotSize, LimitPrice, StopPrice, Comment, CommentValue)
Open A Long Order Based On The Given Params
Parameters:
EntryID (string) : Is The Trade Entry ID, Defval = "Long"
LotSize (float) : Is The Lot Size Of The Trade, Defval = 1
LimitPrice (float) : Is The Limit Order Price To Set The Order At, Defval = Na / Market Order Execution
StopPrice (float) : Is The Stop Order Price To Set The Order At, Defval = Na / Market Order Execution
Comment (string) : Is The Order Comment, Defval = Long Entry Order
CommentValue (string) : Is For Custom Values In The Order Comment, Defval = Na
Returns: Void
OpenShort(EntryID, LotSize, LimitPrice, StopPrice, Comment, CommentValue)
Open A Short Order Based On The Given Params
Parameters:
EntryID (string) : Is The Trade Entry ID, Defval = "Short"
LotSize (float) : Is The Lot Size Of The Trade, Defval = 1
LimitPrice (float) : Is The Limit Order Price To Set The Order At, Defval = Na / Market Order Execution
StopPrice (float) : Is The Stop Order Price To Set The Order At, Defval = Na / Market Order Execution
Comment (string) : Is The Order Comment, Defval = Short Entry Order
CommentValue (string) : Is For Custom Values In The Order Comment, Defval = Na
Returns: Void
TP_SLExit(FromID, TPLevel, SLLevel, PercentageClose, Comment, CommentValue)
Exits Based On Predetermined TP & SL Levels
Parameters:
FromID (string) : Is The Trade ID That The TP & SL Levels Be Palced
TPLevel (float) : Is The Take Profit Level
SLLevel (float) : Is The StopLoss Level
PercentageClose (float) : Is The Amount To Close The Order At (In Percentage) Defval = 100
Comment (string) : Is The Order Comment, Defval = Exit Order
CommentValue (string) : Is For Custom Values In The Order Comment, Defval = Na
Returns: Void
CloseLong(ExitID, PercentageClose, Comment, CommentValue, Instant)
Exits A Long Order Based On A Specified Condition
Parameters:
ExitID (string) : Is The Trade ID That Will Be Closed, Defval = "Long"
PercentageClose (float) : Is The Amount To Close The Order At (In Percentage) Defval = 100
Comment (string) : Is The Order Comment, Defval = Exit Order
CommentValue (string) : Is For Custom Values In The Order Comment, Defval = Na
Instant (bool) : Is For Exit Execution Type, Defval = false
Returns: Void
CloseShort(ExitID, PercentageClose, Comment, CommentValue, Instant)
Exits A Short Order Based On A Specified Condition
Parameters:
ExitID (string) : Is The Trade ID That Will Be Closed, Defval = "Short"
PercentageClose (float) : Is The Amount To Close The Order At (In Percentage) Defval = 100
Comment (string) : Is The Order Comment, Defval = Exit Order
CommentValue (string) : Is For Custom Values In The Order Comment, Defval = Na
Instant (bool) : Is For Exit Execution Type, Defval = false
Returns: Void
BrokerCheck(Broker)
Checks Traded Broker With Current Loaded Chart Broker
Parameters:
Broker (string) : Is The Current Broker That Is Traded
Returns: Bool - True If Current Traded Broker Is Same As Loaded Chart Broker
OpenPC(LicenseID, OrderType, UseLimit, LimitPrice, SymbolPrefix, Symbol, SymbolSuffix, Risk, SL, TP, OrderComment, Spread)
Compiles Given Parameters Into An Alert String Format To Open Trades Using Pine Connector
Parameters:
LicenseID (string) : Is The Users PineConnector LicenseID
OrderType (int) : Is The Desired OrderType To Open
UseLimit (bool) : Is If We Want To Enter The Position At Exactly The Previous Closing Price
LimitPrice (float) : Is The Limit Price Of The Trade (Only For Pending Orders)
SymbolPrefix (string) : Is The Current Symbol Prefix (If Any)
Symbol (string) : Is The Traded Symbol
SymbolSuffix (string) : Is The Current Symbol Suffix (If Any)
Risk (float) : Is The Trade Risk Per Trade / Fixed Lot Sizing
SL (float) : Is The Trade SL In Price / In Pips
TP (float) : Is The Trade TP In Price / In Pips
OrderComment (string) : Is The Executed Trade Comment
Spread (float) : is The Maximum Spread For Execution
Returns: String - Pine Connector Order Syntax Alert Message
ClosePC(LicenseID, OrderType, SymbolPrefix, Symbol, SymbolSuffix)
Compiles Given Parameters Into An Alert String Format To Close Trades Using Pine Connector
Parameters:
LicenseID (string) : Is The Users PineConnector LicenseID
OrderType (int) : Is The Desired OrderType To Close
SymbolPrefix (string) : Is The Current Symbol Prefix (If Any)
Symbol (string) : Is The Traded Symbol
SymbolSuffix (string) : Is The Current Symbol Suffix (If Any)
Returns: String - Pine Connector Order Syntax Alert Message
//====================================================================================================================================================
// Custom Backtesting Calculation Functions
//====================================================================================================================================================
CalculatePNL(EntryPrice, ExitPrice, LotSize, ConversionRate)
Calculates Trade PNL Based On Entry, Eixt & Lot Size
Parameters:
EntryPrice (float) : Is The Trade Entry
ExitPrice (float) : Is The Trade Exit
LotSize (float) : Is The Trade Sizing
ConversionRate (float) : Is The Currency Conversion Rate (Used For Complex Lot Sizing Only)
Returns: Float - The Current Trade PNL
UpdateBalance(PrevBalance, PNL)
Updates The Previous Ginve Balance To The Next PNL
Parameters:
PrevBalance (float) : Is The Previous Balance To Be Updated
PNL (float) : Is The Current Trade PNL To Be Added
Returns: Float - The Current Updated PNL
CalculateSlpComm(PNL, MaxRate)
Calculates Random Slippage & Commisions Fees Based On The Parameters
Parameters:
PNL (float) : Is The Current Trade PNL
MaxRate (float) : Is The Upper Limit (In Percentage) Of The Randomized Fee
Returns: Float - A Percentage Fee Of The Current Trade PNL
UpdateDD(MaxBalance, Balance)
Calculates & Updates The DD Based On Its Given Parameters
Parameters:
MaxBalance (float) : Is The Maximum Balance Ever Recorded
Balance (float) : Is The Current Account Balance
Returns: Float - The Current Strategy DD
CalculateWR(TotalTrades, LongID, ShortID)
Calculate The Total, Long & Short Trades Win Rate
Parameters:
TotalTrades (int) : Are The Current Total Trades That The Strategy Has Taken
LongID (string) : Is The Order ID Of The Long Trades Of The Strategy
ShortID (string) : Is The Order ID Of The Short Trades Of The Strategy
Returns: Tuple Of Long WR%, Short WR%, Total WR%, Total Winning Trades, Total Losing Trades, Total Long Trades & Total Short Trades
CalculateAvgRRR(WinTrades, LossTrades)
Calculates The Overall Strategy Avg Risk Reward Ratio
Parameters:
WinTrades (int) : Are The Strategy Winning Trades
LossTrades (int) : Are The Strategy Losing Trades
Returns: Float - The Average RRR Values
CAGR(StartTime, StartPrice, EndTime, EndPrice)
Calculates The CAGR Over The Given Time Period © TradingView
Parameters:
StartTime (int) : Is The Starting Time Of The Calculation
StartPrice (float) : Is The Starting Price Of The Calculation
EndTime (int) : Is The Ending Time Of The Calculation
EndPrice (float) : Is The Ending Price Of The Calculation
Returns: Float - The CAGR Values
//====================================================================================================================================================
// Custom Plot Functions
//====================================================================================================================================================
EditLabels(LabelID, X1, Y1, Text, Color, TextColor, EditCondition, DeleteCondition)
Edit / Delete Labels
Parameters:
LabelID (label) : Is The ID Of The Selected Label
X1 (int) : Is The X1 Coordinate IN BARINDEX Xloc
Y1 (float) : Is The Y1 Coordinate IN PRICE Yloc
Text (string) : Is The Text Than Wants To Be Written In The Label
Color (color) : Is The Color Value Change Of The Label Text
TextColor (color)
EditCondition (int) : Is The Edit Condition of The Line (Setting Location / Color)
DeleteCondition (bool) : Is The Delete Condition Of The Line If Ture Deletes The Prev Itteration Of The Line
Returns: Void
EditLine(LineID, X1, Y1, X2, Y2, Color, EditCondition, DeleteCondition)
Edit / Delete Lines
Parameters:
LineID (line) : Is The ID Of The Selected Line
X1 (int) : Is The X1 Coordinate IN BARINDEX Xloc
Y1 (float) : Is The Y1 Coordinate IN PRICE Yloc
X2 (int) : Is The X2 Coordinate IN BARINDEX Xloc
Y2 (float) : Is The Y2 Coordinate IN PRICE Yloc
Color (color) : Is The Color Value Change Of The Line
EditCondition (int) : Is The Edit Condition of The Line (Setting Location / Color)
DeleteCondition (bool) : Is The Delete Condition Of The Line If Ture Deletes The Prev Itteration Of The Line
Returns: Void
//====================================================================================================================================================
// Custom Display Functions (Using Tables)
//====================================================================================================================================================
FillTable(TableID, Column, Row, Title, Value, BgColor, TextColor, ToolTip)
Filling The Selected Table With The Inputed Information
Parameters:
TableID (table) : Is The Table ID That Wants To Be Edited
Column (int) : Is The Current Column Of The Table That Wants To Be Edited
Row (int) : Is The Current Row Of The Table That Wants To Be Edited
Title (string) : Is The String Title Of The Current Cell Table
Value (string) : Is The String Value Of The Current Cell Table
BgColor (color) : Is The Selected Color For The Current Table
TextColor (color) : Is The Selected Color For The Current Table
ToolTip (string) : Is The ToolTip Of The Current Cell In The Table
Returns: Void
DisplayBTResults(TableID, BgColor, TextColor, StartingBalance, Balance, DollarReturn, TotalPips, MaxDD)
Filling The Selected Table With The Inputed Information
Parameters:
TableID (table) : Is The Table ID That Wants To Be Edited
BgColor (color) : Is The Selected Color For The Current Table
TextColor (color) : Is The Selected Color For The Current Table
StartingBalance (float) : Is The Account Starting Balance
Balance (float)
DollarReturn (float) : Is The Account Dollar Reture
TotalPips (float) : Is The Total Pips Gained / loss
MaxDD (float) : Is The Maximum Drawdown Over The Backtesting Period
Returns: Void
DisplayBTResultsV2(TableID, BgColor, TextColor, TotalWR, QTCount, LongWR, ShortWR, InitialCapital, CumProfit, CumFee, AvgRRR, MaxDD, CAGR, MeanDD)
Filling The Selected Table With The Inputed Information
Parameters:
TableID (table) : Is The Table ID That Wants To Be Edited
BgColor (color) : Is The Selected Color For The Current Table
TextColor (color) : Is The Selected Color For The Current Table
TotalWR (float) : Is The Strategy Total WR In %
QTCount (int) : Is The Strategy Questionable Trades Count
LongWR (float) : Is The Strategy Total WR In %
ShortWR (float) : Is The Strategy Total WR In %
InitialCapital (float) : Is The Strategy Initial Starting Capital
CumProfit (float) : Is The Strategy Ending Cumulative Profit
CumFee (float) : Is The Strategy Ending Cumulative Fee (Based On Randomized Fee Assumptions)
AvgRRR (float) : Is The Strategy Average Risk Reward Ratio
MaxDD (float) : Is The Strategy Maximum DrawDown In Its Backtesting Period
CAGR (float) : Is The Strategy Compounded Average GRowth In %
MeanDD (float) : Is The Strategy Mean / Average Drawdown In The Backtesting Period
Returns: Void
//====================================================================================================================================================
// Custom Pattern Detection Functions
//====================================================================================================================================================
BullFib(priceLow, priceHigh, fibRatio)
Calculates A Bullish Fibonacci Value (From Swing Low To High) © ZenAndTheArtOfTrading
Parameters:
priceLow (float)
priceHigh (float)
fibRatio (float)
Returns: The Fibonacci Value Of The Given Ratio Between The Two Price Points
BearFib(priceLow, priceHigh, fibRatio)
Calculates A Bearish Fibonacci Value (From Swing High To Low) © ZenAndTheArtOfTrading
Parameters:
priceLow (float)
priceHigh (float)
fibRatio (float)
Returns: The Fibonacci Value Of The Given Ratio Between The Two Price Points
GetBodySize()
Gets The Current Candle Body Size IN POINTS © ZenAndTheArtOfTrading
Returns: The Current Candle Body Size IN POINTS
GetTopWickSize()
Gets The Current Candle Top Wick Size IN POINTS © ZenAndTheArtOfTrading
Returns: The Current Candle Top Wick Size IN POINTS
GetBottomWickSize()
Gets The Current Candle Bottom Wick Size IN POINTS © ZenAndTheArtOfTrading
Returns: The Current Candle Bottom Wick Size IN POINTS
GetBodyPercent()
Gets The Current Candle Body Size As A Percentage Of Its Entire Size Including Its Wicks © ZenAndTheArtOfTrading
Returns: The Current Candle Body Size IN PERCENTAGE
GetTopWickPercent()
Gets The Current Top Wick Size As A Percentage Of Its Entire Body Size
Returns: Float - The Current Candle Top Wick Size IN PERCENTAGE
GetBottomWickPercent()
Gets The Current Bottom Wick Size As A Percentage Of Its Entire Bodu Size
Returns: Float - The Current Candle Bottom Size IN PERCENTAGE
BullishEC(Allowance, RejectionWickSize, EngulfWick, NearSwings, SwingLookBack)
Checks If The Current Bar Is A Bullish Engulfing Candle
Parameters:
Allowance (int) : To Give Flexibility Of Engulfing Pattern Detection In Markets That Have Micro Gaps, Defval = 0
RejectionWickSize (float) : To Filter Out long (Upper And Lower) Wick From The Bullsih Engulfing Pattern, Defval = na
EngulfWick (bool) : To Specify If We Want The Pattern To Also Engulf Its Upper & Lower Previous Wicks, Defval = false
NearSwings (bool) : To Specify If We Want The Pattern To Be Near A Recent Swing Low, Defval = true
SwingLookBack (int) : To Specify How Many Bars Back To Detect A Recent Swing Low, Defval = 10
Returns: Bool - True If The Current Bar Matches The Requirements of a Bullish Engulfing Candle
BearishEC(Allowance, RejectionWickSize, EngulfWick, NearSwings, SwingLookBack)
Checks If The Current Bar Is A Bearish Engulfing Candle
Parameters:
Allowance (int) : To Give Flexibility Of Engulfing Pattern Detection In Markets That Have Micro Gaps, Defval = 0
RejectionWickSize (float) : To Filter Out long (Upper And Lower) Wick From The Bearish Engulfing Pattern, Defval = na
EngulfWick (bool) : To Specify If We Want The Pattern To Also Engulf Its Upper & Lower Previous Wicks, Defval = false
NearSwings (bool) : To Specify If We Want The Pattern To Be Near A Recent Swing High, Defval = true
SwingLookBack (int) : To Specify How Many Bars Back To Detect A Recent Swing High, Defval = 10
Returns: Bool - True If The Current Bar Matches The Requirements of a Bearish Engulfing Candle
Hammer(Fib, ColorMatch, NearSwings, SwingLookBack, ATRFilterCheck, ATRPeriod)
Checks If The Current Bar Is A Hammer Candle
Parameters:
Fib (float) : To Specify Which Fibonacci Ratio To Use When Determining The Hammer Candle, Defval = 0.382 Ratio
ColorMatch (bool) : To Filter Only Bullish Closed Hammer Candle Pattern, Defval = false
NearSwings (bool) : To Specify If We Want The Doji To Be Near A Recent Swing Low, Defval = true
SwingLookBack (int) : To Specify How Many Bars Back To Detect A Recent Swing Low, Defval = 10
ATRFilterCheck (float) : To Filter Smaller Hammer Candles That Might Be Better Classified As A Doji Candle, Defval = 1
ATRPeriod (simple int) : To Change ATR Period Of The ATR Filter, Defval = 20
Returns: Bool - True If The Current Bar Matches The Requirements of a Hammer Candle
Star(Fib, ColorMatch, NearSwings, SwingLookBack, ATRFilterCheck, ATRPeriod)
Checks If The Current Bar Is A Hammer Candle
Parameters:
Fib (float) : To Specify Which Fibonacci Ratio To Use When Determining The Hammer Candle, Defval = 0.382 Ratio
ColorMatch (bool) : To Filter Only Bullish Closed Hammer Candle Pattern, Defval = false
NearSwings (bool) : To Specify If We Want The Doji To Be Near A Recent Swing Low, Defval = true
SwingLookBack (int) : To Specify How Many Bars Back To Detect A Recent Swing Low, Defval = 10
ATRFilterCheck (float) : To Filter Smaller Hammer Candles That Might Be Better Classified As A Doji Candle, Defval = 1
ATRPeriod (simple int) : To Change ATR Period Of The ATR Filter, Defval = 20
Returns: Bool - True If The Current Bar Matches The Requirements of a Hammer Candle
Doji(MaxWickSize, MaxBodySize, DojiType, NearSwings, SwingLookBack)
Checks If The Current Bar Is A Doji Candle
Parameters:
MaxWickSize (float) : To Specify The Maximum Lenght Of Its Upper & Lower Wick, Defval = 2
MaxBodySize (float) : To Specify The Maximum Lenght Of Its Candle Body IN PERCENT, Defval = 0.05
DojiType (int)
NearSwings (bool) : To Specify If We Want The Doji To Be Near A Recent Swing High / Low (Only In Dragonlyf / Gravestone Mode), Defval = true
SwingLookBack (int) : To Specify How Many Bars Back To Detect A Recent Swing High / Low (Only In Dragonlyf / Gravestone Mode), Defval = 10
Returns: Bool - True If The Current Bar Matches The Requirements of a Doji Candle
BullishIB(Allowance, RejectionWickSize, EngulfWick, NearSwings, SwingLookBack)
Checks If The Current Bar Is A Bullish Harami Candle
Parameters:
Allowance (int) : To Give Flexibility Of Harami Pattern Detection In Markets That Have Micro Gaps, Defval = 0
RejectionWickSize (float) : To Filter Out long (Upper And Lower) Wick From The Bullsih Harami Pattern, Defval = na
EngulfWick (bool) : To Specify If We Want The Pattern To Also Engulf Its Upper & Lower Previous Wicks, Defval = false
NearSwings (bool) : To Specify If We Want The Pattern To Be Near A Recent Swing Low, Defval = true
SwingLookBack (int) : To Specify How Many Bars Back To Detect A Recent Swing Low, Defval = 10
Returns: Bool - True If The Current Bar Matches The Requirements of a Bullish Harami Candle
BearishIB(Allowance, RejectionWickSize, EngulfWick, NearSwings, SwingLookBack)
Checks If The Current Bar Is A Bullish Harami Candle
Parameters:
Allowance (int) : To Give Flexibility Of Harami Pattern Detection In Markets That Have Micro Gaps, Defval = 0
RejectionWickSize (float) : To Filter Out long (Upper And Lower) Wick From The Bearish Harami Pattern, Defval = na
EngulfWick (bool) : To Specify If We Want The Pattern To Also Engulf Its Upper & Lower Previous Wicks, Defval = false
NearSwings (bool) : To Specify If We Want The Pattern To Be Near A Recent Swing High, Defval = true
SwingLookBack (int) : To Specify How Many Bars Back To Detect A Recent Swing High, Defval = 10
Returns: Bool - True If The Current Bar Matches The Requirements of a Bearish Harami Candle
//====================================================================================================================================================
// Custom Time Functions
//====================================================================================================================================================
BarInSession(sess, useFilter)
Determines if the current price bar falls inside the specified session © ZenAndTheArtOfTrading
Parameters:
sess (simple string)
useFilter (bool)
Returns: A boolean - true if the current bar falls within the given time session
BarOutSession(sess, useFilter)
Determines if the current price bar falls outside the specified session © ZenAndTheArtOfTrading
Parameters:
sess (simple string)
useFilter (bool)
Returns: A boolean - true if the current bar falls outside the given time session
DateFilter(startTime, endTime)
Determines if this bar's time falls within date filter range © ZenAndTheArtOfTrading
Parameters:
startTime (int)
endTime (int)
Returns: A boolean - true if the current bar falls within the given dates
DayFilter(monday, tuesday, wednesday, thursday, friday, saturday, sunday)
Checks if the current bar's day is in the list of given days to analyze © ZenAndTheArtOfTrading
Parameters:
monday (bool)
tuesday (bool)
wednesday (bool)
thursday (bool)
friday (bool)
saturday (bool)
sunday (bool)
Returns: A boolean - true if the current bar's day is one of the given days
AUSSess()
Checks If The Current Australian Forex Session In Running
Returns: Bool - True If Currently The Australian Session Is Running
ASIASess()
Checks If The Current Asian Forex Session In Running
Returns: Bool - True If Currently The Asian Session Is Running
EURSess()
Checks If The Current European Forex Session In Running
Returns: Bool - True If Currently The European Session Is Running
USSess()
Checks If The Current US Forex Session In Running
Returns: Bool - True If Currently The US Session Is Running
UNIXToDate(Time, ConversionType, TimeZone)
Converts UNIX Time To Datetime
Parameters:
Time (int) : Is The UNIX Time Input
ConversionType (int) : Is The Datetime Output Format, Defval = DD-MM-YYYY
TimeZone (string) : Is To Convert The Outputed Datetime Into The Specified Time Zone, Defval = Exchange Time Zone
Returns: String - String Of Datetime
Fibonacci Levels on Any Indicator [By MUQWISHI]▋ INTRODUCTION :
A “Fibonacci Levels on Any Indicator” can be applied to any indicator to draw Fibonacci levels based on provided conditions of two price points to produce a sequence of horizontal line levels starting from 0% to 100% in addition to extension levels. The 0% level is measured as the start of retracement, while the 100% level is the beginning of the extension levels. This tool was developed to be easy to add to any indicator, and it could be valuable to some traders in terms of managing trades by setting targets and reducing risk in the trend direction.
_______________________
▋ USAGE:
➤ NEEDS TO IDENTIFY 4 ELEMENTS:
1. Starting Point. What’re the conditions / When will the drawing of the Fibonacci levels begin?
2. Ending Point. What’re the conditions / When will the drawing of the Fibonacci levels end?
3. High Point. What is the price for a 100% Fibonacci level (0% for the downside)?
4. Low Point. What is the price for a 0% Fibonacci level (100% for the downside)?
➤ STARTING & ENDING POINTS CONDITIONS:
Need to specify the condition when the drawing of Fibonacci levels starts and ends, and the indicator shows different prepared conditions.
New Phase: Import a value (plot) from an existing indicator, where its status changes from NaN to a real number.
Crosses Above/Below: Import a value(1) (plot) from an existing indicator, where it crosses above/below value(2).
Reversal Up/Down: Import a value(1) (plot) from an existing indicator, where it rises/decreases than the previous value(1).
First/Last Bar: Useful to draw stationary Fibonacci levels.
➤ UPPER & LOWER PIVOTS (0% & 100%):
Need to specify the two price points representing 0% & 100% Fibonacci levels to expose the sequence of Fibonacci lines.
Upper Pivot. By default, the ATR Upper Band. It’s possible to import a custom value from an existing indicator.
Lower Pivot. By default, the ATR Lower Band. It’s possible to import a custom value from an existing indicator.
➤ FIBONACCI STYLING OPTIONS:
Ability to customize line & label style, color, reverse, and hide/show levels.
_______________________
▋ IMPLEMENTATION:
Here are some examples of implementing the indicator.
Note: All presented examples below are for demonstration purposes, and they're not trading suggestions.
# Example 1: (Reversal Up/Down)
We want to implement Fibonacci levels on the Hull MA by mohamed982 . Our requirements are as follows:
Fibonacci levels start when the Hull MA reverses up.
Fibonacci levels end when the Hull MA reverses down.
Upper Pivot is the ATR Upper Band.
Lower Pivot is the ATR Lower Band.
After adding the required indicator (Hull MA), here’re the implementation and results
# Example 2: (Crosses Above/Below)
We want to implement Fibonacci Level on the Squeeze Momentum by LazyBear . Our requirements are as follows:
Fibonacci levels start when the Squeeze Momentum histogram crosses above 0.
Fibonacci levels end when the Squeeze Momentum histogram crosses below 0.
Upper Pivot is the Bollinger Upper Band.
Lower Pivot is the Bollinger Lower Band.
After adding the required indicators (Squeeze Momentum & Bollinger Band), here’re the implementation and results
# Example 3: (Crosses Above/Below)
We want to implement Fibonacci Level on the Crossing Moving Averages. Our requirements are as follows:
Fibonacci levels start when the 20-EMA crosses above 100-MA.
Fibonacci levels end when the 20-EMA crosses below 100-MA.
Upper Pivot is the ATR Upper Band.
Lower Pivot is the ATR Lower Band.
After adding the required indicators (20-EMA & 100-MA), here’re the implementation and results
# Example 4: (New Phase: When the previous value is NaN, and the current value is a real number.)
We want to implement Fibonacci Level on the Supertrend. Our requirements are as follows:
Fibonacci levels start when an up-Supertrend (green) line shows up.
Fibonacci levels end when a down-Supertrend (red) line shows up.
Upper Pivot is the down-Supertrend.
Lower Pivot is the up-Supertrend.
After adding the required indicator (Supertrend), here’re the implementation and results
# Example 5: (First/Last Bar)
We want to implement Fibonacci Level between two points, 330 & 300. Our requirements are as follows:
Fibonacci levels start at first bar on the chart.
Fibonacci levels end at last bar on the chart.
Upper Pivot is 330.
Lower Pivot is 300.
Here’re the implementation and results.
To customize the number of bars back (like 50 bars)
_______________________
▋ Final Comments:
The “Fibonacci Levels on Any Indicator” is made to apply on other indicators for planning Fibonacci Levels.
It can be implemented in different ways, along with presented examples.
This indicator does not work with plots that were developed by drawing classes.
Please let me know if you have any questions.
Thank you.
4H RangeThis script visualizes certain key values based on a 4-hour timeframe of the selected market on the chart. These values include the High, Mid, and Low price levels during each 4-hour period.
These levels can be helpful to identify inside range price action, chop, and consolidation. They can sometimes act as pivots and can be a great reference for potential entries and exits if price continues to hold the same range.
Here's a step-by-step overview of what this indicator does:
1. Inputs: At the beginning of the script, users are allowed to customize some inputs:
Choose the color of lines and labels.
Decide whether to show labels on the chart.
Choose the size of labels ("tiny", "small", "normal", or "large").
Choose whether to display price values in labels.
Set the number of bars to offset the labels to the right.
Set a threshold for the number of ticks that triggers a new calculation of high, mid, and low values.
* Tick settings may need to be increased on equity charts as one tick is usually equal to one cent.
For example, if you want to clear the range when there is a close one point/one dollar above or below the range high/low then on ES
that would be 4 ticks but one whole point on AAPL would be 100 ticks. 100 ticks on an equity chart may or may not be ideal due to
different % change of 100 ticks might be too excessive depending on the price per share.
So be aware that user preferred thresholds can vary greatly depending on which chart you're using.
2. Retrieving Price Data: The script retrieves the high, low, and closing price for every 4-hour period for the current market.
The script also calculates the mid-price of each 4-hour period (the average of the high and low prices).
3. Line Drawing: At the start of the script (first run), it draws three lines (high, mid, and low) at the levels corresponding to the high,
mid, and low prices. Users can also change transparency settings on historical lines to view them. Default setting for historical lines
is for them to be hidden.
4. Updating Lines and Labels: For each subsequent 4-hour period, the script checks whether the close price of the period has gone
beyond a certain threshold (set by user input) above the previous high or below the previous low. If it has, the script deletes the
previous lines and labels, draws new lines at the new high, mid, and low levels, and creates new labels (if the user has opted to
show labels).
5. Displaying Values in the Data Window: In addition to the visual representation on the chart, the script also plots the high, mid, and
low prices. These plotted values appear in the Data Window of TradingView, allowing users to see the exact price levels even when
they're not directly labeled on the chart.
6. Updating Lines and Labels Position: At the end of each period, the script moves the lines and labels (if they're shown) to the right,
keeping them aligned with the current period.
Please note: This script operates based on a 4-hour timeframe, regardless of the timeframe selected on the chart. If a shorter timeframe is selected on the chart, the lines and labels will appear to extend across multiple bars because they represent 4-hour price levels. If a longer timeframe is selected, the lines and labels may not accurately represent high, mid, and low levels within that longer timeframe.
Pure Morning 2.0 - Candlestick Pattern Doji StrategyThe new "Pure Morning 2.0 - Candlestick Pattern Doji Strategy" is a trend-following, intraday cryptocurrency trading system authored by devil_machine.
The system identifies Doji and Morning Doji Star candlestick formations above the EMA60 as entry points for long trades.
For best results we recommend to use on 15-minute, 30-minute, or 1-hour timeframes, and are ideal for high-volatility markets.
The strategy also utilizes a profit target or trailing stop for exits, with stop loss set at the lowest low of the last 100 candles. The strategy's configuration details, such as Doji tolerance, and exit configurations are adjustable.
In this new version 2.0, we've incorporated a new selectable filter. Since the stop loss is set at the lowest low, this filter ensures that this value isn't too far from the entry price, thereby optimizing the Risk-Reward ratio.
In the specific case of ALPINE, a 9% Take-Profit and and Stop-Loss at Lowest Low of the last 100 candles were set, with an activated trailing-stop percentage, Max Loss Filter is not active.
Name : Pure Morning 2.0 - Candlestick Pattern Doji Strategy
Author : @devil_machine
Category : Trend Follower based on candlestick patterns.
Operating mode : Spot or Futures (only long).
Trades duration : Intraday
Timeframe : 15m, 30m, 1H
Market : Crypto
Suggested usage : Short-term trading, when the market is in trend and it is showing high volatility .
Entry : When a Doji or Morning Doji Star formation occurs above the EMA60.
Exit : Profit target or Trailing stop, Stop loss on the lowest low of the last 100 candles.
Configuration :
- Doji Settings (tolerances) for Entry Condition
- Max Loss Filter (Lowest Low filter)
- Exit Long configuration
- Trailing stop
Backtesting :
⁃ Exchange: BINANCE
⁃ Pair: ALPINEUSDT
⁃ Timeframe: 30m
⁃ Fee: 0.075%
⁃ Slippage: 1
- Initial Capital: 10000 USDT
- Position sizing: 10% of Equity
- Start: 2022-02-28 (Out Of Sample from 2022-12-23)
- Bar magnifier: on
Disclaimer : Risk Management is crucial, so adjust stop loss to your comfort level. A tight stop loss can help minimise potential losses. Use at your own risk.
How you or we can improve? Source code is open so share your ideas!
Leave a comment and smash the boost button!
Thanks for your attention, happy to support the TradingView community.
Ticker Correlation Reference IndicatorHello,
I am super excited to be releasing this Ticker Correlation assessment indicator. This is a big one so let us get right into it!
Inspiration:
The inspiration for this indicator came from a similar indicator by Balipour called the Correlation with P-Value and Confidence Interval. It’s a great indicator, you should check it out!
I used it quite a lot when looking for correlations; however, there were some limitations to this indicator’s functionality that I wanted. So I decided to make my own indicator that had the functionality I wanted. I have been using this for some time but decided to actual spruce it up a bit and make it user friendly so that I could share it publically. So let me get into what this indicator does and, most importantly, the expanded functionality of this indicator.
What it does:
This indicator determines the correlation between 2 separate tickers. The user selects the two tickers they wish to compare and it performs a correlation assessment over a defaulted 14 period length and displays the results. However, the indicator takes this much further. The complete functionality of this indicator includes the following:
1. Assesses the correlation of all 4 ticker variables (Open, High, Low and Close) over a user defined period of time (defaulted to 14);
2. Converts both tickers to a Z-Score in order to standardize the data and provide a side by side comparison;
3. Displays areas of high and low correlation between all 4 variables;
4. Looks back over the consistency of the relationship (is correlation consistent among the two tickers or infrequent?);
5. Displays the variance in the correlation (there may be a statistically significant relationship, but if there is a high variance, it means the relationship is unstable);
6. Permits manual conversion between prices; and
7. Determines the degree of statistical significance (be it stable, unstable or non-existent).
I will discuss each of these functions below.
Function 1: Assesses the correlation of all 4 variables.
The only other indicator that does this only determines the correlation of the close price. However, correlation between all 4 variables varies. The correlation between open prices, high prices, low prices and close prices varies in statistically significant ways. As such, this indicator plots the correlation of all 4 ticker variables and displays each correlation.
Assessing this matters because sometimes a stock may not have the same magnitude in highs and lows as another stock (one stock may be more bullish, i.e. attain higher highs in comparison to another stock). Close price is helpful but does not pain the full picture. As such, the indicator displays the correlation relationship between all 4 variables (image below):
Function 2: Converts both tickers to Z-Score
Z-Score is a way of standardizing data. It simply measures how far a stock is trading in relation to its mean. As such, it is a way to express both tickers on a level playing field. Z-Score was also chosen because the Z-Score Values (0 – 4) also provide an appropriate scale to plot correlation lines (which range from 0 to 1).
The primary ticker (Ticker 1) is plotted in blue, the secondary comparison ticker (Ticker 2) is plotted in a colour changing format (which will be discussed below). See the image below:
Function 3: Displays areas of high and low correlation
While Ticker 1 is plotted in a static blue, Ticker 2 (the comparison ticker) is plotted in a dynamic, colour changing format. It will display areas of high correlation (i.e. areas with a P value greater than or equal to 0.9 or less than and equal to -0.9) in green, areas of moderate correlation in white. Areas of low correlation (between 0.4 and 0 or -0.4 and 0) are in red. (see image below):
Function 4: Checks consistency of relationship
While at the time of assessing a stock there very well maybe a high correlation, whether that correlation is consistent or not is the question. The indicator employs the use of the SMA function to plot the average correlation over a defined period of time. If the correlation is consistently high, the SMA should be within an area of statistical significance (over 0.5 or under -0.5). If the relationship is inconsistent, the SMA will read a lower value than the actual correlation.
You can see an example of this when you compare ETH to Tezos in the image below:
You can see that the correlation between ETH and Tezo’s on the high level seems to be inconsistent. While the current correlation is significant, the SMA is showing that the average correlation between the highs is actually less than 0.5.
The indicator also tells the user narratively the degree of consistency in the statistical relationship. This will be discussed later.
Function 5: Displays the variance
When it comes to correlation, variance is important. Variance simply means the distance between the highest and lowest value. The indicator assess the variance. A high degree of variance (i.e. a number surpassing 0.5 or greater) generally means the consistency and stability of the relationship is in issue. If there is a high variance, it means that the two tickers, while seemingly significantly correlated, tend to deviate from each other quite extensively.
The indicator will tell the user the variance in the narrative bar at the bottom of the chart (see image below):
Function 6: Permits manual conversion of price
One thing that I frequently want and like to do is convert prices between tickers. If I am looking at SPX and I want to calculate a price on SPY, I want to be able to do that quickly. This indicator permits you to do that by employing a regression based formula to convert Ticker 1 to Ticker 2.
The user can actually input which variable they would like to convert, whether they want to convert Ticker 1 Close to Ticker 2 Close, or Ticker 1 High to Ticker 2 High, or low or open.
To do this, open the settings and click “Permit Manual Conversion”. This will then take the current Ticker 1 Close price and convert it to Ticker 2 based on the regression calculations.
If you want to know what a specific price on Ticker 1 is on Ticker 2, simply click the “Allow Manual Price Input” variable and type in the price of Ticker 1 you want to know on Ticker 2. It will perform the calculation for you and will also list the standard error of the calculation.
Below is an example of calculating a SPY price using SPX data:
Above, the indicator was asked to convert an SPX price of 4,100 to a SPY price. The result was 408.83 with a standard error of 4.31, meaning we can expect 4,100 to fall within 408.83 +/- 4.31 on SPY.
Function 7: Determines the degree of statistical significance
The indicator will provide the user with a narrative output of the degree of statistical significance. The indicator looks beyond simply what the correlation is at the time of the assessment. It uses the SMA and the highest and lowest function to make an assessment of the stability of the statistical relationship and then indicates this to the user. Below is an example of IWM compared to SPY:
You will see, the indicator indicates that, while there is a statistically significant positive relationship, the relationship is somewhat unstable and inconsistent. Not only does it tell you this, but it indicates the degree of inconsistencies by listing the variance and the range of the inconsistencies.
And below is SPY to DIA:
SPY to BTCUSD:
And finally SPY to USDCAD Currency:
Other functions:
The indicator will also plot the raw or smoothed correlation result for the Open, High, Low or Close price. The default is to close price and smoothed. Smoothed just means it is displaying the SMA over the raw correlation score. Unsmoothing it will show you the raw correlation score.
The user also has the ability to toggle on and off the correlation table and the narrative table so that they can just review the chart (the side by side comparison of the 2 tickers).
Customizability
All of the functions are customizable for the most part. The user can determine the length of lookback, etc. The default parameters for all are 14. The only thing not customizable is the assessment used for determining the stability of a statistical relationship (set at 100 candle lookback) and the regression analysis used to convert price (10 candle lookback).
User Notes and important application tips:
#1: If using the manual calculation function to convert price, it is recommended to use this on the hourly or daily chart.
#2: Leaving pre-market data on can cause some errors. It is recommended to use the indicator with regular market hours enabled and extended market hours disabled.
#3: No ticker is off limits. You can compare anything against anything! Have fun with it and experiment!
Non-Indicator Specific Discussions:
Why does correlation between stocks mater?
This can matter for a number of reasons. For investors, it is good to diversify your portfolio and have a good array of stocks that operate somewhat independently of each other. This will allow you to see how your investments compare to each other and the degree of the relationship.
Another function may be getting exposure to more expensive tickers. I am guilty of trading IWM to gain exposure to SPY at a reduced cost basis :-).
What is a statistically significant correlation?
The rule of thumb is anything 0.5 or greater is considered statistically significant. The ideal setup is 0.9 or more as the effect is almost identical. That said, a lot of factors play into statistical significance. For example, the consistency and variance are 2 important factors most do not consider when ascertaining significance. Perhaps IWM and SPY are significantly correlated today, but is that a reliable relationship and can that be counted on as a rule?
These are things that should be considered when trading one ticker against another and these are things that I have attempted to address with this indicator!
Final notes:
I know I usually do tutorial videos. I have not done one here, but I will. Check back later for this.
I hope you enjoy the indicator and please feel free to share your thoughts and suggestions!
Safe trades all!
EMA bridge and dashboard with color coding.
Summary:
This is a custom moving average indicator script that calculates and plots different Exponential Moving Averages (EMAs) based on user-defined input values. The script also displays MACD and RSI, and provides a table that displays the current trend of the market in a color-coded format.
Explanation:
- The script starts by defining the name of the indicator and the different inputs that the user can customize.
- The inputs include bridge values for three different EMAs (high, close, and low), and four other EMAs (5, 50, 100, and 200).
- The script assigns values to these inputs using the `ta.ema()` function.
- Additionally, the script calculates EMAs for higher timeframes (3m, 5m, 15m, and 30m).
- The script then plots the EMAs on the chart using different colors and line widths.
- The script defines conditions for going long or short based on the crossover of two EMAs.
- It plots triangles above or below bars to indicate the crossover events.
- The script also calculates and displays the RSI and MACD of the asset.
- Finally, the script creates a table that displays the current trend of the market in a color-coded format. The table can be positioned on the top, middle, or bottom of the chart and on the left, center, or right side of the chart.
Parameters:
- i_ema_h: Bridge value for high EMA (default=34)
- i_ema_c: Bridge value for close EMA (default=34)
- i_ema_l: Bridge value for low EMA (default=34)
- i_ema_5: Value for 5-period EMA (default=5)
- i_ema_50: Value for 50-period EMA (default=50)
- i_ema_100: Value for 100-period EMA (default=100)
- i_ema_200: Value for 200-period EMA (default=200)
- i_f_ema: Value for fast EMA used in MACD calculation (default=9)
- i_s_ema: Value for slow EMA used in MACD calculation (default=21)
- fastInput: Value for fast length used in MACD calculation (default=7)
- slowInput: Value for slow length used in MACD calculation (default=14)
- tableYposInput: Vertical position of the table (options: top, middle, bottom; default=middle)
- tableXposInput: Horizontal position of the table (options: left, center, right; default=right)
- bullColorInput: Color of the table cell for a bullish trend (default=green)
- bearColorInput: Color of the table cell for a bearish trend (default=red)
- neutColorInput: Color of the table cell for a neutral trend (default=white)
- neutColorLabelInput: Color of the label for neutral trend in the table (default=fuchsia)
Usage:
To use this script, simply copy and paste it into the Pine Editor on TradingView. You can then customize the input values to your liking or leave them at their default values. Once you have added the script to your chart, you can view the EMAs, MACD, RSI, and trend table on the chart. The trend table provides a quick way to assess the current trend of the market at a glance.
RedK EVEREX - Effort Versus Results ExplorerRedK EVEREX is an experimental indicator that explores "Volume Price Analysis" basic concepts and Wyckoff law "Effort versus Result" - by inspecting the relative volume (effort) and the associated (relative) price action (result) for each bar - showing the analysis as an easy to read "stacked bands" visual. From that analysis, we calculate a "Relative Rate of Flow" - an easy to use +100/-100 oscilator that can be used to trigger a signal when a bullish or bearish mode is detected for a certain user-selected length of bars.
Basic Concepts of VPA
-------------------------------
(The topics of VPA & Wyckoff Effort vs Results law are too comprehensive to cover here - So here's just a very basic summary - please review these topics in detail in various sources available here in TradingView or on the web)
* Volume Price Analysis (VPA) is the examination of the number of shares or contracts of a security that have been traded in a given period, and the associated price movement. By analyzing trends in volume in conjunction with price movements, traders can determine the significance of changes in price and what may unfold in the near future.
* Oftentimes, high volumes of trading can infer a lot about investors’ outlook on a market or security. A significant price increase along with a significant volume increase, for example, could be a credible sign of a continued bullish trend or a bullish reversal. Adversely, a significant price decrease with a significant volume increase can point to a continued bearish trend or a bearish trend reversal.
* Incorporating volume into a trading decision can help an investor to have a more balanced view of all the broad market factors that could be influencing a security’s price, which helps an investor to make a more informed decision.
* Wyckoff's law "Effort versus results" dictates that large effort is expected to be accompanied with big results - which means that we should expect to see a big price move (result) associated with a large relative volume (effort) for a certain trading period (bar).
* The way traders use this concept in chart analysis is to mainly look for imbalances or invalidation. for example, when we observe a large relative volume that is associated with very limited price change - that should trigger an early flag/warning sign that the current price trend is facing challenges and may be an early sign of "reversal" - this applies in both bearish and bullish conditions. on the other hand, when price starts to trend in a certain direction and that's associated with increasing volume, that can act as kind of validation, or a confirmation that the market supports that move.
How does EVEREX work
---------------------------------
* EVEREX inspects each bar and calculates a relative value for volume (effort) and "strength of price movement" (result) compared to a specified lookback period. The results are then visualized as stacked bands - the lower band represents the relative volume, the upper band represents the relative price strength - with clear color coding for easier analysis.
* The scale of the band is initially set to 100 (each band can occupy up to 50) - and that can be changed in the settings to 200 or 400 - mainly to allow a "zoom in" on the bands.
* Reading the resulting stacked bands makes it easier to see "balanced" volume/price action (where both bands are either equally strong, or equally weak), or when there's imbalance between volume and price (for example, a compression bar will show with high volume band and very small/tiny price action band) - another favorite pattern in VPA is the "Ease of Move", which will show as a relatively small volume band associated with a large "price action band" (either bullish or bearish) .. and so on.
* a bit of a techie piece: why the use of a custom "Normalize()" function to calculate "relative" values in EVEREX?
When we evaluate a certain value against an average (for example, volume) we need a mechanism to deal with "super high" values that largely exceed that average - I also needed a mechanism that mimics how a trader looks at a volume bar and decides that this volume value is super low, low, average, above average, high or super high -- the issue with using a stoch() function, which is the usual technique for comparing a data point against a lookback average, is that this function will produce a "zero" for low values, and cause a large distortion of the next few "ratios" when super large values occur in the data series - i researched multiple techniques here and decided to use the custom Normalize() function - and what i found is, as long as we're applying the same formula consistently to the data series, since it's all relative to itself, we can confidently use the result. Please feel free to play around with this part further if you like - the code is commented for those who would like to research this further.
* Overall, the hope is to make the bar-by-bar analysis easier and faster for traders who apply VPA concepts in their trading
What is RROF?
--------------------------
* Once we have the values of relative volume and relative price strength, it's easy from there to combine these values into a moving index that can be used to track overall strength and detect reversals in market direction - if you think about it this a very similar concept to a volume-weighted RSI. I call that index the "Relative Rate of Flow" - or RROF (cause we're not using the direct volume and price values in the calculation, but rather relative values that we calculated with the proprietary "Normalize" function in the script.
* You can show RROF as a single or double-period - and you can customize it in terms of smoothing, and signal line - and also utilize the basic alerts to get notified when a change in strength from one side to the other (bullish vs bearish) is detected
* In the chart above, you can see how the RROF was able to detect change in market condition from Bearsh to Bullish - then from Bullish to Bearish for TSLA with good accuracy.
Other Usage Options in EVEREX
------------------------------------
* I wrote EVEREX with a lot of flexibility and utilization in mind, while focusing on a clean and easy to use visual - EVEREX should work with any time frame and any instrument - in instruments with no volume data, only price data will be used.
* You can completely hide the "EVEREX bands" and use EVEREX as a single or dual period strength indicator (by exposing the Bias/Sentiment plot which is hidden by default) -
here's how this setup would look like - in this mode, you will basically be using EVEREX the same way you're using a volume-weighted RSI
* or you can hide the bias/sentiment, and expose the Bulls & Bears plots (using the indicator's "Style" tab), and trade it like a Bull/Bear Pressure Index like this
* you can choose Moving Average type for most plot elements in EVEREX, including how to deal with the Lookback averaging
* you can set EVEREX to a different time frame than the chart
* did i mention basic alerts in this v1.0 ?? There's room to add more VPA-specific alerts in future version (for example, when Ease-of-Move or Compression bars are detected...etc) - let me know if the comments what you want to see
Final Thoughts
--------------------
* EVEREX can be used for bar-by-bar VPA analysis - There are so much literature out there about VPA and it's highly recommended that traders read more about what VPA is and how it works - as it adds an interesting (and critical) dimension to technical analysis and will improve decision making
* RROF is a "strength indicator" - it does not track price values (levels) or momentum - as you will see when you use it, the price can be moving up, while the RROF signal line starts moving down, reflecting decreasing strength (or otherwise, increasing bear strength) - So if you incorporate EVEREX in your trading you will need to use it alongside other momentum and price value indicators (like MACD, MA's, Trend Channels, Support & Resistance Lines, Fib / Donchian..etc) - to use for trade confirmation
Volume Zone Oscillator by [VanHelsig]Volume Zone Oscillator
How volume zone oscillator work:
Like other VZO it uses the same principle of calculation Volume direction divided on total volume and then scaled to 100 and -100.
When we have positive momentum close > close we have value of positive Volume, other way we have -volume negative one. <- this called a volume direction
Total volume is simply moving average with source of volume
And then MA with source of volume direction divided on MA of total colume and scaled it from 100 to -100
Basically we have few signals what VZO can show:
-Strong buy in oversold zone and strong sell in overbought zone. (Triangles at the top red and at the bottom green)
-Local Buy and Sell (Green and red Robustnesses)
-Posibility of trend change (Blue robustness)
Also you can webhook alerts to your spread sheet that sends values 1 for buys signals and -1 for sell signals in a range of 1 to 10 days
Here you can see marked signals on the chart
3 Zigzag for MTF Fib Alert [MsF]Japanese below / 日本語説明は英文の後にあります。
-------------------------
This indicator that automatically displays Fibonacci from each High & Low based on 3 Zigzags. It's useful for multi-timeframe analysis.
For example, Fibonacci calculated from the high and low prices (Zigzag 3 Period=100) of the upper timeframe can be displayed on the lower timeframe.
Also, you can set alerts for each Fibonacci point. It is useful when you are waiting for the price to return to the discount (50% or less) or the premium (50% or more) of the upper timeframe.
"Fib 1 - Crossing 0.00" … Trigger an alert when crossing the 0% line in Fibonacci of Zigzag1
"Fib 1 - Crossing 100.0" … Trigger an alert when crossing the 100% line in Fibonacci of Zigzag1
"Fib 1 - Crossing 23.6" … Trigger an alert when crossing the 23.6% line in Fibonacci of Zigzag1
"Fib 1 - Crossing 38.2" … Trigger an alert when crossing the 38.2% line in Fibonacci of Zigzag1
"Fib 1 - Crossing 50.0" … Trigger an alert when crossing the 50.0% line in Fibonacci of Zigzag1
"Fib 1 - Crossing 61.8" … Trigger an alert when crossing the 61.8% line in Fibonacci of Zigzag1
"Fib 1 - Crossing 76.4" … Trigger an alert when crossing the 76.4% line in Fibonacci of Zigzag1
*Same as Zigzag 1 and Zigzag 2 too.
"Choose Zig Zag Leg for fib" parameter means...
Latest : Calculate Fibonacci based on "the most recent Zigzag line".
Previous : Calculate Fibonacci based on "the previous Zigzag line".
-------------------------
3つのZigzagを元に各High&Lowからフィボナッチを自動で表示するインジケーターです。
Zigzagの期間を工夫することで、マルチタイムフレーム分析に役立ちます。
例えば、以下の設定とした場合:
Zigzag 1 Period … 8
Zigzag 2 Period … 25
Zigzag 3 Period … 100
上位時間足Zigzag(Period=100)の高値安値から形成されるフィボナッチを下位時間足に表示することができるのです。
また、このインジケーターではフィボナッチのポイント毎にアラートの設定が可能です。
上位時間足の割安価格(50%以下)や割高価格(50%以上)に価格が戻ってくるのを待っている時などに力を発揮してくれます。
"Fib 1 - Crossing 0.00" … Zigzag1のフィボナッチにおいて、0%ラインとクロスした場合にアラートを発報します
"Fib 1 - Crossing 100.0" … Zigzag1のフィボナッチにおいて、100%ラインとクロスした場合にアラートを発報します
"Fib 1 - Crossing 23.6" … Zigzag1のフィボナッチにおいて、23.6%ラインとクロスした場合にアラートを発報します
"Fib 1 - Crossing 38.2" … Zigzag1のフィボナッチにおいて、38.2%ラインとクロスした場合にアラートを発報します
"Fib 1 - Crossing 50.0" … Zigzag1のフィボナッチにおいて、50.0%ラインとクロスした場合にアラートを発報します
"Fib 1 - Crossing 61.8" … Zigzag1のフィボナッチにおいて、61.8%ラインとクロスした場合にアラートを発報します
"Fib 1 - Crossing 76.4" … Zigzag1のフィボナッチにおいて、76.4%ラインとクロスした場合にアラートを発報します
※Zigzag1およびZigzag2のフィボナッチも同様
"Choose Zig Zag Leg for fib"パラメータについて:
Latest … 一番新しいZigzagのライン(UpまたはDown)を元にフィボナッチを計算します。
Previous … ひとつ前のZigzagのライン(UpまたはDown)を元にフィボナッチを計算します。
ATR Oscillator - Index (Average True range Oscillator)The purpose of converting the ATR value indicator to an oscillator;
It is known that the ATR value is not between the two specified values. So it is not compressed between 0 and 100 like RSI and %B etc. Therefore, conditions such as "A condition if ATR value is X, B condition if ATR value is Y" cannot be created. In order to create these conditions, the max and min value range of the ATR value must be determined. This indicator converts the ATR values into a percentage number according to the maximum and minimum ATR values in the period you will choose. Max value is 100, min value is 0. The considered ATR value, on the other hand, corresponds to the % of the difference between the max and min value in the selected period.
In this way, conditions such as "If the ATR Oscillator value is greater than 10 or 20 or 30" can now be created, or the value of another indicator can be calculated based on the ATR Oscillator value. For example; Let's say we want the standard deviation of BBand to change according to the value of the ATR Oscillator. If BBand Standard Deviation is 3 if ATRO value is 100, BBand Standard Deviation is 2 if ATRO value is 0, and BBand Standard Deviation is 2.5 when ATRO value is 50;
We can encode it as BBand_Std_Dev=((ATRO*0.01)+2 )
If the ATRO value is between .... and ...., you can make improvements such as plot color X.
Prime, E & PI Superiority CyclesIf you have been studying the markets long enough you will probably have noticed a certain pattern. Whichever trade entry/exit logic you try to use, it will go through phases of working really well and phases where it doesn't work at all. This is the markets way of ensuring anyone who sticks to an oversimplified, one-dimensional strategy will not profit. Superiority cycles are a method I devised by which code interrogates the nature of where price has been pivoting in relation to three key structures, the Prime Frame, E Frame and Pi Frame which are plotted as horizontal lines at these values:
* Use script on 1 minute chart ONLY
prime numbers up to 100: 2.0,3.0,5.0,7.0,11.0,13.0,17.0,19.0,23.0,27.0,29.0,31.0,37.0,41.0,43.0,47.0,53.0,59.0,61.0,67.0,71.0,73.0,79.0,83.0,89.0,97.0
multiples of e up to 100: 2.71828, 5.43656, 8.15484, 10.87312, 13.5914, 16.30968, 19.02796, 21.74624, 24.46452, 27.1828, 29.90108, 32.61936, 35.33764,
38.05592, 40.7742, 43.49248, 46.21076, 48.92904, 51.64732, 54.3656, 57.08388, 59.80216, 62.52044, 65.23872, 67.957, 70.67528, 73.39356000000001, 76.11184,
78.83012, 81.5484, 84.26668000000001, 86.98496, 89.70324, 92.42152, 95.13980000000001, 97.85808
multiples of pi up to 100: 3.14159, 6.28318, 9.424769999999999, 12.56636, 15.70795, 18.849539999999998, 21.99113, 25.13272, 28.27431, 31.4159, 34.55749,
37.699079999999995, 40.840669999999996, 43.98226, 47.12385, 50.26544, 53.40703, 56.54862, 59.69021, 62.8318, 65.97339, 69.11498, 72.25657, 75.39815999999999,
78.53975, 81.68133999999999, 84.82293, 87.96452, 91.10611, 94.2477, 97.38929
These values are iterated up the chart as seen below:
The script sums the distance of pivots to each of the respective frames (olive lines for Prime Frame, green lines for E Frame and maroon lines for Pi Frame) and determines which frame price has been reacting to in the least significant way. The worst performing frame is the next frame we target reversals at. The table in the bottom right will light up a color that corresponds to the frame color we should target.
Here is an example of Prime Superiority, where we prioritize trading from prime levels:
The table and the background color are both olive which means target prime levels. In an ideal world strong moves should start and finish where the white flags are placed i.e. in this case $17k and $19k. The reason these levels are 17,000 and 19,000 and not just 17 and 19 like in the original prime number sequence is due to the scaling code in the get_scale_func() which allows the code to operate on all assets.
This is E Superiority where we would hope to see major reversals at green lines:
This is Pi Superiority where we would hope to see major reversals at maroon lines:
And finally I would like to show you a market moving from one superiority to another. This can be observed by the bgcolor which tells us what the superiority was at every historical minute
Pi Frame Superiority into E Frame Superiority example:
Prime Frame Superiority into E Frame Superiority example:
Prime Frame Superiority into Pi Frame Superiority example:
By rotating the analysis we use to enter trades in this way we hope to hide our strategy better from market makers and artificial intelligence, and overall make greater profits.
Combined Moving Averages + Squeeze & Volume Spike SignalsThis is a set of 4 combined moving averages. Each moving average is a combination of an EMA, SMA, HMA, RMA, WMA and VWMA with the same length as set in your input settings. All 6 of them are added together and then divided by 6 for an average of all of them. This is based on the theory that most traders use their own preference of moving averages, so combining them all should give us a better idea of where price should actually react since we are using the average of what most traders are using on their charts. It also smooths the moving averages out as well so you get a much easier to read moving average than any of them on their own which should help you hold positions longer and time your entries better.
The default lengths used for this indicator are as follows: 10, 50, 100 and 500. These lengths can be updated in the settings. The 10 and 500 will change colors when the individual moving average is less than or greater than its previous value. Price above or below the moving average does not affect the colors. The 50 and 100 are colored based on whether the 50 is greater/less than the 100.
The two middle length moving averages by default are the 50 and 100. This has been turned into a cloud because it is the area where price typically bounces, since tons of traders use the 50 and 100 moving averages. This should be your long/short zone when price is trending.
Each moving average can be set to use a different source such as close, open, high, low, ohlc4, etc. You can also adjust the length of each moving average. Default settings work well, but feel free to customize them to your liking. You can also change the colors of the lines in the settings.
Beware that changing the lengths of MA #2 and MA #3 will change the signals, squeezes and the cloud.
VOLUME SPIKES
The cloud will change to a brighter color when a volume spike is detected. When a major volume spike is detected, it will turn very bright colored green/red according to the direction of the cloud. This notifies you of volume spikes so you have a better idea of how strong the trend is. If the cloud is a dark green/red then that means that volume is less than or equal to the recent median volume.
SIGNALS
There are also signals that will be given when the current candle is in the cloud, the candle is going in the same direction as the cloud, the MA #2 and MA #3 is going in the same direction and a volume spike is detected. These help you identify good entries when markets are trending. Be cautious of these signals when the trend is sideways and not clearly moving in one direction. The signals can be turned on or off in the settings.
SQUEEZE
Many times when moving averages squeeze together, a big move happens shortly after. Because of this I added a yellow background color when a squeeze is detected. It looks at the median value difference of the MA #2 and MA #3 and if the current value difference is less than the median multiplied by the multiplier in the settings then it will change the background color to notify you. The default value of the multiplier is .6, meaning the squeeze signal will only show if the current value difference of the cloud is less than .6 of the median difference. The multiplier can be adjusted in the settings to suit your preferences. Lower values will only show tighter squeezes.
MARKETS
This indicator can be used on all markets including stocks, crypto, futures and forex.
TIMEFRAMES
This indicator can be used on all timeframes.
PAIRINGS
We recommend pairing this combined moving average with Trend Friend Swing Trade And Scalp Signals for extra confluence. Look for price to bounce in the cloud with good volume and a confirming signal from Trend Friend for highly probable moves.
[ChasinAlts] RSI (Time-Spent) Count[MO]// Hello fellow traduers, hope all is well in your neck of the woods. Anywho, I'll attempt to be short and sweet.
// I've been doing a LOT of work recently with RSI to figure out what its all about and to learn the ins and outs.
// Some great ideas (I think at least) have come to fruition from the deep-dive into RSI, thus, I've got 2 of these ideas
// to share. One notable feature for the RSI is when there is a BULLISH trend, it is VERY likely to stay within the upper
// 2/3rds of the RSI extremes (0-100) and vise-versa for BEARISH trends and the lower 2/3rds of the RSI extremes.
// That is where this script's idea was derived. Now PLEASE, do tell, if you disagree with me (preferably via a cool,
// calm, and collected comment...but hey, that's up to you). Ok, now the script.
//
// What this does is gives you a Bullish and Bearish count for the bars. Bullish Cnt counts up by +1 per every PRINTED bar
// that is above OverSold and vise-versa for the Bearish Cnt and being below OverBought. That does VERY MUCH make it
// possible for both counts to have a high value if RSI is staying between OverBought and OverSold for extended periods
// of time. Though, the ONLY count that will be shown is the one with the highest value.
//
// There are tooltips describing each of the settings but I will quickly talk about 3 more things. First of all, I prefer
// to have as few settings in the settings menu as possible thus the "Boundaries to OB/OS" setting can be viewed as the
// OverSold input and the OverBought setting is configured from this by subtracting "Boundaries to OB/OS" from 100
// (ie. 100-Oversold = OverBought). There Lastly, there is the option to show ONLY the coin with the MAX Count from each
// 'set' of coins. When that count resets to 0 then the next highest count coin will take its place. To use this instead
// of how the script is currently constructed you only need to comment out (add '//' at the beginning of each line of) the current
// plot functions and uncomment the lines at the very bottom under the 'MAX' section. Doing so also reveals the possibility of
// setting an alert for when the coin with the max count changes between different coins. This is very helpful because since it
// only gives the top count of ALL the coins in the selected set, this count is most likely going to continue forward with its
// count for a while thus when the alert goes off I prefer to look at the potential trades in the opposite direction of which
// the max coin was just in (ie. if its count plot/label is red and it stops then look for a potential long trade on the coin
// who's count just reset. Only ONE more piece of the script I have yet to talk about. There is a filter in the code and you
// can select to use or not use within the settings. What this filter does is it counts all the printed bars within the last
// ___bars(user selectable). This is due to the fact that if there is no trade that occurs on a bar then TradingView does not
// print the bar. The coins that have fewer updates also tend to stay within a tighter range for it's RSI thus many times
// giving the illusion that the coin is a good trade bc its trending count is very high (tending to be higher than the others)
// thus hogging the precious chart space if using the script in its current form, or hogging up the MAX slot so that no other
// (and most likely BETTER-TO-TRADE) coins will be shown. It is a great volatility indicator (that of which I have published
// a script using the idea in the recent past). If selected in the settings menu and if the % of printed bars count goes below
// the user set minimum % then both Bullish and Bearish counts will be reset. This is indicated within the counts plots by looking
// at the plots whose counts reset and rather than the plots just stopping printing in mid-air, they will continue to plot while the
// counts reset and fall down to 0. These types of coins will keep you in a trade longer that you'd probably want gaining less than
// you'd probably expect.
//
// Peace Folks & Happy Trading,
//
// ChasinAlts
lower_tf█ OVERVIEW
This library is a Pine programmer’s tool containing functions to help those who use the request.security_lower_tf() function. Its `ltf()` function helps translate user inputs into a lower timeframe string usable with request.security_lower_tf() . Another function, `ltfStats()`, accumulates statistics on processed chart bars and intrabars.
█ CONCEPTS
Chart bars
Chart bars , as referred to in our publications, are bars that occur at the current chart timeframe, as opposed to those that occur at a timeframe that is higher or lower than that of the chart view.
Intrabars
Intrabars are chart bars at a lower timeframe than the chart's. Each 1H chart bar of a 24x7 market will, for example, usually contain 60 intrabars at the LTF of 1min, provided there was market activity during each minute of the hour. Mining information from intrabars can be useful in that it offers traders visibility on the activity inside a chart bar.
Lower timeframes (LTFs)
A lower timeframe is a timeframe that is smaller than the chart's timeframe. This framework exemplifies how authors can determine which LTF to use by examining the chart's timeframe. The LTF determines how many intrabars are examined for each chart bar; the lower the timeframe, the more intrabars are analyzed.
Intrabar precision
The precision of calculations increases with the number of intrabars analyzed for each chart bar. As there is a 100K limit to the number of intrabars that can be analyzed by a script, a trade-off occurs between the number of intrabars analyzed per chart bar and the chart bars for which calculations are possible.
█ `ltf()`
This function returns a timeframe string usable with request.security_lower_tf() . It calculates the returned timeframe by taking into account a user selection between eight different calculation modes and the chart's timeframe. You send it the user's selection, along with the text corresponding to the eight choices from which the user has chosen, and the function returns a corresponding LTF string.
Because the function processes strings and doesn't require recalculation on each bar, using var to declare the variable to which its result is assigned will execute the function only once on bar zero and speed up your script:
var string ltfString = ltf(ltfModeInput, LTF1, LTF2, LTF3, LTF4, LTF5, LTF6, LTF7, LTF8)
The eight choices users can select from are of two types: the first four allow a selection from the desired amount of chart bars to be covered, the last four are choices of a fixed number of intrabars to be analyzed per chart bar. Our example code shows how to structure your input call and then make the call to `ltf()`. By changing the text associated with the `LTF1` to `LTF8` constants, you can tailor it to your preferences while preserving the functionality of `ltf()` because you will be sending those string constants as the function's arguments so it can determine the user's selection. The association between each `LTFx` constant and its calculation mode is fixed, so the order of the arguments is important when you call `ltf()`.
These are the first four modes and the `LTFx` constants corresponding to each:
Covering most chart bars (least precise) — LTF1
Covers all chart bars. This is accomplished by dividing the current timeframe in seconds by 4 and converting that number back to a string in timeframe.period format using secondsToTfString() . Due to the fact that, on premium subscriptions, the typical historical bar count is between 20-25k bars, dividing the timeframe by 4 ensures the highest level of intrabar precision possible while achieving complete coverage for the entire dataset with the maximum allowed 100K intrabars.
Covering some chart bars (less precise) — LTF2
Covering less chart bars (more precise) — LTF3
These levels offer a stepped LTF in relation to the chart timeframe with slightly more, or slightly less precision. The stepped lower timeframe tiers are calculated from the chart timeframe as follows:
Chart Timeframe Lower Timeframe
Less Precise More Precise
< 1hr 1min 1min
< 1D 15min 1min
< 1W 2hr 30min
> 1W 1D 60min
Covering the least chart bars (most precise) — LTF4
Analyzes the maximum quantity of intrabars possible by using the 1min LTF, which also allows the least amount of chart bars to be covered.
The last four modes allow the user to specify a fixed number of intrabars to analyze per chart bar. Users can choose from 12, 24, 50 or 100 intrabars, respectively corresponding to the `LTF5`, `LTF6`, `LTF7` and `LTF8` constants. The value is a target; the function will do its best to come up with a LTF producing the required number of intrabars. Because of considerations such as the length of a ticker's session, rounding of the LTF to the closest allowable timeframe, or the lowest allowable timeframe of 1min intrabars, it is often impossible for the function to find a LTF producing the exact number of intrabars. Requesting 100 intrabars on a 60min chart, for example, can only produce 60 1min intrabars. Higher chart timeframes, tickers with high liquidity or 24x7 markets will produce optimal results.
█ `ltfStats()`
`ltfStats()` returns statistics that will be useful to programmers using intrabar inspection. By analyzing the arrays returned by request.security_lower_tf() in can determine:
• intrabarsInChartBar : The number of intrabars analyzed for each chart bar.
• chartBarsCovered : The number of chart bars where intrabar information is available.
• avgIntrabars : The average number of intrabars analyzed per chart bar. Events like holidays, market activity, or reduced hours sessions can cause the number of intrabars to vary, bar to bar.
The function must be called on each bar to produce reliable results.
█ DEMONSTRATION CODE
Our example code shows how to provide users with an input from which they can select a LTF calculation mode. If you use this library's functions, feel free to reuse our input setup code, including the tooltip providing users with explanations on how it works for them.
We make a simple call to request.security_lower_tf() to fetch the close values of intrabars, but we do not use those values. We simply send the returned array to `ltfStats()` and then plot in the indicator's pane the number of intrabars examined on each bar and its average. We also display an information box showing the user's selection of the LTF calculation mode, the resulting LTF calculated by `ltf()` and some statistics.
█ NOTES
• As in several of our recent publications, this script uses secondsToTfString() to produce a timeframe string in timeframe.period format from a timeframe expressed in seconds.
• The script utilizes display.data_window and display.status_line to restrict the display of certain plots.
These new built-ins allow coders to fine-tune where a script’s plot values are displayed.
• We implement a new recommended best practice for tables which works faster and reduces memory consumption.
Using this new method, tables are declared only once with var , as usual. Then, on bar zero only, we use table.cell() calls to populate the table.
Finally, table.set_*() functions are used to update attributes of table cells on the last bar of the dataset.
This greatly reduces the resources required to render tables. We encourage all Pine Script™ programmers to do the same.
Look first. Then leap.
█ FUNCTIONS
The library contains the following functions:
ltf(userSelection, choice1, choice2, choice3, choice4, choice5, choice6, choice7, choice8)
Selects a LTF from the chart's TF, depending on the `userSelection` input string.
Parameters:
userSelection : (simple string) User-selected input string which must be one of the `choicex` arguments.
choice1 : (simple string) Input selection corresponding to "Least precise, covering most chart bars".
choice2 : (simple string) Input selection corresponding to "Less precise, covering some chart bars".
choice3 : (simple string) Input selection corresponding to "More precise, covering less chart bars".
choice4 : (simple string) Input selection corresponding to "Most precise, 1min intrabars".
choice5 : (simple string) Input selection corresponding to "~12 intrabars per chart bar".
choice6 : (simple string) Input selection corresponding to "~24 intrabars per chart bar".
choice7 : (simple string) Input selection corresponding to "~50 intrabars per chart bar".
choice8 : (simple string) Input selection corresponding to "~100 intrabars per chart bar".
Returns: (simple string) A timeframe string to be used with `request.security_lower_tf()`.
ltfStats()
Returns statistics about analyzed intrabars and chart bars covered by calls to `request.security_lower_tf()`.
Parameters:
intrabarValues : (float [ ]) The ID of a float array containing values fetched by a call to `request.security_lower_tf()`.
Returns: A 3-element tuple: [ (series int) intrabarsInChartBar, (series int) chartBarsCovered, (series float) avgIntrabars ].
TARVIS Labs - Alts Macro Bottom/Top SignalsSCRIPT DESCRIPTION
PLEASE READ THROUGH THIS CAREFULLY.
This is a script specifically written to help provide indicators from a macro view for ALTS. This script needs to be run on the 1 day. It helps indicate when to accumulate alts, and when its in a bull run when this a bull run top beginning to form with warnings, and a indicator that a top is in. This is described further below.
NOTE - in order to accomodate most alts the script had to be broad enough in its indicators to cover many different scenarios. If you are trading a smaller altcoin I suggest taking a more conservative approach to accumulation.
FAQs:
1. Why is there no accumulation zone showing up before an uptrend?
This could be because the trend has been so strong for this coin that there hasn't been a strong enough signal to accumulate or this could be that the chart doesnt have enough historical data (needs over 2 years) for the indicators to flash green.
2. Why is there no tops shown for a chart Im looking at?
This is either because there isn't enough historical data (needs over 2 years) for the indicators to build or because the altcoin didnt perform as well as the rest of the market. The altcoin has to perform as well as the market over the length of the bull run in order for the signals to show. Typically an altcoin that shows sharp increases and sharp drops shortly after will not have signals show up.
3. The "Potential End of Bull Run Top Indicator" showed up but we weren't near the top yet, why is that?
The alts indicator has to work across many altcoins, and their trends are not all the same. This can lead to the indicator showing but not necessarily being the exact top. The data from the alts macro bottom/top signals should be paired with the "TARVIS Labs bitcoin macro bottom/top signals" indicator for BTC. The reasoning is because if the top is not showing that its in for Bitcoin its likely that the altcoin's top is also not in. You should use the two in tandem to know if the bull run top is very likely in.
ACCUMULATION ZONE INDICATOR - LIGHT GREEN
Description
When we look at the general crypto landscape, the 200d & 300d EMAs are extremely useful. We can use their cross and momentum in order to determine a bottom forming. If the price has fallen over 40% below the 200 day EMA and the 200 day EMA has crossed below the 300d EMA, its a downtrend with a steep fall, which could indicate a good time to accumulate. When we see the 200 day EMA's slope drop drastically (over 5% w/w) it is also a good signal to accumulate.
Strategy for Usage
For alts, the strategy can vary drastically. You need to take into account:
1. the market cap of the altcoin, is it a smaller market cap altcoin or a larger one?
2. historical trend, does it typically trend strongly with a smaller accumulation zone?
Once you've taken these into account you can form a strategy. For example, if the altcoin has had smaller accumulation zones historically you'll want to take advantage of the accumulation zones when they pop up and be more aggressive (say a 30 day accumulation). If the altcoin has historically had longer accumulation zones then you'll want to be more conservative with your strategy and potentially have a 100 day (or even longer) accumulation period. If the altcoin is a smaller market cap alt, you will want to also take that into account. You'll want to likely be more conservative,
STRONG BUY IN ACCUMULATION ZONE INDICATOR - DARK GREEN
Description
We can add to the bottoming signal by looking for strong downtrends inside the bottoming signal. We do this by seeing when the 36 day EMA has a slope decreasing by 2% day/day.
Strategy for Usage
These strong downtrend days can be used to add more to our accumulation strategy. We can add more on these days (ex. double what you were planning to on a typical accumulation day).
LOCAL TOP NEAR BULL RUN TOP INDICATOR - RED
Description
When the 100 week EMA is in a strong uptrend (4% increase w/w) we can look for significant loss of momentum in order to determine if a local top is in near a bull run top. This strategy uses a MACD with 9/36/9 config for the daily chart. We look for the signals momentum loss, when the slope becomes negative.
Strategy for Usage
Ideally the right strategy to use here is to exit the market when this indicator starts. When the indicator ends if the "Potential End of Bull Run Top Indicator" is not showing on the chart you can buy back into the market.
POTENTIAL END OF BULL RUN TOP INDICATOR - DARK RED
Description
When the 100 week EMA is in a strong uptrend (3% increase w/w), and a MACD config of 108/234/9 has a negative signal slope signifying a very large momentum loss, but the 1d 18 EMA is still above the 1d 63 EMA we show this signal.
Strategy for Usage
This is a strong indicator that the top is in, and it potentially being the bull run top. Because alts can vary strongly in their charts, this should be a strong warning but not necessarily a certainty that the bull run is over.
Investing - Correlation Table This correlation tables idea is nothing new, many sites provides it.
However, I couldn't find any simple correlation indicator on TradingView despite how simple this indicator is.
This indicator works as its called. Calculating the correlation between 2 projects (can be used in stocks as well) using the 'ta.correlation' feature built into pinescript.
When it comes to investing, we do not want our stocks / crypto project to be heavily correlated to each other.
If they are heavily correlated to each other, then there isn't much point in diversifying.
That being said, it can be useful for traders who trade multiple pairs.
-----------------------------------------------------------------------------------------------------------------------------------------------------------
In this indicator, consist of 5 primary input and 15 secondary input (Symbol List).
Correlation Source:
This input options allow you to change how the correlation is calculated. By default, it uses 'close'.
Correlation Percentage(%):
This input options allows you configure how many (%) of correlation is considered as 'decoupled'.
This correlation will only move between -100% ~ 100%.
100% refers to it moving together.
-100% refers to it moving the opposite direction.
For example, Project A rises in Price, what is the possibility of Project B following:
A 100% correlation between Project A and Project B, refers to Project B will follow Project A movement.
A 50% correlation between Project A and Project B, refers to there is only 50% chance for Project B to follow Project A movement.
A -20% correlation between Project A and Project B, refers to there is a 20% chance of Project B moving the opposite direction of Project A
(Refers to the table on chart above to better understand what the numbers means. DOT/USD has a 100% correlation to DOT/USD. However. MXCUSDT has a -37.2% correlation to DOT/USD.)
Amounts Bars To Check:
This input options will check the amount of bars since the last bar in the chart.
If you want to know the correlation of the past 100 days in a daily chart, you will enter '100' into this options and it will check only the past 100 days.
Symbol List
This will allow you to input all the project symbol ticker ID to add into the correlation table.
-----------------------------------------------------------------------------------------------------------------------------------------------------------
Originally, I wish to use for loop to go through the symbol list to reduce the amount of code required. However, due to limitation of 'request.security' feature, I had to abandon that idea and use hard-coded for requesting security and use a while loop to identify the symbol correlation value in the array set then set the table value accordingly.
If there is any script writer could improve this or any unclear explanation, feel free to drop a comment below.
Easy Scalping by JayKasunBINANCE:BTCUSDTPERP
This indicator can show stochastic RSI K and D line crosses and some candlestick patterns on chart.
You can use this indicator to scalping, check usage for more info. Always backtest before trading with your real money.
This indicator will also help mobile TradingView users to get an idea when getting stochastic RSI signals, they can use this indicator to check if stochastic RSI K and D crossed or not. ( Because they have limited area to view chart ) .
4 Exponential moving averages are there in the indicator with easy enable disable option. 9 , 21 , 55 , 100 is suggested as default values.
Meanings of signs in chart
Blue triangle bellow candle means it's a stochastic RSI K and D line cross in oversold level
Red triangle above candle means it's a stochastic RSI K and D line cross in overbought level
Green plus sign shows when EMA 50 crossover EMA 100
Red plus sign shows when EMA 50 cross bellow EMA 100
Features
You can enable candlestick pattern displaying when stochastic RSI K and D cross happen. Check indicator settings.
You can enable displaying ATR Trailing Stops in indicator settings.
Indicator will only show blue triangle after Green plus sign and Red triangles after Red plus sign
After you enable candlestick pattern option, stochastic RSI crosses with candlestick patterns will show in deferent colors. Blue triangle will turn into green and Red triangle into pink.
Usage
Use lower time frames like 5m or 15m
After green plus sign, if price retouched 21 EMA or 55 EMA and blue triangle appeared , you can enter a long position.
After red plus sign, if price retouched 21 EMA or 55 EMA and red triangle appeared , you can enter a short position.
Always wait for candle close . signs of chart can be changed when candle closing. ( Does repaint until candle close )
Use ATR trailing to get a stop loss price.
Use 1:1 or 1:0.5 Risk Reward ratio. Because it's scalping and lower time frame.
Use more indicators like RSI to get more confirmations ( like divergences ) before entering a trade. Its more reliable.
Candlestick Patterns Short names
H - Hammer
IH -Inverted Hammer
BE - Bullish Engulfing ( green triangle )
BE - Bearish Engulfing ( pink triangle )
BH - Bullish Harami ( green triangle )
BH - Bearish Harami ( pink triangle )
I have included ATR + Trailing Stops by SimpleCryptoLife and Candlestick Patterns Identified (updated 3/11/15) by repo32
this is a combination of multiple indicators
credit goes to original creators of above indicators
BEST Strategy Template w/ Custom SL/TP Size - EducationalHello traders
I'm getting this question at least once per week: "how to define a custom exit quantity for my stop loss and a different one for my take profit"
Instead of answering every day the same question in my DMs, I've decided to publish an educational strategy template script using this
Features
- Select to use or not the SL and/or TP
- Define how many pips/USD the SL/TP should be set at from the entry
- Define what quantity percentage you want to close at SL and/or at TP (lines 301 to 320 in the code)
- Classical custom trailing stop where the SL is moved to breakeven once the TP is hit
- Get real-time backtesting stats based on the options you've selected
Update
You might not know it yet but from last week (or maybe the week before), the qty/qty_percent from the strategy.exit function refers now to the initial position size (and not the remaining position size like before)
For example:
strategy.exit("EX1", qty_percent = 50, stop = constant)
strategy.exit("EX2", qty_percent = 20, stop = constant)
What happened before
After "EX1" reaches SL levels, "EX2" exits 20% from the % of the remaining position size.
If the initial position size = 100 contracts
EX1 exits 50 contracts
EX2 exits 20% of 50 contracts = 10 contracts
What's happening now
After "EX1" reaches SL levels, "EX2" exits 20% from the % of the original position size.
If the initial position size = 100 contracts
EX1 exits 50 contracts
EX2 exits 20 (20% of 100 contracts) contracts
I think this is an improvement and I really enjoy this new behavior.
See you in a few days with another post :)
ALL THE BEST
Dave