Exploring Unicode
"Exploring Unicode" by the original source, MPL-2.0. Ported to FloScript by FloSignals; modifications under MPL-2.0. Original: Exploring Unicode (v4.0), read 2026-10-12T16:10:30.554Z; source language v6.
Licence: Mozilla Public License 2.0 (MPL-2.0) — full text. The source is published with it, modifications included, under the same licence.
Exploring Unicode by TradingView, ported from Pine v6. Overlay indicator with 6 marker series, drawings.
// This Pine Script® code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © TradingView
// ------------------------------------------------------------------------------------------------
// Original author: TradingView
// Original title: Exploring Unicode
// Licence: MPL-2.0 (the header above is the original notice, kept verbatim)
// Pine version: 6
// Fetched: 2026-10-12
// Ported to FloScript by FloSignals; modifications under MPL-2.0.
// Converter: @flosignals/floscript 0.1.0, strict mode, score 100/100
// ------------------------------------------------------------------------------------------------
//@floscript=1
//@version=6
indicator("Exploring Unicode", overlay=true)
// Exploring Unicode
// v3, 2026.04.14
// This code's style is based on the recommendations from the Pine Script User Manual's Style guide:
// https://www.tradingview.com/pine-script-docs/writing/style-guide/
//#region —————————— Part 1:
// Show large blocks of text/symbols using labels on high and low pivots.
// The script draws a label `LEGS` bars back using a `label.new()` call on each bar where a new pivot is confirmed.
string txt = ""
int LEGS = 50
float pHi1 = ta.pivothigh(LEGS, LEGS)
float pLo1 = ta.pivotlow(LEGS, LEGS)
if not na(pHi1)
txt := "✦✪◎◉●○\n"
txt += "🚩📈📉🀈\n"
txt += "𓆖𓀗𓁼𓅂𓋾𓃩𓈗\n"
txt += "🕠🕤💰💲\n"
txt += "⟳⟲↭⤼⥅\n"
txt += "🚀🙈🚨🚦"
label.new(bar_index - LEGS, pHi1, txt, style=label.style_none, textcolor=color.silver, textalign=text.align_left, size=size.huge)
label.new(bar_index - LEGS / 2, high[LEGS / 2], "🟠\n🟡\n🟢", style=label.style_none, size=size.small)
else if not na(pLo1)
// These variations were generated using https://lingojam.com/SpecialText
txt := "I💙TV\n"
txt += "𝐼💙𝒯𝒱\n"
txt += "𝕀💙𝕋𝕍\n"
txt += "I💙TV\n"
txt += "🅸💙🆃🆅\n"
txt += "Ⓘ💙ⓉⓋ\n"
txt += "𝙄💙𝙏𝙑\n"
label.new(bar_index - LEGS, pLo1, txt, color=color(na), style=label.style_label_up, textcolor=color.red, size=size.huge)
//#endregion
//#region —————————— Part 2:
// Use `plotchar()` calls to plot mirrored characters for rising and falling bars with rising volume.
// This page is a helpful resource for finding mirrored Unicode symbols: https://www.compart.com/en/unicode/mirrored
bool volumeRising = ta.rising(volume, 2)
bool bumpUp = ta.rising(close, 2) and volumeRising
bool bumpDn = ta.falling(close, 2) and volumeRising
plotchar(bumpUp, "bumpUp", "↗", location.abovebar, color.lime, size=size.tiny)
plotchar(bumpDn, "bumpDn", "↘", location.belowbar, color.fuchsia, size=size.tiny)
//#endregion
//#region —————————— Part 3:
// Use `plotshape()` calls to display an invisible shape with emoji text on price bounces.
// @function Checks for a "bounce" condition. The condition occurs if the current `close` value breaks above
// the lowest `high` value, or below the highest `low` value, since the last change in the
// specified `price` value.
// @param price (series float) The series to use for resetting the bounce logic. The level for the condition
// resets to the current `price` value on each bar where the value changes.
// @param long (series bool) If `true`, the function checks for a break above the lowest `high` value since
// the last change in the `price` series. If `false`, it checks for a break below the highest `low`
// value since the last change in the series.
// @returns (float) `true` if the "bounce" condition occurs, and `false` otherwise.
bounceFrom(series float price, series bool long) =>
var float level = na
var bool bounce = false
if price != price[1]
level := price
bounce := false
else
bounce := not bounce and (long ? close > level : close < level)
level := bounce ? na : long ? math.min(level, high) : math.max(level, low)
bounce
// Declare constants to set the left and right length of pivot calculations.
int LEFT_LEGS = 20
int RIGHT_LEGS = 5
// Declare persistent variables to store the latest price values for long and short "bounce" conditions.
var float risingPivotHiPrice = na
var float fallingPivotLoPrice = na
// Calculate a moving average for confirmation.
float ma = ta.alma(close, LEFT_LEGS * 4, 0.85, 6)
// Detect new high and low pivots.
float pHi2 = ta.pivothigh(LEFT_LEGS, RIGHT_LEGS)
float pLo2 = ta.pivotlow(LEFT_LEGS, RIGHT_LEGS)
// Calculate conditions for updating the price series in the "bounce" calculations.
bool long = ta.rising(ma, RIGHT_LEGS) and not na(pHi2)
bool short = ta.falling(ma, RIGHT_LEGS) and not na(pLo2)
// Update the `risingPivotHiPrice` value when the `long` value is `true`.
if long
risingPivotHiPrice := pHi2
// Update the `fallingPivotLoPrice` value when the `short` value is `true`.
else if short
fallingPivotLoPrice := pLo2
// Get the long and short "bounce" condition values.
bool confirmedLong = bounceFrom(risingPivotHiPrice, true)
bool confirmedShort = bounceFrom(fallingPivotLoPrice, false)
// Plot invisible shapes with emoji text for each long and short condition.
plotshape(confirmedLong, "confirmedLong", location=location.belowbar, color=na, textcolor=color.green, text="👆\n\nB\no\nu\nn\nc\ne")
plotshape(confirmedShort, "confirmedShort", location=location.abovebar, color=na, textcolor=color.red, text="B\no\nu\nn\nc\ne\n👇")
//#endregion
This file is under the Mozilla Public License 2.0; it is a port of the original by TradingView, with the original licence header kept and the changes made for FloScript noted in the file.
- v2
Library refresh 2026-10-14
- v1
Library refresh 2026-10-12
Disclaimer. Scripts are written and published by members, or ported by FloSignals from open-source originals, and are their authors' own work and opinion. FloSignals does not review them for correctness and nothing in a script is financial advice or a recommendation to buy or sell anything — read the Risk Disclaimer. Posting here is under the Community Rules; a script that is not the poster's to post can be reported as the Copyright & Takedowns page says.

Comments (0)
No comments yet. Members can leave one.