<?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>Sat, 02 May 2026 20:02:53 +0300</pubDate>
		<item>
			<title>Странное поведение функции при передаче ей массива</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message36934/topic4360/">Странное поведение функции при передаче ей массива</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			К сожалению разобраться не получилось, попробуйте воспроизвести на более простом коде. <br />
			<i>13.03.2019 12:39:58, Sergey Gorokhov.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message36934/topic4360/</link>
			<guid>http://forum.quik.ru/messages/forum10/message36934/topic4360/</guid>
			<pubDate>Wed, 13 Mar 2019 12:39:58 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Странное поведение функции при передаче ей массива</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message36928/topic4360/">Странное поведение функции при передаче ей массива</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Сорри - при построении тренда ВНИЗ возникает проблема. <br />
			<i>13.03.2019 10:19:01, VNG_nemo.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message36928/topic4360/</link>
			<guid>http://forum.quik.ru/messages/forum10/message36928/topic4360/</guid>
			<pubDate>Wed, 13 Mar 2019 10:19:01 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Странное поведение функции при передаче ей массива</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message36927/topic4360/">Странное поведение функции при передаче ей массива</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Для построения нужно передвинуть метки за экстремумы. На скринах видно, что при построении тренда вверх все строится нормально, а при построении тренда вверх одно значение не верно и поэтому возникает зеленая линия, обведенная овалом. <br />
			<i>13.03.2019 10:17:08, VNG_nemo.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message36927/topic4360/</link>
			<guid>http://forum.quik.ru/messages/forum10/message36927/topic4360/</guid>
			<pubDate>Wed, 13 Mar 2019 10:17:08 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Странное поведение функции при передаче ей массива</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message36926/topic4360/">Странное поведение функции при передаче ей массива</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			====code====
<pre>package.path = package.path .. ";" .. getWorkingFolder() .."&#92;&#92;LuaIndicators&#92;&#92;modules&#92;&#92;" .. "?.lua";

require ("Format");
require ("Round");
--require ("Lines");

Settings={
&nbsp;&nbsp;&nbsp;Name = "0_11.03.2019",--имя индикатора
&nbsp;&nbsp;&nbsp;AssetID = "sber",--идентификатор иструмента
&nbsp;&nbsp;&nbsp;LabelName = "D:&#92;метка.bmp",--имя файла метки "down-254095_1280_1",
&nbsp;&nbsp;&nbsp;stopper = false,--обработка на каждом тике 
&nbsp;&nbsp;&nbsp;complect = 0,
-- начальное местоположение меток
&nbsp;&nbsp;&nbsp;fplace = 110,
&nbsp;&nbsp;&nbsp;splace = 8,
&nbsp;&nbsp;&nbsp;thplase = 30,
&nbsp;&nbsp;&nbsp;Yvalue = 0,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;line=
&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; Name = "ChTrnd",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Type =TYPE_LINE,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Width = 2,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Color = RGB(255,255, 0)
&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; Name = "UpTrend",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Type =TYPE_LINE,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Width = 2,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Color = RGB(0,255,0)
&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; Name = "DnTrend",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Type =TYPE_LINE,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Width = 2,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Color = RGB(0,255, 0)
&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; Name = "APointLvl",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Type =TYPE_LINE,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Width = 1,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Color = RGB(120,90,140)
&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; Name = "BPointLvl",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Type =TYPE_LINE,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Width = 1,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Color = RGB(120,90,140)
&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; Name = "IntLine1",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Type =TYPE_LINE,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Width = 2,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Color = RGB(105,105,105)--DimGray
&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; Name = "IntLine2",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Type =TYPE_LINE,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Width = 2,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Color = RGB(0,0,255)--Blue
&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; Name = "IntLine3",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Type =TYPE_LINE,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Width = 2,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Color = RGB(218,165,32)--Goldenrod
&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; Name = "IntLine4",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Type =TYPE_LINE,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Width = 2,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Color = RGB(255,0,0)--Red
&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; Name = "IntLine5",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Type =TYPE_LINE,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Width = 2,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Color = RGB(0,128,0)--Green
&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; Name = "IntLine6",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Type =TYPE_POINT,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Width = 1,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Color = RGB(255,0,0)--Red
&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; Name = "fLine1",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Type =TYPE_LINE,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Width = 1,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Color = RGB(120,90,140)
&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; Name = "fLine2",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Type =TYPE_LINE,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Width = 1,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Color = RGB(120,90,140)
&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; Name = "ChannelFormingZone",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Type =TYPE_HISTOGRAM,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Width = 1,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Color = RGB(255,255, 0)
&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; Name = "pLine1",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Type =TYPE_LINE,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Width = 1,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Color = RGB(120,90,140)
&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; Name = "pLine2",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Type =TYPE_LINE,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Width = 1,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Color = RGB(120,90,140)
&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; Name = "ChannelActionZone",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Type =TYPE_HISTOGRAM,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Width = 1,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Color = RGB(255,255, 0)
&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; Name = "ChannelActionZone",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Type =TYPE_HISTOGRAM,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Width = 1,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Color = RGB(255,255, 0)
&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; Name = "ExtLine1",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Type =TYPE_POINT,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Width = 1,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Color = RGB(0,255,255)--Aqua
&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; Name = "ExtLine2",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Type =TYPE_POINT,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Width = 1,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Color = RGB(0,255,255)--Aqua
&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; Name = "ExtLine3",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Type =TYPE_POINT,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Width = 1,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Color = RGB(0,255,255)--Aqua
&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; Name = "ExtLine4",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Type =TYPE_POINT,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Width = 1,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Color = RGB(0,255,255)--Aqua
&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; Name = "ExtLine5",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Type =TYPE_POINT,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Width = 1,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Color = RGB(0,255,255)--Aqua
&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; Name = "ExtLine6",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Type =TYPE_POINT,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Width = 1,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Color = RGB(0,255,255)--Aqua
&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; Name = "ChTrndExt",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Type =TYPE_POINT,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Width = 1,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Color = RGB(120,90,140)--Aqua
&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; Name = "ChUpExt",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Type =TYPE_POINT,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Width = 1,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Color = RGB(120,90,140)--Aqua
&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; Name = "ChDnExt",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Type =TYPE_POINT,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Width = 1,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Color = RGB(120,90,140)--Aqua
&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
}

--глобальные переменные
-- Внимание, название всех параметров меток должны писаться большими буквами
&nbsp;&nbsp;&nbsp;label={
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --TEXT="метка";
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IMAGE_PATH=Settings.LabelName;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --TRANSPARENCY=50,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --TRANSPARENT_BACKGROUND=1,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --YVALUE=Settings.Yvalue,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DATE=0,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TIME=0;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --R=255;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --G=255;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --B=255;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}

