Traders_Reality_LibLibrary "Traders_Reality_Lib"
This library contains common elements used in Traders Reality scripts
calcPvsra(pvsraVolume, pvsraHigh, pvsraLow, pvsraClose, pvsraOpen, redVectorColor, greenVectorColor, violetVectorColor, blueVectorColor, darkGreyCandleColor, lightGrayCandleColor)
calculate the pvsra candle color and return the color as well as an alert if a vector candle has apperared.
Situation "Climax"
Bars with volume >= 200% of the average volume of the 10 previous chart TFs, or bars
where the product of candle spread x candle volume is >= the highest for the 10 previous
chart time TFs.
Default Colors: Bull bars are green and bear bars are red.
Situation "Volume Rising Above Average"
Bars with volume >= 150% of the average volume of the 10 previous chart TFs.
Default Colors: Bull bars are blue and bear are violet.
Parameters:
pvsraVolume : the instrument volume series (obtained from request.sequrity)
pvsraHigh : the instrument high series (obtained from request.sequrity)
pvsraLow : the instrument low series (obtained from request.sequrity)
pvsraClose : the instrument close series (obtained from request.sequrity)
pvsraOpen : the instrument open series (obtained from request.sequrity)
redVectorColor : red vector candle color
greenVectorColor : green vector candle color
violetVectorColor : violet/pink vector candle color
blueVectorColor : blue vector candle color
darkGreyCandleColor : regular volume candle down candle color - not a vector
lightGrayCandleColor : regular volume candle up candle color - not a vector
@return
adr(length, barsBack)
Parameters:
length : how many elements of the series to calculate on
barsBack : starting possition for the length calculation - current bar or some other value eg last bar
@return adr the adr for the specified lenght
adrHigh(adr, fromDo)
Calculate the ADR high given an ADR
Parameters:
adr : the adr
fromDo : boolean flag, if false calculate traditional adr from high low of today, if true calcualte from exchange midnight
@return adrHigh the position of the adr high in price
adrLow(adr, fromDo)
Parameters:
adr : the adr
fromDo : boolean flag, if false calculate traditional adr from high low of today, if true calcualte from exchange midnight
@return adrLow the position of the adr low in price
splitSessionString(sessXTime)
given a session in the format 0000-0100:23456 split out the hours and minutes
Parameters:
sessXTime : the session time string usually in the format 0000-0100:23456
@return
calcSessionStartEnd(sessXTime, gmt)
calculate the start and end timestamps of the session
Parameters:
sessXTime : the session time string usually in the format 0000-0100:23456
gmt : the gmt offset string usually in the format GMT+1 or GMT+2 etc
@return
drawOpenRange(sessXTime, sessXcol, showOrX, gmt)
draw open range for a session
Parameters:
sessXTime : session string in the format 0000-0100:23456
sessXcol : the color to be used for the opening range box shading
showOrX : boolean flag to toggle displaying the opening range
gmt : the gmt offset string usually in the format GMT+1 or GMT+2 etc
@return void
drawSessionHiLo(sessXTime, show_rectangleX, show_labelX, sessXcolLabel, sessXLabel, gmt, sessionLineStyle)
Parameters:
sessXTime : session string in the format 0000-0100:23456
show_rectangleX : show the session high and low lines
show_labelX : show the session label
sessXcolLabel : the color to be used for the hi/low lines and label
sessXLabel : the session label text
gmt : the gmt offset string usually in the format GMT+1 or GMT+2 etc
sessionLineStyle : the line stile for the session high low lines
@return void
calcDst()
calculate market session dst on/off flags
@return indicating if DST is on or off for a particular region
timestampPreviousDayOfWeek(previousDayOfWeek, hourOfDay, gmtOffset, oneWeekMillis)
Timestamp any of the 6 previous days in the week (such as last Wednesday at 21 hours GMT)
Parameters:
previousDayOfWeek : Monday or Satruday
hourOfDay : the hour of the day when psy calc is to start
gmtOffset : the gmt offset string usually in the format GMT+1 or GMT+2 etc
oneWeekMillis : the amount if time for a week in milliseconds
@return the timestamp of the psy level calculation start time
getdayOpen()
get the daily open - basically exchange midnight
@return the daily open value which is float price
newBar(res)
new_bar: check if we're on a new bar within the session in a given resolution
Parameters:
res : the desired resolution
@return true/false is a new bar for the session has started
toPips(val)
to_pips Convert value to pips
Parameters:
val : the value to convert to pips
@return the value in pips
rLabel(ry, rtext, rstyle, rcolor, valid, labelXOffset)
a function that draws a right aligned lable for a series during the current bar
Parameters:
ry : series float the y coordinate of the lable
rtext : the text of the label
rstyle : the style for the lable
rcolor : the color for the label
valid : a boolean flag that allows for turning on or off a lable
labelXOffset : how much to offset the label from the current position
rLabelOffset(ry, rtext, rstyle, rcolor, valid, labelXOffset)
a function that draws a right aligned lable for a series during the current bar
Parameters:
ry : series float the y coordinate of the lable
rtext : the text of the label
rstyle : the style for the lable
rcolor : the color for the label
valid : a boolean flag that allows for turning on or off a lable
labelXOffset : how much to offset the label from the current position
rLabelLastBar(ry, rtext, rstyle, rcolor, valid, labelXOffset)
a function that draws a right aligned lable for a series only on the last bar
Parameters:
ry : series float the y coordinate of the lable
rtext : the text of the label
rstyle : the style for the lable
rcolor : the color for the label
valid : a boolean flag that allows for turning on or off a lable
labelXOffset : how much to offset the label from the current position
drawLine(xSeries, res, tag, xColor, xStyle, xWidth, xExtend, isLabelValid, labelXOffset, validTimeFrame)
a function that draws a line and a label for a series
Parameters:
xSeries : series float the y coordinate of the line/label
res : the desired resolution controlling when a new line will start
tag : the text for the lable
xColor : the color for the label
xStyle : the style for the line
xWidth : the width of the line
xExtend : extend the line
isLabelValid : a boolean flag that allows for turning on or off a label
labelXOffset : how much to offset the label from the current position
validTimeFrame : a boolean flag that allows for turning on or off a line drawn
drawLineDO(xSeries, res, tag, xColor, xStyle, xWidth, xExtend, isLabelValid, labelXOffset, validTimeFrame)
a function that draws a line and a label for the daily open series
Parameters:
xSeries : series float the y coordinate of the line/label
res : the desired resolution controlling when a new line will start
tag : the text for the lable
xColor : the color for the label
xStyle : the style for the line
xWidth : the width of the line
xExtend : extend the line
isLabelValid : a boolean flag that allows for turning on or off a label
labelXOffset : how much to offset the label from the current position
validTimeFrame : a boolean flag that allows for turning on or off a line drawn
drawPivot(pivotLevel, res, tag, pivotColor, pivotLabelColor, pivotStyle, pivotWidth, pivotExtend, isLabelValid, validTimeFrame, levelStart, pivotLabelXOffset)
draw a pivot line - the line starts one day into the past
Parameters:
pivotLevel : series of the pivot point
res : the desired resolution
tag : the text to appear
pivotColor : the color of the line
pivotLabelColor : the color of the label
pivotStyle : the line style
pivotWidth : the line width
pivotExtend : extend the line
isLabelValid : boolean param allows to turn label on and off
validTimeFrame : only draw the line and label at a valid timeframe
levelStart : basically when to start drawing the levels
pivotLabelXOffset : how much to offset the label from its current postion
@return the pivot line series
getPvsraFlagByColor(pvsraColor, redVectorColor, greenVectorColor, violetVectorColor, blueVectorColor, lightGrayCandleColor)
convert the pvsra color to an internal code
Parameters:
pvsraColor : the calculated pvsra color
redVectorColor : the user defined red vector color
greenVectorColor : the user defined green vector color
violetVectorColor : the user defined violet vector color
blueVectorColor : the user defined blue vector color
lightGrayCandleColor : the user defined regular up candle color
@return pvsra internal code
updateZones(pvsra, direction, boxArr, maxlevels, pvsraHigh, pvsraLow, pvsraOpen, pvsraClose, transperancy, zoneupdatetype, zonecolor, zonetype, borderwidth, coloroverride, redVectorColor, greenVectorColor, violetVectorColor, blueVectorColor, lightGrayCandleColor)
a function that draws the unrecovered vector candle zones
Parameters:
pvsra : internal code
direction : above or below the current pa
boxArr : the array containing the boxes that need to be updated
maxlevels : the maximum number of boxes to draw
pvsraHigh : the pvsra high value series
pvsraLow : the pvsra low value series
pvsraOpen : the pvsra open value series
pvsraClose : the pvsra close value series
transperancy : the transparencfy of the vecor candle zones
zoneupdatetype : the zone update type
zonecolor : the zone color if overriden
zonetype : the zone type
borderwidth : the width of the border
coloroverride : if the color overriden
redVectorColor : the user defined red vector color
greenVectorColor : the user defined green vector color
violetVectorColor : the user defined violet vector color
blueVectorColor : the user defined blue vector color
lightGrayCandleColor : the user defined regular up candle color
cleanarr(arr)
clean an array from na values
Parameters:
arr : the array to clean
@return if the array was cleaned
calcPsyLevels(oneWeekMillis, showPsylevels, psyType, sydDST)
calculate the psy levels
4 hour res based on how mt4 does it
mt4 code
int Li_4 = iBarShift(NULL, PERIOD_H4, iTime(NULL, PERIOD_W1, Li_0)) - 2 - Offset;
ObjectCreate("PsychHi", OBJ_TREND, 0, Time , iHigh(NULL, PERIOD_H4, iHighest(NULL, PERIOD_H4, MODE_HIGH, 2, Li_4)), iTime(NULL, PERIOD_W1, 0), iHigh(NULL, PERIOD_H4,
iHighest(NULL, PERIOD_H4, MODE_HIGH, 2, Li_4)));
so basically because the session is 8 hours and we are looking at a 4 hour resolution we only need to take the highest high an lowest low of 2 bars
we use the gmt offset to adjust the 0000-0800 session to Sydney open which is at 2100 during dst and at 2200 otherwize. (dst - spring foward, fall back)
keep in mind sydney is in the souther hemisphere so dst is oposite of when london and new york go into dst
Parameters:
oneWeekMillis : a constant value
showPsylevels : should psy levels be calculated
psyType : the type of Psylevels - crypto or forex
sydDST : is Sydney in DST
@return
ค้นหาในสคริปต์สำหรับ "bar"
Volume Buoyancy [LucF]█ OVERVIEW
This indicator uses simple analysis of past volume to determine how well it supports recent market activity. What I call Volume buoyancy measures the strength and direction of that support.
█ CONCEPTS
Buoyancy
In physics, buoyancy is the force described in Archemedes' principle :
Any object, wholly or partially immersed in a fluid, is buoyed up by a force equal to the weight of the fluid displaced by the object.
I use the term loosely in this indicator's context, as "Volume buoyancy" here can be directed either up or down, indicating that past volume displays a bullish or bearish bias.
The calculation of buoyancy begins from a target quantity of volume summed over n bars. We then search chart bars backward, adding the volume of up and down bars in two different slots until each slot reaches the target. We then calculate two average distances: one each for the up and down bars whose volume was summed to reach the target. These average distances are then subtracted and the difference is divided by the farthest distance we had to go to find the target in either up or down bars. The last part of the calculations looks like this:
(avgDistanceDn - avgDistanceUp) / barsAnalyzed
When the average distance of down bars is greater than that of up bars, buoyancy will be positive, indicating that past activity favors the upside and vice versa. The force's strength, which in the case of actual buoyancy is the weight of the displaced fluid, in our case is measured by the size of the gap between the average distance of up vs down bars in relation to the farthest distance we had to go in the past. Buoyancy is always between +1 and -1, with values higher/lower than 0.3/-0.3 typically being unsustainable.
█ HOW TO USE THE INDICATOR
Load the indicator on an active chart (see here if you don't know how).
The default configuration displays:
• Buoyancy as a monochrome gray line.
• A channel between buoyancy and its MA, colored in one of four colors. The MA is not plotted by default, but you can see where it is with the channel.
The default settings use an Arnaud Legoux moving average over 20 bars.
• A fill between the MA and the centerline, which can be one of two colors.
• A high level at 0.30, a low level at -0.30 and the centerline at zero.
The default target is the sum of volume in the last 20 bars.
█ FEATURES
The indicator's settings allow you to define:
• A higher timeframe you want the calculations to be made on. Note that you should then ensure your chart's timeframe is always lower than the higher timeframe you specified,
as calculating on a timeframe lower than the chart's does not make much sense because the indicator is then displaying only the value of the last intrabar in the chart bar.
• The number of bars for which to add volume to obtain the target value that will be searched for in past up and down bars.
• The display of the buoyancy and MA lines, the channel between them and the fill between the MA line and the centerline.
• The type and length of the MA.
Using the "Style" tab of the indicator's settings, you can change the type and width of the lines, and the level values.
█ INTERPRETATION
Buoyancy shares the properties and shortcomings of many oscillators:
• It tends to be noisy, which is why the MA line can be helpful.
• The safest way to use it may be as a rough sentiment indicator, i.e., by paying more attention to its bull/bear state above/below the centerline.
• The more intrepid traders will want to use the channel between the main line and the MA, as it will provide earlier information than main line crosses of the centerline.
Decreasing the number of bars for which the source is added to calculate the target value will increase the noise level, somewhat like decreasing an MA's length would, but keep in mind that the number of bars is not the length of an MA.
█ LIMITATIONS
Under some circumstances, the indicator will display zero values because it cannot find the target in past bars. This will happen at the beginning of the dataset when not enough past bars have elapsed, or in the rarer cases anywhere in the dataset, when the target cannot be found in the `MAX_BARS_BACK` number of bars defined in the first line of the indicator's code (the default is 1000).
The calculations use a very primitive interpretation of volume similar to that of OBV , where all the volume of a bar is attributed to either the up or down slot. The indicator nonetheless produces results I think can be useful because we are not so much calculating precise buying/selling pressure as trying to build a big picture of where past activity over many bars appears to be taking price.
Volume data is notoriously high-variance; large values that come into or exit the calculations' scope can produce sudden variations in results, somewhat like the drop-off effect in moving averages.
█ NOTES
• The script can be used with any chart timeframe, including seconds.
• Historical values will always produce the same results. In real time, values will change until the bar closes.
Close v Open Moving Averages Strategy (Variable) [divonn1994]This is a simple moving average based strategy that works well with a few different coin pairings. It takes the moving average 'opening' price and plots it, then takes the moving average 'closing' price and plots it, and then decides to enter a 'long' position or exit it based on whether the two lines have crossed each other. The reasoning is that it 'enters' a position when the average closing price is increasing. This could indicate upwards momentum in prices in the future. It then exits the position when the average closing price is decreasing. This could indicate downwards momentum in prices in the future. This is only speculative, though, but sometimes it can be a very good indicator/strategy to predict future action.
What I've found is that there are a lot of coins that respond very well when the appropriate combination of: 1) type of moving average is chosen (EMA, SMA, RMA, WMA or VWMA) & 2) number of previous bars averaged (typically 10 - 250 bars) are chosen.
Depending on the coin.. each combination of MA and Number of Bars averaged can have completely different levels of success.
Example of Usage:
An example would be that the VWMA works well for BTCUSD (BitStamp), but it has different successfulness based on the time frame. For the 12 hour bar timeframe, with the 66 bar average with the VWMA I found the most success. The next best successful combo I've found is for the 1 Day bar timeframe with the 35 bar average with the VWMA.. They both have a moving average that records about a month, but each have a different successfulness. Below are a few pair combos I think are noticeable because of the net profit, but there are also have a lot of potential coins with different combos:
It's interesting to see the strategy tester change as you change the settings. The below pairs are just some of the most interesting examples I've found, but there might be other combos I haven't even tried on different coin pairs..
Some strategy settings:
BTCUSD (BitStamp) 12 Hr Timeframe : 66 bars, VWMA=> 10,387x net profit
BTCUSD (BitStamp) 1 Day Timeframe : 35 bars, VWMA=> 7,805x net profit
BNBUSD (Binance) 12 Hr Timeframe : 27 bars, VWMA => 15,484x net profit
ETHUSD (BitStamp) 16 Hr Timeframe : 60 bars, SMA => 5,498x net profit
XRPUSD (BitStamp) 16 Hr Timeframe : 33 bars, SMA => 10,178x net profit
I only chose these coin/combos because of their insane net profit factors. There are far more coins with lower net profits but more reliable trade histories.
Also, usually when I want to see which of these strategies might work for a coin pairing I will check between the different Moving Average types, for example the EMA or the SMA, then I also check between the moving average lengths (the number of bars calculated) to see which is most profitable over time.
Features:
-You can choose your preferred moving average: SMA, EMA, WMA, RMA & VWMA.
-You can also adjust the previous number of calculated bars for each moving average.
-I made the background color Green when you're currently in a long position and Red when not. I made it so you can see when you'd be actively in a trade or not. The Red and Green background colors can be toggled on/off in order to see other indicators more clearly overlayed in the chart, or if you prefer a cleaner look on your charts.
-I also have a plot of the Open moving average and Close moving average together. The Opening moving average is Purple, the Closing moving average is White. White on top is a sign of a potential upswing and purple on top is a sign of a potential downswing. I've made this also able to be toggled on/off.
Please, comment interesting pairs below that you've found for everyone :) thank you!
I will post more pairs with my favorite settings as well. I'll also be considering the quality of the trades.. for example: net profit, total trades, percent profitable, profit factor, trade window and max drawdown.
*if anyone can figure out how to change the date range, I woul really appreciate the help. It confuses me -_- *
Polarity Divergences█ OVERVIEW
This indicator looks at the polarity of the intrabars composing a chart bar and fills chart candles orange when a majority of intrabars does not have the same polarity as that of the chart bar.
█ CONCEPTS
Bar polarity
By bar polarity , we mean the direction of a bar, which is determined by looking at the bar's close vs its open .
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 bars at the lower timeframe 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 script determines 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. This table shows which LTF is used for each range of chart timeframes:
Chart TF LTF
< 1D 1min
< 1W 30min
>= 1W 1D
█ HOW TO USE IT
The idea underlying this indicator is that if the polarity of a chart bar is up or down, the majority of its constituent intrabars should also be up or down. If that is not the case, then we can consider the bar to be abnormal, and so worthy of our attention. You will notice that such anomalies often occur before reversals, but irregularities do not necessarily announce reversals, as they also occur on pauses in trends or in trend-less conditions.
The indicator will update in real time, as intrabars composing the realtime chart bar are gradually built. The closer the realtime bar is to being closed, the more reliable the result will be, as that is when the indicator can analyze the most intrabars.
█ NOTES FOR Pine Script™ CODERS
This script uses the recently released request.security_lower_tf() Pine Script™ function discussed in this blog post . It works differently from the usual request.security() in that it can only be used at LTFs, and it returns an array containing one value per intrabar. This makes it much easier for programmers to access intrabar information.
A script can access a maximum of 100K intrabars; that is the reason we step the LTF by taking into account the chart's timeframe. By progressively increasing the LTF as the chart's timeframe increases, we provide users with optimal coverage of the chart bars. Always using a 1min LTF would, for example, limit the chart coverage to the last 69 bars on a 1D chart of a 24x7 market because each chart bar will usually contain 1440 intrabars (100K / 1440 = 69.4). By using a 30min LTF for 1D charts, we cover 100K / 48 = 2083 bars.
Look first. Then leap.
Smoothed Waddah ATR~~~All Credit to LAZY BEAR for posting the original Script which is an old MT4 indicator.~~~~
No this system does not repaint... if it does let me know. Either the code is wrong or you are using a repainting chart such as renko candles.
*PURPOSE*
This Is an "Enhanced or Smoothed" version of the script that captures the heiken-ashi closing price as its main calculation variable. While using normal bar or line charts. Enhancements integrate trade filters to reduce false signals.
*WHAT TYPE OF TRADING STRATEGY IS THIS?*
This is a Long Only, Trend Trading System. Is intended to be applied to Charts/Timeframes that produce sustainable trends for which ever asset you are trading.
*NOTE OF ADVICE REGARDING SETTINGS*
Settings can be tweaked but I have found that best results come with the given settings. If a chart is too choppy to trade this indicator successfully, it is advised not to change the settings but either find a different timeframe or different asset to apply this strategy to.
TLDR
Indicator measures the change of the MacD (difference between MAC D of given EMA's) and compares it to the difference between the Upper and Lower Bollinger bands. Green bar over trigger line= entry. Red bar over trigger line = close.
*SETTINGS AND INPUTS*
-MacD of HeikenAshi chart (will always be of the Heikenashi chart even when applied to different chart type)
sensitivity = input(150, title='Sensitivity') =range should be (125-175)multiplier so that MacD can be compared to BB
fastLength = input(20, title='MacD FastEMA Length')
slowLength = input(40, title='MacD SlowEMA Length')
-Bollinger Band of currently used price chart type
channelLength = input(20, title='BB Channel Length')
mult = input(1.5, title='BB Stdev Multiplier')
-14 Period RSI Trade Filter (set to 0 to Disable)
RSI14filter = input(40, title='RSI Value trade filter') =only gives entry when RSI is higher than given value
*ABSTRACT & CONCEPT*
TLDR - Indicator measures the change of the MacD (difference between MAC D of given EMA's) and compares it to the difference between the Upper and Lower Bollinger bands. Green bar over trigger line= entry. Red bar over trigger line = close.
Indicator plots -
Bars are the change in the MAC D and the indicator line is the difference in the BB.
When Bars are higher than the indicator line then it is considered a trend "Explosion"
Green Bars are Trend Explosion to the upside, Red Bars are Trend explosion to the downside.
GENERAL DETAIL-
the core calculation is measuring the change in MacD of current candle compared to the MacD of two previous candles.
This value is multiplied by the sensitivy so it can be compared to the change in Bollinger Band Width.
if the MACD change is positive then you get a green/lime bar for that value. If the MacDchange is negative you get a red/orange bar for that value.
and are determined by whether the actual change is increasing in that direction or decreasing. (bars getting taller or bars getting shorter)
Entry signal for long is A positive change in MACD difference (Green bar) that is greater than the change of the bollinger band (orange signal line) AND if the RSI value is above your filter.
Close signal or Trend Stop Warning Signal is given when a Negative MacD Difference (red bar) is greater than the change of the bollinger band (orange Line)
*CONSIDERATIONS AND THOUGHTS*
I have over 150 iterations of this indicator and this is the most consistent and best version of settings and filters I was able to generate. I built this indicator specifically for 3 charts. SPY monthly, QQQ monthly, BTC 3 Day. However this indicator works well on any long term bullish chart. (tech stocks are great) .
Trend trading systems are intended to be homerun hitting, plunge protecting indicators that allow for long legs and expanding volatility. This indicator does this as the trigger line is Dynamic with the expansion and contraction of the bollinger band.
I do not take every signal specifically not the close signals. Instead they more like warnings in ultra bullish environments.
If i had to pair this indicator with any other filter than the RSI, it would be a long term moving average i.e. the 50 week or equivalent for your chart. signals above rising moving averages means that you are trading with an upward trending market.
Hope this helps. Happy trades.
-SnarkyPuppy
Bollinger Bands SRThis simple script base on Bollinger Bands to defined Support and Resistance and marked Bar False broken SR by Reversal Arrow. Detail of rule as below:
================================================
1.Defined Support and Resistance
1.1.Support
+ Key bar:
- Open Price lower than BB lower band, Close Price higher than BB lower band
+ Support Zone:
- Bottom Zone place at Low Price of Key bar
- Top Zone place at Median Price (HL2) of Key bar
1.2.Resistance
+ Key bar:
- Open Price higher than BB upper band, Close Price lower than BB upper band
+ Resistance Zone:
- Bottom Zone place at Median Price (HL2) of Key bar
- Top Zone place at High Price of Key bar
1.3.Median Line
+ Median Line place at half of Range limit by Support and Resistance
================================================
2.Defined False Break
2.1.Defined Bull Trap
+ High Price higher than Top of Resistance Zone
+ Close Price lower than Top of Resistance Zone
+ Open Price higher than Bottom of Resistance Zone
+ Bar Direction is downward
+ Body of current Bar greater than Body of previous bar
2.2.Defined Bear Trap
+ Low Price lower than Bottom of Support Zone
+ Close Price higher than Bottom of Support Zone
+ Open Price lower than Top of Support Zone
+ Bar Direction is upward
+ Body of current Bar greater than Body of previous bar
================================================
3.Defined Reversal Arrow and Alert
+ Arrow Down when Bull Trap appear
+ Arrow Up when Bear Trap appear
+ Alert when Reversal Arrow appear
================================================
4.Trading
4.1.Long Position
+ Consider open positon when Arrow Up appear
+ Stoploss place at Low Price of Arrow Bar
+ Take profit at Resistance Zone
+ Consider Exit Position when:
- Price moving above Median Line and has Bearish Reversal Pattern
4.2.Short Position
+ Consider open positon when Arrow Down appear
+ Stoploss place at High Price of Arrow Bar
+ Take profit at Support Zone
+ Consider Exit Position when:
- Price moving below Median Line and has Bullish Reversal Pattern
[BCT] Can BTC be predicted or is it purely random?Variance Ratio**This indicator can be applied to the ticker of your choice (not just BTC)**
Markets are said to be "efficient". An efficient market is by definition unpredictable - no matter the amount of ML, computation, or indicators thrown at it. In particular, in an efficient market, TA will not be of help.
An illustration of efficient markets is the WSJ's longstanding monkey vs. human contest:Blindfolded Monkey Beats Humans With Stock Picks, granted there are several flaws to it.
BTC is a relatively new market. New markets are typically highly inefficient (easier to make money) and become more and more efficient over time (harder to make money). How much more efficient is BTC becoming?
We apply the Variance Ratio method and apply it to BTC.
BACKGROUND ON THE VARIANCE RATIO METHOD
Based on 1988 MacKinlay's seminal paper "Stock Market Prices do not Follow a Random Walk", the idea is to exploit a phenomenon called "variance scaling".
For those keen on looking into the math, the short version of it is under the assumption of iid (random walk) we have the following:
H0: Var(Sum(returns over K bars))=Sum(Var(returns over 1 bar))=k*Var(return over 1 bar)
We look to reject or not H0 depending on the observations.
In this script, we compare the variance of the (log) returns for the chart selected between:
(1) The (average) variance over k bars (call this Vk)
(2) The (average) variance over 1 bar (call this V1)
H0 simply says that Vk=k*V1 if the stock follows a random walk.
We compute the Variance Ratio VR(k)=Variance(returns over k bar)/(Sum(Var(returns over 1 bar)))-1
We then compute the associated Z-score which we chart out for a configurable k number of bars.
HOW TO INTERPRET THE CHART
The line drawn is the Z-Score for VR(k). It represents the number of standard deviations of VR(k) from 0 - the further out, the less random.
- If the line is close / hovers around 0, the ticker appears to follow a random walk (i.e. may not be predictable)
- If the line is consistently > 2 or <-2, the ticker likely does not follow a random walk (i.e. may have predictable features)
- If the line is positive, it means that the Variance on the k bars is larger than the variance on 1 bar (more variance on longer timeframes)
- If the line is negative, it means that the Variance on the k bars is smaller than the variance on 1 bar (more variance on smaller timeframes)
USE CASES
- Identify timeframes where you won't be able to make money
- Identify whether a stock cannot be predicted (forget about TA, indicators etc. -- a random walk is not predictable)
- Identify whether a stock is becoming less and less predictable (Z-score amplitude will decrease over time)
FEATURES
- select the number of K bar to compare vs. 1 bar (default = 16) - ideally a power of 2 but any other number will work. The chart is based off this selection
- select the lookback period for the analysis (500 bars by default)
- select the source to analyze (default = close, but you may select other inputs to calculate the returns from)
- results form the statistical tests on different K's in the table on the right/bottom side of the chart (H0 rejected = not random walk; H0 not rejected = it essentially looks rather random and we can't conclude that it's not a random walk)
COMMENTARY ON BTC
- It appears BTC's absolute value of the ZScore on the Variance Ratio is declining year after year - corroborating an increasingly efficient market as new participants join.
- However, we can still detect a fair amount of potential inefficiency using this simple test.
As usual, this is not investment advice. DYOR.
With love,
🐵BCT🐵
Tape [LucF]█ OVERVIEW
This script prints an ersatz of a trading console's "tape" section to the right of your chart. It displays the time, price and volume of each update of the chart's feed. It also calculates volume delta for the bar. As it calculates from realtime information, it will not display information on historical bars.
█ FEATURES
Calculations
Each new line in the tape displays the last price/volume update from the TradingView feed that's building your chart. These updates do not necessarily correspond to ticks from the originating broker/exchange's matching engine. Multiple broker/exchange ticks are often aggregated in one chart update.
The script first determines if price has moved up or down since the last update. The polarity of the price change, in turn, determines the polarity of the volume for that specific update. If price does not move between consecutive updates, then the last known polarity is used. Using this method, we can calculate a running volume delta accumulation for the bar, which becomes the bar's final volume delta value when the bar closes (you can inspect values of elapsed realtime bars in the Data Window or the indicator's values). Note that these values will all reset if the script re-executes because of a change in inputs or a chart refresh.
While this method of calculating volume delta is not perfect, it is currently the most precise way of calculating volume delta available on TradingView at the moment. Calculating more precise results would require scripts to have access to bid/ask levels from any chart timeframe. Charts at seconds timeframes do use exchange/broker ticks when the feeds you are using allow for it, and this indicator will run on them, but tick data is not yet available from higher timeframes, for now. Also note that the method used in this script is far superior to the intrabar inspection technique used on historical bars in my other "Delta Volume" indicators. This is because volume delta here is calculated from many more realtime updates than the available intrabars in history.
Inputs
You can use the script's inputs to configure:
• The number of lines displayed in the tape.
• If new lines appear at the top or bottom.
• If you want to hide lines with low volume.
• The precision of volume values.
• The size of the text and the colors used to highlight either the tape's text or background.
• The position where you want the tape on your chart.
• Conditions triggering three different markers.
Display
Deltas are shown at the bottom of the tape. They are reset on each bar. Time delta displays the time elapsed since the beginning of the bar, on intraday timeframes only. Contrary to the price change display by TradingView at the top left of charts, which is calculated from the close of the previous bar, the price delta in the tape is calculated from the bar's open, because that's the information used in the calculation of volume delta. The time will become orange when volume delta's polarity diverges from that of the bar. The volume delta value represents the current, cumulative value for the bar. Its color reflects its polarity.
When new realtime bars appear on the chart, a ↻ symbol will appear before the volume value in tape lines.
Markers
There are three types of markers you can choose to display:
• Marker 1 on volume bumps. A bump is defined as two consecutive and increasing/decreasing plus/minus delta volume values,
when no divergence between the polarity of delta volume and the bar occurs on the second bar.
• Marker 2 on volume delta for the bar exceeding a limit of your choice when there is no divergence between the polarity of delta volume and the bar. These trigger at the bar's close.
• Marker 3 on tape lines with volume exceeding a threshold. These trigger in realtime. Be sure to set a threshold high enough so that it doesn't generate too many alerts.
These markers will only display briefly under the bar, but another marker appears next to the relevant line in the tape.
The marker conditions are used to trigger alerts configured on the script. Alert messages will mention the marker(s) that triggered the specific alert event, along with the relevant volume value that triggered the marker. If more than one marker triggers a single alert, they will overprint under the bar, which can make it difficult to distinguish them.
For more detailed on-chart analysis of realtime volume delta, see my Delta Volume Realtime Action .
█ NOTES FOR CODERS
This script showcases two new Pine features:
• Tables, which allow Pine programmers to display tabular information in fixed locations of the chart. The tape uses this feature.
See the Pine User Manual's page on Tables for more information.
• varip -type variables which we can use to save values between realtime updates.
See the " Using `varip` variables " publication by PineCoders for more information.
LPS PLSY INDICATOR for VSA( Google translation from Russian.)
Signal conditions:
1. There is a bar with an increased volume
2. The next bar after the bar with increased volume closes in the other direction
Arguments:
Comparison period - the period during which the volumes are compared with each other to calculate the bars with the increased volume.
sensitivity of increased volumes - according to the percentrank indicator - the border above which the volume will be considered large, the same as in the Volume on bar VSA indicator - indicator V2 - for clarity of how it works, I recommend looking at it.
efficiency of the next bar - (efficiency of the next bar from 0 to 100) ") - the efficiency of buying or selling on the next bar, bar field with a large volume. If the value is closer to 100, then the bars whose spread corresponds to the inserted volume will be taken into account, if closer to 0, then bars with a small spread and a large volume can be taken into account.
This argument is calculated similarly to the efficiency of bulls and bears for VSA
Attention.
In its original form, this indicator can give a large number of false signals. To filter out false signals, it should be used after studying the theory of VSA.
Russian language
Условия для сигнала:
1. Имеется бар с повышенным объёмом
2. Следующий бар после бара с повышенным объемом закрывается в другую сторону
Аргументы:
период для сравнения – период, на котором сравниваются между собой объёмы, для вычисления баров с повышенным объемом.
чувствительность повышенных объемов – согласно индикатору percentrank – граница выше которой̆ объем будет считаться большим, то же самое, что в индикаторе Volume on bar VSA - indicator V2 – для наглядности как это работает рекомендую посмотреть его.
эффективность следующего бара от 0 до 100 - эффективность покупок или продаж на следующем баре, поле бара с большим объемом. Если значение ближе к 100 то будут учитываться бары у которых спред соответствует вложенному объему, если ближе к 0 то могут учитываться бары у которых спред маленький а объем большой.
Расчёт этого аргумента производится аналогично индикатору efficiency of bulls and bears for VSA
Примечание
В исходном виде этот индикатор может давать большое количество ложных сигналов. Для отсеивания ложных сигналов его следует применять после изучения теории VSA.
Time Offset Calculation Framework - PineCoders FAQ█ OVERVIEW
Calculating time-based offsets is necessary when coders need to draw lines or labels into the future because using `xloc = xloc.bar_time` in `label.new()` or `line.new()` is then mandatory.
This script provides a function to help with those calculations:
f_timeFrom(_from, _qty, _units)
The function calculates a negative (into the past) or positive (into the future) offset from the current bar's starting or closing time, or from the current time of day.
The offset can be expressed in units of chart resolution, or in seconds, minutes, hours, days, months or years.
█ HOW TO USE THE FRAMEWORK
1. You will need to include the supplied `f_resInMinutes()` function in your script in order to use `f_timeFrom()`.
It is used to calculate offsets using chart units when `f_timeFrom(_, _, "chart")` is used.
2. Whether you use `f_timeFrom()` for labels or lines, remember to use `xloc = xloc.bar_time`, as the default is `xloc = xloc.bar_index`.
3. Use `f_timeFrom()` for the `x` argument in `label.new()`, or for `x1` or `x2` in `line.new()`.
It can of course also be used in the relevant `label.set_*()` or `line.set_*()` functions.
Examples
// Label 3 days into the future from current bar's time.
label.new(f_timeFrom("bar", 3, "days"), high, "time + 3 days", xloc.bar_time)
// Label 2 hours into the future from current time
label.new(f_timeFrom("now", 2, "hours"), high, "timenow + 3 hours", xloc.bar_time)
// Label at bar's time plus 4 units of the chart's resolution.
label.new(f_timeFrom("bar", 4, "chart"), high, "time + 3 chart units", xloc.bar_time)
The parameters are:
f_timeFrom(_from, _qty, _units) =>
// _from : starting time from where the offset is calculated: "bar" to start from the bar's starting time, "close" to start from the bar's closing time, "now" to start from the current time.
// _qty : the +/- qty of _units of offset required. A "series float" can be used but it will be cast to a "series int".
// _units : string containing one of the seven allowed time units: "chart" (chart's resolution), "seconds", "minutes", "hours", "days", "months", "years".
█ LIMITATIONS
While this function makes it easier for coders to calculate time offsets using a variety of methods, it does not solve the inherent problematic that offsets do not calculate accurately when bars are missing between the start and end times of the offset. There is currently no way to circumvent this challenge in Pine.
Missing bars will occur on holidays, during no-trade periods (including normal periods where markets are closed) and when there are irregularities in data feeds. Charts at seconds resolutions, for example, will often miss bars when there are no trades to update the feed. On hourly charts of non 24x7 markets, periods when the markets are closed will also cause irregularities, as will holidays on day charts.
Other irregularities can occur because of how the offsets are calculated. A calculation of a one second offset from the bar's time will end one bar further on daily charts, for example. `f_timeFrom()` is no panacea; it simply makes offsets easier to calculate, however imprecise they are.
█ HOW TO USE THIS SCRIPT
The script's Inputs allow you to specify an offset, its units and starting time, and control the frequency of bars where lines are drawn.
Use the Inputs to play around with the parameters; you will quickly notice the irregularities mentioned above and be able to judge the usefulness of time-based offsets on the type of chart you use.
Look first. Then leap.
efficiency of bulls and bears for VSA(Google translation from Russian.)
This indicator shows the effectiveness of selling or buying.
It is calculated as follows: using percentrank, the volume and the value of the spread are estimated (momentum = 1)
the resulting estimate of the volume value is divided by the estimate of the spread (momentum = 1) and thus we obtain the value. The larger it is, the more efficient and easier the price movement was.
If the indicator value is small, then this means that the movement was ineffective, because the volume (money) was invested. but no result.
The color of the volume bars is assigned as follows:
Buyers:
If the volume is large - Blue - green
If middle, then blue
Small - light blue
Sellers:
If the volume is large - Burgundy color
If middle, then purple
Small volume - light purple
Indicator parameters:
Comparison period - the period at which the volumes and spread are compared with each other - by default it is 50, selected as the most universal period suitable for different timeframes. But for daytime ones. Weekly and monthly timeframes may need to be shortened. This is true after significant spikes in volume that are exceptional over the long term.
Period spread - Bars from close to close - or in other words, it is momentum - defaults to 1
sensitivity of increased volumes - according to the percentrank indicator - the limit above which the volume will be considered large, the same as in the Volume on bar VSA - indicator V2 - for clarity, I recommend looking at it.
The default is 85, which means. that if the current value of the volume is greater than 85% of the remaining values in this period, then such a value of the volume will be considered high.
medium volume sensitivity - the same sensitivity of increased volumes but for medium volumes.
multiplier of increased volumes - this is an empirical factor to emphasize the importance of increased volumes - default = 20
multiplier of average volumes - the same. As above, but for medium volumes - the default is 10
reduced volume multiplier - Default is 1.
Knowledge of VSA is required to read this indicator
This indicator is recommended for use with indicators:
Volume on bar VSA - indicator V2
BAR for VSA
Russian language
Этот индикатор показывает эффективность продаж или покупок.
Рассчитывается следующим образом: с помощью percentrank оценивается величина объема и велечина спреда (momentum = 1)
полученная оценка велечины объема делится на оценку спреда (momentum = 1) и таким образом получаем значение. Чем оно больше, тем движение цены было эффективнее и легче.
Если значение индикатора маленькое, то это означает, что движение было неэффективным, поскольку объем (деньги) вложили. а результата нет.
Цвет барам объемов присваиваются следующим образом:
У покупателей:
Если объем большой - Сине – зелёный цвет
Если средний – то голубой
Маленький – свело-голубой
У продавцов:
Если объем большой - Бордовый цвет
Если средний – то пурпурный
Маленький объем – светло-пурпурный
Параметры индикатора:
Comparison period (период для сравнения) – период на котором между собой сравниваются объемы и спред – по умолчанию равно 50 , выбрано как наиболее универсальный период подходящий для различных таймфреймов. Но для дневных. Недельных и месячных таймфреймов может потребоваться уменьшить период. Это актуально после значительных всплесков объемов, которые являются исключительными на длительном периоде.
Period spread - Bars from close to close (Период спреда - Баров от закрытия до закрытия) – или другими словами это momentum – по умолчанию равно 1
sensitivity of increased volumes (чувствительность повышенных объемов) – согласно индикатору percentrank – граница выше которой объем будет считаться большим, то же самое, что в индикаторе Volume on bar VSA - indicator V2 – для наглядности как это работает рекомендую посмотреть его.
По умолчанию задано 85 – это означает. что если текущее значение объема больше, чем 85% остальных значений на этом периоде, то такое значение объема будет считаться высоким.
medium volume sensitivity (чувствительность средних объемов) – то же самое sensitivity of increased volumes но для средних объемов.
multiplier of increased volumes (множитель (вес) повышенных объемов) – это эмперический коэффициент для придания особой важности повышенным объемам- по умолчанию = 20
multiplier of average volumes (множитель (вес) средних объемов) – то же самое. Что и выше, но для средних объемов – по умолчанию равно 10
reduced volume multiplier (множитель (вес) пониженных объемов) – по умолчанию равно 1.
Для чтения данного индикатора необходимо знание VSA
Этот индикатор рекомендуется использовать с индикаторами:
Volume on bar VSA - indicator V2
BAR for VSA
ADX with Color like MACD HistogramThis is a usual ADX Indicator but the colors change when the next bar falls or grows from the previous bar.
I think that the use of ADX can be maximized by seeing whether the movement is lower or higher than the previous like MACD Histogram.
The ADX indicator is very powerful for driving long-term trends and is effectively used for 4-hour or 1-hour Time Frames.
When ADX is above level 20, the color of the Bar will be blue or light blue. The blue bar means that the bar is higher than the previous bar. The light blue bar means the bar is lower than the previous one.
When ADX is below level 20, the color of the bar will be dark gray or light gray. The dark gray bar means that the bar is lower than the previous bar. The light gray bar means the bar is higher than the previous bar.
When the bar turns blue that's when we can add shares to our winning position.
When the price is above level 40, the background of the bars will be red, indicating that the price is in a very strong trend and will run out of its thrust soon. That's when we get ready to take profit, which is when the ADX Bar which is blue turns light blue.
-
FYI, I use ADX just for adding the shares to my winning position and exiting the market. I don't wait for ADX turns blue to enter the market.
Ruckard TradingLatinoThis strategy tries to mimic TradingLatino strategy.
The current implementation is beta.
Si hablas castellano o espanyol por favor consulta MENSAJE EN CASTELLANO más abajo.
It's aimed at BTCUSDT pair and 4h timeframe.
STRATEGY DEFAULT SETTINGS EXPLANATION
max_bars_back=5000 : This is a random number of bars so that the strategy test lasts for one or two years
calc_on_order_fills=false : To wait for the 4h closing is too much. Try to check if it's worth entering a position after closing one. I finally decided not to recheck if it's worth entering after an order is closed. So it is false.
calc_on_every_tick=false
pyramiding=0 : We only want one entry allowed in the same direction. And we don't want the order to scale by error.
initial_capital=1000 : These are 1000 USDT. By using 1% maximum loss per trade and 7% as a default stop loss by using 1000 USDT at 12000 USDT per BTC price you would entry with around 142 USDT which are converted into: 0.010 BTC . The maximum number of decimal for contracts on this BTCUSDT market is 3 decimals. E.g. the minimum might be: 0.001 BTC . So, this minimal 1000 amount ensures us not to entry with less than 0.001 entries which might have happened when using 100 USDT as an initial capital.
slippage=1 : Binance BTCUSDT mintick is: 0.01. Binance slippage: 0.1 % (Let's assume). TV has an integer slippage. It does not have a percentage based slippage. If we assume a 1000 initial capital, the recommended equity is 142 which at 11996 USDT per BTC price means: 0.011 BTC. The 0.1% slippage of: 0.011 BTC would be: 0.000011 . This is way smaller than the mintick. So our slippage is going to be 1. E.g. 1 (slippage) * 0.01 (mintick)
commission_type=strategy.commission.percent and commission_value=0.1 : According to: binance . com / en / fee / schedule in VIP 0 level both maker and taker fees are: 0.1 %.
BACKGROUND
Jaime Merino is a well known Youtuber focused on crypto trading
His channel TradingLatino
features monday to friday videos where he explains his strategy.
JAIME MERINO STANCE ON BOTS
Jaime Merino stance on bots (taken from memory out of a 2020 June video from him):
'~
You know. They can program you a bot and it might work.
But, there are some special situations that the bot would not be able to handle.
And, I, as a human, I would handle it. And the bot wouldn't do it.
~'
My long term target with this strategy script is add as many
special situations as I can to the script
so that it can match Jaime Merino behaviour even in non normal circumstances.
My alternate target is learn Pine script
and enjoy programming with it.
WARNING
This script might be bigger than other TradingView scripts.
However, please, do not be confused because the current status is beta.
This script has not been tested with real money.
This is NOT an official strategy from Jaime Merino.
This is NOT an official strategy from TradingLatino . net .
HOW IT WORKS
It basically uses ADX slope and LazyBear's Squeeze Momentum Indicator
to make its buy and sell decisions.
Fast paced EMA being bigger than slow paced EMA
(on higher timeframe) advices going long.
Fast paced EMA being smaller than slow paced EMA
(on higher timeframe) advices going short.
It finally add many substrats that TradingLatino uses.
SETTINGS
__ SETTINGS - Basics
____ SETTINGS - Basics - ADX
(ADX) Smoothing {14}
(ADX) DI Length {14}
(ADX) key level {23}
____ SETTINGS - Basics - LazyBear Squeeze Momentum
(SQZMOM) BB Length {20}
(SQZMOM) BB MultFactor {2.0}
(SQZMOM) KC Length {20}
(SQZMOM) KC MultFactor {1.5}
(SQZMOM) Use TrueRange (KC) {True}
____ SETTINGS - Basics - EMAs
(EMAS) EMA10 - Length {10}
(EMAS) EMA10 - Source {close}
(EMAS) EMA55 - Length {55}
(EMAS) EMA55 - Source {close}
____ SETTINGS - Volume Profile
Lowest and highest VPoC from last three days
is used to know if an entry has a support
VPVR of last 100 4h bars
is also taken into account
(VP) Use number of bars (not VP timeframe): Uses 'Number of bars {100}' setting instead of 'Volume Profile timeframe' setting for calculating session VPoC
(VP) Show tick difference from current price {False}: BETA . Might be useful for actions some day.
(VP) Number of bars {100}: If 'Use number of bars (not VP timeframe)' is turned on this setting is used to calculate session VPoC.
(VP) Volume Profile timeframe {1 day}: If 'Use number of bars (not VP timeframe)' is turned off this setting is used to calculate session VPoC.
(VP) Row width multiplier {0.6}: Adjust how the extra Volume Profile bars are shown in the chart.
(VP) Resistances prices number of decimal digits : Round Volume Profile bars label numbers so that they don't have so many decimals.
(VP) Number of bars for bottom VPOC {18}: 18 bars equals 3 days in suggested timeframe of 4 hours. It's used to calculate lowest session VPoC from previous three days. It's also used as a top VPOC for sells.
(VP) Ignore VPOC bottom advice on long {False}: If turned on it ignores bottom VPOC (or top VPOC on sells) when evaluating if a buy entry is worth it.
(VP) Number of bars for VPVR VPOC {100}: Number of bars to calculate the VPVR VPoC. We use 100 as Jaime once used. When the price bounces back to the EMA55 it might just bounce to this VPVR VPoC if its price it's lower than the EMA55 (Sells have inverse algorithm).
____ SETTINGS - ADX Slope
ADX Slope
help us to understand if ADX
has a positive slope, negative slope
or it is rather still.
(ADXSLOPE) ADX cut {23}: If ADX value is greater than this cut (23) then ADX has strength
(ADXSLOPE) ADX minimum steepness entry {45}: ADX slope needs to be 45 degrees to be considered as a positive one.
(ADXSLOPE) ADX minimum steepness exit {45}: ADX slope needs to be -45 degrees to be considered as a negative one.
(ADXSLOPE) ADX steepness periods {3}: In order to avoid false detection the slope is calculated along 3 periods.
____ SETTINGS - Next to EMA55
(NEXTEMA55) EMA10 to EMA55 bounce back percentage {80}: EMA10 might bounce back to EMA55 or maybe to 80% of its complete way to EMA55
(NEXTEMA55) Next to EMA55 percentage {15}: How much next to the EMA55 you need to be to consider it's going to bounce back upwards again.
____ SETTINGS - Stop Loss and Take Profit
You can set a default stop loss or a default take profit.
(STOPTAKE) Stop Loss % {7.0}
(STOPTAKE) Take Profit % {2.0}
____ SETTINGS - Trailing Take Profit
You can customize the default trailing take profit values
(TRAILING) Trailing Take Profit (%) {1.0}: Trailing take profit offset in percentage
(TRAILING) Trailing Take Profit Trigger (%) {2.0}: When 2.0% of benefit is reached then activate the trailing take profit.
____ SETTINGS - MAIN TURN ON/OFF OPTIONS
(EMAS) Ignore advice based on emas {false}.
(EMAS) Ignore advice based on emas (On closing long signal) {False}: Ignore advice based on emas but only when deciding to close a buy entry.
(SQZMOM) Ignore advice based on SQZMOM {false}: Ignores advice based on SQZMOM indicator.
(ADXSLOPE) Ignore advice based on ADX positive slope {false}
(ADXSLOPE) Ignore advice based on ADX cut (23) {true}
(STOPTAKE) Take Profit? {false}: Enables simple Take Profit.
(STOPTAKE) Stop Loss? {True}: Enables simple Stop Loss.
(TRAILING) Enable Trailing Take Profit (%) {True}: Enables Trailing Take Profit.
____ SETTINGS - Strategy mode
(STRAT) Type Strategy: 'Long and Short', 'Long Only' or 'Short Only'. Default: 'Long and Short'.
____ SETTINGS - Risk Management
(RISKM) Risk Management Type: 'Safe', 'Somewhat safe compound' or 'Unsafe compound'. ' Safe ': Calculations are always done with the initial capital (1000) in mind. The maximum losses per trade/day/week/month are taken into account. ' Somewhat safe compound ': Calculations are done with initial capital (1000) or a higher capital if it increases. The maximum losses per trade/day/week/month are taken into account. ' Unsafe compound ': In each order all the current capital is gambled and only the default stop loss per order is taken into account. That means that the maximum losses per trade/day/week/month are not taken into account. Default : 'Somewhat safe compound'.
(RISKM) Maximum loss per trade % {1.0}.
(RISKM) Maximum loss per day % {6.0}.
(RISKM) Maximum loss per week % {8.0}.
(RISKM) Maximum loss per month % {10.0}.
____ SETTINGS - Decimals
(DECIMAL) Maximum number of decimal for contracts {3}: How small (3 decimals means 0.001) an entry position might be in your exchange.
EXTRA 1 - PRICE IS IN RANGE indicator
(PRANGE) Print price is in range {False}: Enable a bottom label that indicates if the price is in range or not.
(PRANGE) Price range periods {5}: How many previous periods are used to calculate the medians
(PRANGE) Price range maximum desviation (%) {0.6} ( > 0 ): Maximum positive desviation for range detection
(PRANGE) Price range minimum desviation (%) {0.6} ( > 0 ): Mininum negative desviation for range detection
EXTRA 2 - SQUEEZE MOMENTUM Desviation indicator
(SQZDIVER) Show degrees {False}: Show degrees of each Squeeze Momentum Divergence lines to the x-axis.
(SQZDIVER) Show desviation labels {False}: Whether to show or not desviation labels for the Squeeze Momentum Divergences.
(SQZDIVER) Show desviation lines {False}: Whether to show or not desviation lines for the Squeeze Momentum Divergences.
EXTRA 3 - VOLUME PROFILE indicator
WARNING: This indicator works not on current bar but on previous bar. So in the worst case it might be VP from 4 hours ago. Don't worry, inside the strategy calculus the correct values are used. It's just that I cannot show the most recent one in the chart.
(VP) Print recent profile {False}: Show Volume Profile indicator
(VP) Avoid label price overlaps {False}: Avoid label prices to overlap on the chart.
EXTRA 4 - ZIGNALY SUPPORT
(ZIG) Zignaly Alert Type {Email}: 'Email', 'Webhook'. ' Email ': Prepare alert_message variable content to be compatible with zignaly expected email content format. ' Webhook ': Prepare alert_message variable content to be compatible with zignaly expected json content format.
EXTRA 5 - DEBUG
(DEBUG) Enable debug on order comments {False}: If set to true it prepares the order message to match the alert_message variable. It makes easier to debug what would have been sent by email or webhook on each of the times an order is triggered.
HOW TO USE THIS STRATEGY
BOT MODE: This is the default setting.
PROPER VOLUME PROFILE VIEWING: Click on this strategy settings. Properties tab. Make sure Recalculate 'each time the order was run' is turned off.
NEWBIE USER: (Check PROPER VOLUME PROFILE VIEWING above!) You might want to turn on the 'Print recent profile {False}' setting. Alternatively you can use my alternate realtime study: 'Resistances and supports based on simplified Volume Profile' but, be aware, it might consume one indicator.
ADVANCED USER 1: Turn on the 'Print price is in range {False}' setting and help us to debug this subindicator. Also help us to figure out how to include this value in the strategy.
ADVANCED USER 2: Turn on the all the (SQZDIVER) settings and help us to figure out how to include this value in the strategy.
ADVANCED USER 3: (Check PROPER VOLUME PROFILE VIEWING above!) Turn on the 'Print recent profile {False}' setting and report any problem with it.
JAIME MERINO: Just use the indicator as it comes by default. It should only show BUY signals, SELL signals and their associated closing signals. From time to time you might want to check 'ADVANCED USER 2' instructions to check that there's actually a divergence. Check also 'ADVANCED USER 1' instructions for your amusement.
EXTRA ADVICE
It's advised that you use this strategy in addition to these two other indicators:
* Squeeze Momentum Indicator
* ADX
so that your chart matches as close as possible to TradingLatino chart.
ZIGNALY INTEGRATION
This strategy supports Zignaly email integration by default. It also supports Zignaly Webhook integration.
ZIGNALY INTEGRATION - Email integration example
What you would write in your alert message:
||{{strategy.order.alert_message}}||key=MYSECRETKEY||
ZIGNALY INTEGRATION - Webhook integration example
What you would write in your alert message:
{ {{strategy.order.alert_message}} , "key" : "MYSECRETKEY" }
CREDITS
I have reused and adapted some code from
'Directional Movement Index + ADX & Keylevel Support' study
which it's from TradingView console user.
I have reused and adapted some code from
'3ema' study
which it's from TradingView hunganhnguyen1193 user.
I have reused and adapted some code from
'Squeeze Momentum Indicator ' study
which it's from TradingView LazyBear user.
I have reused and adapted some code from
'Strategy Tester EMA-SMA-RSI-MACD' study
which it's from TradingView fikira user.
I have reused and adapted some code from
'Support Resistance MTF' study
which it's from TradingView LonesomeTheBlue user.
I have reused and adapted some code from
'TF Segmented Linear Regression' study
which it's from TradingView alexgrover user.
I have reused and adapted some code from
"Poor man's volume profile" study
which it's from TradingView IldarAkhmetgaleev user.
FEEDBACK
Please check the strategy source code for more detailed information
where, among others, I explain all of the substrats
and if they are implemented or not.
Q1. Did I understand wrong any of the Jaime substrats (which I have implemented)?
Q2. The strategy yields quite profit when we should long (EMA10 from 1d timeframe is higher than EMA55 from 1d timeframe.
Why the strategy yields much less profit when we should short (EMA10 from 1d timeframe is lower than EMA55 from 1d timeframe)?
Any idea if you need to do something else rather than just reverse what Jaime does when longing?
FREQUENTLY ASKED QUESTIONS
FAQ1. Why are you giving this strategy for free?
TradingLatino and his fellow enthusiasts taught me this strategy. Now I'm giving back to them.
FAQ2. Seriously! Why are you giving this strategy for free?
I'm confident his strategy might be improved a lot. By keeping it to myself I would avoid other people contributions to improve it.
Now that everyone can contribute this is a win-win.
FAQ3. How can I connect this strategy to my Exchange account?
It seems that you can attach alerts to strategies.
You might want to combine it with a paying account which enable Webhook URLs to work.
I don't know how all of this works right now so I cannot give you advice on it.
You will have to do your own research on this subject. But, be careful. Automating trades, if not done properly,
might end on you automating losses.
FAQ4. I have just found that this strategy by default gives more than 3.97% of 'maximum series of losses'. That's unacceptable according to my risk management policy.
You might want to reduce default stop loss setting from 7% to something like 5% till you are ok with the 'maximum series of losses'.
FAQ5. Where can I learn more about your work on this strategy?
Check the source code. You might find unused strategies. Either because there's not a substantial increases on earnings. Or maybe because they have not been implemented yet.
FAQ6. How much leverage is applied in this strategy?
No leverage.
FAQ7. Any difference with original Jaime Merino strategy?
Most of the times Jaime defines an stop loss at the price entry. That's not the case here. The default stop loss is 7% (but, don't be confused it only means losing 1% of your investment thanks to risk management). There's also a trailing take profit that triggers at 2% profit with a 1% trailing.
FAQ8. Why this strategy return is so small?
The strategy should be improved a lot. And, well, backtesting in this platform is not guaranteed to return theoric results comparable to real-life returns. That's why I'm personally forward testing this strategy to verify it.
MENSAJE EN CASTELLANO
En primer lugar se agradece feedback para mejorar la estrategia.
Si eres un usuario avanzado y quieres colaborar en mejorar el script no dudes en comentar abajo.
Ten en cuenta que aunque toda esta descripción tenga que estar en inglés no es obligatorio que el comentario esté en inglés.
CHISTE - CASTELLANO
¡Pero Jaime!
¡400.000!
¡Tu da mun!
EulerMethod: DeltaEN
Shows the Integral Volume Delta (IVD)
It is a detailed OBV. Each bar sums up the volume for bars of a shorter timeframe.
For example, inside a 1M bar, every 12h bar is added up, and inside a 1h bar, every 1min bar is added. Thus, a conditional volume delta inside the bar is obtained.
The indicator for each bar shows the volume of purchases (positive), sales (negative) and the difference — IVD
The delta histogram is thicker than the volume histograms
Settings detalisation
M — 6 hours, 12 hours and 1 day for the M timeframe (720 by default)
W — 4 hours, 6 hours and 12 hours for the W timeframe (240 by default)
D — 30 minutes, 1 hour and 2 hours for the D timeframe (60 by default)
H — 1 minute, 5 minutes and 15 minutes for timeframes [1h, D) (default is 1)
For timeframes of 15m and less, the calculation is carried out by minute bars
VSA mode
The classic OBV adds volume to the cumulative sum under the condition Сlose (n) > Close (n-1) and subtracts it under the condition Close (n) < Close (n-1)
When VSA mode is disabled, all volumes are summed up under these conditions.
When the VSA approximation is turned on, the volume per bar of detail is divided by the factor (Close - Low) / (High - Low)
That is, it takes into account the spread per bar and closing relative to the spread. VSA is enabled by default
A/D mode
Shows the cumulative Accumulation / Distribution Index
The delta of the detail bar is multiplied by (High + Low + Close) / 3 bars, the result is added to the cumulative sum
No additional price conversions required due to integral summation
Index line view is customizable
EM Delta does not receive intermediate values in real time.
To see the result, wait until the bar closes or switch to a smaller timeframe
RU
Показывает Интегральную Дельту Объёма (ИДО)
Представляет собой детализированный OBV. В каждом баре суммируется объём за бары меньшего таймфрейма.
Например, внутри 1М-бара суммируется каждый 12h-бар, а внутри 1h — каждый 1m-бар. Таким образом получается условная дельта объёма внутри бара
Индикатор на каждый бар показывает объём покупок (положительный), объём продаж (отрицательный) и разницу — ИДО
Гистограмма дельты толще гистограмм объёмов
Настройки детализации внутри бара
M — 6 часов, 12 часов и 1 день для таймфрейма M (по-умолчанию 720)
W — 4 часа, 6 часов и 12 часов для таймфрейма W (по-умолчанию 240)
D — 30 минут, 1 час и 2 часа для таймфрейма D (по-умолчанию 60)
H — 1 минута, 5 минут и 15 минут для таймфреймов [1h, D) (по-умолчанию 1)
Для таймфреймов 15m и меньше расчёт ведётся по минутным барам
Режим VSA
Классический OBV прибавляет объём к кумулятивной сумме при условии Сlose(n) > Close(n-1) и отнимает при условии Close(n) < Close(n-1)
При отключении режима VSA все объёмы суммируются по этим условиям
При включённой VSA-аппроксимации объём за бар детализации делится по фактору (Close - Low) / (High - Low)
То есть учитывает спред за бар и закрытие относительно спреда. По-умолчанию режим VSA включен
Режим A/D
Показывает кумулятивный индекс Накопления/Распределения
Дельта бара детализации умножается на (High + Low + Close) / 3 бара, результат прибавляется к кумулятивной сумме
Дополнительные преобразования цены не требуются ввиду интегрального суммирования
Вид линии индекса настраивается
EM Delta не получает промежуточные значения в реальном времени.
Чтобы увидеть результат, дождитесь закрытия бара или перейдите на меньший таймфрейм
Reversal finderThis script is used to visually highlight candles which may signal a reversal following a false break of a support or resistance level.
Inputs are:
Lookback period: look for the highest high and the lowest low of the prior x bars.
SMA length: used for a simple moving average of the range (high minus low) of the prior x bars.
Range multiple: used to filter out signals for any bars with a range smaller than the average range of the preceding bars (determined by SMA length above) e.g. a range multiple of 2 will only show signals for bars with a range twice of that of the average range of the preceding bars.
Range threshold: used to filter signals for bars both the open and close of the bar are at the extreme end of the bar e.g. a threshold setting of 33% will only show buy signals for bars which open and close within the upper 1/3rd of the bar’s high/low range (vice versa for sell signals). This helps highlight, for example, bars with a high which exceeds resistance in a current range but which close back inside the range.
Highlight signal bars?: This will highlight bars with a buy signal in green, sell signal bars in red, and all other bars in grey. The script was designed for use with a dark background, so you will need to play around with the bar colours in the style settings to suit your preferences.
Settings used in the example chart are not the default – they are lookback: 5, SMA length: 20, range multiple: 1.2, range threshold: 33%.
Enjoy!
Volume Profile Free Pro (25 Levels Value Area VWAP) by RRBVolume Profile Free Pro by RagingRocketBull 2019
Version 1.0
All available Volume Profile Free Pro versions are listed below (They are very similar and I don't want to publish them as separate indicators):
ver 1.0: style columns implementation
ver 2.0: style histogram implementation
ver 3.0: style line implementation
This indicator calculates Volume Profile for a given range and shows it as a histogram consisting of 25 horizontal bars.
It can also show Point of Control (POC), Developing POC, Value Area/VWAP StdDev High/Low as dynamically moving levels.
Free accounts can't access Standard TradingView Volume Profile, hence this indicator.
There are 3 basic methods to calculate the Value Area for a session.
- original method developed by Steidlmayr (calculated around POC)
- classical method using StdDev (calculated around the mean VWAP)
- another method based on the mean absolute deviation (calculated around the median)
POC is a high volume node and can be used as support/resistance. But when far from the day's average price it may not be as good a trend filter as the other methods.
The 80% Rule: When the market opens above/below the Value Area and then returns/stays back inside for 2 consecutive 30min periods it has 80% chance of filling VA (like a gap).
There are several versions: Free, Free Pro, Free MAX. This is the Free Pro version. The Differences are listed below:
- Free: 30 levels, Buy/Sell/Total Volume Profile views, POC
- Free Pro: 25 levels, +Developing POC, Value Area/VWAP High/Low Levels, Above/Below Area Dimming
- Free MAX: 50 levels, packed to the limit
Features:
- Volume Profile with up to 25 levels (3 implementations)
- POC, Developing POC Levels
- Buy/Sell/Total/Side by Side View modes
- Side Cover
- Value Area, VAH/VAL dynamic levels
- VWAP High/Low dynamic levels with Source, Length, StdDev as params
- Show/Hide all levels
- Dim Non Value Area Zones
- Custom Range with Highlighting
- 3 Anchor points for Volume Profile
- Flip Levels Horizontally
- Adjustable width, offset and spacing of levels
- Custom Color for POC/VA/VWAP levels and Transparency for buy/sell levels
Usage:
- specify max_level/min_level for a range (required in ver 1.0/2.0, auto/optional in ver 3.0 = set to highest/lowest)
- select range (start_bar, range length), confirm with range highlighting
- select mode Value Area or VWAP to show corresponding levels.
- flip/select anchor point to position the buy/sell levels, adjust width and spacing as needed
- select Buy/Sell/Total/Side by Side view mode
- use POC/Developing POC/VA/VWAP High/Low as S/R levels. Usually daily values from 1-3 days back are used as levels for the current day.
- Green - buy volume of a specific price level in a range, Red - sell volume. Green + Red = Total volume of a price level in a range
There's no native support for vertical histograms in Pinescript (with price axis as base)
Basically, there are 4 ways to plot a series of horizontal bars stacked on top of each other:
1. plotshape style labeldown (ver 0 prototype discarded)
- you can have a set of fixed width/height text labels consisting of a series of underscores and moving dynamically as levels. Level offset controls visible length.
- you can move levels and scale the base width of the volume profile histogram dynamically
- you can calculate the highest/lowest range values automatically. max_level/min_level inputs are optional
- you can't fill the gaps between levels/adjust/extend width, height - this results in a half baked volume profile and looks ugly
- fixed text level height doesn't adjust and looks bad on a log scale
- fixed font width also doesn't scale and can't be properly aligned with bars when zooming
2. plot style columns + hist_base (ver 1.0)
- you can plot long horizontal bars using a series of small adjacent vertical columns with level offsets controlling visible length.
- you can't hide/move levels of the volume profile histogram dynamically on each bar, they must be plotted at all times regardless - you can't delete the history of a plot.
- you can't scale the base width of the volume profile histogram dynamically, can't set show_last from input, must use a preset fixed width for each level
- hist_base can only be a static const expression, can't be assigned highest/lowest range values automatically - you have to specify max_level/min_level manually from input
- you can't control spacing between columns - there's an equalizer bar effect when you zoom in, and solid bars when you zoom out
- using hist_base for levels results in ugly load/redraw times - give it 3-5 sec to finalize its shape after each UI param change
- level top can be properly aligned with another level's bottom producing a clean good looking histogram
- columns are properly aligned with bars automatically
3. plot style histogram + hist_base (ver 2.0)
- you can plot long horizontal bars using a series of small vertical bars (horizontal histogram) instead of columns.
- you can control the width of each histogram bar comprising a level (spacing/horiz density). Large enough width will cause bar overlapping and give level a "solid" look regardless of zoom
- you can only set width <= 4 in UI Style - custom textbox input is provided for larger values. You can set width and plot transparency from input
- this method still uses hist_base and inherits other limitations of ver 2.0
4. plot style lines (ver 3.0)
- you can also plot long horizontal bars using lines with level offsets controlling visible length.
- lines don't need hist_base - fast and smooth redraw times
- you can calculate the highest/lowest range values automatically. max_level/min_level inputs are optional
- level top can't be properly aligned with another level's bottom and have a proper spacing because line width uses its own units and doesn't scale
- fixed line width of a level (vertical thickness) doesn't scale and looks bad on log (level overlapping)
- you can only set width <= 4 in UI Style, a custom textbox input is provided for larger values. You can set width and plot transparency from input
Notes:
- hist_base for levels results in ugly load/redraw times - give it 3-5 sec to finalize its shape after each UI param change
- indicator is slow on TFs with long history 10000+ bars
- Volume Profile/Value Area are calculated for a given range and updated on each bar. Each level has a fixed width. Offsets control visible level parts. Side Cover hides the invisible parts.
- Custom Color for POC/VA/VWAP levels - UI Style color/transparency can only change shape's color and doesn't affect textcolor, hence this additional option
- Custom Widh for levels - UI Style supports only width <= 4, hence this additional option
- POC is visible in both modes. In VWAP mode Developing POC becomes VWAP, VA High and Low => VWAP High and Low correspondingly to minimize the number of plot outputs
- You can't change buy/sell level colors (only plot transparency) - this requires 2x plot outputs exceeding max 64 limit. That's why 2 additional plots are used to dim the non Value Area zones
- Use Side by Side view to compare buy and sell volumes between each other: base width = max(total_buy_vol, total_sell_vol)
- All buy/sell volume lengths are calculated as % of a fixed base width = 100 bars (100%). You can't set show_last from input
- Sell Offset is calculated relative to Buy Offset to stack/extend sell on top of buy. Buy Offset = Zero - Buy Length. Sell Offset = Buy Offset - Sell Length = Zero - Buy Length - Sell Length
- If you see "loop too long error" - change some values in UI and it will recalculate - no need to refresh the chart
- There's no such thing as buy/sell volume, there's just volume, but for the purposes of the Volume Profile method, assume: bull candle = buy volume, bear candle = sell volume
- Volume Profile Range is limited to 5000 bars for free accounts
P.S. Cantaloupia Will be Free!
Links on Volume Profile and Value Area calculation and usage:
www.tradingview.com
stockcharts.com
onlinelibrary.wiley.com















