<?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>Wed, 20 May 2026 10:04:55 +0300</pubDate>
		<item>
			<title>Ошибка при поиске пиков\впадин кастом индикатора</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message79605/topic3287/">Ошибка при поиске пиков\впадин кастом индикатора</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Вроде все правильно работает. &nbsp;<img src="http://forum.quik.ru/upload/main/smiles/5/icon_exclaim.png" border="0" data-code=":!:" data-definition="SD" alt=":!:" style="width:16px;height:16px;" title="Восклицание" class="bx-smile" /> &nbsp;Вот результаты теста в SciTe: 
====code====
<pre>RingBufferClassOPP.lua"&nbsp;&nbsp;1&nbsp;&nbsp;
Функциональный стиль:
Последнее значение:&nbsp;&nbsp;&nbsp;100
Предпоследнее:&nbsp;&nbsp;&nbsp;90
Первое в буфере:&nbsp;&nbsp;&nbsp;30

Все элементы (новые сначала):
100
90
80
70
60
50
40
30

ООП стиль:
RSI&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;период назад:&nbsp;&nbsp;&nbsp;45
RSI&nbsp;&nbsp;&nbsp;2&nbsp;&nbsp;&nbsp;период назад:&nbsp;&nbsp;&nbsp;36
RSI&nbsp;&nbsp;&nbsp;3&nbsp;&nbsp;&nbsp;период назад:&nbsp;&nbsp;&nbsp;50
RSI&nbsp;&nbsp;&nbsp;4&nbsp;&nbsp;&nbsp;период назад:&nbsp;&nbsp;&nbsp;46
RSI&nbsp;&nbsp;&nbsp;5&nbsp;&nbsp;&nbsp;период назад:&nbsp;&nbsp;&nbsp;54
Среднее RSI:&nbsp;&nbsp;&nbsp;46.2

Анализ ADX:&nbsp;&nbsp;&nbsp;Слабый тренд или флэт
Функциональный стиль:&nbsp;&nbsp;&nbsp;0.43&nbsp;&nbsp;&nbsp;сек
ООП стиль:&nbsp;&nbsp;&nbsp;0.631&nbsp;&nbsp;&nbsp;сек
&#62;Exit code: 0&nbsp;&nbsp;&nbsp;&nbsp;Time: 1.483
</pre>
============= <br />
			<i>26.09.2025 14:20:06, VPM.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message79605/topic3287/</link>
			<guid>http://forum.quik.ru/messages/forum10/message79605/topic3287/</guid>
			<pubDate>Fri, 26 Sep 2025 14:20:06 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Ошибка при поиске пиков\впадин кастом индикатора</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message79604/topic3287/">Ошибка при поиске пиков\впадин кастом индикатора</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<a class="blog-p-user-name" id="bp_6Uk76Z0z" href="/user/13952/" bx-tooltip-user-id="13952">TGB</a>, &nbsp;Можете взглянуть на код? <br />
====code====
<pre>--- Функциональный стиль: кольцевой буфер
-- @param size_power_of_two степень двойки (например, 3 → буфер на 8 элементов)
function CreateRingBuffer(size_power_of_two)
&nbsp;&nbsp;&nbsp;&nbsp;local size = 1 &#60;&#60; size_power_of_two -- 2^n
&nbsp;&nbsp;&nbsp;&nbsp;local mask = size - 1
&nbsp;&nbsp;&nbsp;&nbsp;local data = {}
&nbsp;&nbsp;&nbsp;&nbsp;for i = 1, size do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data&#91;i&#93; = 0
&nbsp;&nbsp;&nbsp;&nbsp;end

&nbsp;&nbsp;&nbsp;&nbsp;local head = -1
&nbsp;&nbsp;&nbsp;&nbsp;local count = 0

&nbsp;&nbsp;&nbsp;&nbsp;local buffer = {}

&nbsp;&nbsp;&nbsp;&nbsp;--- Добавление элемента
&nbsp;&nbsp;&nbsp;&nbsp;function buffer:add(value)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;head = (head + 1) &#38; mask
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data&#91;head + 1&#93; = value
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;count = math.min(count + 1, size)
&nbsp;&nbsp;&nbsp;&nbsp;end

&nbsp;&nbsp;&nbsp;&nbsp;--- Получение элемента (1 - последний)
&nbsp;&nbsp;&nbsp;&nbsp;function buffer:get(index)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if index &#60; 1 or index &#62; count then return nil end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local pos = (head - index + 1 + size) &#38; mask
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return data&#91;pos + 1&#93;
&nbsp;&nbsp;&nbsp;&nbsp;end

&nbsp;&nbsp;&nbsp;&nbsp;--- Последний элемент
&nbsp;&nbsp;&nbsp;&nbsp;function buffer:last()
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if count == 0 then return nil end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return data&#91;head + 1&#93;
&nbsp;&nbsp;&nbsp;&nbsp;end

&nbsp;&nbsp;&nbsp;&nbsp;--- Первый элемент (самый старый)
&nbsp;&nbsp;&nbsp;&nbsp;function buffer:first()
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if count == 0 then return nil end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local pos = (head - count + 1 + size) &#38; mask
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return data&#91;pos + 1&#93;
&nbsp;&nbsp;&nbsp;&nbsp;end

&nbsp;&nbsp;&nbsp;&nbsp;--- Количество элементов
&nbsp;&nbsp;&nbsp;&nbsp;function buffer:length()
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return count
&nbsp;&nbsp;&nbsp;&nbsp;end

&nbsp;&nbsp;&nbsp;&nbsp;--- Очистка буфера
&nbsp;&nbsp;&nbsp;&nbsp;function buffer:clear()
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;head = -1
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;count = 0
&nbsp;&nbsp;&nbsp;&nbsp;end

&nbsp;&nbsp;&nbsp;&nbsp;--- Итератор для цикла for (новые → старые)
&nbsp;&nbsp;&nbsp;&nbsp;function buffer:iter()
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local i = 0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return function()
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i = i + 1
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return buffer:get(i)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;end

&nbsp;&nbsp;&nbsp;&nbsp;--- Преобразование в таблицу (новые сначала)
&nbsp;&nbsp;&nbsp;&nbsp;function buffer:toTable()
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local t = {}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for i = 1, count do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t&#91;i&#93; = buffer:get(i)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return t
&nbsp;&nbsp;&nbsp;&nbsp;end

&nbsp;&nbsp;&nbsp;&nbsp;--- Проверка на заполненность
&nbsp;&nbsp;&nbsp;&nbsp;function buffer:isFull()
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return count == size
&nbsp;&nbsp;&nbsp;&nbsp;end

