<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>Форум QUIK [тема: Повторное выставление меток на график при смене инструмента]</title>
		<link>http://forum.quik.ru</link>
		<description>Новое в теме Повторное выставление меток на график при смене инструмента форума  на сайте Форум QUIK [forum.quik.ru]</description>
		<language>ru</language>
		<docs>http://backend.userland.com/rss2</docs>
		<pubDate>Fri, 10 Apr 2026 07:38:21 +0300</pubDate>
		<item>
			<title>Повторное выставление меток на график при смене инструмента</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message60486/topic6968/">Повторное выставление меток на график при смене инструмента</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<noindex><a href="https://forum.quik.ru/forum10/topic3532/" target="_blank" rel="nofollow">Уже обсуждали тут</a></noindex>. Но ничего так не поменялось. Quik 9.2.2.11 <br />
			<i>20.12.2021 12:02:58, Алексей Ч.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message60486/topic6968/</link>
			<guid>http://forum.quik.ru/messages/forum10/message60486/topic6968/</guid>
			<pubDate>Mon, 20 Dec 2021 12:02:58 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Повторное выставление меток на график при смене инструмента</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message60482/topic6968/">Повторное выставление меток на график при смене инструмента</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Последнее письмо, которое я получил по аналогичной проблеме:<br />[FILE ID=8663] <br />
			<img src="https://forum.quik.ru/bitrix/components/bitrix/forum.interface/show_file.php?fid=8663&" width="729" height="261" /><br /><i>20.12.2021 11:12:28, Старатель.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message60482/topic6968/</link>
			<guid>http://forum.quik.ru/messages/forum10/message60482/topic6968/</guid>
			<pubDate>Mon, 20 Dec 2021 11:12:28 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Повторное выставление меток на график при смене инструмента</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message60481/topic6968/">Повторное выставление меток на график при смене инструмента</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Здравствуйте. Прикрепляю видео с демонстрацией данной ошибки в терминалах версии 9.2.3.15 и 8.13.1.16. <br /><noindex><a href="https://youtu.be/Glkn021STHM" target="_blank" rel="nofollow">https://youtu.be/Glkn021STHM</a></noindex> <br />
			<i>20.12.2021 10:51:27, Владислав.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message60481/topic6968/</link>
			<guid>http://forum.quik.ru/messages/forum10/message60481/topic6968/</guid>
			<pubDate>Mon, 20 Dec 2021 10:51:27 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Повторное выставление меток на график при смене инструмента</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message60290/topic6968/">Повторное выставление меток на график при смене инструмента</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Добрый день,<br /><br />К сожалению, проблему, о которой ведётся речь, воспроизвести не удалось. Если добавить Ваш индикатор и поменять инструмент, никакой &quot;мистической метки&quot; замечено не было (См. скриншот 1 и 2). Воспроизводили на версии 9.2.3.15 и 8.13.1.16.<br /><br />Возможно, имеются какие-либо детали, которые помогут идентифицировать таковую проблему. Например, данная проблема появляется очень редко, или параллельно используются какие-либо lua-скрипты или индикаторы и тд. Если такие детали имеются, просьба их описать.<br /><br />Также могли бы Вы прислать скриншот, на котором &quot;мистическую метку&quot; будет отчётливо видно? <br />
			<img src="https://forum.quik.ru/bitrix/components/bitrix/forum.interface/show_file.php?fid=8647&" width="516" height="575" /><br /><img src="https://forum.quik.ru/bitrix/components/bitrix/forum.interface/show_file.php?fid=8648&" width="516" height="575" /><br /><i>15.12.2021 16:28:22, Daniil Pozdnyakov.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message60290/topic6968/</link>
			<guid>http://forum.quik.ru/messages/forum10/message60290/topic6968/</guid>
			<pubDate>Wed, 15 Dec 2021 16:28:22 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Повторное выставление меток на график при смене инструмента</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message60170/topic6968/">Повторное выставление меток на график при смене инструмента</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Скрипт тестировался в &quot;боевом&quot; терминале версии 9.2.3.15<br />и в демо терминале версии 8.13.1.16 <br />И там и там была данная ошибка <br />
			<i>08.12.2021 18:19:37, Владислав.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message60170/topic6968/</link>
			<guid>http://forum.quik.ru/messages/forum10/message60170/topic6968/</guid>
			<pubDate>Wed, 08 Dec 2021 18:19:37 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Повторное выставление меток на график при смене инструмента</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message60169/topic6968/">Повторное выставление меток на график при смене инструмента</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Здравствуйте. <br />Написал индикатор, добавляющий на график метку с номером последней свечи. <br />После добавления индикатора на график, изменении его свойств в настройках графика и смене тайм-фрейма ошибок не происходит. Но при смене инструмента (график привязан к таблице &quot;Текущие торги&quot;), на графике появляется дополнительная мистическая метка. Функция AddLabel не возвращает номер этой метки, ее нельзя удалить вручную (перетаскивать по графику можно) и с помощью функции DelLabel, но при этом она удаляется функцией DelAllLabels.<br /><br />Добавляем индикатор на график и меняем инструмент. На графике появится новая метка и поверх нее еще одна мистическая. Мистическую перетаскиваем в сторону, заходим в настройки индикатора, меняем параметр &quot;Отступ от максимума&quot; (или просто меняем тайм-фрейм) и видим, что мистическая метка остается на месте а вторая изменяется. <br /><br />По умолчанию, для удаления меток при их перерисовке, индикатор использует функцию DelLabel. Но, если в поле параметра &quot;Удаление всех меток&quot; поставить значение &quot;да &#91;да/нет&#93;&quot;, то индикатор будет использовать функцию DelAllLabels и в таком случае, при изменении настроек индикатора или смене тайм-фрейма, мистическая метка будет удаляться. <br /><br />Если я правильно понял, то данная проблема уже обсуждалась и была решена (topic3532)<br /><br /><img src="https://drive.google.com/file/d/1q8PZRINzdQglEO2NhUgKzVHL3_zfQajx/view?usp=sharing" alt="Пользователь добавил изображение" border="0" /><br />
