Indicator

Time-input Lines [MFX]THE LINES
The indicator plots a horizontal price line at a specified hour and minute (default: 9:30 - Equities Open). This line extends for a predefined number of minutes (default: 60 minutes - Opening Range Full Spectrum). Additionally, the indicator can plot two vertical lines: one at the selected start time and another at the end of the horizontal line.
STYLE
Both the horizontal and vertical lines are fully customizable, allowing adjustments to color, style, and width. For a cleaner, minimalist chart, any of these lines can be disabled.
TIMEZONE
By default, the indicator operates in the New York time zone, but this can be modified by unchecking the option and specifying a custom offset relative to UTC/GMT. The default offset is +2, corresponding to CEST (Central European Summer Time, UTC/GMT+2). The offset can be adjusted with up to 15-minute precision, where 0.25 represents a quarter of an hour. Indicator

Matt Liq LinesIndicator Overview
The "Matt Liq Lines" indicator is designed to help traders identify significant price levels where high-volume trading occurred. These levels are often referred to as liquidation levels and can act as support or resistance in the market. The indicator plots horizontal lines on the chart at these identified levels, helping traders make informed decisions based on volume spikes.
Key Features
Volume Multiplier: A user-defined threshold to identify high-volume candles. If a candle's volume is greater than the average volume multiplied by this multiplier, it is considered a high-volume candle.
Lookback Period: The period over which the average volume is calculated. This helps in smoothing out volume data to identify significant spikes.
Max Levels: The maximum number of liquidation levels to display on the chart. This helps in keeping the chart clean and focuses on the most relevant levels.
Indicator Components
Average Volume Calculation:
avgVolume = ta.sma(volume, lookbackPeriod)
Calculates the simple moving average (SMA) of the volume over the specified lookback period.
High Volume Identification:
highVolume = volume > (avgVolume * volumeMultiplier)
Identifies if the current candle's volume is greater than the average volume multiplied by the volume multiplier.
Liquidation Levels Storage:
Uses arrays to store the levels, their corresponding bar indices, and volumes.
Adding Liquidation Levels:
When a high-volume candle is identified, its open price is added as a liquidation level. If the maximum number of levels is exceeded, the oldest level is removed to make room for the new one.
Cleaning Levels:
A function f_clean_levels removes crossed levels (where the price has already moved above and below the level) and keeps the levels with the highest volumes.
Plotting Liquidation Lines:
Horizontal lines are drawn at the identified liquidation levels. These lines extend to the right and help traders visualize important price levels.
How to Use the Indicator
Set the Volume Multiplier: Adjust the volume multiplier to filter out minor volume spikes and focus on significant ones.
Adjust the Lookback Period: Set a lookback period that reflects the typical trading volume for the asset you are analyzing.
Configure Max Levels: Decide the number of levels you want to display on the chart to avoid clutter.
Interpret the Lines: Use the plotted lines as potential support or resistance levels. These lines indicate where significant trading activity has occurred, which could influence future price movements.
By following these steps and understanding the indicator's components, traders can effectively use the "Matt Liq Lines" indicator to identify key price levels influenced by high trading volumes, aiding in better decision-making Indicator

Indicator

Indicator