&nbsp;&nbsp;&nbsp;&nbsp;return buffer
end
</pre>
============= <br />
			<i>26.09.2025 13:36:31, VPM.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message79604/topic3287/</link>
			<guid>http://forum.quik.ru/messages/forum10/message79604/topic3287/</guid>
			<pubDate>Fri, 26 Sep 2025 13:36:31 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Ошибка при поиске пиков\впадин кастом индикатора</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message79603/topic3287/">Ошибка при поиске пиков\впадин кастом индикатора</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<a class="blog-p-user-name" id="bp_bJjgsoXB" href="/user/13952/" bx-tooltip-user-id="13952">TGB</a>, &nbsp;Да вы целиком правы, спасибо за уточнение! Производительность в Lua 5.4.1 реально зависит от использования встроенных операторов, и побитовая операция <B>&amp; </B>становится явным лидером, когда дело &nbsp;операций с числами, являющимися <B>степенями двойки</B>. <br />
			<i>26.09.2025 13:21:03, VPM.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message79603/topic3287/</link>
			<guid>http://forum.quik.ru/messages/forum10/message79603/topic3287/</guid>
			<pubDate>Fri, 26 Sep 2025 13:21:03 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Ошибка при поиске пиков\впадин кастом индикатора</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message79602/topic3287/">Ошибка при поиске пиков\впадин кастом индикатора</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_FNbjPU5t" href="/user/16131/" bx-tooltip-user-id="16131">VPM</a> написал:<br />bit.band — чистая побитовая операция на целых, выполняется через С-библиотеку, работает на порядок быстрее, особенно если много итераций.<br />=============<br /> &nbsp; &nbsp;Вы это проверяли?<br /> &nbsp; &nbsp;bit.band &nbsp; это вызов функции, в теле которой выполняется битовая операция "И". Сам вызов до начала выполнения тела функции это довольно тяжелая операция, выполняющаяся дольше любой арифметической операции.<br /> &nbsp; В Lua 5.4 соотношение длительности выполнения приблизительно следующее:<br /> &nbsp; 1) &nbsp;% &nbsp; = &nbsp;1<br /> &nbsp; 2) &nbsp;bit.band &nbsp;= 4,49<br /> &nbsp; 3) &nbsp;& (битовая операция "И" вместо bit.band , начиная c Lua &nbsp;5.3) = &nbsp;0,63 <br />
			<i>26.09.2025 12:24:05, TGB.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message79602/topic3287/</link>
			<guid>http://forum.quik.ru/messages/forum10/message79602/topic3287/</guid>
			<pubDate>Fri, 26 Sep 2025 12:24:05 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Ошибка при поиске пиков\впадин кастом индикатора</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message79601/topic3287/">Ошибка при поиске пиков\впадин кастом индикатора</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			«При 300% прибыли нет такого преступления, на которое не рискнул бы капитал» К. Маркс. <br /><br />И опять двойственность, или почему побитные операции 2^n предпочтительнее!<br /><br />В Lua оператор % — это остаток от деления (modulus). Он возвращает остаток от деления одного числа на другое. И остаток от деления на степень двойки можно сделать с помощью побитовой маски.<br />Если нам нужен остаток x % 2^n, то это равносильно тому, что мы обнуляем все биты выше n-го. Для этого используем побитовое И (bit.band):<br />bit.band — чистая побитовая операция на целых, выполняется через С-библиотеку, работает на порядок быстрее, особенно если много итераций.<br /><br />Этот метод работает только для делителей, являющихся степенью двойки 2^n (2, 4, 8, 16, …).<br /><br />* Если делитель — степень двойки, используем bit.band(x, 2^n - 1). Это и быстрее, и чище в контексте масок.<br />* Если делитель любой, лучше оставить обычный % или написать функцию на математику.<br /><br />В своей практике, вспомнив высказывание К. Маркса, тоже не удержался, и перевел кольцевой буфер на bit.band.<br />Кольцевой буфер как раз классический случай, где % заменяется на bit.band. И именно здесь ускорение становится реально заметным, потому что операция повторяется на каждом обращении к буферу. Простая замена оператора % (modulus) на bit.band приводит к приросту в скорости от 2 - 10 раз! Как здесь не вспомнить К. Маркса. <br />
			<i>26.09.2025 08:25:13, VPM.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message79601/topic3287/</link>
			<guid>http://forum.quik.ru/messages/forum10/message79601/topic3287/</guid>
			<pubDate>Fri, 26 Sep 2025 08:25:13 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Ошибка при поиске пиков\впадин кастом индикатора</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message79594/topic3287/">Ошибка при поиске пиков\впадин кастом индикатора</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_pLQgMfWD" href="/user/62/" bx-tooltip-user-id="62">nikolz</a> написал:<br />чтобы считал быстрее<br />=============<br /> &nbsp; Можете попробовать использовать ранее выложенный мной, но слегка модифицированный код индикатора Kijun-sen, который работает в ~20 раз быстрее, чем &nbsp;чем то, что выложил Roman Koledin:<br />
====code====
<pre>
Settings = {
&nbsp;&nbsp; Name = "*Kijun-sen",
&nbsp;&nbsp; kijun_period = 26,&nbsp;&nbsp;-- Период Kijun-sen (можно изменить)
&nbsp;&nbsp; line = {{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Name = "Kijun-sen",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Color = RGB(0, 0, 200),
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Type = TYPE_LINE,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Width = 2
&nbsp;&nbsp; }}
}

local kijun_period = Settings.kijun_period

local QueueH, QueueL = {}, {}
local const_L = 999999999

function Init()
&nbsp;&nbsp; QueueH, QueueL = {}, {}
&nbsp;&nbsp; for i = 0, kijun_period - 1 do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;QueueH&#91;i&#93; = 0; QueueL&#91;i&#93; = const_L
&nbsp;&nbsp; end
&nbsp;&nbsp; return 1 
end

function OnChangeSettings()
&nbsp;&nbsp; kijun_period = Settings.kijun_period 
&nbsp;&nbsp; QueueH, QueueL = {}, {}
&nbsp;&nbsp; for i = 0, kijun_period - 1 do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;QueueH&#91;i&#93; = 0; QueueL&#91;i&#93; = const_L
&nbsp;&nbsp; end
end
---
local TT
local N_C = 500
local max_high, min_low
function OnCalculate(index)
-- -- Вычисление времени обработки свеч&nbsp;&nbsp;(500 свечкй за ~4 млс. в 5 раз быстрее моего же *Kijun-sen_opt)--
-- if index == kijun_period + 1 then
&nbsp;&nbsp; -- TT = os.clock()
-- end
-- if index == N_C + kijun_period then
&nbsp;&nbsp; -- message('Kijun-sen. Время обработки ' .. N_C .. ' свечей (млс.) = ' .. (os.clock() - TT) * 1000)
-- end
-- -----------------------------------
&nbsp;&nbsp; if index == 1 then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;max_high = H(1) or 0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;min_low = L(1) or const_L
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;QueueH&#91;1&#93;, QueueL&#91;1&#93; = max_high, min_low
&nbsp;&nbsp; else
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;current_high = H(index) or 0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;current_low = L(index) or const_L
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local ind = index % kijun_period&nbsp;&nbsp;-- место в векторе --
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local QueueH_end 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local QueueL_end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if index &#62; kijun_period then&nbsp;&nbsp;-- сохранение уходящих значений --
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; QueueH_end = QueueH&#91;ind&#93;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; QueueL_end = QueueL&#91;ind&#93;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;QueueH&#91;ind&#93;, QueueL&#91;ind&#93; = current_high, current_low -- сохранение текущих в векторе --
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- --------
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if current_high &#62;= max_high then&nbsp;&nbsp;-- Пришел максимальный --
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; max_high = current_high
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if index &#62; kijun_period 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;if QueueH_end &#62;= max_high then -- поиск максимального в векторе 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; max_high = current_high
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for j = 0, kijun_period - 1 do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;current_high = QueueH&#91;j&#93;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if current_high &#62; max_high then max_high = current_high end
&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;end
&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;if current_low &#60;= min_low then&nbsp;&nbsp;-- Пришел минимальный
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; min_low = current_low
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if index &#62; kijun_period 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;if QueueL_end &#60;= min_low then -- поиск минимального
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; min_low = current_low
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for j = 0, kijun_period - 1 do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;current_low = QueueL&#91;j&#93;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if current_low &#60; min_low then min_low = current_low end
&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;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp; end
&nbsp;&nbsp; return (max_high + min_low) / 2
end
</pre>
============= <br />
			<i>25.09.2025 16:51:17, TGB.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message79594/topic3287/</link>
			<guid>http://forum.quik.ru/messages/forum10/message79594/topic3287/</guid>
			<pubDate>Thu, 25 Sep 2025 16:51:17 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Ошибка при поиске пиков\впадин кастом индикатора</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message79586/topic3287/">Ошибка при поиске пиков\впадин кастом индикатора</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_NUPsHpzA" href="/user/62/" bx-tooltip-user-id="62">nikolz</a> написал:<br />Если нравится, можете сказать "спасибо".<br />=============<br /> &nbsp;Этот индикатор не Kijun-sen.<br />Вы сравнивали его с исправленным, долго работающим индикатором пользователя Roman Koledin?<br />Это же делается просто. <br />
			<i>24.09.2025 12:58:19, TGB.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message79586/topic3287/</link>
			<guid>http://forum.quik.ru/messages/forum10/message79586/topic3287/</guid>
			<pubDate>Wed, 24 Sep 2025 12:58:19 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Ошибка при поиске пиков\впадин кастом индикатора</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message79583/topic3287/">Ошибка при поиске пиков\впадин кастом индикатора</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Оптимизировал алгоритм вычислений, чтобы считал быстрее.<br />Выкладываю для всех желающих:
