//@version=5
indicator("Analyzer C", overlay = true,max_labels_count = 500,max_lines_count =
500)
import LudoGH68/Drawings_public/1 as d
getLineStyle(lineOption) =>
lineOption == "┈" ? line.style_dotted : lineOption == "╌" ? line.style_dashed :
line.style_solid
get_structure_highest_bar(lookback) =>
var int idx = 0
maxBar = bar_index > lookback ? [Link](high, lookback) :
[Link](high, bar_index + 1)
for i = 0 to lookback - 1 by 1
if high[i+1] > high[i+2] and high[i] <= high[i+1] and ((i+1) * -1) >=
maxBar
idx := (i+1) * -1
//break
idx := idx == 0 ? maxBar : idx
get_structure_lowest_bar(lookback) =>
var int idx = 0
minBar = bar_index > lookback ? [Link](low, lookback) :
[Link](low, bar_index + 1)
for i = 0 to lookback - 1 by 1
if low[i+1] < low[i+2] and low[i] >= low[i+1] and ((i+1) * -1) >=
minBar
idx := (i+1) * -1
//break
idx := idx == 0 ? minBar : idx
is_structure_high_broken(_highStructBreakPrice, _structureHigh,
_structureHighStartIndex, _structureDirection) =>
var bool res = false
if (_highStructBreakPrice > _structureHigh and bar_index[1] >
_structureHighStartIndex) or (_structureDirection == 1 and _highStructBreakPrice >
_structureHigh)
res := true
else
res := false
res
// Fear Value Gap
isFvgToShow = false
//isFvgToShow = input(true, title='Display FVG', group="Fear Value Gap")
bullishFvgColor = [Link]([Link], 50)
bearishFvgColor = [Link]([Link], 50)
mitigatedFvgColor = [Link]([Link], 50)
fvgHistoryNbr = 5
isMitigatedFvgToReduce = false
//bullishFvgColor = input([Link]([Link], 50), 'Bullish FVG Color',
group="Fear Value Gap")
//bearishFvgColor = input([Link]([Link], 50), 'Bearish FVG Color',
group="Fear Value Gap")
//mitigatedFvgColor = input([Link]([Link], 50), 'Mitigated FVG Color',
group="Fear Value Gap")
//fvgHistoryNbr = [Link](5, 'Number of FVG to show', minval=1, maxval=50)
//isMitigatedFvgToReduce = input(false, title='Reduce mitigated FVG', group="Fear
Value Gap")
// Structures
isStructBodyCandleBreak = input(true, title='Break with candle\'s body',
group="Structures")
isCurrentStructToShow = input(true, title='Display Fibonacci', group="Structures")
bullishBosColor = input([Link], 'Bullish BOS Color', group="Structures")
bearishBosColor = input([Link], 'Bearish BOS Color', group="Structures")
bosLineStyleOption = [Link]("─", title="BOS Style", group="Structures",
options=["─", "┈", "╌"])
bosLineStyle = getLineStyle(bosLineStyleOption)
bosLineWidth = [Link](2, title="BOS Width", group="Structures", minval=1,
maxval=5)
bullishMSFColor = input([Link], 'Bullish MSF Color', group="Structures")
bearishMSFColor = input([Link], 'Bearish MSF Color', group="Structures")
MSFLineStyleOption = [Link]("─", title="MSF Style", group="Structures",
options=["─", "┈", "╌"])
MSFLineStyle = getLineStyle(MSFLineStyleOption)
MSFLineWidth = [Link](2, title="MSB Width", group="Structures", minval=1,
maxval=5)
currentStructColor = input([Link], 'Current structure Color',
group="Structures")
currentStructLineStyleOption = [Link]("┈", title="Current structure Style",
group="Structures", options=["─", "┈", "╌"])
currentStructLineStyle = getLineStyle(currentStructLineStyleOption)
currentStructLineWidth = [Link](1, title="Current structure Width",
group="Structures", minval=1, maxval=5)
structHistoryNbr = [Link](5, 'Number of break to show', minval=1, maxval=50)
// Fibonacci 1
isFibo1ToShow = input(true, title = "", group="Structure Fibonacci", inline =
"Fibo1")
fibo1Value = [Link](0.786, title = "", group="Structure Fibonacci", inline =
"Fibo1")
fibo1Color = input(#64b5f6, title = "", group="Structure Fibonacci", inline =
"Fibo1")
fibo1StyleOption = [Link]("─", title = "", group="Structure Fibonacci",
options=["─", "┈", "╌"], inline = "Fibo1")
fibo1Style = getLineStyle(fibo1StyleOption)
fibo1LineWidth = [Link](1, title = "", group="Structure Fibonacci", minval=1,
maxval=5, inline = "Fibo1")
// Fibonacci 2
isFibo2ToShow = input(true, title = "", group="Structure Fibonacci", inline =
"Fibo2")
fibo2Value = [Link](0.705, title = "", group="Structure Fibonacci", inline =
"Fibo2")
fibo2Color = input(#f23645, title = "", group="Structure Fibonacci", inline =
"Fibo2")
fibo2StyleOption = [Link]("─", title = "", group="Structure Fibonacci",
options=["─", "┈", "╌"], inline = "Fibo2")
fibo2Style = getLineStyle(fibo2StyleOption)
fibo2LineWidth = [Link](1, title = "", group="Structure Fibonacci", minval=1,
maxval=5, inline = "Fibo2")
// Fibonacci 3
isFibo3ToShow = input(true, title = "", group="Structure Fibonacci", inline =
"Fibo3")
fibo3Value = [Link](0.618, title = "", group="Structure Fibonacci", inline =
"Fibo3")
fibo3Color = input(#089981, title = "", group="Structure Fibonacci", inline =
"Fibo3")
fibo3StyleOption = [Link]("─", title = "", group="Structure Fibonacci",
options=["─", "┈", "╌"], inline = "Fibo3")
fibo3Style = getLineStyle(fibo3StyleOption)
fibo3LineWidth = [Link](1, title = "", group="Structure Fibonacci", minval=1,
maxval=5, inline = "Fibo3")
// Fibonacci 3
isFibo4ToShow = input(true, title = "", group="Structure Fibonacci", inline =
"Fibo4")
fibo4Value = [Link](0.5, title = "", group="Structure Fibonacci", inline =
"Fibo4")
fibo4Color = input(#4caf50, title = "", group="Structure Fibonacci", inline =
"Fibo4")
fibo4StyleOption = [Link]("─", title = "", group="Structure Fibonacci",
options=["─", "┈", "╌"], inline = "Fibo4")
fibo4Style = getLineStyle(fibo4StyleOption)
fibo4LineWidth = [Link](1, title = "", group="Structure Fibonacci", minval=1,
maxval=5, inline = "Fibo4")
// Fibonacci 5
isFibo5ToShow = input(true, title = "", group="Structure Fibonacci", inline =
"Fibo5")
fibo5Value = [Link](0.382, title = "", group="Structure Fibonacci", inline =
"Fibo5")
fibo5Color = input(#81c784, title = "", group="Structure Fibonacci", inline =
"Fibo5")
fibo5StyleOption = [Link]("─", title = "", group="Structure Fibonacci",
options=["─", "┈", "╌"], inline = "Fibo5")
fibo5Style = getLineStyle(fibo5StyleOption)
fibo5LineWidth = [Link](1, title = "", group="Structure Fibonacci", minval=1,
maxval=5, inline = "Fibo5")
// Draw FVG into graph
FVGDraw(_boxes, _fvgTypes, _isFvgMitigated) =>
// Loop into all values of the array
for [index, value] in _boxes
// Processing bullish FVG
if([Link](_fvgTypes, index))
// Check if FVG has been totally mitigated
if(low <= box.get_bottom(value))
[Link](_boxes, index)
[Link](_fvgTypes, index)
[Link](_isFvgMitigated, index)
[Link](value)
else
if(low < box.get_top((value)))
box.set_bgcolor(value, mitigatedFvgColor)
// Mitigated FVG Alert
if(not([Link](_isFvgMitigated, index)))
alert("FVG has been mitigated", alert.freq_once_per_bar)
[Link](_isFvgMitigated, index, true)
// Reduce FVG if needed
if(isMitigatedFvgToReduce)
box.set_top(value, low)
box.set_right(value, bar_index)
// Processing bearish FVG
else
// Check if FVG has been mitigated
if(high >= box.get_top(value))
[Link](_boxes, index)
[Link](_fvgTypes, index)
[Link](_isFvgMitigated, index)
[Link](value)
else
if(high > box.get_bottom((value)))
box.set_bgcolor(value, mitigatedFvgColor)
// Mitigated FVG Alert
if(not([Link](_isFvgMitigated, index)))
alert("FVG has been mitigated", alert.freq_once_per_bar)
[Link](_isFvgMitigated, index, true)
// Reduce FVG if needed
if(isMitigatedFvgToReduce)
box.set_bottom(value, high)
box.set_right(value, bar_index)
// Arrays variable
var array<line> structureLines = array.new_line(0)
var array<label> structureLabels = array.new_label(0)
var array<box> fvgBoxes = array.new_box(0)
var array<bool> fvgTypes = array.new_bool(0)
var array<bool> isFvgMitigated = array.new_bool(0)
// Price variables
var float structureHigh = 0.0
var float structureLow = 0.0
var float fibo1Price = 0.0
var float fibo2Price = 0.0
var float fibo3Price = 0.0
var float fibo4Price = 0.0
var float fibo5Price = 0.0
// Index variable
var int structureHighStartIndex = 0
var int structureLowStartIndex = 0
var int structureDirection = 0
var int fibo1StartIndex = 0
var int fibo2StartIndex = 0
var int fibo3StartIndex = 0
var int fibo4StartIndex = 0
var int fibo5StartIndex = 0
// Line variable
var line structureHighLine = na
var line structureLowLine = na
var line fibo1Line = na
var line fibo2Line = na
var line fibo3Line = na
var line fibo4Line = na
var line fibo5Line = na
// Label variable
var label fibo1Label = na
var label fibo2Label = na
var label fibo3Label = na
var label fibo4Label = na
var label fibo5Label = na
//
//
//
===================================================================================
=======
// FAIR VALUE GAP FINDER PROCESSING
//
===================================================================================
=======
//
//
// Define FVG type
isBullishFVG = high[3] < low[1]
isBearishFVG = low[3] > high[1]
// Bullish FVG process
if(isBullishFVG and isFvgToShow)
// Add FVG into FVG's array
box _box = [Link](left=bar_index - 2, top=low[1], right=bar_index[1],
bottom=high[3], border_style=line.style_solid, border_width=1,
bgcolor=bullishFvgColor, border_color=[Link]([Link], 100))
[Link](fvgBoxes, _box)
[Link](fvgTypes, true)
[Link](isFvgMitigated, false)
// Check if FVG to show is upper than user parameter
if([Link](fvgBoxes) > fvgHistoryNbr + 1)
// Delete the FVG and its index from arrays
[Link]([Link](fvgBoxes, 0))
[Link](fvgBoxes, 0)
[Link](fvgTypes, 0)
[Link](isFvgMitigated, 0)
// Bearish FVG process
if(isBearishFVG and isFvgToShow)
// Add FVG into FVG's array
box _box = [Link](left=bar_index - 2, top=low[3], right=bar_index[1],
bottom=high[1], border_style=line.style_solid, border_width=1,
bgcolor=bearishFvgColor, border_color=[Link]([Link], 100))
[Link](fvgBoxes, _box)
[Link](fvgTypes, false)
[Link](isFvgMitigated, false)
// Check if FVG to show is upper than user parameter
if([Link](fvgBoxes) > fvgHistoryNbr + 1)
// Delete the FVG and its index from arrays
[Link]([Link](fvgBoxes, 0))
[Link](fvgBoxes, 0)
[Link](fvgTypes, 0)
[Link](isFvgMitigated, 0)
// Draw FVG
FVGDraw(fvgBoxes, fvgTypes, isFvgMitigated)
//
//
//
===================================================================================
=======
// STRUCTURES PROCESSING
//
===================================================================================
=======
//
//
// Initialize value for bar 0
if(bar_index == 0)
structureHighStartIndex := bar_index
structureLowStartIndex := bar_index
structureHigh := high
structureLow := low
highest = bar_index > 10 ? [Link](10) : [Link](bar_index + 1)
highestBar = bar_index > 10 ? [Link](high, 10) : [Link](high,
bar_index + 1)
lowest = bar_index > 10 ? [Link](10) : [Link](bar_index + 1)
lowestBar = bar_index > 10 ? [Link](low, 10) : [Link](low, bar_index
+ 1)
structureMaxBar = bar_index + get_structure_highest_bar(10)
structureMinBar = bar_index + get_structure_lowest_bar(10)
lowStructBreakPrice = isStructBodyCandleBreak ? close : low
highStructBreakPrice = isStructBodyCandleBreak ? close : high
isStuctureLowBroken = (lowStructBreakPrice < structureLow and
lowStructBreakPrice[1] >= structureLow and lowStructBreakPrice[2] >= structureLow
and lowStructBreakPrice[3] >= structureLow and bar_index[1] >
structureLowStartIndex and bar_index[2] > structureLowStartIndex and bar_index[3]
> structureLowStartIndex) or (structureDirection == 2 and lowStructBreakPrice <
structureLow)
isStructureHighBroken = (highStructBreakPrice > structureHigh and
highStructBreakPrice[1] <= structureHigh and highStructBreakPrice[2] <=
structureHigh and highStructBreakPrice[3] <= structureHigh and bar_index[1] >
structureHighStartIndex and bar_index[2] > structureHighStartIndex and
bar_index[3] > structureHighStartIndex) or (structureDirection == 1 and
highStructBreakPrice > structureHigh)
LowSFP = (lowest < structureLow and close > structureLow and bar_index >
structureLowStartIndex)
HighSFP = (highest > structureHigh and close < structureHigh and bar_index >
structureHighStartIndex)
bull_MSFbr = false
bull_Bosbr = false
bear_MSFbr = false
bear_Bosbr = false
//if((low < structureLow and low[1] >= structureLow and low[2] >= structureLow and
low[3] >= structureLow and bar_index[1] > structureLowStartIndex and bar_index[2]
> structureLowStartIndex and bar_index[3] > structureLowStartIndex) or
(structureDirection == 2 and low < structureLow))
if(isStuctureLowBroken)
// Check if structures to show is upper than user parameter
if([Link](structureLines) >= structHistoryNbr)
// Delete the line and its index from arrays
d.delete_line([Link](structureLines, 0), [Link](structureLabels, 0))
[Link](structureLabels, 0)
[Link](structureLines, 0)
// Create BOS line
if(structureDirection == 1)
bear_Bosbr := true
[Link](structureLines, [Link](structureLowStartIndex, structureLow,
bar_index, structureLow, xloc=xloc.bar_index, extend=[Link],
color=bearishBosColor, style=bosLineStyle, width=bosLineWidth))
[Link](structureLabels, [Link]((bar_index +
structureLowStartIndex) / 2, structureLow, text="BOS", style=label.style_none,
textcolor=bearishBosColor))
// Create MSF line
else
bear_MSFbr := true
[Link](structureLines, [Link](structureLowStartIndex, structureLow,
bar_index, structureLow, xloc=xloc.bar_index, extend=[Link],
color=bearishMSFColor, style=MSFLineStyle, width=MSFLineWidth))
[Link](structureLabels, [Link]((bar_index +
structureLowStartIndex) / 2, structureLow, text="MSF", style=label.style_none,
textcolor=bearishMSFColor))
// Update values for new structure
structureDirection := 1
structureHighStartIndex := structureMaxBar
structureLowStartIndex := bar_index
structureHigh := high[bar_index - structureHighStartIndex] //highest
structureLow := low
// Check for breakout
else if(isStructureHighBroken)
// Check if structures to show is upper than user parameter
if([Link](structureLines) >= structHistoryNbr)
// Delete the line and its index from arrays
d.delete_line([Link](structureLines, 0), [Link](structureLabels, 0))
[Link](structureLabels, 0)
[Link](structureLines, 0)
// Create BOS line
if(structureDirection == 2)
bull_Bosbr := true
[Link](structureLines, [Link](structureHighStartIndex, structureHigh,
bar_index, structureHigh, xloc=xloc.bar_index, extend=[Link],
color=bullishBosColor, style=bosLineStyle, width=bosLineWidth))
[Link](structureLabels, [Link]((bar_index + structureHighStartIndex)
/ 2, structureHigh, text="BOS", style=label.style_none, textcolor=bullishBosColor))
// Create MSF line
else
bull_MSFbr := true
[Link](structureLines, [Link](structureHighStartIndex, structureHigh,
bar_index, structureHigh, xloc=xloc.bar_index, extend=[Link],
color=bullishMSFColor, style=MSFLineStyle, width=MSFLineWidth))
[Link](structureLabels, [Link]((bar_index + structureHighStartIndex)
/ 2, structureHigh, text="MSF", style=label.style_none, textcolor=bullishMSFColor))
// Update values for new structure
structureDirection := 2
structureHighStartIndex := bar_index
structureLowStartIndex := structureMinBar
structureHigh := high
structureLow := low[bar_index - structureLowStartIndex] //lowest
else if(LowSFP)
// Prüfen, ob die maximale Anzahl an Linien überschritten wird
if ([Link](structureLines) >= structHistoryNbr)
// Lösche die älteste Linie und ihr zugehöriges Label
d.delete_line([Link](structureLines, 0), [Link](structureLabels, 0))
[Link](structureLabels, 0)
[Link](structureLines, 0)
// Zeichne eine Linie für den Low SFP
[Link](structureLines, [Link](structureLowStartIndex, structureLow,
bar_index, structureLow, xloc=xloc.bar_index, extend=[Link],
color=[Link], style=line.style_solid, width=2))
// Füge ein Label hinzu
[Link](structureLabels, [Link]((bar_index + structureLowStartIndex) / 2,
structureLow,text="$$$", style=label.style_none,textcolor=[Link]))
// Aktualisiere die Strukturwerte
structureDirection := 1
structureLowStartIndex := bar_index
structureLow := low
else if (HighSFP)
if ([Link](structureLines) >= structHistoryNbr)
// Lösche die älteste Linie und ihr zugehöriges Label
d.delete_line([Link](structureLines, 0), [Link](structureLabels, 0))
[Link](structureLabels, 0)
[Link](structureLines, 0)
// Zeichne eine Linie für den High SFP
[Link](structureLines, [Link](structureHighStartIndex, structureHigh,
bar_index, structureHigh, xloc=xloc.bar_index, extend=[Link], color=[Link],
style=line.style_solid, width=2))
// Füge ein Label hinzu
[Link](structureLabels, [Link]((bar_index + structureHighStartIndex)
/ 2, structureHigh,text="$$$", style=label.style_none,textcolor=[Link]))
// Aktualisiere die Strukturwerte
structureDirection := 2
structureHighStartIndex := bar_index
structureHigh := high
else
if(high > structureHigh and (structureDirection == 0 or structureDirection ==
2))
if(not(isStructBodyCandleBreak) or not(isStructBodyCandleBreak and
bar_index[1] > structureHighStartIndex and bar_index[2] > structureHighStartIndex
and bar_index[3] > structureHighStartIndex))
structureHigh := high
structureHighStartIndex := bar_index
else if(low < structureLow and (structureDirection == 0 or structureDirection
== 1))
if(not(isStructBodyCandleBreak) or not(isStructBodyCandleBreak and
bar_index[1] > structureLowStartIndex and bar_index[2] > structureLowStartIndex and
bar_index[3] > structureLowStartIndex))
structureLow := low
structureLowStartIndex := bar_index
structureRange = [Link](structureHigh - structureLow)
// plotshape(bull_MSFbr , title="Bullish MSF", text="MSF",
location=[Link], style=[Link], size=[Link], color=[Link],
textcolor=[Link])
// plotshape(bull_Bosbr , title="Bullish BOS", text="Bos",
location=[Link], style=[Link], size=[Link], color=[Link],
textcolor=[Link])
// plotshape(bear_MSFbr , title="Bearish MSF", text="MSF",
location=[Link], style=[Link], size=[Link], color=[Link],
textcolor=[Link])
// plotshape(bear_Bosbr , title="Bearish BOS", text="Bos",
location=[Link], style=[Link], size=[Link], color=[Link],
textcolor=[Link])
// - Bullish MSF,
// - Bullish BOS,
// - Bearish MSF,
// - Bearish BOS.
alertcondition(bull_MSFbr,"Bullish MSF","Bullish MSF")
alertcondition(bull_Bosbr,"Bullish BOS","Bullish BOS")
alertcondition(bear_MSFbr,"Bearish MSF","Bearish MSF")
alertcondition(bear_Bosbr,"Bearish BOS","Bearish BOS")
if(isCurrentStructToShow)
d.delete_line(structureHighLine, na)
d.delete_line(structureLowLine, na)
structureHighLine := [Link](structureHighStartIndex, structureHigh,
bar_index, structureHigh, xloc.bar_index, color=currentStructColor, style =
currentStructLineStyle, width = currentStructLineWidth)
structureLowLine := [Link](structureLowStartIndex, structureLow, bar_index,
structureLow, xloc.bar_index, color=currentStructColor, style =
currentStructLineStyle, width = currentStructLineWidth)
if(isFibo1ToShow)
d.delete_line(fibo1Line, fibo1Label)
fibo1Price := structureDirection == 1 ? structureHigh - (structureRange -
structureRange * fibo1Value) : structureLow + (structureRange - structureRange *
fibo1Value)
fibo1StartIndex := structureDirection == 1 ? structureHighStartIndex :
structureLowStartIndex
fibo1Line := [Link](fibo1StartIndex, fibo1Price, bar_index, fibo1Price,
xloc.bar_index, color = fibo1Color, style = fibo1Style, width = fibo1LineWidth)
fibo1Label := [Link](bar_index + 20, fibo1Price, text =
[Link](fibo1Value) + "(" + [Link](fibo1Price) + ")", style =
label.style_none, textcolor = fibo1Color)
if(isFibo2ToShow)
d.delete_line(fibo2Line, fibo2Label)
fibo2Price := structureDirection == 1 ? structureHigh - (structureRange -
structureRange * fibo2Value) : structureLow + (structureRange - structureRange *
fibo2Value)
fibo2StartIndex := structureDirection == 1 ? structureHighStartIndex :
structureLowStartIndex
fibo2Line := [Link](fibo2StartIndex, fibo2Price, bar_index, fibo2Price,
xloc.bar_index, color = fibo2Color, style = fibo2Style, width = fibo2LineWidth)
fibo2Label := [Link](bar_index + 20, fibo2Price, text =
[Link](fibo2Value) + "(" + [Link](fibo2Price) + ")", style =
label.style_none, textcolor = fibo2Color)
if(isFibo3ToShow)
d.delete_line(fibo3Line, fibo3Label)
fibo3Price := structureDirection == 1 ? structureHigh - (structureRange -
structureRange * fibo3Value) : structureLow + (structureRange - structureRange *
fibo3Value)
fibo3StartIndex := structureDirection == 1 ? structureHighStartIndex :
structureLowStartIndex
fibo3Line := [Link](fibo3StartIndex, fibo3Price, bar_index, fibo3Price,
xloc.bar_index, color = fibo3Color, style = fibo3Style, width = fibo3LineWidth)
fibo3Label := [Link](bar_index + 20, fibo3Price, text =
[Link](fibo3Value) + "(" + [Link](fibo3Price) + ")", style =
label.style_none, textcolor = fibo3Color)
if(isFibo4ToShow)
d.delete_line(fibo4Line, fibo4Label)
fibo4Price := structureDirection == 1 ? structureHigh - (structureRange -
structureRange * fibo4Value) : structureLow + (structureRange - structureRange *
fibo4Value)
fibo4StartIndex := structureDirection == 1 ? structureHighStartIndex :
structureLowStartIndex
fibo4Line := [Link](fibo4StartIndex, fibo4Price, bar_index, fibo4Price,
xloc.bar_index, color = fibo4Color, style = fibo4Style, width = fibo4LineWidth)
fibo4Label := [Link](bar_index + 20, fibo4Price, text =
[Link](fibo4Value) + "(" + [Link](fibo4Price) + ")", style =
label.style_none, textcolor = fibo4Color)
if(isFibo5ToShow)
d.delete_line(fibo5Line, fibo5Label)
fibo5Price := structureDirection == 1 ? structureHigh - (structureRange -
structureRange * fibo5Value) : structureLow + (structureRange - structureRange *
fibo5Value)
fibo5StartIndex := structureDirection == 1 ? structureHighStartIndex :
structureLowStartIndex
fibo5Line := [Link](fibo5StartIndex, fibo5Price, bar_index, fibo5Price,
xloc.bar_index, color = fibo5Color, style = fibo5Style, width = fibo5LineWidth)
fibo5Label := [Link](bar_index + 20, fibo5Price, text =
[Link](fibo5Value) + "(" + [Link](fibo5Price) + ")", style =
label.style_none, textcolor = fibo5Color)
plot(na)