====code====
<pre>-- &#91;&#91; Индикатор добавляет на график метку с номером последней свечи &#93;&#93;--

-- Заметки:
-- GetLabelParams возвращает таблицу с названиями параметров в нижнем регистре, тогда как эти параметры в функции AddLabel задаются в верхнем регистре.
-- GetLabelParams возвращает значения всех параметров в строковом виде, несмотря на то, что часть параметров типа number.
-- getDataSourceInfo().class_code работает только после вызова OnChangeSettings()
-- getNumCandles() и getParamEx() работают только после вызова OnCalculate()

Settings = {}
Settings.Name &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= "- IndexCandleFF"
Settings&#91;"Отступ от максимума"&#93; &nbsp;&nbsp;&nbsp;= 100
Settings&#91;"Идентификатор графика"&#93; &nbsp;&nbsp;&nbsp;= "one_graph"
Settings&#91;"Удаление всех меток"&#93; &nbsp;&nbsp;&nbsp;= "нет &#91;да/нет&#93;"

TableLabel &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= {}
index_old &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= 0 &nbsp;&nbsp;&nbsp;-- Функция OnCalculate вызывается несколько раз для каждой свечи. index_old нужен для того, что бы не захламлять таблицу TableLabel.
flag_error &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= true&nbsp;&nbsp;&nbsp;-- В случае ошибки параметров в настройках индикатора, предотвращает повторный вывод сообщения об ошибке и добавление меток на график.
flag_first&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= true&nbsp;&nbsp;-- Предотвращаем повторный вызов OnChangeSettings.
flag_init&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= false -- Флаг для корректной работы getParamEx и getNumCandles