====code====
<pre>Settings = {Name = "*Kijun-sen",kijun_period = 6,}

function OnCalculate(i)
&nbsp;&nbsp;&nbsp;Hi=H(i) or H1; Li=L(i) or L1; x1=x;
&nbsp;&nbsp;&nbsp;if i1&#62;i then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ma=Hi; mi=Li; jma=i; jmi=i;
&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;if Hi and Li then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local j=i-Settings.kijun_period; if j&#60;1 then j=1; end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if j&#62;jma or j&#62;jmi then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ma=Hi; mi=Li; jma=i; jmi=i;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while i&#62;j do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Hi,Li=H(j),L(j)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if Hi and Hi&#62;ma then ma = Hi jma=j; end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if Li and Li&#60;mi then&nbsp;&nbsp;mi =Li jmi=j;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j=j+1
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if Hi&#62;ma then ma=Hi; jma=i; end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if mi&#62;Li then mi=Li; jmi=i; end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x=(ma + mi)/2; &nbsp;&nbsp;&nbsp;H1,L1,i1=Hi,Li,i;
&nbsp;&nbsp;&nbsp;end
return x1
end

function OnChangeSettings()
&nbsp;&nbsp;&nbsp;i1=0;jma=0; jmi=0; H1=0; L1=0;ma=0;mi=0;
end

function Init()
OnChangeSettings()
Settings.line = {{ Name=Settings.Name, Color=RGB(32,255,128), Type=TYPE_LINE, Width = 2,}}
return #Settings.line&nbsp;&nbsp;end
</pre>
=============
Если нравится, можете сказать &quot;спасибо&quot;. <br />
			<i>23.09.2025 18:45:39, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message79583/topic3287/</link>
			<guid>http://forum.quik.ru/messages/forum10/message79583/topic3287/</guid>
			<pubDate>Tue, 23 Sep 2025 18:45:39 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Ошибка при поиске пиков\впадин кастом индикатора</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message79577/topic3287/">Ошибка при поиске пиков\впадин кастом индикатора</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			пардон, <br />последний вариант считает иначе, поэтому остается этот:
====code====
<pre>Settings = {
&nbsp;&nbsp; Name = "*Kijun-sen",
&nbsp;&nbsp;&nbsp;&nbsp;kijun_period = 15,
&nbsp;&nbsp; line = {{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Name = "Kijun-sen",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Color = RGB(255,255,255),
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Type = TYPE_LINE,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Width = 2,
&nbsp;&nbsp; }}
}

function Init()&nbsp;&nbsp;return 1&nbsp;&nbsp;end

function OnCalculate(i)
&nbsp;&nbsp;&nbsp;local Hi,Li=H(i),L(i);
&nbsp;&nbsp; if Hi and Li then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local j=i-Settings.kijun_period; if j&#60;1 then j=1; end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;max=Hi; min=Li;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while i&#62;j do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Hi,Li=H(j),L(j)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if Hi and Hi&#62;max then max = Hi&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if Li and Li&#60;min then&nbsp;&nbsp;min =Li end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j=j+1 end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x=(max + min)/2;
&nbsp;&nbsp; end
return x
end
</pre>
============= <br />
			<i>22.09.2025 12:42:45, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message79577/topic3287/</link>
			<guid>http://forum.quik.ru/messages/forum10/message79577/topic3287/</guid>
			<pubDate>Mon, 22 Sep 2025 12:42:45 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Ошибка при поиске пиков\впадин кастом индикатора</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message79576/topic3287/">Ошибка при поиске пиков\впадин кастом индикатора</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Оптимизированный вариант обычный, считает тоже самое, но быстрее:
====code====
<pre>Settings = {
&nbsp;&nbsp; Name = "*Kijun-sen",
&nbsp;&nbsp;&nbsp;&nbsp;kijun_period = 15,
&nbsp;&nbsp; line = {{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Name = "Kijun-sen",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Color = RGB(255,255,255),
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Type = TYPE_LINE,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Width = 2,
&nbsp;&nbsp; }}
}

function Init()&nbsp;&nbsp;return 1&nbsp;&nbsp;end

function OnCalculate(i)
&nbsp;&nbsp;&nbsp;local Hi,Li=H(i),L(i);
&nbsp;&nbsp;&nbsp;if Hi and Li then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if max==nil then max=Hi end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if min==nil then min=Li end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if Hi&#62;max or min&#62;Li then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local j=i-Settings.kijun_period; if j&#60;1 then j=1; end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;max=Hi; min=Li;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while i&#62;j do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local Hj,Lj=H(j),L(j)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if Hj and Hj&#62;max then max = Hj&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if Lj and Lj&#60;min then&nbsp;&nbsp;min =Lj end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j=j+1 end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x=(max + min)/2;
&nbsp;&nbsp; end
return x;
end</pre>
============= <br />
			<i>22.09.2025 12:34:07, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message79576/topic3287/</link>
			<guid>http://forum.quik.ru/messages/forum10/message79576/topic3287/</guid>
			<pubDate>Mon, 22 Sep 2025 12:34:07 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Ошибка при поиске пиков\впадин кастом индикатора</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message79574/topic3287/">Ошибка при поиске пиков\впадин кастом индикатора</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Если уж уделяете столько времени этому вопросу, то, наверно, стоит сделать устойчивый вариант. Ошибка же была о сравнении nil с числом.<br />А во всех предлагаемых реализациях нет проверок на наличие бара, полученных значений перед арифметикой, перехвата ошибок, чтобы Квик не умирал от потока сообщений об ошибках на графиках с 60 тыс барами и т.д. Даже если отбросить саму реализацию, то это все не рабочие решения. <br />
			<i>22.09.2025 11:49:20, Nikolay.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message79574/topic3287/</link>
			<guid>http://forum.quik.ru/messages/forum10/message79574/topic3287/</guid>
			<pubDate>Mon, 22 Sep 2025 11:49:20 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Ошибка при поиске пиков\впадин кастом индикатора</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message79573/topic3287/">Ошибка при поиске пиков\впадин кастом индикатора</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Это вариант как в задании:
