DAYOFWEEK performance1 -Objective
"What is the ''best'' day to trade .. Monday, Tuesday...."
This script aims to determine if there are different results depending on the day of the week.
The way it works is by dividing data by day of the week (Monday, Tuesday, Wednesday ... ) and perform calculations for each day of the week.
1 - Objective
2 - Features
3 - How to use (Examples)
4 - Inputs
5 - Limitations
6 - Notes
7 - Final Tooughs
2 - Features
AVG OPEN-CLOSE
Calculate de Percentage change from day open to close
Green % (O-C)
Percentage of days green (open to close)
Average Change
Absolute day change (O-C)
AVG PrevD. Close-Close
Percentage change from the previous day close to the day of the week close
(Example: Monday (C-C) = Friday Close to Monday close
Tuesday (C-C) = Monday C. to Tuesday C.
Green % (C1-C)
Percentage of days green (open to close)
AVG Volume
Day of the week Average Volume
Notes:
*Mon(Nº) - Nº = Number days is currently calculated
Example: Monday (12) calculation based on the last 12 Mondays. Note: Discrepancies in numbers example Monday (12) - Friday (11) depend on the initial/end date or the market was closed (Holidays).
3 - How to use (Examples)
For the following example, NASDAQ:AAPL from 1 Jan 21 to 1 Jul 21 the results are following.
The highest probability of a Close being higher than the Open is Monday with 52.17 % and the Lowest Tuesday with 38.46 %. Meaning that there's a higher chance (for NASDAQ:AAPL ) of closing at a higher value on Monday while the highest chance of closing is lower is Tuesday. With an average gain on Tuesday of 0.21%
Long - The best day to buy (long) at open (on average) is Monday with a 52.2% probability of closing higher
Short - The best day to sell (short) at open (on average) is Tuesday with a 38.5% probability of closing higher (better chance of closing lower)
Since the values change from ticker to ticker, there is a substantial change in the percentages and days of the week. For example let's compare the previous example ( NASDAQ:AAPL ) to NYSE:GM (same settings)
For the same period, there is a substantial difference where there is a 62.5% probability Friday to close higher than the open, while Tuesday there is only a 28% probability.
With an average gain of 0.59% on Friday and an average loss of -0.34%
Also, the size of the table (number of days ) depends if the ticker is traded or not on that day as an example COINBASE:BTCUSD
4 - Inputs
DATE RANGE
Initial Date - Date from which the script will start the calculation.
End Date - Date to which the script will calculate.
TABLE SETTINGS
Text Color - Color of the displayed text
Cell Color - Background color of table cells
Header Color - Color of the column and row names
Table Location - Change the position where the table is located.
Table Size - Changes text size and by consequence the size of the table
5 - LIMITATIONS
The code determines average values based on the stored data, therefore, the range (Initial data) is limited to the first bar time.
As a consequence the lower the timeframe the shorter the initial date can be and fewer weeks can be calculated. To warn about this limitation there's a warning text that appears in case the initial date exceeds the bar limit.
Example with initial date 1 Jan 2021 and end date 18 Jul 2021 in 5m and 10 m timeframe:
6 - Notes and Disclosers
The script can be moved around to a new pane if need. -> Object Tree > Right Click Script > Move To > New pane
The code has not been tested in higher subscriptions tiers that allow for more bars and as a consequence more data, but as far I can tell, it should work without problems and should be in fact better at lower timeframes since it allows more weeks.
The values displayed represent previous data and at no point is guaranteed future values
7 - Final Tooughs
This script was quite fun to work on since it analysis behavioral patterns (since from an abstract point a Tuesday is no different than a Thursday), but after analyzing multiple tickers there are some days that tend to close higher than the open.
PS: If you find any mistake ex: code/misspelling please comment.
Pesquisar nos scripts por "文华财经tick价格"
Strat Assistant ScreenerStrat Assistant Screener
----------------------------
█ OVERVIEW
This script is intended to provide screening/scanning functionality for the strat for the time period provided in the input (Day is the default).
When added, the script provides a chart with labels separated for each type of candle (2 up, 2 down, outside, inside) as well as actionable signals (inside already provided, hammer, shooter). Trading view is limited to 40 "security/ticker/symbol" calls so only 40 at a time are available. It's best to run this on higher time frames as it will occasionally push peak trading view memory limits and throw an error. Various inputs are provided a detailed below. It's not FAST so be patient please.
█ DETAIL
Inputs
----------
Security/Screener Time Frame: The screener will only run for one time frame, the time frame selected and this can be changed
Actionable Wick Percentage: The percentage of the WICK to determine a hammer or a shooter. For example, the default is .75 or 75%, which means 75% of the candle must be a WICK (top wick 75% for shooter, bottom wick 75% for hammer). If you wish to be more conservative scale it down or more aggressive scale it up
Label Index Offset Factor: There are 6 separate labels that will appear at the bottom separated by this indicator. If you feel like things are too tight or too narrow you can adjust this to spread things out further, or push them closer together.
Security/SXX: The various securities that can be input to track. If you find this is a pain, you can always copy the source code, put it in the pine editor yourself, and manually modify them there. Trading view limits you to 40 securities/symbols/tickers so I've pushed the limit as far as I can with this script.
Outputs
----------
The screener will provide a second chart at the bottom of the primary chart with labels for the types of candles and actionable signals
Each label will be present even if no results are found.
The label will display the time frame selected toward the end of the header - Strat Assistant Screener:
Each label is colored for quick reference to indicate the various bull/bear/inside/outside "patterns"
Best Practices
----------
It is not fast, so please be patient and let it run.
This screener is best used as a utility a few times a day, not recommended for intraday. I will create a scaled down version of this will only 5 securities/symbols/tickers that can be used intraday.
The screener pushes the limits of training views provided memory, so you may occasionally see errors, please try a higher time frame.
The bottom chart can be scaled and moved just like the top one, play around with it to determine what works best for you. I recommend decreasing the scale and then moving it up so you can see it better.
When the time frame is changed, it will take a minute, you can verify the results by seeing the time frame change in the label - Strat Assistant Screener:
I have not played with this thoroughly intraday yet. So it may be buggy/slower.
Relative Strength RatioAbout this indicator:
This indicator goes under many different names such as Relative Strength Ratio, Comparative Strength, Relative Strength Comparison (RSC) etc.
It compares the strength of the current asset to another asset of your choice and displays the relative strength of the current asset. (Not RSI)
There are several comparative indicators published already here on TV but I have added some unique features that I think is really useful.
When to use it:
This is useful when you want to compare for example a stock with its sector to find out if the stock is a leadership stock in that sector or main index.
You could also use it to compare the sector to its index etc.
If you want to compare for example a stock to both its index and its sector at the same time I suggest you add 2 instances of this indicator.
In many trading systems you are supposed find the strongest tickers by identifying "layers of strength" like 1. The strongest asset class that money is flowing into (like stocks, commodities, bonds, etc.) 2. Find the strongest sectors. 3. Find the stocks outperforming those sectors. 4. Find some kind of entry signal there.
How it works:
The indicator calculates an "RS line" (Relative Strength) by dividing the current ticker with a ticker of your choice. This creates a ratio or pair similar to how currencies are related to each others like USDGBP (dollar against pound). The RS line is black by default so you might want to change its color if you use a dark theme.
If the RS line is moving up it means your current asset is stronger than the asset you are comparing it with and vice versa.
Use the simple moving average to quickly see long term strength trends.
Features
RS line
Shows the relative strength of the current asset.
SMA
This Simple Moving Average has directional coloring; green when it is angled up and red when it is angled down. You can customise the period in the settings. If you don't want the color change just make both up/down color the same.
Relative market label
This displays the market you are currently comparing with as a label next to the last data point.
Because I tried stocks in 2 different countries I want to know which index I am comparing with and this label saves me from going into the settings to check. I find it to be a life saver!
Please let me know if you find any problems or if you have any ideas for improvement
Difference over barsDescription:
One of my followers asked about an indicator that shows the difference between the open and a previous close and didn't find one so I wrote this one. This is similar to a momentum indicator except it offers more flexibility. While the standard momentum indicator calculates a difference between current close and a previous close (sometimes customizable to work on open, high or lows instead of close), this allows to mix and match between open, high, low and close. It also offers multiple kinds of moving averages.
Settings:
Current point of reference
Previous point of reference
Difference over how many bars?
How it works:
The indicator calculates the difference between the current point of reference and a previous (n-bars back) point of reference (where n is given by the "Difference over how many bars?").
How to use it:
find historical support lines like the 0.68 line in the cart above where in the past the indicator tends to bounce back; similarly find resistance lines like the -0.75 line in the chart (which servers as a resistance line both for the main indicator line and its moving average )
look for convergence between the price and the indicator; for example, if the price is going up and the indicator is going down a change in the price direction may be coming soon
look for the indicator crossing its moving average: moving up will signify an up trend and vice-versa
since the difference between the open and previous close (which is what the blue line in the chart shows) since to go up to 0.68 (the upper horizontal line) and down to -0.75 (the lower horizontal line) most of the time, one strategy, using options, is to to buy, right before the close of a trading day, a "long iron butterfly": buy-to-open (BTO) both a call and a put at the strike price and sell-to-open (STO) a call at a strike of around $0.68 more and sell to open a put at a strike of around $0.75 less. The STO legs should be for the next expiration and the BTO legs for the next expiration after that. This way the STO will decrease their time value faster than the BTO legs if the price stays flat (which plays to your advantage) and the BTO legs may make profit if the next day it opens away from the price at which the ticker closed the previous day (when the position was opened). The most profit is when it moves right up to one of the STO legs. This position would normally be closed next day at opening. The percentage of profit it makes is low compared to other strategies but also the percentage of the total cost at risk is also low which could potentially allow a trader to increase the lot and thus, in the end, the total profit amount may be comparable to other strategies.
Notes:
The indicator in the chart above comes with the standard options. For a more standard momentum indicator set both the current and previous reference point to the same OHLC value (such as "close").
The 0.68 and -0.75 levels are for open/close (current/previous point of reference) for ticker INTC. Obviously, other tickers will likely have other levels and you will have to find those yourself. If you use INTC but use other combination of current and previous reference points, they will have different levels as well.
Big Move WarningThis script shows plots a warning on the chat when the tick increase is more than the configures value.
It considers the highest and lowest value of each candle.
The following warnings are shown:
"RISE" - the increase is more than the configures value
"BIGRISE" - the increase over the last 3 ticks is more than 2x the configured value
"DIP" - the decrease is more than the configures value
"BIGDIP" - the decrease over the last 3 ticks iscmore than 2x the configured value
CC - Macro Consolidated Interval Display (MCID)Ever wish you didn't have to rapidly flip between 6 different tickers to get the full picture?
Yeah, me too. Do you also wish that you kind of understood how the shift / unshift function works for arrays?
Yeah, I did too. Both of those birds are taken care of with one stone!
The Macro Consolidated Interval Display uses the new Array structure and security to display data for VIX, GLD, TLT, QQQ, SPY and IWM (at a 1D interval) SIMUTANEOUSLY! Regardless of which ticker you're looking at you can get the full picture of macro futures data without flipping around to get it.
This is my first script trying to use arrays. It basically shows the following a 1d interval:
ATR14, RSI7, RSI14, SMA50, SMA200 and VWAP for VIX.
ATR14, RSI7, RSI14, SMA50, SMA200 and VWAP for GLD.
ATR14, RSI7, RSI14, SMA50, SMA200 and VWAP for TLT.
ATR14, RSI7, RSI14, SMA50, SMA200 and VWAP for QQQ.
ATR14, RSI7, RSI14, SMA50, SMA200 and VWAP for SPY.
ATR14, RSI7, RSI14, SMA50, SMA200 and VWAP for IWM
To make it more or less busy, I've allowed you to toggle off any of the levels you wish. I've also chosen to leave this as open source, as it's nothing too experimental, and I hope that it can gain some traction as an Array example that the public can use! If you don't like the different values that are shown, use this source code example as a spring-board to put values that you do care about onto the labels.
If this code has helped you at all please drop me a like or some constructive criticism if you do not think it's worth a like.
Good luck and happy trading friends. This should be compatible with my CID as well:
If this gets traction, I will post something similar for a dynamic combination of tickers and intervals that you can set yourself.
SuperTrend EXPLORER / SCREENERSUPERTREND EXPLORER / SCREENER screens the BUY and SELL signals (trend reversals) for 38 user defined different tickers in Tradingview charts.
Simply input the short name of the ticker in Tradingview that you want to screen.
Script is derived from zzzcrypto123 's work. Thanks for the permission letting me to use his logic.
Terminology explanation:
Confirmed Reversal: Supertrend reversal that happened in the last bar and cannot be repainted.
Potential Reversal: Supertrend reversal that might happen in the current bar but can also not happen depending upon the timeframe closing price.
Screener has also got a built in SuperTrend indicator which users can confirm the reversals on graphs.
Screener explores the 38 tickers in current graph's time frame and also in desired parameters of the SuperTrend indicator.
SUPERTREND INDICATOR:
STRATEGY version of SuperTrend Indicator:
SuperTrend is one of the most common ATR based trailing stop indicators.
In this version you can change the ATR calculation method from the settings. Default method is RMA, when the alternative method is SMA .
The indicator is easy to use and gives an accurate reading about an ongoing trend. It is constructed with two parameters, namely period and multiplier. The default values used while constructing a superindicator are 10 for average true range or trading period and three for its multiplier.
The average true range (ATR) plays an important role in 'Supertrend' as the indicator uses ATR to calculate its value. The ATR indicator signals the degree of price volatility .
The buy and sell signals are generated when the indicator starts plotting either on top of the closing price or below the closing price. A buy signal is generated when the ‘Supertrend’ closes above the price and a sell signal is generated when it closes below the closing price.
It also suggests that the trend is shifting from descending mode to ascending mode. Contrary to this, when a ‘Supertrend’ closes above the price, it generates a sell signal as the colour of the indicator changes into red.
A ‘Supertrend’ indicator can be used on equities, futures or forex, or even crypto markets and also on daily, weekly and hourly charts as well, but generally, it fails in a sideways-moving market.
Source function added to use the indicator as the ATR Trailing Stop indicator.
Just change source type hl2 to close.
different variations might be useful.
Alpha & BetaAlpha & Beta Indicators for Portfolio Performance
β = Σ Correlation (RP, RM) * (σP/σM)
α P = E(RP) –
Where,
RP = Portfolio Return (or Investment Return)
RM = Market Return (or Benchmark Index)
RF = Risk-Free Rate
How to use the Indicator
RM = SPX (Default)
The Market Return for the indicator has the options of $SPX, $NDX, or $DJI (S&P 500, Nasdaq 100, Dow 30)
RF = FRED: DTB3
The Risk-Free Rate in the Indicator is set to the 3-Month Treasury Bill: Secondary Market Rate
The Default Timeframe is 1260 or 5-Years (252 Trading Days in One Year)
RP = The symbol you enter
HOWEVER , you can determine your portfolio value by following the following directions below.
Note: I am currently working on an indicator that will allow you to insert the weights of your positions.
Complete Portfolio Analysis Directions
You will first need...
a) spreadsheet application - Google Sheets is Free, but Microsoft Excel will convert ticker symbols to Stocks and Retrieve Data.
b) your current stock tickers, quantity of shares, and last price information
In the spreadsheet,
In the first column list the stock tickers...
AMZN
AAPL
TSLA
In the second column list the quantity of shares you own...
5
10
0.20
In the third column insert the last price
Excel: Three tickers will automatically give you the option to "Convert to Stocks",
after conversion, click once on cell and click the small tab in the upper right-hand of the highlighted cell.
Click the tab and a menu pops up
Find "Price", "Price Extended-Hours", or "Previous Close"...
$3,284.72
$497.48
$2,049.98
Next, multiply the number of shares by the price (Stock Market Value)
Excel: in fourth column type "=(B1*C1)", "=(B2*C2)", "=(B3*C3)"...
= $16,423.60
= $4,974.80
= $410.00
add the three calculated numbers together or click "ΣAutoSum" (Portfolio Market Value)
= $21,808.40
Last, divide the market value of AMZN ($16,423.60) by the Portfolio Market Value ($21,808.40) for each of the stocks.
= 0.7531
= 0.2281
= 0.0188
These values are the weight of the stock in your portfolio.
Go back to TradingView
Enter into the "search box" the following...
AMZN*0.7531 + AAPL*0.2281 + TSLA*0.0188
and click Enter
Now you can use the "Alpha & Beta" Indicator to analyze your entire portfolio!
Hashem Correlation CoefficientCorrelation Coefficient
Core Code from: www.tradingview.com
This indicator Show Correlation between the Current Ticker & timeframe and a Customizable Ticker. After adding the indicator you can change the second ticker in the settings.
The Correlation Coeff is between -1 to 1 which 1 means 100% correlation and -1 means -100% correlation ( Inverse Correlation ).
The color of the area changes when:
Blue : CC > 0.5
Aqua : CC > 0.75
Purple : CC < -0.5
Red : CC < -0.75
EMA CrossoverEMA Crossover
Input Parameters:
Stop loss (ticks) - define stop loss in unit of ticks (*1 tick = 12.5)
Exit signal - 1: When EMA and price crosses
2: When EMA changes direction
Start year, month, day & Stop year, month, day - define backtest period
You can set Order size, Commission in Settings, Properties tab.
Open Interest:CME e-o-d vs CFTC e-o-wCFTC only publishes total OI on fridays, related to last Tuesday.
But what happened since last Tuesday?
CME Vol & Open Interest data is recorded&exported daily by quandl.com to tradingview
via the che CHRIS/CME datasets
www.quandl.com
Eg. Nat Gas next outstanding cntract n. 20, field n. 7(OI)
@quandl.com:
www.quandl.com
is exported @tradingview:
www.tradingview.com
Every outstanding contract's OI & vol is exported (black column), but not the total (yellow line):
tiny.cc
This script sums up all the existing outstanding contract's OI for the future (the black column), so one can have an idea of the total OI for the day (Yellow line).
As numer of outstanding contracts varies from future to future,Eg:
E-mini (ES) has 4 contracts, Gold(GC) 16 cntrcts, NatGas(NG) has 43, WTI(CL) has 38 etc
the scrips tries to guess how many exist for it and sums them up, to have the total OI for tha day
Number ofoutstanding contracts exported by quandl.com to tradingview is taken from
s3.amazonaws.com
There are 2 params you can enter on the script:
* override the ticket symbol on the chart ,if script cannot guessit or you need a different one
* enter the "preliminary" OI that is published by CME early the next day, butb not yet exported by quandl to tradingview
This script is Open so anyone can copy and modifyit for its use.
Please post comments and ideas if you find it useful
I try to keep a log of my work here:
Multi SMA EMA WMA HMA BB (5x8 MAs Bollinger Bands) MAX MTF - RRBMulti SMA EMA WMA HMA 4x7 Moving Averages with Bollinger Bands MAX MTF by RagingRocketBull 2019
Version 1.0
All available MAX MTF versions are listed below (They are very similar and I don't want to publish them as separate indicators):
ver 1.0: 4x7 = 28 MTF MAs + 28 Levels + 3 BB = 59 < 64
ver 2.0: 5x6 = 30 MTF MAs + 30 Levels + 3 BB = 63 < 64
ver 3.0: 3x10 = 30 MTF MAs + 30 Levels + 3 BB = 63 < 64
ver 4.0: 5(4+1)x8 = 8 CurTF MAs + 32 MTF MAs + 20 Levels + 3 BB = 63 < 64
ver 5.0: 6(5+1)x6 = 6 CurTF MAs + 30 MTF MAs + 24 Levels + 3 BB = 63 < 64
ver 6.0: 4(3+1)x10 = 10 CurTF MAs + 30 MTF MAs + 20 Levels + 3 BB = 63 < 64
Fib numbers: 8, 13, 21, 34, 55, 89, 144, 233, 377
This indicator shows multiple MAs of any type SMA EMA WMA HMA etc with BB and MTF support, can show MAs as dynamically moving levels.
There are 4 MA groups + 1 BB group, a total of 4 TFs * 7 MAs = 28 MAs. You can assign any type/timeframe combo to a group, for example:
- EMAs 9,12,26,50,100,200,400 x H1, H4, D1, W1 (4 TFs x 7 MAs x 1 type)
- EMAs 8,13,21,30,34,50,55,89,100,144,200,233,377,400 x M15, H1 (2 TFs x 14 MAs x 1 type)
- D1 EMAs and SMAs 8,13,21,30,34,50,55,89,100,144,200,233,377,400 (1 TF x 14 MAs x 2 types)
- H1 WMAs 13,21,34,55,89,144,233; H4 HMAs 9,12,26,50,100,200,400; D1 EMAs 12,26,89,144,169,233,377; W1 SMAs 9,12,26,50,100,200,400 (4 TFs x 7 MAs x 4 types)
- +1 extra MA type/timeframe for BB
There are several versions: Simple, MTF, Pro MTF, Advanced MTF, MAX MTF and Ultimate MTF. This is the MAX MTF version. The Differences are listed below. All versions have BB
- Simple: you have 2 groups of MAs that can be assigned any type (5+5)
- MTF: +2 custom Timeframes for each group (2x5 MTF) +1 TF for BB, TF XY smoothing
- Pro MTF: 4 custom Timeframes for each group (4x3 MTF), 1 TF for BB, MA levels and show max bars back options
- Advanced MTF: +4 extra MAs/group (4x7 MTF), custom Ticker/Symbols, Timeframe <>= filter, Remove Duplicates Option
- MAX MTF: +2 subtypes/group, packed to the limit with max possible MAs/TFs: 4x7, 5x6, 3x10, 4(3+1)x10, 5(4+1)x8, 6(5+1)x6
- Ultimate MTF: +individual settings for each MA, custom Ticker/Symbols
MAX MTF version tests the limits of Pinescript trying to squeeze as many MAs/TFs as possible into a single indicator.
It's basically a maxed out Advanced version with subtypes allowing for mixed types within a group (i.e. both emas and smas in a single group/TF)
Pinescript has the following limits:
- max 40 security calls (6 calls are reserved for dupe checks and smoothing, 2 are used for BB, so only 32 calls are available)
- max 64 plot outputs (BB uses 3 outputs, so only 61 plot outputs are available)
- max 50000 (50kb) size of the compiled code
Based on those limits, you can only have the following MAs/TFs combos in a single script:
1. 4x7, 5x6, 3x10 - total number of MTF MAs must always be <= 32, and you can still have BB and Num Levels = total MAs, without any compromises
2. 5(4+1)x8, 6(5+1)x6, 4(3+1)x10 - you can use the Current Symbol/Timeframe as an extra (+1) fixed TF with the same number of MTF MAs
- you don't need to call security to display MAs on the Current Symbol/Timeframe, so the total number of MTF MAs remains the same and is still <= 32
- to fit that many MAs into the max 64 plot outputs limit you need to reduce the number of levels (not every MA Group will have corresponding levels)
Features:
- 4x7 = 28 MAs of any type
- 4x MTF groups with XY step line smoothing
- +1 extra TF/type for BB MAs
- 2 MA subtypes within each group/TF
- 4x7 = 28 MA levels with adjustable group offsets, indents and shift
- supports any existing type of MA: SMA, EMA, WMA, Hull Moving Average (HMA)
- custom tickers/symbols for each group
- show max bars back option
- show/hide both groups of MAs/levels/BB and individual MAs
- timeframe filter: show only MAs/Levels with TFs <>= Current TF
- hide MAs/Levels with duplicate TFs
- support for custom TFs that are not available in free accounts: 2D, 3D etc
- support for timeframes in H: H, 2H, 4H etc
Notes:
- Uses timeframe textbox instead of input resolution dropdown to allow for 240 120 and other custom TFs
- Uses symbol textbox instead of input symbol to avoid establishing multiple dummy security connections to the current ticker - otherwise empty symbols will prevent script from running
- Possible reasons for missing MAs on a chart:
- there may not be enough bars in history to start plotting it. For example, W1 EMA200 needs at least 200 bars on a weekly chart.
- for charts with low/fractional prices i.e. 0.00002 << 0.001 (default Y smoothing step) decrease Y smoothing as needed (set Y = 0.0000001) or disable it completely (set X,Y to 0,0)
- for charts with high price values i.e. 20000 >> 0.001 increase Y smoothing as needed (set Y = 10-20). Higher values exceeding MAs point density will cause it to disappear as there will be no points to plot. Different TFs may require diff adjustments
- TradingView Replay Mode UI and Pinescript security calls are limited to TFs >= D (D,2D,W,MN...) for free accounts
- attempting to plot any TF < D1 in Replay Mode will only result in straight lines, but all TFs will work properly in history and real-time modes. This is not a bug.
- Max Bars Back (num_bars) is limited to 5000 for free accounts (10000 for paid), will show error when exceeded. To plot on all available history set to 0 (default)
- Slow load/redraw times. This indicator becomes slower, its UI less responsive when:
- Pinescript Node.js graphics library is too slow and inefficient at plotting bars/objects in a browser window. Code optimization doesn't help much - the graphics engine is the main reason for general slowness.
- the chart has a long history (10000+ bars) in a browser's cache (you have scrolled back a couple of screens in a max zoom mode).
- Reload the page/Load a fresh chart and then apply the indicator or
- Switch to another Timeframe (old TF history will still remain in cache and that TF will be slow)
- in max possible zoom mode around 4500 bars can fit on 1 screen - this also slows down responsiveness. Reset Zoom level
- initial load and redraw times after a param change in UI also depend on TF. For example: D1/W1 - 2 sec, H1/H4 - 5-6 sec, M30 - 10 sec, M15/M5 - 4 sec, M1 - 5 sec. M30 usually has the longest history (up to 16000 bars) and W1 - the shortest (1000 bars).
- when indicator uses more MAs (plots) and timeframes it will redraw slower. Seems that up to 5 Timeframes is acceptable, but 6+ Timeframes can become very slow.
- show_last=last_bars plot limit doesn't affect load/redraw times, so it was removed from MA plot
- Max Bars Back (num_bars) default/custom set UI value doesn't seem to affect load/redraw times
- In max zoom mode all dynamic levels disappear (they behave like text)
- Dupe check includes symbol: symbol, tf, both subtypes - all must match for a duplicate group
- For the dupe check to work correctly a custom symbol must always include an exchange prefix. BB is not checked for dupes
Good Luck! Feel free to learn from/reuse the code to build your own indicators.
Multi SMA EMA WMA HMA BB (4x5 MAs Bollinger Bands) Adv MTF - RRBMulti SMA EMA WMA HMA 4x5 Moving Averages with Bollinger Bands Advanced MTF by RagingRocketBull 2019
Version 1.0
This indicator shows multiple MAs of any type SMA EMA WMA HMA etc with BB and MTF support, can show MAs as dynamically moving levels.
There are 4 MA groups + 1 BB group, a total of 4 TFs * 5 MAs = 20 MAs. You can assign any type/timeframe combo to a group, for example:
- EMAs 12,26,50,100,200 x H1, H4, D1, W1 (4 TFs x 5 MAs x 1 type)
- EMAs 8,10,13,21,30,50,55,100,200,400 x M15, H1 (2 TFs x 10 MAs x 1 type)
- D1 EMAs and SMAs 8,10,12,26,30,50,55,100,200,400 (1 TF x 10 MAs x 2 types)
- H1 WMAs 7,77,89,167,231; H4 HMAs 12,26,50,100,200; D1 EMAs 89,144,169,233,377; W1 SMAs 12,26,50,100,200 (4 TFs x 5 MAs x 4 types)
- +1 extra MA type/timeframe for BB
There are several versions: Simple, MTF, Pro MTF, Advanced MTF and Ultimate MTF. This is the Advanced MTF version. The Differences are listed below. All versions have BB
- Simple: you have 2 groups of MAs that can be assigned any type (5+5)
- MTF: +2 custom Timeframes for each group (2x5 MTF) +1 TF for BB, TF XY smoothing
- Pro MTF: 4 custom Timeframes for each group (4x3 MTF), 1 TF for BB, MA levels and show max bars back options
- Advanced MTF: +2 extra MAs/group (4x5 MTF), custom Ticker/Symbols, Timeframe <>= filter, Remove Duplicates Option
- Ultimate MTF: +individual settings for each MA, custom Ticker/Symbols
Features:
- 4x5 = 20 MAs of any type
- 4x MTF groups with XY step line smoothing
- +1 extra TF/type for BB MAs
- 4x5 = 20 MA levels with adjustable group offsets, indents and shift
- supports any existing type of MA: SMA, EMA, WMA, Hull Moving Average (HMA)
- custom tickers/symbols for each group - you can compare MAs of the same symbol across exchanges
- show max bars back option
- show/hide both groups of MAs/levels/BB and individual MAs
- timeframe filter: show only MAs/Levels with TFs <>= Current TF
- hide MAs/Levels with duplicate TFs
- support for custom TFs that are not available in free accounts: 2D, 3D etc
- support for timeframes in H: H, 2H, 4H etc
Notes:
- Uses timeframe textbox instead of input resolution dropdown to allow for 240 120 and other custom TFs
- Uses symbol textbox instead of input symbol to avoid establishing multiple dummy security connections to the current ticker - otherwise empty symbols will prevent script from running
- Possible reasons for missing MAs on a chart:
- there may not be enough bars in history to start plotting it. For example, W1 EMA200 needs at least 200 bars on a weekly chart.
- price << default Y smoothing step 5. For charts with low/fractional prices (i.e. 0.00002 << 5) adjust X Y smoothing as needed (set Y = 0.0000001) or disable it completely (set X,Y to 0,0)
- TradingView Replay Mode UI and Pinescript security calls are limited to TFs >= D (D,2D,W,MN...) for free accounts
- attempting to plot any TF < D1 in Replay Mode will only result in straight lines, but all TFs will work properly in history and real-time modes. This is not a bug.
- Max Bars Back (num_bars) is limited to 5000 for free accounts (10000 for paid), will show error when exceeded. To plot on all available history set to 0 (default)
- Slow load/redraw times. This indicator becomes slower, its UI less responsive when:
- Pinescript Node.js graphics library is too slow and inefficient at plotting bars/objects in a browser window. Code optimization doesn't help much - the graphics engine is the main reason for general slowness.
- the chart has a long history (10000+ bars) in a browser's cache (you have scrolled back a couple of screens in a max zoom mode).
- Reload the page/Load a fresh chart and then apply the indicator or
- Switch to another Timeframe (old TF history will still remain in cache and that TF will be slow)
- in max possible zoom mode around 4500 bars can fit on 1 screen - this also slows down responsiveness. Reset Zoom level
- initial load and redraw times after a param change in UI also depend on TF. For example:
D1/W1 - 2 sec, H1/H4 - 5-6 sec, M30 - 10 sec, M15/M5 - 4 sec, M1 - 5 sec.
M30 usually has the longest history (up to 16000 bars) and W1 - the shortest (1000 bars).
- when indicator uses more MAs (plots) and timeframes it will redraw slower. Seems that up to 5 Timeframes is acceptable, but 6+ Timeframes can become very slow.
- show_last=last_bars plot limit doesn't affect load/redraw times, so it was removed from MA plot
- Max Bars Back (num_bars) default/custom set UI value doesn't seem to affect load/redraw times
- In max zoom mode all dynamic levels disappear (they behave like text)
1. based on 3EmaBB, uses plot*, barssince and security functions
2. you can't set certain constants from input due to Pinescript limitations - change the code as needed, recompile and use as a private version
3. Levels = trackprice implementation
4. Show Max Bars Back = show_last implementation
5. swma has a fixed length = 4, alma and linreg have additional offset and smoothing params
6. Smoothing is applied by default for visual aesthetics on MTF. To use exact ma mtf values (lines with stair stepping) - disable it
Good Luck! You can explore, modify/reuse the code to build your own indicators.
Chiki-Poki BFXLS Longs Shorts Abs Normalized Volume Pro by RRBChiki-Poki BFXLS Longs vs Shorts Absolute Normalized Volume Value Pro by RagingRocketBull 2018
Version 1.0
This indicator displays Longs vs Shorts in a side by side graph, shows volume's absolute price value and normalized volume of Longs/Shorts for the current asset. This allows for more accurate L/S comparisons (like a log scale for volume) since volume on spot exchanges (Bitstamp, Bitfinex, Coinbase etc) is measured in coins traded, not USD traded. Similarly, L/S is usually the amount of coins in open L/S positions, not their total USD value. On Bitmex and other futures exchanges volume is measured in USD traded, so you don't need to apply the Volume Absolute Price Value checkbox to compare L/S. You should always check first whether your source is measured in coins or USD.
Chiki-Poki BFXLS primarily uses *SHORTS/LONGS feeds from Bitfinex for the current crypto asset, but you can specify custom L/S source tickers instead.
This 2-in-1 works both in the Main Chart and in the indicator pane below. You can switch between Main/Sub Window panes using RMB on the indicator's name and selecting Move To/Pane Above/Below.
This indicator doesn't use volume of the current asset. It uses L/S ticker's OHLC as a source for SHORTS/LONGS volumes instead. Essentially L/S => L/S Volume == L/S
Features:
- Display Longs vs Shorts side by side graph for the current crypto asset, i.e. for BTCUSD - BTCUSDLONGS/BTCUSDSHORTS, for ETHUSD - ETHUSDLONGS/ETHUSDSHORTS etc.
- Use custom OHLC ticker sources for Longs/Shorts from different exchanges/crypto assets with/without exchange prefix.
- Plot Longs/Shorts as lines or candles
- Show/Hide L/S, Diff, MAs, ATH/ATL
- Use Longs/Shorts Volume Absolute Price Value (Price * L/S Volume) instead of Coins Traded in open L/S positions to compare total L/S value/capitalization
- Normalize L/S Volume using Price / Price MA / L/S Volume MA
- Supports any existing type of MA: SMA, EMA, WMA, HMA etc
- Volume Absolute Price Value / Normalize also works on candles
- Oscillator mode with negative axis (works in both Main Chart/Subwindow panes).
- Highlight L/S Volume spikes above L/S MAs in both lines/oscillator.
- Change L/S MA color based on a number of last rising/falling L/S bars, colorize candles
- Display L/S volume as 1000s, mlns, or blns using alpha multiplier
1. based on BFXLS Longs vs Shorts and Compare Style, uses plot*, security and custom hma functions
2. swma has a fixed length = 4, alma and linreg have additional offset and smoothing params
Notes:
- Make sure that Left Price Scale shows up with Auto Fit Data enabled. You can reattach indicator to a different scale in Style.
- It is not recommended to switch modes multiple times due to TradingView's scale reattachment bugs. You should switch between Main Chart and Sub Window only once.
- When the USD price of an asset is lower you can trade more coins but capitalization value won't be as significant as when there are less coins for a higher price. Same goes for Shorts/Longs.
Current ATH in shorts doesn't trigger a squeeze because its total value is now far less than before and we are in a bear market where it's normal to have a higher number of shorts.
- You should always subtract Hedged L/S from L/S because hedged positions are temporary - used to preserve the value of the main position in the opposite direction and should be disregarded as such.
- Low margin rates increase the probability of a move in an underlying direction because it is cheaper. High margin rates => the market is anticipating a move in this direction, thus a more expensive rate. Sudden 5-10x rate raises imply a possible reversal soon. high - 0.1%, avg - 0.01-0.02%, low - 0.001-0.005%
You can also check out:
- BFXLS Longs/Shorts on BFXData
- Bitfinex L/S margin rates and Hedged L/S on datamish
- Bitmex L/S on Coinfarm.online
Trailing Stops/Choose a Day of the WeekThis would be my second ever published strategy. It is almost the same as my first ever published script . I've been working primarily on UGAZ and DGAZ .
This is basically a statistical trade. It buys every morning near market open (or by choosing a "time constraint"), then immediately places a trailing stop at a specified amount in ticks (if used on UGAZ a tick = $0.01, if used on NG at tick = $0.001). I've found between 2% and 3% works well for the trailing stop (ie. if UGAZ = $75, a 3% trailing stop = $2.25)
-----What is different from my first strategy?------
You can test the trailing stop strategy one 1 day of the week. Days of the week are assigned numbers. Sunday=1, Monday=2, Tuesday=3 and so on. Just choose a number that correlates to the day of the week you want to test. The Trailing stop may go past that day, that's a good thing if it's making money.
-- Go long/Short is just that, it will buy shares/contracts or short them.
-- Trades per day. This may not be a good choice, when left on "2", it will trade once per day. If set above 2 and there is time left for another trade, an order will enter on the open of the next candle. I'm am still working on ideas for this.
-- Time constraints. When you select this check box, the strategy will limit an entry to the time specified below the "Use Time Constraints" check box. An Exit order will still continue past this window of time until it is stopped out.
---- very important ----
Due to decay, leveraged ETFs will give false results if the price gets far out of range. For example, your ETF is trading around $20 and you choose a 1 hour chart, it may back test back to a time before a reverse split. If the price gets to be too large, like $200, or $1200, the movement on the chart creates false indication of profit/loss.
--- Most important. ---
Do not trade off this strategy, you may lose lots of money. This is for educational use only.
Good luck
MY_DXY corrected pricePlots the current ticker's price in "DXY corrected dollar". Overlay mode.
Default resolution is 60 mins, can be modified by input (*)
Works with every ticker: GC/SI/XAUUSD etc
Bitfinex margin change / total volumeThis script tracks the net Bitfinex margin sizes from candle to candle (longs - shorts), and divide it by the total volume from the previous candle. This should give you a ratio of net margin trading volume over total volume on Bitfinex.
Note that assuming the delay is not severe, this ratio should never exceed 1 or -1 (since margin traded volume should strictly be lower than total traded volume during any time interval). As you can see clearly however, the ratio exceeds 1 and -1 quite frequently. Thanks to @CryptoTrendy on Twitter for bringing this issue to attention. Our trading group has noticed this issue ever since they introduced the tickers, and we suspect there are severe inaccuracies in either one, or both of the margin and total volume tickers.
Gamma Blast StrategyGamma Blast Strategy used for quick 2-5 ticks on Buys, but on a sideways market can get up to 15-20 ticks.
IBS markerIndicator Description
This indicator provides a detailed analysis of the structure and volatility of each candlestick. It is designed to help traders better understand the balance between buying and selling pressure within individual bars, as well as the short-term volatility environment.
📌 Features
Candlestick Structure Analysis
Calculates the relative percentage of the upper wick, lower wick, and real body of each candle.
Helps traders visually and numerically evaluate whether a candle is dominated by bullish, bearish, or indecisive pressure.
IBS (Intraday Bar Strength)
Computes the Intraday Bar Strength value, showing where the close is located relative to the high-low range.
A high IBS indicates strong closing near the high, while a low IBS indicates weakness near the low.
Range Measurements
Displays the candlestick range in both price units and ticks.
Useful for traders who need precise range data for scalping or range-based strategies.
ATR (Average True Range) Volatility Filter
ATR is included with a configurable period setting.
Provides a contextual measure of volatility, helping traders compare current bar size against recent market behavior.
Dynamic Chart Labels
Key values (such as wick percentages, IBS, and range) are displayed directly on the chart through dynamic labels.
This allows for quick interpretation without opening extra panels or indicators.
📈 How to Use
Add the indicator to any chart and configure the settings (ATR period, label visibility, etc.) according to your trading style.
Use wick/body ratios to spot candles with unusual buying/selling pressure.
Combine IBS with ATR to identify potential exhaustion or continuation setups.
The dynamic labels are best used on lower timeframes for scalpers, but they can also provide insights on higher timeframes for swing traders.
🔍 Practical Applications
Identify reversal candles where one wick dominates.
Measure strength of breakouts by comparing candle body % and IBS values.
Detect volatility shifts by monitoring when bar ranges deviate from the ATR baseline.
Support scalping strategies that rely on tick-based range detection.
✅ Notes
This is a standalone indicator and does not require any other script to function.
Works on all markets (stocks, futures, forex, crypto).
For best results, use in conjunction with price action analysis or your preferred trading strategy.
IBS_WickandBody_ATRIndicator Description
This indicator provides a detailed analysis of the structure and volatility of each candlestick. It is designed to help traders better understand the balance between buying and selling pressure within individual bars, as well as the short-term volatility environment.
📌 Features
Candlestick Structure Analysis
Calculates the relative percentage of the upper wick, lower wick, and real body of each candle.
Helps traders visually and numerically evaluate whether a candle is dominated by bullish, bearish, or indecisive pressure.
IBS (Intraday Bar Strength)
Computes the Intraday Bar Strength value, showing where the close is located relative to the high-low range.
A high IBS indicates strong closing near the high, while a low IBS indicates weakness near the low.
Range Measurements
Displays the candlestick range in both price units and ticks.
Useful for traders who need precise range data for scalping or range-based strategies.
ATR (Average True Range) Volatility Filter
ATR is included with a configurable period setting.
Provides a contextual measure of volatility, helping traders compare current bar size against recent market behavior.
Dynamic Chart Labels
Key values (such as wick percentages, IBS, and range) are displayed directly on the chart through dynamic labels.
This allows for quick interpretation without opening extra panels or indicators.
📈 How to Use
Add the indicator to any chart and configure the settings (ATR period, label visibility, etc.) according to your trading style.
Use wick/body ratios to spot candles with unusual buying/selling pressure.
Combine IBS with ATR to identify potential exhaustion or continuation setups.
The dynamic labels are best used on lower timeframes for scalpers, but they can also provide insights on higher timeframes for swing traders.
🔍 Practical Applications
Identify reversal candles where one wick dominates.
Measure strength of breakouts by comparing candle body % and IBS values.
Detect volatility shifts by monitoring when bar ranges deviate from the ATR baseline.
Support scalping strategies that rely on tick-based range detection.
✅ Notes
This is a standalone indicator and does not require any other script to function.
Works on all markets (stocks, futures, forex, crypto).
For best results, use in conjunction with price action analysis or your preferred trading strategy.
Candle Body Size AlertThis indicator monitors the body size of each candle (close minus open, ignoring wicks) and compares it to a user-defined threshold measured in ticks. If the candle body exceeds the threshold, the indicator triggers an alert condition at the close of the candle.
Features:
1. Adjustable threshold in ticks (default: 4000)
2. Adjustable timeframe (or use chart timeframe)
3. Alerts only at candle close (no intrabar signals)
Use Case:
Designed for traders who want to be notified when unusually large candles form, helping to identify strong momentum moves or volatility spikes.
log.info() - 5 Exampleslog.info() is one of the most powerful tools in Pine Script that no one knows about. Whenever you code, you want to be able to debug, or find out why something isn’t working. The log.info() command will help you do that. Without it, creating more complex Pine Scripts becomes exponentially more difficult.
The first thing to note is that log.info() only displays strings. So, if you have a variable that is not a string, you must turn it into a string in order for log.info() to work. The way you do that is with the str.tostring() command. And remember, it's all lower case! You can throw in any numeric value (float, int, timestamp) into str.string() and it should work.
Next, in order to make your output intelligible, you may want to identify whatever value you are logging. For example, if an RSI value is 50, you don’t want a bunch of lines that just say “50”. You may want it to say “RSI = 50”.
To do that, you’ll have to use the concatenation operator. For example, if you have a variable called “rsi”, and its value is 50, then you would use the “+” concatenation symbol.
EXAMPLE 1
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
//@version=6
indicator("log.info()")
rsi = ta.rsi(close,14)
log.info(“RSI= ” + str.tostring(rsi))
Example Output =>
RSI= 50
Here, we use double quotes to create a string that contains the name of the variable, in this case “RSI = “, then we concatenate it with a stringified version of the variable, rsi.
Now that you know how to write a log, where do you view them? There isn’t a lot of documentation on it, and the link is not conveniently located.
Open up the “Pine Editor” tab at the bottom of any chart view, and you’ll see a “3 dot” button at the top right of the pane. Click that, and right above the “Help” menu item you’ll see “Pine logs”. Clicking that will open that to open a pane on the right of your browser - replacing whatever was in the right pane area before. This is where your log output will show up.
But, because you’re dealing with time series data, using the log.info() command without some type of condition will give you a fast moving stream of numbers that will be difficult to interpret. So, you may only want the output to show up once per bar, or only under specific conditions.
To have the output show up only after all computations have completed, you’ll need to use the barState.islast command. Remember, barState is camelCase, but islast is not!
EXAMPLE 2
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
//@version=6
indicator("log.info()")
rsi = ta.rsi(close,14)
if barState.islast
log.info("RSI=" + str.tostring(rsi))
plot(rsi)
However, this can be less than ideal, because you may want the value of the rsi variable on a particular bar, at a particular time, or under a specific chart condition. Let’s hit these one at a time.
In each of these cases, the built-in bar_index variable will come in handy. When debugging, I typically like to assign a variable “bix” to represent bar_index, and include it in the output.
So, if I want to see the rsi value when RSI crosses above 0.5, then I would have something like
EXAMPLE 3
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
//@version=6
indicator("log.info()")
rsi = ta.rsi(close,14)
bix = bar_index
rsiCrossedOver = ta.crossover(rsi,0.5)
if rsiCrossedOver
log.info("bix=" + str.tostring(bix) + " - RSI=" + str.tostring(rsi))
plot(rsi)
Example Output =>
bix=19964 - RSI=51.8449459867
bix=19972 - RSI=50.0975830828
bix=19983 - RSI=53.3529808079
bix=19985 - RSI=53.1595745146
bix=19999 - RSI=66.6466337654
bix=20001 - RSI=52.2191767466
Here, we see that the output only appears when the condition is met.
A useful thing to know is that if you want to limit the number of decimal places, then you would use the command str.tostring(rsi,”#.##”), which tells the interpreter that the format of the number should only be 2 decimal places. Or you could round the rsi variable with a command like rsi2 = math.round(rsi*100)/100 . In either case you’re output would look like:
bix=19964 - RSI=51.84
bix=19972 - RSI=50.1
bix=19983 - RSI=53.35
bix=19985 - RSI=53.16
bix=19999 - RSI=66.65
bix=20001 - RSI=52.22
This would decrease the amount of memory that’s being used to display your variable’s values, which can become a limitation for the log.info() command. It only allows 4096 characters per line, so when you get to trying to output arrays (which is another cool feature), you’ll have to keep that in mind.
Another thing to note is that log output is always preceded by a timestamp, but for the sake of brevity, I’m not including those in the output examples.
If you wanted to only output a value after the chart was fully loaded, that’s when barState.islast command comes in. Under this condition, only one line of output is created per tick update — AFTER the chart has finished loading. For example, if you only want to see what the the current bar_index and rsi values are, without filling up your log window with everything that happens before, then you could use the following code:
EXAMPLE 4
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
//@version=6
indicator("log.info()")
rsi = ta.rsi(close,14)
bix = bar_index
if barstate.islast
log.info("bix=" + str.tostring(bix) + " - RSI=" + str.tostring(rsi))
Example Output =>
bix=20203 - RSI=53.1103309071
This value would keep updating after every new bar tick.
The log.info() command is a huge help in creating new scripts, however, it does have its limitations. As mentioned earlier, only 4096 characters are allowed per line. So, although you can use log.info() to output arrays, you have to be aware of how many characters that array will use.
The following code DOES NOT WORK! And, the only way you can find out why will be the red exclamation point next to the name of the indicator. That, and nothing will show up on the chart, or in the logs.
// CODE DOESN’T WORK
//@version=6
indicator("MW - log.info()")
var array rsi_arr = array.new()
rsi = ta.rsi(close,14)
bix = bar_index
rsiCrossedOver = ta.crossover(rsi,50)
if rsiCrossedOver
array.push(rsi_arr, rsi)
if barstate.islast
log.info("rsi_arr:" + str.tostring(rsi_arr))
log.info("bix=" + str.tostring(bix) + " - RSI=" + str.tostring(rsi))
plot(rsi)
// No code errors, but will not compile because too much is being written to the logs.
However, after putting some time restrictions in with the i_startTime and i_endTime user input variables, and creating a dateFilter variable to use in the conditions, I can limit the size of the final array. So, the following code does work.
EXAMPLE 5
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// CODE DOES WORK
//@version=6
indicator("MW - log.info()")
i_startTime = input.time(title="Start", defval=timestamp("01 Jan 2025 13:30 +0000"))
i_endTime = input.time(title="End", defval=timestamp("1 Jan 2099 19:30 +0000"))
var array rsi_arr = array.new()
dateFilter = time >= i_startTime and time <= i_endTime
rsi = ta.rsi(close,14)
bix = bar_index
rsiCrossedOver = ta.crossover(rsi,50) and dateFilter // <== The dateFilter condition keeps the array from getting too big
if rsiCrossedOver
array.push(rsi_arr, rsi)
if barstate.islast
log.info("rsi_arr:" + str.tostring(rsi_arr))
log.info("bix=" + str.tostring(bix) + " - RSI=" + str.tostring(rsi))
plot(rsi)
Example Output =>
rsi_arr:
bix=20210 - RSI=56.9030578034
Of course, if you restrict the decimal places by using the rounding the rsi value with something like rsiRounded = math.round(rsi * 100) / 100 , then you can further reduce the size of your array. In this case the output may look something like:
Example Output =>
rsi_arr:
bix=20210 - RSI=55.6947486019
This will give your code a little breathing room.
In a nutshell, I was coding for over a year trying to debug by pushing output to labels, tables, and using libraries that cluttered up my code. Once I was able to debug with log.info() it was a game changer. I was able to start building much more advanced scripts. Hopefully, this will help you on your journey as well.
Simple Risk-to-Reward (R) Indicator (TP1–TP2)What this indicator does:
This tool helps traders clearly visualize their risk and reward on any trade by plotting their entry, stop loss, and take-profit (TP) levels directly on the chart. It’s designed to make manual trade planning more visual and systematic.
How it works:
You set your planned entry price, whether you want to plot a Long or Short setup, and your stop-loss distance (in ticks).
The indicator calculates your stop-loss level and automatically plots it on the chart.
It then draws take-profit levels at 1R and 2R (where “R” is your risk, the distance between entry and stop).
You can toggle the TP1 and TP2 lines on or off to suit your preference.
How to use it:
Open the settings and enter your intended entry price.
Select “Long Setup” for a buy trade, or turn it off for a sell/short trade.
Enter your desired stop loss in ticks.
Choose which take-profit levels to display by toggling TP1 and TP2.
The indicator will show entry, stop, and take-profit levels right on your chart so you can easily see your planned risk/reward.
What makes it unique and useful:
This indicator is designed for manual trade planning, giving you full control over your inputs and letting you instantly see your risk/reward on any instrument or timeframe. Unlike some built-in tools, it supports both long and short trades, lets you set all levels manually, and keeps your charts clean and easy to interpret.