<?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 22:44:40 +0300</pubDate>
		<item>
			<title>Средний спред</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message29226/topic3404/">Средний спред</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Добрый день.<br />Уже много лет я пользуюсь кодом для расчёта среднего спреда по акции:			
====code====
<pre>--Внутри колбека OnParam
--Считаем средний спред
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local tablebid = getParamEx(class_code,&nbsp;&nbsp;fff, "bid") --получаем таблицу "bid"
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local bid=tablebid.param_value --из таблицы берём значение
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local tableoffer = getParamEx(class_code,&nbsp;&nbsp;fff, "offer") --получаем таблицу "offer"
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local offer=tableoffer.param_value --из таблицы берём значение
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local p_spread = (offer - bid) / bid * 100 --считаем текущий спред по бумаге
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local elem = average_spreads&#91;fff&#93; --создаём таблицу для хранения расчётных данных
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if elem == nil then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;average_spreads&#91;fff&#93; = { Count = 1, Spread = p_spread, Avr = p_spread}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;elem = average_spreads&#91;fff&#93;
&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;elem.Spread = p_spread
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;elem.Avr = (elem.Avr * elem.Count + p_spread) / (elem.Count + 1)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;elem.Count = elem.Count + 1
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;spread&#91;fff&#93;=elem.Avr
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end</pre>
=============
Его написал один добрый человек на каком-то трейдерском форуме по Луа. Уже не помню где и кто.<br />Этот код считает средний спред безостановочно по всем значениям, даже если их будет миллион.<br />Подскажите пожалуйста как видоизменить код, чтобы он считал спред за последние <B>1000</B> значений? Мне приходит на ум только создание таблицы с 1000 полями, которые будут обновляться, а старые (ненужные) удаляться. Может быть есть более красивый вариант? Благодарю за советы <br />
			<i>18.02.2018 22:43:37, Let_it_go.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message29226/topic3404/</link>
			<guid>http://forum.quik.ru/messages/forum10/message29226/topic3404/</guid>
			<pubDate>Sun, 18 Feb 2018 22:43:37 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
	</channel>
</rss>