====code====
<pre>Settings = {
&nbsp;&nbsp; Name = "*Kijun-sen",
&nbsp;&nbsp;&nbsp;&nbsp;kijun_period = 26,&nbsp;&nbsp;-- Период Kijun-sen (можно изменить)
&nbsp;&nbsp; line = {{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Name = "Kijun-sen",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Color = RGB(0,255,255),
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Type = TYPE_LINE,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Width = 2,
&nbsp;&nbsp; }}
}

function Init()&nbsp;&nbsp;return 1 end

function OnCalculate(i)
&nbsp;&nbsp;&nbsp;if H(i) and L(i) then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local j=i-Settings.kijun_period; if j&#60;1 then j=1; end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;max=H(i); min=L(i);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while i&#62;j do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local H,L=H(j),L(j)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if H and H&#62;max then max = H&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if L and L&#60;min then&nbsp;&nbsp;min =L end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j=j+1 end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return (max + min)/2;
&nbsp;&nbsp; end
end
</pre>
============= <br />
			<i>22.09.2025 11:42:59, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message79573/topic3287/</link>
			<guid>http://forum.quik.ru/messages/forum10/message79573/topic3287/</guid>
			<pubDate>Mon, 22 Sep 2025 11:42:59 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Ошибка при поиске пиков\впадин кастом индикатора</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message79572/topic3287/">Ошибка при поиске пиков\впадин кастом индикатора</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			попробуйте так (проверил)
====code====
<pre>Settings = {
&nbsp;&nbsp; Name = "*Kijun-sen",
&nbsp;&nbsp;&nbsp;&nbsp;kijun_period = 26,&nbsp;&nbsp;-- Период Kijun-sen (можно изменить)
&nbsp;&nbsp; line = {{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Name = "Kijun-sen",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Color = RGB(0, 0, 255),
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Type = TYPE_LINE,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Width = 2,
&nbsp;&nbsp; }}
}

function Init()&nbsp;&nbsp;return 1 end

function OnCalculate(i)
&nbsp;&nbsp;&nbsp;high = H(i) low = L(i)
&nbsp;&nbsp;&nbsp;if high and low then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if i==1 then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;max = H(1)&nbsp;&nbsp;min = L(1)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if i%Settings.kijun_period==0 then&nbsp;&nbsp;max = high; min =low end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if high &#62; max then max = high&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if low &#60; min then&nbsp;&nbsp;min = low&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;return (max + min)/2;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp; end
end</pre>
============= <br />
			<i>22.09.2025 11:17:26, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message79572/topic3287/</link>
			<guid>http://forum.quik.ru/messages/forum10/message79572/topic3287/</guid>
			<pubDate>Mon, 22 Sep 2025 11:17:26 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Ошибка при поиске пиков\впадин кастом индикатора</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message79571/topic3287/">Ошибка при поиске пиков\впадин кастом индикатора</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			исправит ошибку надо так:
====code====
<pre>Settings = {
&nbsp;&nbsp; Name = "*Kijun-sen",
&nbsp;&nbsp; kijun_period = 26,&nbsp;&nbsp;-- Период Kijun-sen (можно изменить)
&nbsp;&nbsp; line = {{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Name = "Kijun-sen",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Color = RGB(0, 0, 255),
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Type = TYPE_LINE,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Width = 2,

&nbsp;&nbsp; }}
}
</pre>
============= <br />
			<i>22.09.2025 11:02:00, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message79571/topic3287/</link>
			<guid>http://forum.quik.ru/messages/forum10/message79571/topic3287/</guid>
			<pubDate>Mon, 22 Sep 2025 11:02:00 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Ошибка при поиске пиков\впадин кастом индикатора</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message79570/topic3287/">Ошибка при поиске пиков\впадин кастом индикатора</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_4vGGVcMX" href="/user/13952/" bx-tooltip-user-id="13952">TGB</a> написал:<br /> <br />====quote====<br /><noindex><a href="/user/62/" target="_blank" rel="nofollow">nikolz</a></noindex> написал:<br />попробуйте так:<br />=============<br /> &nbsp; Вы проверяли то, что предлагаете?<br />1. В строке<br /> <br />====quote====<br /><noindex><a href="/user/62/" target="_blank" rel="nofollow">nikolz</a></noindex> написал:<br />if i%Settings.kijun_period==0 then &nbsp;max_high = H(i); min_low = L(i) end<br />=============<br /> ошибка, так как Settings.kijun_period = nil.<br />2. Вместо скользящей вами предлагается &quot;прыгающая&quot; :: . Начальные значения каждого периода берутся в качестве экстремумов. Но может быть вы предлагаете свой прыгающий индикатор?<br />-----------<br /> &nbsp; &nbsp;Ниже выложен код реализации индикатора Kijun-sen приблизительно в 3,5 раза более эффективный по времени выполнения, чем то, что выложил Roman Koledin:<br /> 
====code====
<pre>&nbsp;&nbsp;Settings&nbsp;&nbsp;=&nbsp;&nbsp;{
&nbsp;&nbsp; Name&nbsp;&nbsp;=&nbsp;&nbsp; "*Kijun-sen_opt" ,
&nbsp;&nbsp; kijun_period&nbsp;&nbsp;=&nbsp;&nbsp; 26 ,&nbsp;&nbsp; -- Период Kijun-sen (можно изменить) 
&nbsp;&nbsp; line&nbsp;&nbsp;=&nbsp;&nbsp;{{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Name&nbsp;&nbsp;=&nbsp;&nbsp; "Kijun-sen_opt" ,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Color&nbsp;&nbsp;=&nbsp;&nbsp; RGB ( 0 ,&nbsp;&nbsp;0 ,&nbsp;&nbsp;200 ),
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Type&nbsp;&nbsp;=&nbsp;&nbsp;TYPE_LINE,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Width&nbsp;&nbsp;=&nbsp;&nbsp; 2 
&nbsp;&nbsp; }}
}

 function&nbsp;&nbsp; Init ()&nbsp;&nbsp; return&nbsp;&nbsp; 1&nbsp;&nbsp; end 

 local&nbsp;&nbsp;kijun_period&nbsp;&nbsp;=&nbsp;&nbsp;Settings.kijun_period

 function&nbsp;&nbsp; OnChangeSettings ()
&nbsp;&nbsp; kijun_period&nbsp;&nbsp;=&nbsp;&nbsp;Settings.kijun_period 
 end 
 --- 
 local&nbsp;&nbsp;TT
 local&nbsp;&nbsp;N_C&nbsp;&nbsp;=&nbsp;&nbsp; 500 
 function&nbsp;&nbsp; OnCalculate (index)
 -- -- Вычисление времени обработки свеч -- 
 -- if index == kijun_period + 1 then 
&nbsp;&nbsp;&nbsp;&nbsp;-- TT = os.clock() 
 -- end 
 -- if index == N_C + kijun_period then 
&nbsp;&nbsp;&nbsp;&nbsp;-- message('Kijun-sen. Время обработки ' .. N_C .. ' свечей (млс.) = ' .. (os.clock() - TT) * 1000) 
 -- end 
