Portfolio SnapShot v0.3Here is a Tradingview Pinescript that I call "Portfolio Snapshot". It is based on two other separate scripts that I combined, modified and simplified - shoutout to RedKTrader (Portfolio Tracker - Table Version) and FriendOfTheTrend (Portfolio Tracker For Stocks & Crypto) for their inspiration and code. I was using both of these scripts, and decided to combine the two and increase the number of stocks to 20. I was looking for an easy way to track my entire portfolio (scattered across 5 accounts) PnL on a total and stock basis. PnL - that's it, very simple by design. The features are:
1) Track PnL across multiple accounts, from inception and current day.
2) PnL is reported in two tables, at the portfolio level and individual stock level
3) Both tables can be turned on/off and placed anywhere on the chart.
4) Input up to 20 assets (stocks, crypto, ETFs)
The user has to manually calculate total shares and average basis for stocks in multiple accounts, and then inputs this in the user input dialog. I update mine as each trade is made, or you can just update once a week or so.
I've pre-loaded it with the major indices and sector ETFs, plus URA, GLD, SLV. 100 shares of each, and prices are based on the close Jan 2 2024. So if you don't want to track your portfolio, you can use it to track other things you find interesting, such as annual performance of each sector.
PNL
Prepare Targets, Stop Loss, Position Size and calculate PnL You are watching the price action of your favorite coin. Then the price changes quickly and you know you could start a good trade now.
But how much should you buy, where should you set your Target for Profit Taking and your Stop Loss? How much money do you want to risk, how much money would you win if the trade is succesfull?
This indicator helps you to set up your trade in a quick way, no need to do some calculations by hand.
How does it work?
Just enter the prices where you want to take Profit and where your Stopp Loss should be.
Enter the number of coins and wether you buy or sell/go long or short.
These targets are then shown in the chart, move them around to see if your stopp loss is positioned well. See directly what your profit or loss would be.
See some Screenshots with more explanations for what is possible and how to set up everything.
General Overview:
How to set up the Trade:
Formatting and Extras:
Let me know if you like it!
Portfolio TableA tool to manage your invested assets (stocks, crypto currencies, ...).
- Show profit of every asset as well as the total profit.
- Show/hide a bought price line on the chart if the current selected ticker is on your portfolio.
Portfolio PnL Tracker
This is a personal portfolio tracker that helps you track your daily profits and losses. You can track up to 64 stocks or cryptocurrencies. You can set them by specifying the symbol and average price.
FEATURES
- Set up to 64 stock or crypto symbols.
- Shows the average price line
- Show profit or loss as a percentage
- Shows only when on the chart that matches the symbol settings.
HOW TO USE
1. Double click the PnL Tracker indicator at the top left of the chart
2. Enter your symbol and average cost
The average cost line shows your current position.
PnL is calculated based on the average cost you input.
The Profit and Loss (PnL) box and the average cost line will only be displayed when your input symbol matches the chart you are currently viewing.
Manual PnL (Profit and Loss) % Tracker - spot long only
This is a manual profit and loss tracker. It takes the user's manual input of total cost and quantity, and then outputs a table on the bottom right of the chart showing the profit or loss %, average purchase price, gross profit or loss, and market value.
Instructions:
1. Double click the indicator title at the top left of the chart
2. Select the "Inputs" tab and click the empty field next to "Symbol" to enter the traded symbol+exchange. This entry MUST be the same as the chart you are on, for example BTCUSDT/BINANCE (indicator will not display otherwise)
3. Enter the Total Cost and Qty of shares/coins owned
4. Optional - change positive or negative colors
5. Optional - under the "Style" tab, change the color of the average price (AVG) line
Note that for the average price (AVG) line to be shown/hidden you must enable/disable "Indicator and financials labels" in the scales settings.
For crypto or other tickers that have prices in many decimal places I would suggest, for the sake of accuracy, adjusting the decimal places in the code so that for prices under $1 you will display more info.
For example let's say you purchase x number of crypto at a price of 0.031558 you should change the code displaying "0.00" on line 44 to "0.000000"
This will ensure that the output table and plotted line will calculate an average price with the same number of decimals.
Strategy UtilitiesThis library comprises valuable functions for implementing strategies on TradingView, articulated in a professional writing style.
The initial version features a monthly Profit & Loss table with percentage variations, utilizing a modified version of the script by @QuantNomad.
Library "strategy_utilities"
monthly_table(results_prec, results_dark)
monthly_table prints the Monthly Returns table, modified from QuantNomad. Please put calc_on_every_tick = true to plot it.
Parameters:
results_prec (int) : for the precision for decimals
results_dark (bool) : true or false to print the table in dark mode
Returns: nothing (void), but prints the monthly equity table
Sample Usage
import TheSocialCryptoClub/strategy_utilities/1 as su
results_prec = input(2, title = "Precision", group="Results Table")
results_dark = input.bool(defval=true, title="Dark Mode", group="Results Table")
su.monthly_table(results_prec, results_dark)
Strategy weekly results as numbers v1This script is based on an idea of monthly statistics that have been found across tradingview community scripts. This is an improved version with weekly results with the ability to define the size of every group (number of weeks within one group).
Initial setup of the strategy
1. Set the period to calculate the results between.
2. Set the statistic precision and group size.
3. Enable "Recalculate" → "On every tick" under the strategy "Properties" section.
The logic under the hood
1. Get the period between which to calculate the strategy.
2. Calculate the first day of the first week within the period.
3. Calculate the latest day of the latest week within the period.
4. Calculate the results of the selected period.
5. Group the values by the defined number of cells.
6. Calculate the summary of every group.
7. Render the table.
Please, be careful . To use this tool you will need to enable the "Recalculate" → "On every tick" option but it means that your strategy will be executed on every tick instead of bar close. It can cause unexpected results in your strategy behaviour.
PortfolioThe script’s purpose is to measure one’s net worth based on manual input. It can also be used to establish other “unthought-of” ways of analyzing charts, eg. to group different assets and watch for convergence.
“How to use”
First, decide which “currency” you want to measure all your assets against. You can display the portfolio value in a cryptocurrency or something else.
Add assets:
Write a description (eg. Bitcoin).
Set the amount you have.
Link to a chart that measures against your “currency”
It’s possible to add multiple assets in different “accounts” or “groups”. The portfolio value should then display the value of all those assets combined.
How is PnL measured?
You can measure PnL for the entire portfolio and every “group” individually. You are in charge of which level to measure from. You can for instance type in your current portfolio value and reset it on a monthly basis, or perhaps set a “floor” you want to avoid reaching. PnL is displayed in “currency” and percent change measured from the levels chosen by you.
Script information
To make the indicators published by this account fit together, look good, and easily managed. We had to include some code that is also used in the (closed-source) indicators “Long Position” and “Short Position”. This code is used for distancing and placing labels. It is a volatility-based code that looks back at the previous price action and determines a chart- and timeframe-specific volatility. Not “timeframe-specific” in the sense that some timeframes have special calculations, more that values will most likely be different depending on the “calculation environment”. The main functionality of this script is not about label placements, so we do not think this is a very big deal regarding originality for our other indicators. To keep our other indicators original and to not give away key code blocks with multi-functional value , we have chosen to also have this script published as closed-source.
Furthermore, the script requests data from other symbols based on the user’s input. Thereafter, it calculates and concatenates the percentage and value from the initial inputs. To better understand the script as a whole it would probably be useful to read the “How to use” section of this publication.
Short PositionThis is a “twin” indicator to the “Long Position” indicator. Both of these indicators share very similar scripting elements, purpose, and calculation logic. Mathematical principles are basically flipped 180° if you were to compare them, although things can be very complex in the coding world.
These indicators are intended to be used separately or in conjunction with each other. The reason they’re separated into two publications is mostly to avoid confusion when navigating through the settings. Settings are also “color-coated” with default colors and we do not think that too much green belongs in the “Short Position” indicator. Also, we believe that if someone wants to sell, they shouldn’t have to think about buying and vice versa.
“How to use” & script information
Upon execution of this script, you will be asked to click on the chart’s timeline. The position will then lock onto the candlesticks in that area and automatically (according to this script’s algorithm) calculate a “reasonable” leverage , as well as stop-loss, targets , and more.
These calculated levels are based on previous volatility for that specific chart and timeframe. Volatility is determined by different elements defined in this script (closed-source). In short, the script’s volatility-based algorithms looks at previous price action and then applies a very precise logic to it.
Now the user has a starting point and can determine if the indicator did a good job or if they want to input their own values. Below are some available functions that also can be enabled in the settings.
Focus-assist: Volatility and position-based signal during strong movements relative to previous volatility.
Dynamic-target: Volatility and position-based target that closes the position when strong movements are identified.
To keep this description short, we will stop here.
Summary
With this indicator, it’s possible to set up “fake” positions and practice or “play” with buying and selling with leverage. You can look at past performance and thereafter use it from day to day and see if you can make the right decisions in the right moments. You can also “invent” your own use cases or maybe you just want to visualize leverage.
Long PositionThis is a “twin” indicator to the “Short Position” indicator. Both of these indicators share very similar scripting elements, purpose, and calculation logic. Mathematical principles are basically flipped 180° if you were to compare them, although things can be very complex in the coding world.
These indicators are intended to be used separately or in conjunction with each other. The reason they’re separated into two publications is mostly to avoid confusion when navigating through the settings. Settings are also “color-coated” with default colors and we do not think that too much red belongs in the “Long Position” indicator. Also, we believe that if someone wants to buy, they shouldn’t have to think about selling and vice versa.
“How to use” & script information
Upon execution of this script, you will be asked to click on the chart’s timeline. The position will then lock onto the candlesticks in that area and automatically (according to this script’s algorithm) calculate a “reasonable” leverage , as well as stop-loss, targets , and more.
These calculated levels are based on previous volatility for that specific chart and timeframe. Volatility is determined by different elements defined in this script (closed-source). In short, the script’s volatility-based algorithms looks at previous price action and then applies a very precise logic to it.
Now the user has a starting point and can determine if the indicator did a good job or if they want to input their own values. Below are some available functions that also can be enabled in the settings.
Focus-assist: Volatility and position-based signal during strong movements relative to previous volatility.
Dynamic-target: Volatility and position-based target that closes the position when strong movements are identified.
To keep this description short, we will stop here.
Summary
With this indicator, it’s possible to set up “fake” positions and practice or “play” with buying and selling with leverage. You can look at past performance and thereafter use it from day to day and see if you can make the right decisions in the right moments. You can also “invent” your own use cases or maybe you just want to visualize leverage.
Strategy PnL LibraryLibrary "Strategy_PnL_Library"
TODO: This is a library that helps you learn current pnl of open position and use it to create your own dynamic take profit or stop loss rules based on current level of your profit. It should only be used with strategies.
inTrade()
inTrade: Checks if a position is currently open.
Returns: bool: true for yes, false for no.
notInTrade()
inTrade: Checks if a position is currently open. Interchangeable with inTrade but just here for simple semantics.
Returns: bool: true for yes, false for no.
pnl()
pnl: Calculates current profit or loss of position after the commission. If the strategy is not in trade it will always return na.
Returns: float: Current Profit or Loss of position, positive values for profit, negative values for loss.
entryBars()
entryBars: Checks how many bars it's been since the entry of the position.
Returns: int: Returns a int of strategy entry bars back. Minimum value is always corrected to 1 to avoid lookback errors.
pnlvelocity()
pnlvelocity: Calculates the velocity of pnl by following the change in open profit compared to previous bar. If the strategy is not in trade it will always return na.
Returns: float: Returns a float value of pnl velocity.
pnlacc()
pnlacc: Calculates the acceleration of pnl by following the change in profit velocity compared to previous bar. If the strategy is not in trade it will always return na.
Returns: float: Returns a float value of pnl acceleration.
pnljerk()
pnljerk: Calculates the jerk of pnl by following the change in profit acceleration compared to previous bar. If the strategy is not in trade it will always return na.
Returns: float: Returns a float value of pnl jerk.
pnlhigh()
pnlhigh: Calculates the highest value the pnl has reached since the start of the current position. If the strategy is not in trade it will always return na.
Returns: float: Returns a float highest value the pnl has reached.
pnllow()
pnllow: Calculates the lowest value the pnl has reached since the start of the current position. If the strategy is not in trade it will always return na.
Returns: float: Returns a float lowest value the pnl has reached.
pnldev()
pnldev: Calculates the deviance of the pnl since the start of the current position. If the strategy is not in trade it will always return na.
Returns: float: Returns a float deviance value of the pnl.
pnlvar()
pnlvar: Calculates the variance value of the pnl since the start of the current position. If the strategy is not in trade it will always return na.
Returns: float: Returns a float variance value of the pnl.
pnlstdev()
pnlstdev: Calculates the stdev value of the pnl since the start of the current position. If the strategy is not in trade it will always return na.
Returns: float: Returns a float stdev value of the pnl.
pnlmedian()
pnlmedian: Calculates the median value of the pnl since the start of the current position. If the strategy is not in trade it will always return na.
Returns: float: Returns a float median value of the pnl.
unrealized pnl for btcusdt (or any linear perp)haven't seen this published, so i made it to watch my position while looking at my TV chart
right now, code works for just linear contracts (base currency margined, not quote currency) and i will have to add the code for inverse perps soon in the next update
very simple tool... not much to explain
just enter
long or short
average entry
position size (designed for btc since i'm a maxi, but entering the amount of any base currency should work)
take profit
then you'll get candles for your position and a line for your TP (and its amount)
next version will add a feature to plot inverse perps
(sorry TV if this doesn't abide by the House Rules exactly)
PnL and Buy & Hold TrackerIn this script I use a simple, not necessarily profitable, strategy of a cross of MAs to teach how to calculate and plot the PnL of each trade made by the indicator. I also show how to calculate the cumulative PnL of all trades and the Buy and Hold of the same period.
These calculations which are natively available in any strategy script, require a bit of resourcefulness to work in an indicator script.
It can be very useful to optimize parameters for the best performance of an indicator-based strategy.
I use variables to store the price of the asset at each buy signal to calculate the PnL with the closing price of that particular trade and another variable to store the price value of the first trade, which calculates the Buy and Hold percentage with the current price of the asset.
I plot the values of the trades in labels and the accumulated values in a table.
I also show how to calculate and plot the unrealized PnL of open trades.
P/L panelThis is not a indicator or strategy.
I thought of having a table showing running profit or loss on chart from a specific price.
I tried to put the same in code and ended up with this code.
This is a table showing the running profit or loss from a manually specified price and quantity.
when you add the code, This table asks us to input the entry price and quantity.
It will calculate the running profit or loss with respect to running price and puts that in the table.
We will have to input two things.
1.) entry price: the price at which a position(long/short) is taken.
2.) Quantity: A +value need to be entered for Long position and -value for short position.
code detects whether its a long position or short position based on the quantity info.
for example if a LONG position is taken at a price 60 of 100 quantity,
then in price we need to enter 60
and in quantity 100 (+ve value)
for SHORT position at a price of 60 of 100 quantity,
in price we need to enter 60
and in quantity -100 (-ve value)
once the table is added to the chart.
Just double click on the table, it will open the settings tab and we can provide new inputs price/quantity/position.
positioning of table is optional and all possible positioning options are provided.
Advise further improvements required if any in this code.
This piece of code can be used along with any indicator.
For which we may need to use valuewhen() additionally.
Try it yourself and ping me if required.
Alferow_pnl_up_shortThis script allows you to determine the leverage required to enter one position based on the set entry price, the price of the expected take profit, stop loss and risk per transaction. It also allows you to schedule this transaction for 5 possible transactions, with different shoulders and a martingale coefficient for each subsequent gain at the same risk, allowing you to qualitatively improve the pnl of the transaction with price fluctuations after entering the transaction. The script is designed for short positions.
RedK Portfolio Tracker [Table Version]RedK Portfolio Tracker is a simple tool that enables a trader to monitor and track a portfolio of up to 10 holdings (+ free cash) in real time - directly on the chart
Now that we have tables in Pine, this is a table version of my previously published Portfolio Tracker
- The table works better in visualizing the various table elements (title row, column labels..etc), and is more flexible in allowing color coding of gain/loss. for many traders, myself included, these simple visual signals are valuable in helping timely trading decisions.
I'll come back and improve this script as i'm really enjoying the ability to track things this way - if you liked this and want to receive the updates, please flag / favorite it below and you'll get notified when i publish new versions.
Some new features for the table version:
- ability to change default color of various table elements (text, default background, title background, gain/loss color, border..etc)
- ability to change the text size to suit your monitor and visual preference
- ability to change table position
The "portfolio-specific" inputs are similar to the previous version - we get the ability to enter up to 10 positions, entry price and qty, then also add the free cash
- also a change from prior version, this table will plot by default on the price chart, but will have no scale - the portfolio ploy itself will also show (blue/orange stepping line) but the PnL plot will be hidden by default -- how we plot the portfolio & P/L is possibly one of the areas for improvements for next versions - also thinking of other adding valuable data i track in my own trading, like the quarterly dividends for the held positions .. we'll see - this is just a start
hope some will find this useful. feel free to comment.
P/L CalculatorI couldn't find an existing indicator that simply calculated profit and loss, so here's one for quick, visual P/L. My api's lag too much to this helps while scalping.
[NLX-L3] Alerts- Introduction: Alert Module -
This alert module is part of my powerful and flexible modular trading framework.
It can be used with any indicator that has a signal plot output (1 = long / -1 = short)
This trading framework is the result of many years experience building indicators and trading strategies.
I couldn’t find a trading framework in Pine Script that would suit my needs and so I started to design my own from scratch. I’m trading with this framework myself so I’ve made sure that it’s flexible and absolutely reliable in a live-trading environment.
- Architecture -
What makes this framework so flexible is the modular architecture, different layers that all serve a very specific purpose.
You will notice that the module names include either L1 - L2 - L3:
- Layer 1 (L1) is the base layer and the foundation. L1 indicators are used to determine the trend, volume profile and filter noise. You would use L1 to see if it’s a good time to trade, what is the direction - or if it's better to trade at all in unfavourable conditions
- Layer 2 (L2) receives the result of L1 and if the market conditions are good the L2 indicator looks for an optimal entry point to go long or short. It is possible to combine several L2 indicators and trigger a long/short signal only if all L2 indicators agree.
- Layer 3 (L3) receives the final signal from L2 and it’s where we can now backtest the result of our trading strategy and trigger trade alerts with help of the alert module.
- Features -
External Input Source (any indicator with signal plot can be used)
Safe Entries Option: Enter a trade only if the position is profitable ad the momentum allows
Pyramid Entries
Partial Take-Profit: %-Step Interval and Quantity per Step
Stop Methods: Trailing Stop, TP/SL with ATR Option, several type of stop bands...
Profit/Loss Label with Fee, Slippage and Leverage Calculation
- Additional Modules -
L3 - Backtest Module
L2 - Noise Filter
L2 - QQE++
L1 - Trend Index
Trend Matrix (Coming soon)
Dynamic Range Breakout (Coming soon)
Breakouts & Pullbacks
- Request Access -
Contact me - see my signature below
Dollar Cost Average (Data Window Edition)Hi everyone
Hope you had a nice weekend and you're all excited for the week to come. At least I am (thanks to a few coffee but that still counts !!!)
This indicator is inspired from Dollar-Cost-Average-Cost-Basis
EDUCATIONAL POST
The educational post is coming a bit later this afternoon explaining how to use the indicator so I would advise to follow me so that you'll get updated in real-time :) (shameless self-advertising)
1 - What is Dollar-Cost Averaging (DCA)?
Dollar-Cost Averaging is a strategy that allows an investor to buy the same dollar amount of an investment on regular intervals. The purchases occur regardless of the asset's price.
I hope you're hungry because that one is a biggie and gave me a few headaches. Happy that it's getting out of my way finally and I can offer it
This indicator will analyse for the defined date range, how a dollar cost average (DCA) method would have performed vs investing all the hard earnt money at the beginning
2- What's on the menu today ?
Please check this screenshot to understand what you're supposed to see : CLICK ME I'M A SCREENSHOT (I'll repeat this URL one more time below as I noticed some don't read the information on my description and then will come pinging me saying "sir me no understand your indicator, itz buggy sir"
(yes I finally thought about a way to share screenshots on TradingView, took me 4 weeks, I'm slow to understand things apparently)
My indicator works with all asset classes and with the daily/weekly/monthly timeframes
As always, let's review quickly the different fields so that you'll understand how to use it (and I won't get spammed with questions in DM ^^)
- Use current resolution : if checked will use the resolution of the chart
- Timeframe used for DCA : different timeframe to be used if Use current resolution is unchecked
- Amount invested in your local currency : The amount in Fiat money that will be invested at each period selected above
- Starting Date
- Ending Date
- Select a candle level for the desired timeframe : If you want to use the open or close of the selected period above. Might make a diffence when the timeframe is weekly or monthly
3 - Specifications used
I got the idea from this website dcabtc.com and the result shown by this website and my indicator are very interesting in general and for your own trading
The formula used for the DCA calculation is that one : Investopedia Dollar Cost Average
4 - How to interpret the results
"But sir which results ??"...... those ones : CLICK ME I'M A SCREENSHOT :) (strike #2 with the screenshot)
It will draw all the plots and will give you some nice data to analyze in the Data Window section of TradingView
I'm not completely satisfied with the tool yet but the results are very closed to the dcabtc website mentioned above
If you're trading a very bullish asset class (who said crypto ?), it's very interesting to see what a DCA strategy could bring in term of performance. But DCA is not magic, there is a time component which is the day/week/month you'll start to invest (those who invested in crypto beginning of 2018 in altcoins know what I'm talking about and ..............will hate me for this joke)
5 - What's next ?
As said, the educational post is coming next but not only.
Will probably post a strategy tomorrow using this indicator so that you can compare what's performing best between your trading and a dollar cost average method
I'll publish as a protected source this time a more advanced version of that one including DCA forecasts
6 - Suggested alternative (but I'll you doing it)
If you don't want to have this panel in the bottom with the plots and analyze the results in the data window, you can always create an infopanel like shown here Risk-Reward-InfoPanel/ and display all the data there
Hope you'll like it, like me, love it, love me, tip me :)
____________________________________________________________
Feel free to hit the thumbs up as it shows me that I'm not doing this for nothing and will motivate to deliver more quality content in the future. (Meaning... a few likes only = no indicators = Dave enjoying the beach)
- I'm an offically approved PineEditor/LUA/MT4 approved mentor on codementor. You can request a coaching with me if you want and I'll teach you how to build kick-ass indicators and strategies
Jump on a 1 to 1 coaching with me
- You can also hire for a custom dev of your indicator/strategy/bot/chrome extension/python
Risk/Reward (InfoPanel)Hello ladies (if any in my followers ?) and gentlemen
Here's your indicator of the day and once again given for FREE. What I'm going to say to my landlord if I can't pay rent because I'm not asking for $$ ?
I'll probably send the next indicators from below the town brige. Even then... I will still comply with my challenge to share 1 original indicator a day and not a copy of what already exists
The today indicator is to show you the great possibilites behind the TradingView Label object : Label
Profit And Loss LABEL
I thought about that one for a while and wanted to share how we can calculate dynamically a Risk to Reward ratio .
This indicator is not based on the price on the chart. I repeat before getting the question asked me privately 10 times This indicator is not based on the price on the chart.
"Then it's not useful dude, you're dumb". I agree and.... I agree... BUT you can now calculate your Risk to Reward ratio on TradingView directly rather than using an external Excel file. Who's dumb now :) ?
For those curious about it, I used this formula for the R:R ratio formula Calculating-risk-reward.asp
It will also display the Profit and Loss data based on your inputs only
ERRORS LABEL
I also added some basic errors management. If any error occur when you'll type your inputs, then a very mean Error label will appear and you'll have to fix the issues in less than a few seconds.
Otherwise your computer will explode (KABOOOOM) and your trading capital will be redirected to my own insurance fund (I have a family to feed, thanks for your sacrifices)
(end of joke)
In more seriousness, the engine will check if the TP1/TP2/Stop Loss/Entry price combinaisons makes sense. If not, you''ll be punished with an error label.
You can use this methodology for your own indicators in the futur to display dynamic messages based on users' inputs and/or current price on the chart
The educational video giving more details is coming right up.
You can watch it and should be located under "IDEAS"
Wshing you all a very fruitful end of your day and see you tomorrow for the last indicator of the week (baby David is tired and need his rest)
Dave