t={}--исходная таблица данных свечек
tposixByTime={}--индексы свечек проиндексированные по времени
tposixOldLabelTime={}--таблица старых значений даты-времени выведенных на чарт меток в POSIX-формате
count=0--ограничитель количества циклов
Label_Id = {}--массив с идентификаторами меток&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
ScriptPath=""--полный путь к иконке (для метки)
flagIndExist=false--флаг существования индикатора на чарте
flagLblModify=false--флаг, сигнализирующий о перемещении метки
a=0
b=0
c=0
k=0
v=0
tDT={}
g_PriceStep = 0--шаг цены
g_PriceScale = 0--точность цены
g_tChLines={}

g_APointIdx=0;
g_BPointIdx=0;&nbsp;&nbsp;&nbsp;
g_APointLvl=0;
g_BPointLvl=0;
&nbsp;&nbsp;&nbsp;
function Init()

--объявление переменных. Присваиваем начальные значения чтобы сразу типизировать.
&nbsp;&nbsp;&nbsp;local n = 0--количество строк в таблице (количество свечек)
&nbsp;&nbsp;&nbsp;local l = ""--подпись инструмента
&nbsp;&nbsp;&nbsp;local NmbrOfCandles = 0--номер последней справа свечи на графике
&nbsp;&nbsp;&nbsp;local CandleIndex = 0
&nbsp;&nbsp;&nbsp;--local tDT={}

---&#91;&#91;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;if Settings.AssetID == "" then 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;message("Необходимо установить идентификатор инструмента")
&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;--ScriptPath = getScriptPath().."&#92;&#92;"..Settings.LabelName;&nbsp;&nbsp;&nbsp;--путь к файлу метки
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--message("Init_ScriptPath&nbsp;&nbsp;"..ScriptPath);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;--label&#91;"IMAGE_PATH"&#93;=ScriptPath;
--номер предпоследней справа свечи на графике. Нумерация начинается с нуля.
&nbsp;&nbsp;&nbsp;&nbsp;NmbrOfCandles = getNumCandles(Settings.AssetID)-2;
--получим таблицу с данными всех свечек, проиндексированную по номеру свечки
--t - таблица значений свечек
--n - количество полученных свечек(строк таблицы)
--l - подпись к инструменту
--текущую свечу не получаем
&nbsp;&nbsp;&nbsp;t,n,l = getCandlesByIndex(Settings.AssetID,0,0,NmbrOfCandles);
&nbsp;&nbsp;&nbsp;--&#91;&#91;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for i=0, NmbrOfCandles-1 do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;message("Init_t&nbsp;&nbsp; "..tostring(t&#91;i&#93;.high))
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;--&#93;&#93;&nbsp;&nbsp;&nbsp;
--получить индекс двух свечек, номера которых заданы во входных параметрах
--и установить метки
&nbsp;&nbsp;&nbsp;CandleIndex = NmbrOfCandles-Settings.splace;
&nbsp;&nbsp;&nbsp;tposixOldLabelTime&#91;"splace"&#93;, Label_Id&#91;"splace"&#93; = PUTLABEL(CandleIndex);
&nbsp;&nbsp;&nbsp;CandleIndex = NmbrOfCandles-Settings.fplace;
&nbsp;&nbsp;&nbsp;tposixOldLabelTime&#91;"fplace"&#93;, Label_Id&#91;"fplace"&#93; = PUTLABEL(CandleIndex);
&nbsp;&nbsp;&nbsp;CandleIndex = NmbrOfCandles-Settings.thplase;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;tposixOldLabelTime&#91;"thplase"&#93;, Label_Id&#91;"thplase"&#93; = PUTLABEL(CandleIndex);
&nbsp;&nbsp;&nbsp;
--берем из таблицы только время-дату свечи
&nbsp;&nbsp;&nbsp;count = 0;
&nbsp;&nbsp;&nbsp;for k=0,NmbrOfCandles-1&nbsp;&nbsp;do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;count = count + 1; if count &#62; 100000 then break end;
--преобразуем в POSIX-формат поле datetime
--транспонируем таблицу - индексируем по времени&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tDT&#91;k&#93; = os.time (t&#91;k&#93;.datetime);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tposixByTime&#91;tDT&#91;k&#93;&#93; = k;
&nbsp;&nbsp;&nbsp;end