&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;&nbsp;index =&nbsp;&nbsp;=&nbsp;&nbsp;1&nbsp;&nbsp; then 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;max_high&nbsp;&nbsp;=&nbsp;&nbsp;H( 1 )
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;min_low&nbsp;&nbsp;=&nbsp;&nbsp;L( 1 )
&nbsp;&nbsp;&nbsp;&nbsp;else 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;current_high&nbsp;&nbsp;=&nbsp;&nbsp;H(index)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;current_low&nbsp;&nbsp;=&nbsp;&nbsp;L(index)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -------- 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if&nbsp;&nbsp;current_high&nbsp;&nbsp;&#62;&nbsp;&nbsp;max_high&nbsp;&nbsp;then&nbsp;&nbsp;&nbsp;&nbsp;-- Пришел максимальный 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; max_high&nbsp;&nbsp;=&nbsp;&nbsp;current_high
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;&nbsp;index&nbsp;&nbsp;&#62;&nbsp;&nbsp;kijun_period&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; if&nbsp;&nbsp;H(index&nbsp;&nbsp;-&nbsp;&nbsp;kijun_period)&nbsp;&nbsp;&#62;&nbsp;&nbsp;=&nbsp;&nbsp;max_high&nbsp;&nbsp;then&nbsp;&nbsp; -- поиск максимального 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; max_high&nbsp;&nbsp;=&nbsp;&nbsp;current_high
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;&nbsp;j&nbsp;&nbsp;=&nbsp;&nbsp;index&nbsp;&nbsp;-&nbsp;&nbsp;kijun_period&nbsp;&nbsp;+&nbsp;&nbsp; 1 , index&nbsp;&nbsp;-&nbsp;&nbsp; 1&nbsp;&nbsp; do 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;current_high&nbsp;&nbsp;=&nbsp;&nbsp;H(j)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if&nbsp;&nbsp;current_high&nbsp;&nbsp;&#62;&nbsp;&nbsp;max_high&nbsp;&nbsp;then&nbsp;&nbsp;max_high&nbsp;&nbsp;=&nbsp;&nbsp;current_high&nbsp;&nbsp;end 
&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; end 
&nbsp;&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; if&nbsp;&nbsp;current_low&nbsp;&nbsp;&#60;&nbsp;&nbsp;min_low&nbsp;&nbsp;then&nbsp;&nbsp;&nbsp;&nbsp;-- Пришел минимальный 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; min_low&nbsp;&nbsp;=&nbsp;&nbsp;current_low
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;&nbsp;index&nbsp;&nbsp;&#62;&nbsp;&nbsp;kijun_period&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; if&nbsp;&nbsp;L(index&nbsp;&nbsp;-&nbsp;&nbsp;kijun_period)&nbsp;&nbsp;&#60;&nbsp;&nbsp;=&nbsp;&nbsp;min_low&nbsp;&nbsp;then&nbsp;&nbsp; -- поиск минимального 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; min_low&nbsp;&nbsp;=&nbsp;&nbsp;current_low
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;&nbsp;j&nbsp;&nbsp;=&nbsp;&nbsp;index&nbsp;&nbsp;-&nbsp;&nbsp;kijun_period&nbsp;&nbsp;+&nbsp;&nbsp; 1 , index&nbsp;&nbsp;-&nbsp;&nbsp; 1&nbsp;&nbsp; do 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;current_low&nbsp;&nbsp;=&nbsp;&nbsp;L(j)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if&nbsp;&nbsp;current_low&nbsp;&nbsp;&#60;&nbsp;&nbsp;min_low&nbsp;&nbsp;then&nbsp;&nbsp;min_low&nbsp;&nbsp;=&nbsp;&nbsp;current_low&nbsp;&nbsp;end 
&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; end 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end 
&nbsp;&nbsp;&nbsp;&nbsp;end 
&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;&nbsp;(max_high&nbsp;&nbsp;+&nbsp;&nbsp;min_low) /&nbsp;&nbsp;2 
 end 
&nbsp;&nbsp;</pre>
=============
 <br />=============<br />нет не проверял. Да именно прыгающий. Я же написал - попробуйте это. Как другой вариант, который работает быстрее. <br />
			<i>22.09.2025 10:57:42, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message79570/topic3287/</link>
			<guid>http://forum.quik.ru/messages/forum10/message79570/topic3287/</guid>
			<pubDate>Mon, 22 Sep 2025 10:57:42 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Ошибка при поиске пиков\впадин кастом индикатора</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message79569/topic3287/">Ошибка при поиске пиков\впадин кастом индикатора</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_qiKcJlAa" href="/user/62/" bx-tooltip-user-id="62">nikolz</a> написал:<br />попробуйте так:<br />=============<br /> &nbsp;Вы проверяли то, что предлагаете?<br />1. В строке<br /><br />====quote====<br /><a class="blog-p-user-name" id="bp_7iWmXAGD" href="/user/62/" bx-tooltip-user-id="62">nikolz</a> написал:<br />if i%Settings.kijun_period==0 then &nbsp;max_high = H(i); min_low = L(i) end<br />=============<br />ошибка, так как Settings.kijun_period = nil.<br />2. Вместо скользящей вами предлагается &quot;прыгающая&quot; <img src="http://forum.quik.ru/upload/main/smiles/5/icon_smile.png" border="0" data-code=":smile:" data-definition="SD" alt=":smile:" style="width:16px;height:16px;" title="С улыбкой" class="bx-smile" /> . Начальные значения каждого периода берутся в качестве экстремумов. Но может быть вы предлагаете свой прыгающий индикатор?<br />-----------<br /> &nbsp; &nbsp;Ниже выложен код реализации индикатора Kijun-sen приблизительно в 3,5 раза более эффективный по времени выполнения, чем то, что выложил Roman Koledin:<br />
====code====
<pre>
Settings = {
&nbsp;&nbsp; Name = "*Kijun-sen_opt",
&nbsp;&nbsp; kijun_period = 26,&nbsp;&nbsp;-- Период Kijun-sen (можно изменить)
&nbsp;&nbsp; line = {{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Name = "Kijun-sen_opt",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Color = RGB(0, 0, 200),
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Type = TYPE_LINE,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Width = 2
&nbsp;&nbsp; }}
}

function Init()&nbsp;&nbsp;return 1 end

local kijun_period = Settings.kijun_period