ZigZag Multi [TradingFinder] Trend & Wave Lines - Structures🔵 Introduction
"Zigzag" is an indicator that forms based on price changes. Essentially, the function of this indicator is to connect consecutive and alternating High and Low pivots. This pattern assists in analyzing price changes and can also be used to identify classic patterns. "Zigzag" is an analytical tool that, by filtering partial price movements based on the specified period, can identify price waves across different time frames (short or long term).
🔵 Reason for Creation
The combination of "short term zigzag" and "long term zigzag" enhances accuracy and reduces analysis time. In a time frame, "long term zigzag" represents the main trend, while "short term zigzag" depicts short-term waves.
🔵 How to Use
After selecting the desired time frame and adding "zigzag" to the chart, begin utilization. Keep in mind to identify the main market trend from "long term zigzag" and the minor waves from "short term zigzag".
🟣 Important: Additionally, classic patterns such as HH, LH, LL, and HL can be recognized. All traders analyzing financial markets using classic patterns and Elliot Waves can benefit from the "zigzag" indicator to facilitate their analysis.
🔵 Settings
Short term zigzag : In this section, you can adjust settings such as time frame range, display mode, color, and line width of the zigzag lines.
Short term label : This section allows you to activate or deactivate the display of zigzag labels according to your needs. You can also customize their color and size.
Long term zigzag : Here, you can adjust settings for time frame range, display mode, color, and line width of zigzag lines.
Long term label : Similar to short term label settings.
The recommended time frame for "long term zigzag" is between 9 to 15, and for "short term zigzag" is between 3 to 5.
🟣 Important Notes :
Considering the different behaviors of financial markets and various time frames, it is recommended to experiment with different time frame settings when using "zigzag" to find the best settings for each symbol and time frame, thereby preventing potential errors.
🟣 Terminology Explanations :
"HH": When the price is higher than the previous peak (Higher High).
"HL": When the price is higher than the previous low (Higher Low).
"LH": When the price is lower than the previous peak (Lower High).
"LL": When the price is lower than the previous low (Lower Low).
Indicator

Polyline PlusThis library introduces the `PolylinePlus` type, which is an enhanced version of the built-in PineScript `polyline`. It enables two features that are absent from the built-in type:
1. Developers can now efficiently add or remove points from the polyline. In contrast, the built-in `polyline` type is immutable, requiring developers to create a new instance of the polyline to make changes, which is cumbersome and incurs a significant performance penalty.
2. Each `PolylinePlus` instance can theoretically hold up to ~1M points, surpassing the built-in `polyline` type's limit of 10K points, as long as it does not exceed the memory limit of the PineScript runtime.
Internally, each `PolylinePlus` instance utilizes an array of `line`s and an array of `polyline`s. The `line`s array serves as a buffer to store lines formed by recently added points. When the buffer reaches its capacity, it flushes the contents and converts the lines into polylines. These polylines are expected to undergo fewer updates. This approach is similiar to the concept of "Buffered I/O" in file and network systems. By connecting the underlying lines and polylines, this library achieves an enhanced polyline that is dynamic, efficient, and capable of surpassing the maximum number of points imposed by the built-in polyline.
🔵 API
Step 1: Import this library
import algotraderdev/polylineplus/1 as pp
// remember to check the latest version of this library and replace the 1 above.
Step 2: Initialize the `PolylinePlus` type.
var p = pp.PolylinePlus.new()
There are a few optional params that developers can specify in the constructor to modify the behavior and appearance of the polyline instance.
var p = pp.PolylinePlus.new(
// If true, the drawing will also connect the first point to the last point, resulting in a closed polyline.
closed = false,
// Determines the field of the chart.point objects that the polyline will use for its x coordinates. Either xloc.bar_index (default), or xloc.bar_time.
xloc = xloc.bar_index,
// Color of the polyline. Default is blue.
line_color = color.blue,
// Style of the polyline. Default is line.style_solid.
line_style = line.style_solid,
// Width of the polyline. Default is 1.
line_width = 1,
// The maximum number of points that each built-in `polyline` instance can contain.
// NOTE: this is not to be confused with the maximum of points that each `PolylinePlus` instance can contain.
max_points_per_builtin_polyline = 10000,
// The number of lines to keep in the buffer. If more points are to be added while the buffer is full, then all the lines in the buffer will be flushed into the poylines.
// The higher the number, the less frequent we'll need to // flush the buffer, and thus lead to better performance.
// NOTE: the maximum total number of lines per chart allowed by PineScript is 500. But given there might be other places where the indicator or strategy are drawing lines outside this polyline context, the default value is 50 to be safe.
lines_bffer_size = 50)
Step 3: Push / Pop Points
// Push a single point
p.push_point(chart.point.now())
// Push multiple points
chart.point points = array.from(p1, p2, p3) // Where p1, p2, p3 are all chart.point type.
p.push_points(points)
// Pop point
p.pop_point()
// Resets all the points in the polyline.
p.set_points(points)
// Deletes the polyline.
p.delete()
🔵 Benchmark
Below is a simple benchmark comparing the performance between `PolylinePlus` and the native `polyline` type for incrementally adding 10K points to a polyline.
import algotraderdev/polylineplus/2 as pp
var t1 = 0
var t2 = 0
if bar_index < 10000
int start = timenow
var p = pp.PolylinePlus.new(xloc = xloc.bar_time, closed = true)
p.push_point(chart.point.now())
t1 += timenow - start
start := timenow
var polyline pl = na
var points = array.new()
points.push(chart.point.now())
if not na(pl)
pl.delete()
pl := polyline.new(points)
t2 += timenow - start
if barstate.islast
log.info('{0} {1}', t1, t2)
For this benchmark, `PolylinePlus` took ~300ms, whereas the native `polyline` type took ~6000ms.
We can also fine-tune the parameters for `PolylinePlus` to have a larger buffer size for `line`s and a smaller buffer for `polyline`s.
var p = pp.PolylinePlus.new(xloc = xloc.bar_time, closed = true, lines_buffer_size = 500, max_points_per_builtin_polyline = 1000)
With the above optimization, it only took `PolylinePlus` ~80ms to process the same 10K points, which is ~75x the performance compared to the native `polyline`. Library