--message("Init_tposixByTime_"..tostring(tDT&#91;Size()-5&#93;))--1539075600
--message("Init_tposixByTime_"..tostring(tDT&#91;1550826000&#93;))
&nbsp;&nbsp;&nbsp;return 27

end

function OnCalculate(index)

&nbsp;&nbsp;&nbsp;local info={}
&nbsp;&nbsp;&nbsp;local CandleIndex
&nbsp;&nbsp;&nbsp;local LblIdF = 0
&nbsp;&nbsp;&nbsp;local LblIdS = 0&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;local indput
&nbsp;&nbsp;&nbsp;local IndLines={}
&nbsp;&nbsp;&nbsp;local VChTrend
&nbsp;&nbsp;&nbsp;local VAPointLvl
&nbsp;&nbsp;&nbsp;local VBPointLvl
&nbsp;&nbsp;&nbsp;local flagIndChange=false--true-перестроить индикатор, false - не перестраивать
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;if index==1 then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;info = getDataSourceInfo();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--шаг цены
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g_PriceStep = getParamEx(info.class_code, info.sec_code, 'SEC_PRICE_STEP').param_value
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--точность цены
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g_PriceScale = getParamEx(info.class_code, info.sec_code, 'SEC_SCALE').param_value
&nbsp;&nbsp;&nbsp;end
---&#91;&#91;
--если флаг перемещения метки не установлен
&nbsp;&nbsp;&nbsp;if flagLblModify==false then
--message("OnCalculate_flagLblModify_"..tostring(flagLblModify))&nbsp;&nbsp;&nbsp;
--проверяем перемещалась ли первая метка&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LblIdF=IsLabelChange("fplace");
--проверяем вторую метку&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LblIdS=IsLabelChange("splace");
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--если индикатор существует, то выходим без расчетов, возвращаем массив линий
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;&nbsp;flagIndExist==true then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flagIndChange=false;
&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;else 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flagIndChange=true;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;--если метка перемещалась flagLblModify==true&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--строим индикатор, выставляем флаг изменения индикатора, 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--сбрасываем флаг метки, возвращаем индикатор
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flagIndChange=true;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LblIdF=Label_Id.fplace
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LblIdS=Label_Id.splace
&nbsp;&nbsp;&nbsp;end
--message("OnCalculate_flagLblModify_"..tostring(flagLblModify))
--message("OnCalculate_LblIdF_"..tostring(LblIdF).." "..tostring(LblIdS))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;--рассчитываем индикатор или выводим линии без расчета
&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;VChTrend,VChUp,VChDn,VAPointLvl,VBPointLvl,VIntLine1=PUTINDICATOR(LblIdF,LblIdS,flagIndChange,index)
&nbsp;&nbsp;&nbsp;--&#93;&#93;
&nbsp;&nbsp;&nbsp;if index==0 then VChTrend=nil end
&nbsp;&nbsp;&nbsp;if index &#62;= Size() then VChTrend=nil end&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;return VChTrend,VChUp,VChDn,VAPointLvl,VBPointLvl,VIntLine1,VIntLine2,VIntLine3,VIntLine4,VIntLine5,VIntLine6,VfLine1,VfLine2,VFormingTime,VpLine1,VpLine2,VActionTme,VActionTime,VExtLine1,VExtLine2,VExtLine3,VExtLine4,VExtLine5,VExtLine6,VChTrndExt,VChUpExt,VChDnExt
end

function IsLabelChange(place)
--функция принимает индекс массива Label_Id("строка")
--устанавливает глобальные флаги и 
--записывает posix-время в глобальную таблицу tposixOldLabelTime
--возврашает Id метки
&nbsp;&nbsp;&nbsp;local LblId = 0
&nbsp;&nbsp;&nbsp;local posixNewLblTime = 0&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;local posixOldLblTime = 0


--проверяем перемещалась ли метка&nbsp;&nbsp;&nbsp;
--считываем Id метки из массива&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LblId = Label_Id&#91;place&#93;;
--message("IsLabelChange_LabelId_"..tostring(place))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
--считываем posix-время для этой метки
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;posixOldLblTime = tposixOldLabelTime&#91;place&#93;;
--преобразуем время метки с чарта в posix-формат
--если функция вернула nil, время не меняем
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if GETLABLEPOSIXTIME (LblId)== 0 then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;posixNewLblTime = posixOldLblTime
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;posixNewLblTime = GETLABLEPOSIXTIME (LblId)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;--если время не совпадает, выставляем флаги отсутствия индикатора и модификации метки
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;&nbsp;&nbsp;posixOldLblTime ~= posixNewLblTime&nbsp;&nbsp;then
&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;flagLblModify=true;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--индикатор не построен
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flagIndExist=false;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--изменяем время метки в массиве
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tposixOldLabelTime&#91;place&#93; = posixNewLblTime;&nbsp;&nbsp;&nbsp;&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;return LblId
end 
&nbsp;&nbsp;&nbsp;
PUTLABEL = function (index)
--&#91;&#91;функция для установки метки на чарт по индексу
&nbsp;&nbsp;&nbsp;принимает индекс свечи 
&nbsp;&nbsp;&nbsp;возвращает время метки в posix-формате и Id метки
&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;вызывается в Init()
--&#93;&#93;
&nbsp;&nbsp;&nbsp;local Date=""--дата свечки
&nbsp;&nbsp;&nbsp;local Time=""--время свечки&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;local Yvalue=0
&nbsp;&nbsp;&nbsp;LabelId=0

&nbsp;&nbsp;&nbsp;--message ("PUTLABEL_index.."..tostring(index));
--дата и время свечи
&nbsp;&nbsp;&nbsp;Date=t&#91;index&#93;.datetime.year..Format.FTEXT(t&#91;index&#93;.datetime.month)..Format.FTEXT(t&#91;index&#93;.datetime.day); --дата

&nbsp;&nbsp;&nbsp;Time=Format.FTEXT(t&#91;index&#93;.datetime.hour)..Format.FTEXT(t&#91;index&#93;.datetime.min)..Format.FTEXT(t&#91;index&#93;.datetime.sec);

--привязка к оси У
&nbsp;&nbsp;&nbsp;Yvalue = t&#91;index&#93;.high;
--заполнить структуру данных метки
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;label={
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IMAGE_PATH=Settings.LabelName;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;YVALUE=Settings.Yvalue+Yvalue;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DATE=Date,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TIME=Time&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;};
--добавляем метку на чарт и запоминаем Id метки в массиве, проиндексированном принятой строкой&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;LabelId = AddLabel(Settings.AssetID,label);
&nbsp;&nbsp;&nbsp;--message ("PUTLABEL&nbsp;&nbsp;LabelId&nbsp;&nbsp;"..tostring(LabelId).." "..tostring(os.time (t&#91;index&#93;.datetime)))
&nbsp;&nbsp;&nbsp;return os.time (t&#91;index&#93;.datetime), LabelId
end

function GETLABLEPOSIXTIME (LabelId)

--функция принимает Id метки и возвращает ее время в posix-формате
--при перемещении метки временно Id может стать нулем, поэтому функция выдает ошибку ноль
&nbsp;&nbsp;&nbsp;local id--Id метки
&nbsp;&nbsp;&nbsp;local NewLbLParam = {}--структура параметров метки
&nbsp;&nbsp;&nbsp;local LabelTime = ""--строка с данными даты-времени метки
&nbsp;&nbsp;&nbsp;local dt={}--структура в формате datetime
&nbsp;&nbsp;&nbsp;local err=0
&nbsp;&nbsp;&nbsp;local retval
---&#91;&#91;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;id = LabelId;
--message("GETLABLEPOSIXTIME_LabelId_"..tostring(LabelId))&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;
--получаем таблицу с параметрами метки (в нижнем регистре в формате строки)
&nbsp;&nbsp;&nbsp;if LabelId==0 then retval=err
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NewLbLParam = GetLabelParams(Settings.AssetID, id);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--преобразуем в формат datetime
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dt.year,dt.month,dt.day = string.match(NewLbLParam.date,"(%d%d%d%d)(%d%d)(%d%d)")
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if #NewLbLParam.time == 5 then 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LabelTime="0".. NewLbLParam.time
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else LabelTime="".. NewLbLParam.time
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if tostring(NewLbLParam.time)=="0" then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LabelTime="000000"
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dt.hour,dt.min,dt.sec = string.match(LabelTime,"(%d%d)(%d%d)(%d%d)");&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--преобразуем в формат POSIX
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;retval = os.time (dt)
&nbsp;&nbsp;&nbsp;end;
&nbsp;&nbsp;&nbsp;return retval;
end

function PUTINDICATOR(LblId1,LblId2,boolIndChange,idx)

&nbsp;&nbsp;&nbsp;local a=0
&nbsp;&nbsp;&nbsp;local i
&nbsp;&nbsp;&nbsp;local j
&nbsp;&nbsp;&nbsp;local k
&nbsp;&nbsp;&nbsp;local TrndH=0
&nbsp;&nbsp;&nbsp;local TrndL=0&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;local h
&nbsp;&nbsp;&nbsp;local l 
&nbsp;&nbsp;&nbsp;local CndlIdx1=0
&nbsp;&nbsp;&nbsp;local CndlIdx2=0
&nbsp;&nbsp;&nbsp;local tABIdx={}
&nbsp;&nbsp;&nbsp;local IntervalCndlNmbr=0
&nbsp;&nbsp;&nbsp;local koef
&nbsp;&nbsp;&nbsp;local p1koef
&nbsp;&nbsp;&nbsp;local p2koef
&nbsp;&nbsp;&nbsp;local tChTrend={}
&nbsp;&nbsp;&nbsp;local tChUp={}
&nbsp;&nbsp;&nbsp;local tChDn={}
&nbsp;&nbsp;&nbsp;local ChUpMax=0
&nbsp;&nbsp;&nbsp;local ChDnMin=0
&nbsp;&nbsp;&nbsp;local posixLblTime1
&nbsp;&nbsp;&nbsp;local posixLblTime2&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;local APointIdx
&nbsp;&nbsp;&nbsp;local BPointIdx&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;local APointLvl
&nbsp;&nbsp;&nbsp;local BPointLvl
&nbsp;&nbsp;&nbsp;local idxUpMax
&nbsp;&nbsp;&nbsp;local idxDnMin
&nbsp;&nbsp;&nbsp;local AidxUp
&nbsp;&nbsp;&nbsp;local AidxDn
&nbsp;&nbsp;&nbsp;local BidxUp
&nbsp;&nbsp;&nbsp;local BidxDn
&nbsp;&nbsp;&nbsp;local ChTrnd
&nbsp;&nbsp;&nbsp;local ChUp
&nbsp;&nbsp;&nbsp;local ChDn
&nbsp;&nbsp;&nbsp;local APntLvl
&nbsp;&nbsp;&nbsp;local BPntLvl
&nbsp;&nbsp;&nbsp;local StepsUp
&nbsp;&nbsp;&nbsp;local TrUp=false
&nbsp;&nbsp;&nbsp;local TrDn=false
&nbsp;&nbsp;&nbsp;local Lu
&nbsp;&nbsp;&nbsp;local tfLine1={}
&nbsp;&nbsp;&nbsp;local tfLine2={}
&nbsp;&nbsp;&nbsp;local tpLine1={}
&nbsp;&nbsp;&nbsp;local tpLine2={}
&nbsp;&nbsp;&nbsp;local Aidx
&nbsp;&nbsp;&nbsp;local Bidx
&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;g_tChLines&#91;"ChTrend"&#93;=tChTrend;
&nbsp;&nbsp;&nbsp;g_tChLines&#91;"ChUp"&#93;=tChUp;
&nbsp;&nbsp;&nbsp;g_tChLines&#91;"ChDn"&#93;=tChDn;
&nbsp;&nbsp;&nbsp;g_tChLines&#91;"fLine1"&#93;=tfLine1;
&nbsp;&nbsp;&nbsp;g_tChLines&#91;"fLine2"&#93;=tfLine2;
&nbsp;&nbsp;&nbsp;g_tChLines&#91;"pLine1"&#93;=tpLine1;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;g_tChLines&#91;"pLine2"&#93;=tpLine2;
&nbsp;&nbsp;&nbsp;
--если метка перемещалась или индикатор строится впервые рассчитываем линии и выводим их
&nbsp;&nbsp;&nbsp;if boolIndChange then

&nbsp;&nbsp;&nbsp;--для каждой свечи в интервале между метками получить максимальное и минимальное 
&nbsp;&nbsp;&nbsp;--значение цены
&nbsp;&nbsp;&nbsp;--сравниваем время меток для задания переменной цикла
&nbsp;&nbsp;&nbsp;--если GETLABLEPOSIXTIME вернула ошибку

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if GETLABLEPOSIXTIME (LblId1)==0 or LblId1==0 then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--считываем старое время из массива
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;posixLblTime1 = tposixOldLabelTime.fplace
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--иначе считываем новое время метки
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else posixLblTime1 = GETLABLEPOSIXTIME (LblId1)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;--так же и для второй метки
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if GETLABLEPOSIXTIME (LblId2)==0 or LblId2==0 then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;posixLblTime2 = tposixOldLabelTime.splace
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else posixLblTime2 = GETLABLEPOSIXTIME (LblId2)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;--получаем значения индекса свечи по его posix-времени
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CndlIdx1=tposixByTime&#91;posixLblTime1&#93;;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CndlIdx2=tposixByTime&#91;posixLblTime2&#93;;
&nbsp;&nbsp;&nbsp;--если метка перемещена вправо за последнюю свечу, то индекс = максимальному
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if CndlIdx1 == nil then CndlIdx1 = Size()-5 end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if CndlIdx2 == nil then CndlIdx2 = Size()-4 end
&nbsp;&nbsp;&nbsp;--находим более раннюю свечу&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if CndlIdx1 &#60; CndlIdx2 then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j=CndlIdx1;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;k=CndlIdx2
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j=CndlIdx2;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;k=CndlIdx1&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;--для всех свечей внутри диапазона меток
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for i = j, k, 1 do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--находим максимальное и минимальное значение и индекс свечки
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;h = t&#91;i&#93;.high;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;l = t&#91;i&#93;.low;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if h~=0 then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if h &#62;= TrndH then 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TrndH = h;&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;tABIdx&#91;"hi"&#93; = i--индекс свечки
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if l~=0 then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if TrndL==0 then TrndL = l end;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if l &#60;= TrndL then 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TrndL = l;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tABIdx&#91;"lo"&#93; = i--индекс свечки&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;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;--находим количество свечек на интервале тренда (от точек А и В)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IntervalCndlNmbr = tABIdx&#91;"hi"&#93; - tABIdx&#91;"lo"&#93;;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;--если получили отрицательное число(слева индекс максимума, тренд вниз), то инвертируем
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if IntervalCndlNmbr &#60; 0 then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TrUp=false;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TrDn=true;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;APointIdx=tABIdx&#91;"hi"&#93;;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BPointIdx=tABIdx&#91;"lo"&#93;;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;APointLvl=TrndH;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BPointLvl=TrndL;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TrUp=true;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TrDn=false;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;APointIdx=tABIdx&#91;"lo"&#93;;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BPointIdx=tABIdx&#91;"hi"&#93;;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;APointLvl=TrndL;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BPointLvl=TrndH;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IntervalCndlNmbr=-IntervalCndlNmbr&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;--отрицательный (тренд вниз),положительный (тренд вверх)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;koef = (APointLvl - BPointLvl)/IntervalCndlNmbr&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;--цикл для вычисления значений всеx линий
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j=0;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for i=APointIdx, BPointIdx, 1 do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--вычисляем значения точек основного тренда
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--i-индекс свечи, j - номер шага
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tChTrend&#91;i&#93; = Round.math_round(APointLvl+koef*j,g_PriceScale);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--заносим значения тренда в глобальную таблицу
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g_tChLines.tChTrend = tChTrend&#91;i&#93;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--вычисляем значения точек верхней и нижней границы канала
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;h = t&#91;i&#93;.high;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;l = t&#91;i&#93;.low;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if h - tChTrend&#91;i&#93; &#62; 0 and h~=0 then&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ChUpMax &#60; h - tChTrend&#91;i&#93; 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;then
&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;ChUpMax = h - tChTrend&#91;i&#93;;
&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;idxUpMax = i;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if tChTrend&#91;i&#93; -l &#62; 0 and l~=0 then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ChDnMin &#60; tChTrend&#91;i&#93; -l
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;then 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ChDnMin = tChTrend&#91;i&#93; - l;&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;idxDnMin = i;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&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;j=j+1;&nbsp;&nbsp;&nbsp;&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;StepsUp=Round.math_round(ChUpMax/koef,0)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--сдвиг назад для тренда вверх, сдвиг вперед для тренда вниз
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AidxUp = APointIdx - StepsUp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BidxUp = BPointIdx - StepsUp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--количество шагов от точки А
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;StepsDn=Round.math_round(ChDnMin/koef,0)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--сдвиг назад для тренда вверх, сдвиг вперед для тренда вниз
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AidxDn = APointIdx + StepsDn;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BidxDn = BPointIdx + StepsDn;&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;j=0;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for i=AidxUp, BidxUp, 1 do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--линия тренда верхней границы канала
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tChUp&#91;i&#93; = math_round(APointLvl+koef*j,g_PriceScale);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g_tChLines.tChUp = tChUp&#91;i&#93;
if idx==Size() then
message("PUTINDICATOR_Up&nbsp;&nbsp;"..tostring(g_tChLines.tChUp).."&nbsp;&nbsp;"..tostring(i))
end&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j=j+1;&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;j=0;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for i=AidxDn, BidxDn, 1 do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--линия тренда нижней границы канала&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tChDn&#91;i&#93; = math_round(APointLvl+koef*j,g_PriceScale);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g_tChLines.tChDn = tChDn&#91;i&#93;
--if idx==Size() then
--message("PUTINDICATOR_Dn&nbsp;&nbsp;"..tostring(g_tChLines.tChDn).."&nbsp;&nbsp;"..tostring(i))
--end&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j=j+1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
--вычисляем ExtLine
&nbsp;&nbsp;&nbsp;--koef положительный &nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if TrUp==true then&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;j=0;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for i=AidxUp, 2*AidxUp-BidxDn, -1 do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tChUp&#91;i&#93; = math_round(APointLvl+koef*j,g_PriceScale);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g_tChLines.tChUp = tChUp&#91;i&#93;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j=j-1;&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j=0;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for i=AidxUp, BidxDn, 1 do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tChUp&#91;i&#93; = math_round(APointLvl+koef*j,g_PriceScale);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g_tChLines.tChUp = tChUp&#91;i&#93;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if i==BPointIdx then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ExtLine1Level=tChUp&#91;i&#93;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local ExtLine1idx=i
&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;if i==BidxDn then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ExtLine2Level=tChUp&#91;i&#93;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local ExtLine2idx=i&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;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j=j+1;&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;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j=0;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--ниже уровня точки А
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for i=APointIdx, AidxUp, -1 do 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tChTrend&#91;i&#93; = Round.math_round(APointLvl+koef*j,g_PriceScale);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g_tChLines.tChTrend = tChTrend&#91;i&#93;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if i==AidxUp then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ExtLine6Level=tChTrend&#91;i&#93;&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;local ExtLine6idx=i
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j=j-1;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j=0;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--выше уровня точки B
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for i=BPointIdx, BidxDn, 1 do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tChTrend&#91;i&#93; = Round.math_round(BPointLvl+koef*j,g_PriceScale);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g_tChLines.tChTrend = tChTrend&#91;i&#93;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if i==BidxDn then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ExtLine3Level=tChTrend&#91;i&#93;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local ExtLine3idx=i
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j=j+1;&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;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j=0;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--ниже уровня точки А
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for i=AidxDn, AidxUp, -1 do&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tChDn&#91;i&#93; = math_round(APointLvl+koef*j,g_PriceScale);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g_tChLines.tChDn = tChDn&#91;i&#93;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if i==APointIdx then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ExtLine4Level=tChDn&#91;i&#93;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local ExtLine4idx=i
&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;if i==AidxUp then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ExtLine5Level=tChDn&#91;i&#93;&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;local ExtLine5idx=i
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j=j-1;&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;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;--koef отрицательный&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if TrDn==true then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--линия тренда нижней границы канала
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--от уровня точки B и ниже
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j=0;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for i=BidxDn, BidxUp, 1 do&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tChDn&#91;i&#93; = math_round(BPointLvl+koef*j,g_PriceScale);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g_tChLines.tChDn = tChDn&#91;i&#93;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if i==BPointIdx then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ExtLine1Level=tChDn&#91;i&#93;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local ExtLine1idx=i
&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;if i==BidxUp then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ExtLine2Level=tChDn&#91;i&#93;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local ExtLine2idx=i
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j=j+1;&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;&nbsp;&nbsp;&nbsp;j=0;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for i=APointIdx, AidxDn, -1 do&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tChTrend&#91;i&#93; = Round.math_round(APointLvl+koef*j,g_PriceScale);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g_tChLines.tChTrend = tChTrend&#91;i&#93;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if i==AidxDn then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ExtLine6Level=tChTrend&#91;i&#93;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local ExtLine6idx=i
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j=j-1;&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j=0;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for i=BPointIdx, BidxUp, 1 do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tChTrend&#91;i&#93; = Round.math_round(BPointLvl+koef*j,g_PriceScale);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g_tChLines.tChTrend = tChTrend&#91;i&#93;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if i==BidxUp then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ExtLine3Level=tChTrend&#91;i&#93;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local ExtLine3idx=i
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j=j+1;&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;&nbsp;&nbsp;&nbsp;--от уровня выше точки А до точки А&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j=0;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for i=AidxUp, AidxDn, -1 do&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tChUp&#91;i&#93; = math_round(APointLvl+koef*j,g_PriceScale);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g_tChLines.tChUp = tChUp&#91;i&#93;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if i==APointIdx then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ExtLine4Level=tChUp&#91;i&#93;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local ExtLine4idx=i
&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;if i==AidxDn then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ExtLine5Level=tChUp&#91;i&#93;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local ExtLine5idx=i
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j=j-1;&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;&nbsp;&nbsp;&nbsp;j=0;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for i=BidxUp, 2*BidxUp-AidxDn, 1 do&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tChUp&#91;i&#93; = math_round(APointLvl+koef*j,g_PriceScale);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g_tChLines.tChUp = tChUp&#91;i&#93;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j=j+1;&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;end&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if TrUp==true then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--уровни IntLine
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IntLine1=tChUp&#91;APointIdx&#93;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IntLine2=tChTrend&#91;AidxDn&#93;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IntLine3=tChUp&#91;AidxDn&#93;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IntLine4=tChTrend&#91;BidxUp&#93;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IntLine5=tChDn&#91;BidxUp&#93;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IntLine6=tChDn&#91;BPointIdx&#93;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if TrDn==true then&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IntLine1=tChDn&#91;APointIdx&#93;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IntLine2=tChTrend&#91;AidxUp&#93;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IntLine3=tChDn&#91;AidxUp&#93;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IntLine4=tChTrend&#91;BidxDn&#93;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IntLine5=tChUp&#91;BidxDn&#93;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IntLine6=tChUp&#91;BPointIdx&#93;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
--вычисление значений fLne1 и fLne2
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j=0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for i=BPointIdx,Size()-1 do&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tfLine1&#91;i&#93; = Round.math_round(BPointLvl-koef*j,g_PriceScale);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tfLine2&#91;i&#93; = Round.math_round(BPointLvl-koef*j/2,g_PriceScale);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g_tChLines.tfLine1 = tfLine1&#91;i&#93;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g_tChLines.tfLine2 = tfLine2&#91;i&#93;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--message("PUTINDICATOR&nbsp;&nbsp;tfLine2_i&nbsp;&nbsp;"..tostring(g_tChLines.tfLine2).." "..tostring(i));
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j=j+1
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
--вычисление значений pLine

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if &nbsp;&nbsp;&nbsp;TrUp then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--1-ая точка - значение цены - APointLvl, значение времени - APointIdx
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--2-ая точка - значение цены - IntLine6, значение времени - BidxDn
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--3-я точка - значение цены - IntLine6, значение времени - 2*BidxDn-BPointIdx
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p1koef=Round.math_round((IntLine6-APointLvl)/(BidxDn-APointIdx),g_PriceScale)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p2koef=Round.math_round((IntLine6-APointLvl)/(2*BidxDn-BPointIdx-APointIdx),g_PriceScale)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if TrDn then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--1-ая точка - значение цены - APointLvl, значение времени - APointIdx
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--2-ая точка - значение цены - IntLine6, значение времени - BidxUp
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--3-я точка - значение цены - IntLine6, значение времени - 2*BidxUp-BPointIdx
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p1koef=Round.math_round((IntLine6-APointLvl)/(BidxUp-APointIdx),g_PriceScale)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p2koef=Round.math_round((IntLine6-APointLvl)/(2*BidxUp-BPointIdx-APointIdx),g_PriceScale)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j=0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for i=APointIdx,Size()-1 do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tpLine1&#91;i&#93; = Round.math_round(APointLvl+p1koef*j,g_PriceScale);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g_tChLines.tpLine1 = tpLine1&#91;i&#93;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tpLine2&#91;i&#93; = Round.math_round(APointLvl+p2koef*j,g_PriceScale);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g_tChLines.tpLine2 = tpLine2&#91;i&#93;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j=j+1
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g_APointIdx=APointIdx;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g_BPointIdx=BPointIdx;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g_APointLvl=APointLvl;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g_BPointLvl=BPointLvl;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ChTrnd=GETTRENDLINE(1,g_APointIdx,g_BPointIdx,"ChTrend")
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if &nbsp;&nbsp;&nbsp;TrUp then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Aidx=AidxUp
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Bidx=BidxDn
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if &nbsp;&nbsp;&nbsp;TrDn then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Aidx=AidxDn
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Bidx=BidxUp
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ChTrndExt=GETTRENDLINE(25,Aidx,Bidx,"ChTrend")
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ChUp=GETTRENDLINE(2,AidxUp,BidxUp,"ChUp")
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ChUpExt=GETTRENDLINE(26,Aidx,Bidx,"ChUp")&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ChDn=GETTRENDLINE(3,AidxDn,BidxDn,"ChDn")
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ChDnExt=GETTRENDLINE(27,Aidx,Bidx,"ChDn")&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if &nbsp;&nbsp;&nbsp;TrUp then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Aidx=AidxUp
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Bidx=BidxUp
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if &nbsp;&nbsp;&nbsp;TrDn then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Aidx=AidxDn
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Bidx=BidxDn
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;APntLvl=GETHORLINE(g_APointLvl,4,Aidx)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BPntLvl=GETHORLINE(g_BPointLvl,5,Bidx)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IntLin1=GETHORLINE(IntLine1,6,g_APointIdx)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if TrUp then Lu=AidxDn end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if TrDn then Lu=AidxUp end&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IntLin2=GETHORLINE(IntLine2,7,Lu)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IntLin3=GETHORLINE(IntLine3,8,Lu)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if TrUp then Lu=BidxUp end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if TrDn then Lu=BidxDn end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IntLin4=GETHORLINE(IntLine4,9,Lu)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IntLin5=GETHORLINE(IntLine5,10,Lu)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IntLin6=GETHORLINE(IntLine6,11,g_BPointIdx)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fLne1=GETFLINE(12,g_BPointIdx,"fLine1")
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fLne2=GETFLINE(13,g_BPointIdx,"fLine2")
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if &nbsp;&nbsp;&nbsp;TrUp then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Aidx=AidxUp
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Bidx=BidxDn
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ActionIdx=2*Bidx-Aidx
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if &nbsp;&nbsp;&nbsp;TrDn then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Aidx=AidxDn
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Bidx=BidxUp
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ActionIdx=2*Bidx-Aidx&nbsp;&nbsp;&nbsp;&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;APntTme=GETVERTLINE(Aidx,14,g_APointLvl)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pLne1=GETTRENDLINE(15,APointIdx,Size()-1,"pLine1")
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pLne2=GETTRENDLINE(16,APointIdx,Size()-1,"pLine2")
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BPntTme=GETVERTLINE(Bidx,17,g_BPointLvl)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ActionZone=GETVERTLINE(ActionIdx,18,g_BPointLvl)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Lu=BPointIdx
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ExtLine1=GETHORLINE(ExtLine1Level,19,Lu)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if TrUp then 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Lu=BidxDn
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if TrDn then 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Lu=BidxUp
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ExtLine2=GETHORLINE(ExtLine2Level,20,Lu)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ExtLine3=GETHORLINE(ExtLine3Level,21,Lu)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Lu=APointIdx
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ExtLine4=GETHORLINE(ExtLine4Level,22,Lu)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if TrUp then 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Lu=AidxUp
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if TrDn then 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Lu=AidxDn
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ExtLine5=GETHORLINE(ExtLine5Level,23,Lu)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ExtLne6=GETHORLINE(ExtLine6Level,24,Lu)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;--перестроили индикатор-устанавливаем флаг
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flagIndExist=true;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flagLblModify=false
&nbsp;&nbsp;&nbsp;end&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;return ChTrnd,ChUp,ChDn,APntLvl,BPntLvl,IntLin1,IntLin2,IntLin3,IntLin4,IntLin5,IntLin6,fLne1,fLne2,APntTme,pLne1,pLne2,BPntTme,ExtLine1,ExtLine2,ExtLine3,ExtLine4,ExtLine5,ExtLne6,ChTrndExt,ChUpExt,ChDnExt

end

function math_round (num, idp)
&nbsp;&nbsp;local mult = 10^(idp or 0)
&nbsp;&nbsp;return math.floor(num * mult + 0.5) / mult
end

function GETHORLINE(Level,LineNumber,Luch)
--Luch - индекс свечи от которой начнется прямая
&nbsp;&nbsp;&nbsp;local indx
&nbsp;&nbsp;&nbsp;local Line
&nbsp;&nbsp;&nbsp;local z
&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;indx=Size()
&nbsp;&nbsp;&nbsp;for i=0,indx do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if Luch==nil then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Line=Level
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if i&#60;=Luch then 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Line=nil
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Line=Level
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;z=SetValue(i, LineNumber, Line)
--if &nbsp;&nbsp;&nbsp;Level==ExtLine5Level then&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
--message("GETHORLINE_z "..tostring(z))
--end&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;return Line
end

function GETTRENDLINE(LineNumber,APntIdx,BPntIdx,Trend)
---&#91;&#91;
&nbsp;&nbsp;&nbsp;local Line
&nbsp;&nbsp;&nbsp;local indx
&nbsp;&nbsp;&nbsp;local TrLine={}
&nbsp;&nbsp;&nbsp;indx=Size()-1;
&nbsp;&nbsp;&nbsp;for i=0,indx do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if i &#60; APntIdx then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TrLine&#91;i&#93;=nil
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetValue(i+1, LineNumber, TrLine&#91;i&#93;)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if i &#62; BPntIdx then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TrLine&#91;i&#93;=nil&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetValue(i+1, LineNumber, TrLine&#91;i&#93;)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if i&#62;=APntIdx and i&#60;=BPntIdx then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TrLine&#91;i&#93;=g_tChLines&#91;Trend&#93;&#91;i&#93;
if LineNumber==2 then
message("GETTRENDLINE&nbsp;&nbsp;"..tostring( g_tChLines&#91;Trend&#93;&#91;i&#93;).."&nbsp;&nbsp;"..tostring(i))
end&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetValue(i+1, LineNumber, TrLine&#91;i&#93;)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;return TrLine
--&#93;&#93;
end

function GETFLINE(LineNumber,BPntIdx,Trend)
---&#91;&#91;
&nbsp;&nbsp;&nbsp;local Line
&nbsp;&nbsp;&nbsp;local indx
&nbsp;&nbsp;&nbsp;local TrLine={}
--message("GETTRENDLINE&nbsp;&nbsp;LineNumber Trend&nbsp;&nbsp;"..tostring(LineNumber).."&nbsp;&nbsp;"..tostring(Trend));

&nbsp;&nbsp;&nbsp;SetValue(1, LineNumber, nil)&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;indx=Size();
--message("GETFLINE BPntIdx&nbsp;&nbsp;"..tostring(BPntIdx));&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;for i=1,indx do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if i &#60; BPntIdx then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TrLine&#91;i&#93;=nil
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetValue(i+1, LineNumber, TrLine&#91;i&#93;)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if i &#62;= BPntIdx then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TrLine&#91;i&#93;=g_tChLines&#91;Trend&#93;&#91;i&#93;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetValue(i+1, LineNumber, TrLine&#91;i&#93;)
--message("GETFLINE BPntIdx&nbsp;&nbsp;"..tostring(TrLine&#91;i&#93;));
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;return TrLine
--&#93;&#93;
end

function GETVERTLINE(PointIndex,LineNumber,PointValue)
&nbsp;&nbsp;&nbsp;local value

&nbsp;&nbsp;&nbsp;for i=0,Size()-1 do

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if i&#60;=PointIndex then 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;value=nil&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetValue(i, LineNumber, value)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if i==PointIndex+1 then&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;value=PointValue 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetValue(i, LineNumber, value)&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if i&#62;PointIndex+1 then 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;value=nil&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetValue(i, LineNumber, value)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;return value
end

function OnDestroy ()
&nbsp;&nbsp;&nbsp;local tmp
&nbsp;&nbsp;&nbsp;tmp=DelAllLabels(Settings.AssetID)
end




Format={}
function Format.FTEXT (V)
--функция подставляет нули при их отсутствии на первой позиции даты-времени
&nbsp;&nbsp;&nbsp;V=tostring (V)
&nbsp;&nbsp;&nbsp;if string.len (V) == 1 then V = "0".. V end
&nbsp;&nbsp;&nbsp;return V 
end&nbsp;&nbsp;&nbsp;
return Format


Round={}
function Round.math_round (num, idp)
&nbsp;&nbsp;local mult = 10^(idp or 0)
&nbsp;&nbsp;return math.floor(num * mult + 0.5) / mult
end
return Round
</pre>
============= <br />
			<img src="https://forum.quik.ru/bitrix/components/bitrix/forum.interface/show_file.php?fid=5735&" width="764" height="569" /><br /><img src="https://forum.quik.ru/bitrix/components/bitrix/forum.interface/show_file.php?fid=5736&" width="771" height="495" /><br /><i>13.03.2019 10:14:31, VNG_nemo.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message36926/topic4360/</link>
			<guid>http://forum.quik.ru/messages/forum10/message36926/topic4360/</guid>
			<pubDate>Wed, 13 Mar 2019 10:14:31 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Странное поведение функции при передаче ей массива</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message36924/topic4360/">Странное поведение функции при передаче ей массива</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_0w06ONUX" href="/user/12873/" bx-tooltip-user-id="12873">VNG_nemo</a> написал:<br />Код могу выложить, не проблема. Немного громоздкий, но зато весь откомментирован.<br /><br />=============<br />да выложите код <br />
			<i>13.03.2019 08:14:20, Sergey Gorokhov.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message36924/topic4360/</link>
			<guid>http://forum.quik.ru/messages/forum10/message36924/topic4360/</guid>
			<pubDate>Wed, 13 Mar 2019 08:14:20 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Странное поведение функции при передаче ей массива</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message36923/topic4360/">Странное поведение функции при передаче ей массива</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_EaEkW8Ee" href="/user/17/" bx-tooltip-user-id="17">Sergey Gorokhov</a> написал:<br />а вообще, для передачи чего либо в функцию, придуманы аргументы функции.<br />=============<br />Как работать с функциями и для чего нужны аргументы и почему в одних случаях используются локальные переменные, передаваемые через стек (по значению), а в других глобальные переменные(по ссылке), я тоже в курсе. И в данном случае не имеет абсолютно никакого значения как передается в функцию массив, поскольку это ссылочная переменная, и передавая в функцию имя массива (которое одновременно является ссылкой на массив) мы тем самым даем доступ ко всем элементам массива, т.е работать мы будем не с копиями данных, как при обращении по значению, а с самими данными. &nbsp;Дело в том, что в данном случае я заполняю массив в коде как глобальную таблицу, а потом использую его только для чтения. И в чем тут ошибка я решительно не могу понять. Ведь массив заполняется правильно, а вот при считывании возникает ошибка, причем такая, что равны первый и последний элемент массива. <br />Каким боком потокобезопасные функции к передаче &nbsp;данных в функцию я так и не понял. Их всего четыре и ни одна не подходит под рассматриваемую ситуацию. Можно было бы притянуть каким-то макаром функцию insert, но я не вставляю данные в таблицу после ее формирования, а только считываю их. А формируется первоначальная таблица правильно, что и видно при выводе ее значений. <br />Код могу выложить, не проблема. Немного громоздкий, но зато весь откомментирован. <br />
			<i>13.03.2019 07:57:51, VNG_nemo.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message36923/topic4360/</link>
			<guid>http://forum.quik.ru/messages/forum10/message36923/topic4360/</guid>
			<pubDate>Wed, 13 Mar 2019 07:57:51 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Странное поведение функции при передаче ей массива</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message36922/topic4360/">Странное поведение функции при передаче ей массива</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Трудно сказать, не видя всего кода.<br />Но скорей всего проблема в потокобезопасности.<br />в документации QLUA.chm, глава "Потокобезопасные функции для работы с таблицами Lua"<br /><br />а вообще, для передачи чего либо в функцию, придуманы аргументы функции. <br />
			<i>13.03.2019 06:19:22, Sergey Gorokhov.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message36922/topic4360/</link>
			<guid>http://forum.quik.ru/messages/forum10/message36922/topic4360/</guid>
			<pubDate>Wed, 13 Mar 2019 06:19:22 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Странное поведение функции при передаче ей массива</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message36910/topic4360/">Странное поведение функции при передаче ей массива</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Получается, что при передаче массива в функцию передается неправильно только одно значение. Специально вывел рядом со значениями массива индексы свечей - они совпадают. Как так может быть, что при передаче массива неправильно передается лишь одно значение? <br />
			<i>12.03.2019 16:37:29, VNG_nemo.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message36910/topic4360/</link>
			<guid>http://forum.quik.ru/messages/forum10/message36910/topic4360/</guid>
			<pubDate>Tue, 12 Mar 2019 16:37:29 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Странное поведение функции при передаче ей массива</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message36909/topic4360/">Странное поведение функции при передаче ей массива</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			НаписАл код функции<br />
====code====
<pre>function GETTRENDLINE(LineNumber,APntIdx,BPntIdx,Trend)
---&#91;&#91;
&nbsp;&nbsp;&nbsp;local Line
&nbsp;&nbsp;&nbsp;local indx
&nbsp;&nbsp;&nbsp;local TrLine={}
&nbsp;&nbsp;&nbsp;indx=Size()-1;
&nbsp;&nbsp;&nbsp;for i=0,indx do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if i &#60; APntIdx then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TrLine&#91;i&#93;=nil
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetValue(i+1, LineNumber, TrLine&#91;i&#93;)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if i &#62; BPntIdx then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TrLine&#91;i&#93;=nil&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetValue(i+1, LineNumber, TrLine&#91;i&#93;)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if i&#62;=APntIdx and i&#60;=BPntIdx then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TrLine&#91;i&#93;=g_tChLines&#91;Trend&#93;&#91;i&#93;
if LineNumber==2 then
message("GETTRENDLINE&nbsp;&nbsp;"..tostring( g_tChLines&#91;Trend&#93;&#91;i&#93;).."&nbsp;&nbsp;"..tostring(i))
end&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetValue(i+1, LineNumber, TrLine&#91;i&#93;)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;return TrLine
--&#93;&#93;
end
</pre>
=============
В коде индикатора вычисляю значения и записываю их в массив
====code====
<pre>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j=0;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for i=AidxUp, BidxUp, 1 do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--линия тренда верхней границы канала
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tChUp&#91;i&#93; = math_round(APointLvl+koef*j,g_PriceScale);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g_tChLines.tChUp = tChUp&#91;i&#93;
if idx==Size() then
message("PUTINDICATOR_Up&nbsp;&nbsp;"..tostring(g_tChLines.tChUp).."&nbsp;&nbsp;"..tostring(i))
end&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j=j+1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
</pre>
=============
<br />вызываю функцию
====code====
<pre>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ChUp=GETTRENDLINE(2,AidxUp,BidxUp,"ChUp")
</pre>
=============
и получаю странный результат - в передаваемом массиве внутри функции и в нем же при вычислении не совпадает последнее значение массива <br />
			<img src="https://forum.quik.ru/bitrix/components/bitrix/forum.interface/show_file.php?fid=5733&" width="506" height="297" /><br /><img src="https://forum.quik.ru/bitrix/components/bitrix/forum.interface/show_file.php?fid=5734&" width="563" height="277" /><br /><i>12.03.2019 16:34:29, VNG_nemo.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message36909/topic4360/</link>
			<guid>http://forum.quik.ru/messages/forum10/message36909/topic4360/</guid>
			<pubDate>Tue, 12 Mar 2019 16:34:29 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
	</channel>
</rss>