function OnChangeSettings()
&nbsp;&nbsp; kijun_period = Settings.kijun_period 
end
---
local TT
local N_C = 500
function OnCalculate(index)
-- -- Вычисление времени обработки свеч --
-- if index == kijun_period + 1 then
&nbsp;&nbsp; -- TT = os.clock()
-- end
-- if index == N_C + kijun_period then
&nbsp;&nbsp; -- message('Kijun-sen. Время обработки ' .. N_C .. ' свечей (млс.) = ' .. (os.clock() - TT) * 1000)
-- end
&nbsp;&nbsp; if index==1 then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;max_high = H(1)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;min_low = L(1)
&nbsp;&nbsp; else
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;current_high = H(index)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;current_low = L(index)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--------
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if current_high &#62; max_high then&nbsp;&nbsp;-- Пришел максимальный
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; max_high = current_high
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if index &#62; kijun_period 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;if H(index - kijun_period) &#62;= max_high then -- поиск максимального
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; max_high = current_high
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for j = index - kijun_period + 1, index - 1 do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;current_high = H(j)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if current_high &#62; max_high then max_high = current_high end
&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;end
&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;if current_low &#60; min_low then&nbsp;&nbsp;-- Пришел минимальный
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; min_low = current_low
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if index &#62; kijun_period 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;if L(index - kijun_period) &#60;= min_low then -- поиск минимального
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; min_low = current_low
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for j = index - kijun_period + 1, index - 1 do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;current_low = L(j)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if current_low &#60; min_low then min_low = current_low end
&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;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp; end
&nbsp;&nbsp; return (max_high + min_low) / 2
end
</pre>
============= <br />
			<i>22.09.2025 10:12:08, TGB.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message79569/topic3287/</link>
			<guid>http://forum.quik.ru/messages/forum10/message79569/topic3287/</guid>
			<pubDate>Mon, 22 Sep 2025 10:12:08 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Ошибка при поиске пиков\впадин кастом индикатора</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message79567/topic3287/">Ошибка при поиске пиков\впадин кастом индикатора</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_B16H834A" href="/user/14695/" bx-tooltip-user-id="14695">Roman Koledin</a> написал:<br />простите таже проблема можете помочь её исправить<br />вод код <br /><br /><br />Settings = {<br /> &nbsp; &nbsp;Name = &quot;*Kijun-sen&quot;,<br /> &nbsp; &nbsp;line = {{<br /> &nbsp; &nbsp; &nbsp; &nbsp;Name = &quot;Kijun-sen&quot;,<br /> &nbsp; &nbsp; &nbsp; &nbsp;Color = RGB(0, 0, 255),<br /> &nbsp; &nbsp; &nbsp; &nbsp;Type = TYPE_LINE,<br /> &nbsp; &nbsp; &nbsp; &nbsp;Width = 2<br /> &nbsp; &nbsp;}}<br />}<br /><br />function Init()<br /> &nbsp; &nbsp;return 1<br />end<br /><br />local kijun_period = 26 &nbsp;-- Период Kijun-sen (можно изменить)<br /><br />function OnCalculate(index)<br /> &nbsp; &nbsp;-- Проверяем, достаточно ли данных для расчета<br /> &nbsp; &nbsp;if index &lt; kijun_period - 1 then<br /> &nbsp; &nbsp; &nbsp; &nbsp;return nil<br /> &nbsp; &nbsp;end<br /> &nbsp; &nbsp;<br /> &nbsp; &nbsp;-- Инициализация переменных для экстремумов<br /> &nbsp; &nbsp;local max_high = H(index - kijun_period + 1)<br /> &nbsp; &nbsp;local min_low = L(index - kijun_period + 1)<br /> &nbsp; &nbsp;<br /> &nbsp; &nbsp;-- Поиск максимума и минимума за период<br /> &nbsp; &nbsp;for i = index - kijun_period + 2, index do<br /> &nbsp; &nbsp; &nbsp; &nbsp;local current_high = H(i)<br /> &nbsp; &nbsp; &nbsp; &nbsp;local current_low = L(i)<br /> &nbsp; &nbsp; &nbsp; &nbsp;<br /> &nbsp; &nbsp; &nbsp; &nbsp;if current_high &gt; max_high then<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;max_high = current_high<br /> &nbsp; &nbsp; &nbsp; &nbsp;end<br /> &nbsp; &nbsp; &nbsp; &nbsp;<br /> &nbsp; &nbsp; &nbsp; &nbsp;if current_low &lt; min_low then<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;min_low = current_low<br /> &nbsp; &nbsp; &nbsp; &nbsp;end<br /> &nbsp; &nbsp;end<br /> &nbsp; &nbsp;<br /> &nbsp; &nbsp;-- Расчет Kijun-sen<br /> &nbsp; &nbsp;return (max_high + min_low) / 2<br />end<br />=============<br />попробуйте так:
====code====
<pre>Settings = {
&nbsp;&nbsp; Name = "*Kijun-sen",
&nbsp;&nbsp; line = {{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Name = "Kijun-sen",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Color = RGB(0, 0, 255),
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Type = TYPE_LINE,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Width = 2,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kijun_period = 26&nbsp;&nbsp;-- Период Kijun-sen (можно изменить)
&nbsp;&nbsp; }}
}

function Init()&nbsp;&nbsp;return 1 end