del_labels&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= string.match(Settings&#91;"Удаление всех меток"&#93;, "(.*) .*")
interval &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= 0

function isChartExist (chart_name) -- Возвращает true, если график с идентификатором "Идентификатор графика" существует, иначе false
&nbsp;&nbsp;&nbsp;if chart_name == nil or chart_name == '' then return false end
&nbsp;&nbsp;&nbsp;local n = getNumCandles (chart_name)
&nbsp;&nbsp;&nbsp;if n == nil or n &#60; 1 then return false end
&nbsp;&nbsp;&nbsp;return true
end

function place_label(index)
&nbsp;&nbsp;&nbsp;PrintDbgStr("place_label")
&nbsp;&nbsp;&nbsp;local positionY = H(index) + Settings&#91;"Отступ от максимума"&#93;
&nbsp;&nbsp;&nbsp;local DateTime = T(index)

&nbsp;&nbsp;&nbsp;local Y = DateTime.year
&nbsp;&nbsp;&nbsp;local M = DateTime.month&nbsp;&nbsp;if #tostring(M) == 1 then M = '0'..M end
&nbsp;&nbsp;&nbsp;local D = DateTime.day&nbsp;&nbsp;&nbsp;&nbsp;if #tostring(D) == 1 then D = '0'..D end
&nbsp;&nbsp;&nbsp;local HO = DateTime.hour&nbsp;&nbsp;if #tostring(HO) == 1 then HO = '0'..HO end
&nbsp;&nbsp;&nbsp;local MI = DateTime.min&nbsp;&nbsp; if #tostring(MI) == 1 then MI = '0'..MI end
&nbsp;&nbsp;&nbsp;local SE = DateTime.sec&nbsp;&nbsp; if #tostring(SE) == 1 then SE = '0'..SE end

&nbsp;&nbsp;&nbsp;label_params = {}
&nbsp;&nbsp;&nbsp;-- label_params.IMAGE_PATH&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= getScriptPath() .. "&#92;&#92;1.bmp"
&nbsp;&nbsp;&nbsp;label_params.YVALUE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= positionY&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- Значение параметра на оси Y, к которому будет привязана метка
&nbsp;&nbsp;&nbsp;label_params.DATE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= Y..M..D&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;-- Дата в формате «ГГГГММДД», к которой привязана метка
&nbsp;&nbsp;&nbsp;label_params.TIME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= HO..MI..SE&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;-- Время в формате «ЧЧММСС», к которому будет привязана метка
&nbsp;&nbsp;&nbsp;label_params.TRANSPARENCY&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- Прозрачность метки в процентах. Значение должно быть в промежутке &#91;0; 100&#93;. Применяется только для картинки.
&nbsp;&nbsp;&nbsp;label_params.FONT_FACE_NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= "Arial"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- Название шрифта (например «Arial»)
&nbsp;&nbsp;&nbsp;label_params.FONT_HEIGHT&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= 8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- Размер шрифта
&nbsp;&nbsp;&nbsp;label_params.TEXT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= tostring(index)&nbsp;&nbsp;&nbsp;-- Если подпись не требуется то оставить строку пустой ""
&nbsp;&nbsp;&nbsp;label_params.HINT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= "Index candle"&nbsp;&nbsp;&nbsp;-- Текст всплывающей подсказки
&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;label_params.R&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- Красная компонента цвета в формате RGB. Число в интервале &#91;0;255&#93;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;label_params.G&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- Зеленая компонента цвета в формате RGB. Число в интервале &#91;0;255&#93;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;label_params.B&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- Синяя компонента цвета в формате RGB. Число в интервале &#91;0;255&#93;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;label_params.TRANSPARENT_BACKGROUND&nbsp;&nbsp;= 1 
&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp;table.insert(TableLabel, AddLabel(Settings&#91;"Идентификатор графика"&#93;, label_params)) -- Добавляем метку и запоминаем ее ID
end

function Init ()
&nbsp;&nbsp;&nbsp;PrintDbgStr("Init")
&nbsp;&nbsp;&nbsp;flag_init = false
&nbsp;&nbsp;&nbsp;return 1
end

function OnDestroy () 
&nbsp;&nbsp;&nbsp;PrintDbgStr("OnDestroy")

&nbsp;&nbsp;&nbsp;if del_labels == "да" then 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DelAllLabels(Settings&#91;"Идентификатор графика"&#93;)
&nbsp;&nbsp;&nbsp;else
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;-- for label_id = 1, #TableLabel do
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;-- &nbsp;&nbsp;&nbsp;DelLabel(Settings&#91;"Идентификатор графика"&#93;, TableLabel&#91;label_id&#93;)
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;-- end

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for label_id = 1, 100000 do&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- 100000 - максимально возможное количество меток на графике.
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local L = GetLabelParams(Settings&#91;"Идентификатор графика"&#93;, label_id)&nbsp;&nbsp;&nbsp;-- table or nil
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if L ~= nil then&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if L.hint == "Index candle" then 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DelLabel(Settings&#91;"Идентификатор графика"&#93;, label_id)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;index_old = 0
end

function OnChangeSettings()
&nbsp;&nbsp;&nbsp;-- Функция вызывается при редактировании свойств индикатора после нажатия кнопок «Применить» или «OK».
&nbsp;&nbsp;&nbsp;PrintDbgStr("OnChangeSettings")

&nbsp;&nbsp;&nbsp;if flag_init then&nbsp;&nbsp;-- При переходе на другой тайм-фрейм, сначала вызывается функция Init, затем OnChangeSettings затем OnCalculate, но для работы функций getParamEx и getNumCandles необходимо, что бы сначала была вызвана OnCalculate, поэтому, сначала игнорируем автоматический вызов OnChangeSettings, а затем после того как вызовется OnCalculate, вызываем ее сами.
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PrintDbgStr("OnChangeSettings_Body")
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;del_labels = string.match(Settings&#91;"Удаление всех меток"&#93;, "(.*) .*")

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--&#91; Исключение ошибок в настройках графика &#93;--
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if not isChartExist(Settings&#91;"Идентификатор графика"&#93;) then 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if flag_error then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;message("Ошибка значения в поле: &#92;"Идентификатор графика&#92;"")
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flag_error = false
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;elseif del_labels ~= "да" and del_labels ~= "нет" then 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if flag_error then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;message("Ошибка значения в поле: &#92;"Удаление всех меток&#92;"")
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flag_error = false
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else flag_error = true
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--&#91; Удаление меток с графика &#93;--
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if flag_error then 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OnDestroy()
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--&#91; Задаем отступ для метки &#93;--
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local sec_code = getDataSourceInfo().sec_code
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local class_code = getDataSourceInfo().class_code
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local step = getParamEx(class_code, sec_code, "SEC_PRICE_STEP").param_image&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- Минимальный шаг цены
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local scale = tonumber(getParamEx(class_code, sec_code, "SEC_SCALE").param_image)&nbsp;&nbsp;&nbsp;-- Точность цены.

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if scale == nil then 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;error("local ER: Для корректной работы индикатора необходимо установить соединение с сервером !")
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if scale &#62; 0 then 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;step = tonumber("0."..step:match(",(.*)")) -- Заменяем запятую на точку и преобразуем строковый формат в числовой.
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Settings&#91;"Отступ от максимума"&#93; = step * Settings&#91;"Отступ от максимума"&#93;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flag_first = false -- Предотвращаем повторный вызов OnChangeSettings.
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;interval = getDataSourceInfo().interval
&nbsp;&nbsp;&nbsp;end 
end


function OnCalculate (index)
&nbsp;&nbsp;&nbsp;-- Если изменился тайм-фрейм. При изменении тайм-фрейма необходимо удалить старые метки. 
&nbsp;&nbsp;&nbsp;if interval ~= getDataSourceInfo().interval then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flag_init = true 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PrintDbgStr("interval")
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OnDestroy()
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;interval = getDataSourceInfo().interval 
&nbsp;&nbsp;&nbsp;end

&nbsp;&nbsp;&nbsp;if index &#62; index_old then 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if flag_first then 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PrintDbgStr("flag_first") 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OnChangeSettings() 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--&#91; Добавление меток на график &#93;--
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if flag_error then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if index == Size() then 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;place_label(index)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;index_old = index 
&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;return 
end
</pre>
============= <br />
			<i>08.12.2021 17:28:44, Владислав.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message60169/topic6968/</link>
			<guid>http://forum.quik.ru/messages/forum10/message60169/topic6968/</guid>
			<pubDate>Wed, 08 Dec 2021 17:28:44 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
	</channel>
</rss>
