From 7d8c93d91c87161952dd7a10a66f91ebb1541312 Mon Sep 17 00:00:00 2001 From: jpwysocz Date: Fri, 13 Dec 2024 13:33:16 -0800 Subject: [PATCH] Add snippets/box_label_demo_v6.pine --- snippets/box_label_demo_v6.pine | 74 +++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 snippets/box_label_demo_v6.pine diff --git a/snippets/box_label_demo_v6.pine b/snippets/box_label_demo_v6.pine new file mode 100644 index 0000000..573e3d1 --- /dev/null +++ b/snippets/box_label_demo_v6.pine @@ -0,0 +1,74 @@ +//@version=6 +indicator("Label Example", overlay=true) + +// Calculate a condition for when to create a label +condition = close > math.avg(close, 20) + +// Create a new label if the condition is true, update the label's text with the current close price +//label_id = label.new(title="Price Label", x=bar_index, y=close, text=str.tostring(close), color=color.green, style=label.style.plain) + +// Create an array to store boxes and labels +var box[] boxArray = array.new_box() +var label[] labelArray = array.new_label() + +labelDemo() => + // Remove a specific label by index + if (array.size(labelArray) > 0) + label.delete(array.get(labelArray, 0)) + array.remove(labelArray, 0) + + label newLabel = label.new(x=bar_index, y=close, text='H:' + str.tostring(high, '#.##') + '\nL:' + str.tostring(low, '#.##'), xloc=xloc.bar_index, yloc=yloc.price, color=color.blue, style=label.style_label_down, textcolor=color.white, size=size.normal, textalign=text.align_center, tooltip='SIZE: ' + str.tostring(high-low, '#.##')) + + // Add new labels to array + array.push(labelArray, newLabel) + +labelDemo() + +// Input parameters +var float buyLimitPrice = input.price(title="Buy Limit Price", defval=0.0) +var float sellLimitPrice = input.price(title="Sell Limit Price", defval=0.0) +var int rectangleWidth = input.int(title="Rectangle Width (Price Units)", defval=10, minval=1) +var bool showDebugInfo = input.bool(title="Show Debug Information", defval=false) +var color buyShadeColor = input.color(title="Buy Limit Shade Color", defval=#4caf4f46) +var color sellShadeColor = input.color(title="Sell Limit Shade Color", defval=#ff52523a) +var color borderColor = input.color(title="Border Color", defval=color.gray) + +buyLimitPrice := high + 10 +sellLimitPrice := low - 10 + +cleanupBoxes() => + // Remove oldest boxes if exceed max limit + while (array.size(boxArray) > 0) + box.delete(array.get(boxArray, 0)) + array.remove(boxArray, 0) + +// Function to draw order levels +f_drawOrderLevels() => + cleanupBoxes() + var boxes = array.new_box() + + // Buy limit rectangle + if (buyLimitPrice > 0) + float buyRectTop = high + rectangleWidth //buyLimitPrice + rectangleWidth / 2 + float buyRectBottom = (high + low) / 2 //buyLimitPrice - rectangleWidth / 2 + + box newBox1 = box.new(left=bar_index, top=buyRectTop, right=bar_index + 10, bottom=buyRectBottom, border_color=borderColor, border_width=1, bgcolor=buyShadeColor, text=str.tostring(buyRectTop, '#.##'), text_color=color.white, text_halign=text.align_center, text_valign=text.align_top, text_size = size.small) + array.push(boxArray, newBox1) + + if (showDebugInfo) + //label.new(x=bar_index, y=close, text='H:' + str.tostring(high, '#.##') + '\nL:' + str.tostring(low, '#.##'), xloc=xloc.bar_index, yloc=yloc.price, color=color.blue, style=label.style_label_down, textcolor=color.white, size=size.normal, textalign=text.align_center, tooltip='SIZE: ' + str.tostring(high-low, '#.##')) + label.new(x=bar_index, y=buyLimitPrice, text='Buy Limit\nPrice: ' + str.tostring(buyLimitPrice, format.mintick) + '\nTop: ' + str.tostring(buyRectTop, format.mintick) + '\nBottom: ' + str.tostring(buyRectBottom, format.mintick), color=color.blue) + + // Sell limit rectangle + if (sellLimitPrice > 0) + float sellRectTop = (high + low) / 2 //sellLimitPrice + rectangleWidth / 2 + float sellRectBottom = low - rectangleWidth //sellLimitPrice - rectangleWidth / 2 + + box newBox2 = box.new(left=bar_index, top=sellRectTop, right=bar_index + 10, bottom=sellRectBottom, border_color=borderColor, border_width=1, bgcolor=sellShadeColor, text=str.tostring(sellRectBottom, '#.##'), text_color=color.white, text_halign=text.align_center, text_valign=text.align_bottom, text_size = size.small) + array.push(boxArray, newBox2) + + if (showDebugInfo) + label.new(x=bar_index, y=sellLimitPrice, text='Sell Limit\nPrice: ' + str.tostring(sellLimitPrice, format.mintick) + '\nTop: ' + str.tostring(sellRectTop, format.mintick) + '\nBottom: ' + str.tostring(sellRectBottom, format.mintick), color=color.red) + +// Execute the function to draw order levels +f_drawOrderLevels()