function OnCalculate(i)
&nbsp;&nbsp; if i==1 then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; max_high = H(1)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; min_low = L(1)
&nbsp;&nbsp; else
&nbsp;&nbsp;&nbsp;if i%Settings.kijun_period==0 then&nbsp;&nbsp;max_high = H(i); min_low = L(i) end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; current_high = H(i)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; current_low = L(i)
&nbsp;&nbsp; -- Поиск максимума и минимума за период
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if current_high &#62; max_high then max_high = current_high&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if current_low &#60; min_low then&nbsp;&nbsp;min_low = current_low&nbsp;&nbsp;&nbsp;&nbsp; end
&nbsp;&nbsp;&nbsp;-- Расчет Kijun-sen
&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp; return (max_high + min_low) / 2
end
</pre>
============= <br />
			<i>21.09.2025 15:46:36, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message79567/topic3287/</link>
			<guid>http://forum.quik.ru/messages/forum10/message79567/topic3287/</guid>
			<pubDate>Sun, 21 Sep 2025 15:46:36 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Ошибка при поиске пиков\впадин кастом индикатора</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message79566/topic3287/">Ошибка при поиске пиков\впадин кастом индикатора</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_mbi3XwLz" href="/user/13952/" bx-tooltip-user-id="13952">TGB</a> написал:<br />Надо: if index &lt; kijun_period - 1 then<br />=============<br />Не убрал 1. Должно: &nbsp;if index &lt; kijun_period &nbsp;then <br />
			<i>21.09.2025 12:30:32, TGB.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message79566/topic3287/</link>
			<guid>http://forum.quik.ru/messages/forum10/message79566/topic3287/</guid>
			<pubDate>Sun, 21 Sep 2025 12:30:32 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Ошибка при поиске пиков\впадин кастом индикатора</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message79565/topic3287/">Ошибка при поиске пиков\впадин кастом индикатора</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_KAQKXx4s" href="/user/14695/" bx-tooltip-user-id="14695">Roman Koledin</a> написал:<br />if index &lt; kijun_period - 1 then<br />=============<br />Надо: if index &lt; kijun_period - 1 then. &nbsp; index начинается с 1. <br />
			<i>21.09.2025 12:27:38, TGB.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message79565/topic3287/</link>
			<guid>http://forum.quik.ru/messages/forum10/message79565/topic3287/</guid>
			<pubDate>Sun, 21 Sep 2025 12:27:38 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Ошибка при поиске пиков\впадин кастом индикатора</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message79559/topic3287/">Ошибка при поиске пиков\впадин кастом индикатора</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			простите таже проблема можете помочь её исправить<br />вод код <br /><br /><br />Settings = {<br /> &nbsp; &nbsp;Name = &quot;*Kijun-sen&quot;,<br /> &nbsp; &nbsp;line = {{<br /> &nbsp; &nbsp; &nbsp; &nbsp;Name = &quot;Kijun-sen&quot;,<br /> &nbsp; &nbsp; &nbsp; &nbsp;Color = RGB(0, 0, 255),<br /> &nbsp; &nbsp; &nbsp; &nbsp;Type = TYPE_LINE,<br /> &nbsp; &nbsp; &nbsp; &nbsp;Width = 2<br /> &nbsp; &nbsp;}}<br />}<br /><br />function Init()<br /> &nbsp; &nbsp;return 1<br />end<br /><br />local kijun_period = 26 &nbsp;-- Период Kijun-sen (можно изменить)<br /><br />function OnCalculate(index)<br /> &nbsp; &nbsp;-- Проверяем, достаточно ли данных для расчета<br /> &nbsp; &nbsp;if index &lt; kijun_period - 1 then<br /> &nbsp; &nbsp; &nbsp; &nbsp;return nil<br /> &nbsp; &nbsp;end<br /> &nbsp; &nbsp;<br /> &nbsp; &nbsp;-- Инициализация переменных для экстремумов<br /> &nbsp; &nbsp;local max_high = H(index - kijun_period + 1)<br /> &nbsp; &nbsp;local min_low = L(index - kijun_period + 1)<br /> &nbsp; &nbsp;<br /> &nbsp; &nbsp;-- Поиск максимума и минимума за период<br /> &nbsp; &nbsp;for i = index - kijun_period + 2, index do<br /> &nbsp; &nbsp; &nbsp; &nbsp;local current_high = H(i)<br /> &nbsp; &nbsp; &nbsp; &nbsp;local current_low = L(i)<br /> &nbsp; &nbsp; &nbsp; &nbsp;<br /> &nbsp; &nbsp; &nbsp; &nbsp;if current_high &gt; max_high then<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;max_high = current_high<br /> &nbsp; &nbsp; &nbsp; &nbsp;end<br /> &nbsp; &nbsp; &nbsp; &nbsp;<br /> &nbsp; &nbsp; &nbsp; &nbsp;if current_low &lt; min_low then<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;min_low = current_low<br /> &nbsp; &nbsp; &nbsp; &nbsp;end<br /> &nbsp; &nbsp;end<br /> &nbsp; &nbsp;<br /> &nbsp; &nbsp;-- Расчет Kijun-sen<br /> &nbsp; &nbsp;return (max_high + min_low) / 2<br />end <br />
			<img src="https://forum.quik.ru/bitrix/components/bitrix/forum.interface/show_file.php?fid=12721&" width="974" height="642" /><br /><i>20.09.2025 14:04:59, Roman Koledin.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message79559/topic3287/</link>
			<guid>http://forum.quik.ru/messages/forum10/message79559/topic3287/</guid>
			<pubDate>Sat, 20 Sep 2025 14:04:59 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Ошибка при поиске пиков\впадин кастом индикатора</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message28346/topic3287/">Ошибка при поиске пиков\впадин кастом индикатора</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_1m473rk1" href="/user/17/" bx-tooltip-user-id="17">Sergey Gorokhov</a> написал:<br /><br />====quote====<br /> Sergey Gorokhov &nbsp; написал:<br />if i&gt;4 then<br /><br />=============<br />Имелось ввиду конечно же<br />if i&gt;=4 then<br />=============<br /><br />и все-таки правильно if i&gt;4 then<br />т.к. в первом условии if _ARG_0_ &gt;1 then, а не if _ARG_0_ &gt;=1 then <br />
			<i>21.12.2017 11:52:48, Sergey Gorokhov.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message28346/topic3287/</link>
			<guid>http://forum.quik.ru/messages/forum10/message28346/topic3287/</guid>
			<pubDate>Thu, 21 Dec 2017 11:52:48 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Ошибка при поиске пиков\впадин кастом индикатора</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message28345/topic3287/">Ошибка при поиске пиков\впадин кастом индикатора</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_uih5TX2s" href="/user/2021/" bx-tooltip-user-id="2021">torque</a> написал:<br />Но ведь выше в начале цикла есть присвоение переменной i номера текущего бара. <br />=============<br /><br />ну да, а если будет когда появится второй бар?<br /><br />_ARG_0_ = 2<br />...<br /><br /> &nbsp;if _ARG_0_ &gt; 1 then<br /> &nbsp; &nbsp;if _ARG_0_ &gt; i then<br /> &nbsp; &nbsp; &nbsp;i = _ARG_0_<br /> &nbsp; &nbsp; &nbsp;kalman[i] = value<br /> &nbsp; &nbsp; &nbsp;if kalman[i-1] &lt; kalman[i-2] and kalman[i-2] &gt;= kalman[i-3] then<br /><br />чему будет равно kalman[i-2]? а  kalman[i-3]? <br /><br />====quote====<br /><a class="blog-p-user-name" id="bp_wORSQQMJ" href="/user/2021/" bx-tooltip-user-id="2021">torque</a> написал:<br />По поводу &gt;=4 попробовал, ничего не изменилось<br /><br />=============<br /><br />Надо не "пробовать", а исправлять и если не помогло смотреть дальше.<br />Что попадает в kalman и что в i, перед возникновением ошибки.<br />И действительно ли на предыдущих итерациях заполнялись нужные параметры kalman[i-1], kalman[i-2], kalman[i-3] <br /><br /><br />Добавьте логирование этих данных, например через message. <br />
			<i>21.12.2017 11:39:22, Sergey Gorokhov.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message28345/topic3287/</link>
			<guid>http://forum.quik.ru/messages/forum10/message28345/topic3287/</guid>
			<pubDate>Thu, 21 Dec 2017 11:39:22 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Ошибка при поиске пиков\впадин кастом индикатора</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message28344/topic3287/">Ошибка при поиске пиков\впадин кастом индикатора</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Странно именно то, что когда пик или впадина образуется, то сообщение выводится корректно и ошибки нет. Ошибка возникает только когда условие <br />if kalman&#91;i-1&#93; &lt; kalman&#91;i-2&#93; and kalman&#91;i-2&#93; &gt;= kalman&#91;i-3&#93; then <br />или <br />if kalman&#91;i-1&#93; &gt; kalman&#91;i-2&#93; and kalman&#91;i-2&#93; &lt;= kalman&#91;i-3&#93; then <br />не выполняется. <br />
			<i>21.12.2017 11:35:59, torque.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message28344/topic3287/</link>
			<guid>http://forum.quik.ru/messages/forum10/message28344/topic3287/</guid>
			<pubDate>Thu, 21 Dec 2017 11:35:59 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Ошибка при поиске пиков\впадин кастом индикатора</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message28343/topic3287/">Ошибка при поиске пиков\впадин кастом индикатора</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Но ведь выше в начале цикла есть присвоение переменной i номера текущего бара. По поводу &gt;=4 попробовал, ничего не изменилось<br /><br />if _ARG_0_ &gt;=4 then<br /> &nbsp; &nbsp;if _ARG_0_ &gt; i then<br /> &nbsp; &nbsp; &nbsp;i = _ARG_0_ <br />
			<i>21.12.2017 11:23:24, torque.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message28343/topic3287/</link>
			<guid>http://forum.quik.ru/messages/forum10/message28343/topic3287/</guid>
			<pubDate>Thu, 21 Dec 2017 11:23:24 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Ошибка при поиске пиков\впадин кастом индикатора</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message28342/topic3287/">Ошибка при поиске пиков\впадин кастом индикатора</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_68LD4mGd" href="/user/17/" bx-tooltip-user-id="17">Sergey Gorokhov</a> написал:<br />if i&gt;4 then<br /><br />=============<br />Имелось ввиду конечно же<br />if i&gt;=4 then <br />
			<i>21.12.2017 10:39:24, Sergey Gorokhov.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message28342/topic3287/</link>
			<guid>http://forum.quik.ru/messages/forum10/message28342/topic3287/</guid>
			<pubDate>Thu, 21 Dec 2017 10:39:24 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Ошибка при поиске пиков\впадин кастом индикатора</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message28341/topic3287/">Ошибка при поиске пиков\впадин кастом индикатора</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<a class="blog-p-user-name" id="bp_nHDgHt9O" href="/user/2021/" bx-tooltip-user-id="2021">torque</a>, <br /><br />Как минимум, уже ошибка в том что Вы берете значения kalman[i-1], kalman[i-2], kalman[i-3] тогда когда их может не быть.<br />раз i это номер свечки, следует добавить условие <br />if i&gt;4 then<br />и только после этого продолжать код. <br />
			<i>21.12.2017 10:27:14, Sergey Gorokhov.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message28341/topic3287/</link>
			<guid>http://forum.quik.ru/messages/forum10/message28341/topic3287/</guid>
			<pubDate>Thu, 21 Dec 2017 10:27:14 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Ошибка при поиске пиков\впадин кастом индикатора</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message28340/topic3287/">Ошибка при поиске пиков\впадин кастом индикатора</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Строки с ошибкой<br />if kalman&#91;i-1&#93; &lt; kalman&#91;i-2&#93; and kalman&#91;i-2&#93; &gt;= kalman&#91;i-3&#93; then <br />или<br />if kalman&#91;i-1&#93; &gt; kalman&#91;i-2&#93; and kalman&#91;i-2&#93; &lt;= kalman&#91;i-3&#93; then <br /><br />Инструмент любой. <br />
			<i>21.12.2017 09:24:23, torque.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message28340/topic3287/</link>
			<guid>http://forum.quik.ru/messages/forum10/message28340/topic3287/</guid>
			<pubDate>Thu, 21 Dec 2017 09:24:23 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Ошибка при поиске пиков\впадин кастом индикатора</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message28335/topic3287/">Ошибка при поиске пиков\впадин кастом индикатора</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_AngNmPLX" href="/user/2021/" bx-tooltip-user-id="2021">torque</a> написал:<br />attempt to compare number with nil <br />=============<br />В тексте ошибки должен быть номер строки на которую она ссылается.<br />Кроме того, уточните на какой инструмент накладывается индикатор. <br />
			<i>20.12.2017 15:47:21, Sergey Gorokhov.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message28335/topic3287/</link>
			<guid>http://forum.quik.ru/messages/forum10/message28335/topic3287/</guid>
			<pubDate>Wed, 20 Dec 2017 15:47:21 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Ошибка при поиске пиков\впадин кастом индикатора</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message28332/topic3287/">Ошибка при поиске пиков\впадин кастом индикатора</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Не пойму, в чем проблема..<br />Выдает ошибку <B>attempt to compare number with nil</B> когда индикатор растет или падает и не обнаруживает пиков\впадин<br />При успешном обнаружении пика\впадины выдает текстовое сообщение как положено<br />Код:<br /><br />require(&quot;w32&quot;)<br />Settings = {<br /> &nbsp;Tiker = &quot;\210\232\234\229\240&quot;,<br /> &nbsp;Name = &quot;Kalman SndMsg&quot;,<br /> &nbsp;Mode = 6,<br /> &nbsp;KF = 50,<br /> &nbsp;line = {<br /> &nbsp; &nbsp;{<br /> &nbsp; &nbsp; &nbsp;Name = &quot;Kalman&quot;,<br /> &nbsp; &nbsp; &nbsp;Color = RGB(0, 255, 0),<br /> &nbsp; &nbsp; &nbsp;Type = TYPE_LINE,<br /> &nbsp; &nbsp; &nbsp;Width = 2<br /> &nbsp; &nbsp;}<br /> &nbsp;}<br />}<br />function Init()<br /> &nbsp;return 1<br />end<br />i = 0<br />value = 0<br />count = 0<br />function OnCalculate(_ARG_0_)<br /> &nbsp;if _ARG_0_ == 1 then<br /> &nbsp; &nbsp;kalman ={}<br /> &nbsp; &nbsp;Distance = 0<br /> &nbsp; &nbsp;Error = 0<br /> &nbsp; &nbsp;value = dValue(1, Settings.Mode)<br /> &nbsp; &nbsp;Velocity = 0<br /> &nbsp; &nbsp;i = 0<br /> &nbsp; &nbsp;count = Size()<br /> &nbsp;end<br /> &nbsp;if _ARG_0_ &gt; 1 then<br /> &nbsp; &nbsp;if _ARG_0_ &gt; i then<br /> &nbsp; &nbsp; &nbsp;i = _ARG_0_<br /> &nbsp; &nbsp; &nbsp;Distance = dValue(i, Settings.Mode) - value<br /> &nbsp; &nbsp; &nbsp;Error = value + Distance * math.sqrt(Settings.KF / 1000)<br /> &nbsp; &nbsp; &nbsp;Velocity = Velocity + Distance * (Settings.KF / 1000)<br /> &nbsp; &nbsp; &nbsp;value = Error + Velocity<br /> &nbsp; &nbsp; &nbsp;kalman&#91;i&#93; = value<br /> &nbsp; &nbsp; &nbsp;<br /> &nbsp; &nbsp; &nbsp;<B>if kalman&#91;i-1&#93; &lt; kalman&#91;i-2&#93; and kalman&#91;i-2&#93; &gt;= kalman&#91;i-3&#93; then</B><br /><B> &nbsp; &nbsp; &nbsp; &nbsp;if _ARG_0_ &gt;= count then</B><br /><B> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;message(Settings.Tiker .. &quot;: DOWN trend&quot;, 1)</B><br /><B> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;w32.MessageBeep(w32.MB_OK)</B><br /><B> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;count = _ARG_0_</B><br /><B> &nbsp; &nbsp; &nbsp; &nbsp;end</B><br /><B> &nbsp; &nbsp; &nbsp;end</B><br /><br /><B> &nbsp; &nbsp; &nbsp;if kalman&#91;i-1&#93; &gt; kalman&#91;i-2&#93; and kalman&#91;i-2&#93; &lt;= kalman&#91;i-3&#93; then</B><br /><B> &nbsp; &nbsp; &nbsp; &nbsp;if _ARG_0_ &gt;= count then</B><br /><B> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;message(Settings.Tiker .. &quot;: UP trend&quot;, 1)</B><br /><B> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;w32.MessageBeep(w32.MB_OK)</B><br /><B> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;count = _ARG_0_</B><br /><B> &nbsp; &nbsp; &nbsp; &nbsp;end</B><br /><B> &nbsp; &nbsp; &nbsp;end</B><br /> &nbsp; &nbsp; &nbsp;<br /> &nbsp; &nbsp;end<br /> &nbsp;end<br />return kalman&#91;i&#93; &nbsp;<br />end<br /><br />function dValue(_ARG_0_, _ARG_1_)<br /> &nbsp;if (_ARG_1_ or 0) == 1 then<br /> &nbsp; &nbsp;return O(_ARG_0_)<br /> &nbsp;elseif (_ARG_1_ or 0) == 2 then<br /> &nbsp; &nbsp;return H(_ARG_0_)<br /> &nbsp;elseif (_ARG_1_ or 0) == 3 then<br /> &nbsp; &nbsp;return L(_ARG_0_)<br /> &nbsp;elseif (_ARG_1_ or 0) == 0 then<br /> &nbsp; &nbsp;return C(_ARG_0_)<br /> &nbsp;elseif (_ARG_1_ or 0) == 4 then<br /> &nbsp; &nbsp;return (H(_ARG_0_) + L(_ARG_0_)) / 2<br /> &nbsp;elseif (_ARG_1_ or 0) == 5 then<br /> &nbsp; &nbsp;return (H(_ARG_0_) + L(_ARG_0_) + C(_ARG_0_)) / 3<br /> &nbsp;elseif (_ARG_1_ or 0) == 6 then<br /> &nbsp; &nbsp;return (H(_ARG_0_) + L(_ARG_0_) + 2 * C(_ARG_0_)) / 4<br /> &nbsp;else<br /> &nbsp; &nbsp;return C(_ARG_0_)<br /> &nbsp;end<br />end <br />
			<i>20.12.2017 13:43:46, torque.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message28332/topic3287/</link>
			<guid>http://forum.quik.ru/messages/forum10/message28332/topic3287/</guid>
			<pubDate>Wed, 20 Dec 2017 13:43:46 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
	</channel>
</rss>