Indicator

Drawings_publicLibrary "Drawings_public"
: Functions to manage drawings on the chart
extend_line(lineId, labelId)
: Extend specific line with its label
Parameters:
lineId
labelId
update_line_coordinates(lineId, labelId, x1, y1, x2, y2)
: Update specific line coordinates with its label
Parameters:
lineId
labelId
x1
y1
x2
y2
update_label_coordinates(labelId, value)
: Update coordinates of a label
Parameters:
labelId
value
delete_line(lineId, labelId)
: Delete specific line with its label
Parameters:
lineId
labelId
update_box_coordinates(boxId, labelId, left, top, right, bottom)
: Update specific box coordinates with its label
Parameters:
boxId
labelId
left
top
right
bottom
delete_box(boxId, labelId)
: Delete specific box with its label
Parameters:
boxId
labelId Library

Forex Strength IndicatorThis indicator will display the strength of 8 currencies, EUR, AUD, NZD, JPY, USD, GBP, CHF, and CAD. Each line will represent each currency. Alongside that, Fibonacci levels will be plotted based on a standard deviation from linear regression, with customizable lengths.
For more steady Fibonacci levels, use higher lengths for both Standard Deviations and Linear Regression. All currency lines come from moving averages with options like EMA, SMA, WMA, RMA, HMA, SWMA, and Linear Regression.
When lines of the active pair are far from each other, it means higher divergence in those currency strengths among the other pairs. The closer the lines are, the lower the divergence.
You can use the Fibonacci levels as points for the reversal or end of the current trend. When the lines cross can be used as a parameter for a more accurate signal of the next movement.
All 28 pairs are loaded from the same time frame and will use the same moving average for all of them
Alerts from the line crossing are available. Indicator

Indicator

Indicator

Indicator

Indicator

Library

Yearly Monthly Vertical Lines [MsF]This indicator that draws vertical lines for each year and month starting from the specified date and time.
For example, starting from August 26th, 2022,
The annual vertical lines are Aug 26th, 2022, Aug 26th, 2021, Aug 26th, 2020, Aug 26th, 2019, Aug 26th, 2018, Aug 26th, 2017...
It is useful to check the action of the chart at the event of each year and month.
Caution:
Since there is a limit to the Bar-Count that can be specified in the script language, depending on the chart period setting It may not be displayed.
-------------------------
指定した日時を起点として、年、月ごとに垂直線(縦線)を描画するインジケータです。
例えば、2022/9/1を起点とした場合、
年次のラインは、2021/9/1、2020/9/1、2019/9/1、2018/9/1、2017/9/1、2016/9/1...
に描画します。
年、月ごとのイベント時のチャートの動きを確認するのに便利です。
※過去イベント時の価格変動確認の際、手作業で垂直線を引くのが面倒なため、作成しました。
<注意>
スクリプト言語で指定できるBarCntに制限がある為、チャートの期間設定によっては
表示されない場合があります。※今後改善の余地あり Indicator

Indicator

R:R Trading System FrameworkFirst off, huge thanks to @fikira! He was able to adapt what I built to work much more efficiently, allowing for more strategies to be used simultaneously. Simply put, I could not have gotten to this point without you. Thanks for what you do for the TV community. Second, I am fairly new to pinescript writing, so I welcome criticism, thoughtful input and improvement suggestions. I would love to grow this concept into something even better, if possible. So please let me know if you have any ideas for improvement. However I do juggle a lot of different things outside of TV, so implementations may be delayed.
I have decided, at this time, not to add alerts. First, because I feel most people looking to adapt this framework can add their own pretty easily. Also, given how customized the framework is currently, while also attempting to account for all the possible ways in which people may want alerts to function after they customize it, it seems best to leave them out as it doesn't exactly fit the idea of a framework.
For best viewing, I recommend hovering over the script's name > ... > Visual order > Bring to front. Also I found hollow candles with mono-toned colors (like pictured) are more visually appealing for me personally. I HIGHLY RECOMMEND USING WITH BAR REPLAY TO BETTER UNDERSTAND THE FRAMEWORK'S FUNCTIONALITY.
▶️ WHAT THIS FRAMEWORK IS
- A huge collection of concepts and capabilities for those trying to better understand, learn, or teach pinescript.
- A system designed to showcase Risk:Reward concepts more holistically by providing all of the most popular components of retail trading to include backtesting, trade visual plotting, position tracking, market condition shifts, and useful info while positioned to help highlight changes in your risk:reward based decision-making processes.
- A system that can showcase individual strategies regardless of trade direction, allowing you to develop hedging strategies without having multiple indicators that do not correlate with each other.
- Designed around the idea that you trade less numbers of assets but manage your positions and risk based on multiple concurrently running strategies to manage your risk exposure and reward potential.
- An attempt to combine all the things you need to execute with an active trading management style.
- A framework that uses backtested results (in this case the number of averaged bars it takes to hit key levels) in real-time to inform your risk:reward decision-making while in-trade (in this case in your Trade Tracking Table using dynamic color to show how you might be early, on-time, or late compared to the average amount of backtested time it normally takes to hit that specific key level).
▶️ WHAT THIS FRAMEWORK IS NOT
- A complete trading product. DO NOT USE as-is. It is a FRAMEWORK for you to generate ideas of your own and fairly easily implement your own triggering conditions in the appropriate sections of the script.
▶️ USE CASES
- If you decide you like the Stop, Target, Trailing Stop, and Risk:Reward components as-is, then just understanding how to plug in your Entry and Bullish / Bearish conditions (Triangles) and adjust the input texts to match your custom naming will be all you need to make it your own!
- If you want to adapt certain components, then this system gives you a great starting point to adapt your different concepts and ideas from.
▶️ SYSTEM COMPONENTS
- Each of the system's components are described via tooltips both in the input menu and in the tables' cells.
- Each label on the chart displays the corresponding price at those triggered conditions on hover with tooltips.
- The Trailing Stop only becomes active once it is above the Entry Price for that trade, and brightens to show it is active. The STOP line (right of price) moves once it takes over for the Entry Stop representing the level of the Trailing Stop at that time for that trade.
- The Lines / Labels to the right of price will brighten once price is above for Longs or below for Shorts. The Trade Tracking Table cells will add ☑️ once price is above for Longs or below for Shorts.
- The brighter boxes on the chart show the trades that occurred based on your criteria and are color coded for all components of each trade type to ensure your references are consistent. (Defaults are TV built-in strategies)
- The lighter boxes on the chart show the highest and lowest price levels reached during those trades, to highlight areas where improvements can be made or additional considerations can be accounted for by either adjusting Entry triggers or Bullish / Bearish triggers.
- Default Green and Red Triangles (Bullish / Bearish) default to having the same triggering condition as the Entry it corresponds to. This is to highlight either a pyramiding concept, early exit, or you can change to account for other things occurring during your trades which could help you with Stop and Target management/considerations.
PulseWire and many of its community members have done a lot for me, so this is my attempt to give back. Indicator

Indicator

Indicator

Indicator

Indicator

Indicator
