<?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>Thu, 16 Apr 2026 03:10:10 +0300</pubDate>
		<item>
			<title>Оптимизация быстродействия</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message36561/topic4293/">Оптимизация быстродействия</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Мне кажется, что проблема производительности решается. Если у вас есть DataSource, и вам надо обратиться к последним 100 свечкам, пишите цикл от ds:Size() - 100 до ds:Size(), чтобы пропустить всё ненужное далёкое прошлое.<br /><br />Используемый индикатор можно запрограммировать самостоятельно. Это далеко не самое сложное в торговом роботе. Если, к примеру, надо рассчитать какой-нибудь EMA для последних 100 свечей, достаточно начать рассчитывать этот индикатор, скажем, для последних 300 свечей (отступ зависит от периода EMA), т.к. влияние далёкого прошлого мало.<br /><br />Практика разработки роботов для трейдинга показывает, что расчёты <I>типичных</I><I> однопроходных индикаторов</I> можно организовать так, чтобы на это тратилось порядка 100-500 мс. Этого вполне достаточно. <br />
			<i>25.02.2019 09:14:24, _sk_.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message36561/topic4293/</link>
			<guid>http://forum.quik.ru/messages/forum10/message36561/topic4293/</guid>
			<pubDate>Mon, 25 Feb 2019 09:14:24 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Оптимизация быстродействия</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message36559/topic4293/">Оптимизация быстродействия</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_AT9c0Ejk" href="/user/1801/" bx-tooltip-user-id="1801">Борис Гудылин</a> написал:<br />Год назад я поднимал вопрос, близкий &nbsp;к данной теме. Получить контроль над количеством свечек без нехороших излишеств. Не всем нужны 65000 свечек, многим и 300 избыточны. <br /><br /> <noindex><a href="https://forum.quik.ru/messages/forum10/message30431/topic3560/#message30431" target="_blank" rel="nofollow">https://forum.quik.ru/messages/forum10/message30431/topic3560/#message30431</a></noindex> <br /><br />И даже обещание дать ответ было получено.<br /><br /> <noindex><a href="https://forum.quik.ru/messages/forum10/message30477/topic3560/#message30477" target="_blank" rel="nofollow">https://forum.quik.ru/messages/forum10/message30477/topic3560/#message30477</a></noindex> <br /><br />Пожалуйста, соберитесь с силами и дайте ответ.<br /><br />А пока что, чтоб получить даже &quot;старые автоматические&quot; 3000 свечек, приходится удалять руками файлы в archive и перезаказывать данные. <br />Сделайте нормальное управление, без танцев с файлами. Ведь могли же когда-то ограничивать фиксированным начальным размером. <br /><br />Предложение ТС поддерживаю. &nbsp;<br />=============<br />Добрый день.<br /><br />Пожелание было уже зарегистрировано. В данный момент не рассмотрено. Как будет результат мы обязательно дадим ответ. &nbsp; <br />
			<i>25.02.2019 08:13:14, Egor Zaytsev.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message36559/topic4293/</link>
			<guid>http://forum.quik.ru/messages/forum10/message36559/topic4293/</guid>
			<pubDate>Mon, 25 Feb 2019 08:13:14 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Оптимизация быстродействия</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message36547/topic4293/">Оптимизация быстродействия</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_UkQCL26R" href="/user/1801/" bx-tooltip-user-id="1801">Борис Гудылин</a> написал:<br />Не всем нужны 65000 свечек, многим и 300 избыточны. <br />=============<br />Я даже больше скажу, если на графике ограничить, скажем, 500 интервалов, то луа-индикатор все равно бежит по всем с самого начала :( <br />
			<i>23.02.2019 14:34:36, Imersio Arrigo.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message36547/topic4293/</link>
			<guid>http://forum.quik.ru/messages/forum10/message36547/topic4293/</guid>
			<pubDate>Sat, 23 Feb 2019 14:34:36 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Оптимизация быстродействия</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message36546/topic4293/">Оптимизация быстродействия</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_Ox1ibqCj" href="/user/12898/" bx-tooltip-user-id="12898">нет</a> написал:<br />Но минус вот в чем: все эти значения будут верными если только, просчитывать все значения, иначе выдает неверные значения - проверено. <br />=============<br />Достаточно рассчитать двойной период.<br />т.е. если период RSI =14, то верные значения пойдут после 28 расчёта.<br />инаяе говоря, чтобы рассчитать предпоследнее значение в моменте, необходимо и достаточно просчитать 29 последних значений. <br />
			<i>23.02.2019 12:41:54, Imersio Arrigo.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message36546/topic4293/</link>
			<guid>http://forum.quik.ru/messages/forum10/message36546/topic4293/</guid>
			<pubDate>Sat, 23 Feb 2019 12:41:54 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Оптимизация быстродействия</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message36545/topic4293/">Оптимизация быстродействия</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Мне кажется, &nbsp;проще, построить график цены. К нему построить индикатор (пусть RSI). И через getCandlesByIndex получить то, что Вам нужно. &nbsp;<br /> &nbsp; <br />
			<i>23.02.2019 12:26:56, Игорь Б.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message36545/topic4293/</link>
			<guid>http://forum.quik.ru/messages/forum10/message36545/topic4293/</guid>
			<pubDate>Sat, 23 Feb 2019 12:26:56 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Оптимизация быстродействия</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message36534/topic4293/">Оптимизация быстродействия</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<a class="blog-p-user-name" id="bp_qwnf4sZY" href="/user/1801/" bx-tooltip-user-id="1801">Борис Гудылин</a>, более того, была необходимость покопаться в их скриптах (<noindex><a href="https://arqatech.com/upload/iblock/398/INDICATORS.zip" target="_blank" rel="nofollow">https://arqatech.com/upload/iblock/398/INDICATORS.zip</a></noindex>), и узнал неприятную особенность.<br /><br />Мне нужно просчитывать два значения ЕМА и RSI. Вроде как RSI расчитывается на значениях EMA.<br /><br />Представим следующее - в ds хранится 3000 свечей. <br />Подсчитываю нужные мне значения вот так:	
====code====
<pre>for i = 1, key do
&nbsp;&nbsp;ema=f_ema(i, {Period=40, Metod = EMA, VType=CLOSE}, ds)
&nbsp;&nbsp;rsi=f_rsi(i, {Period=14, VType=CLOSE}, ds)
еnd</pre>
=============
<br />Но минус вот в чем: все эти значения будут верными если только, просчитывать все значения, иначе выдает неверные значения - проверено. <br />Но один раз можно просчитать все значения (все 3000 свечей, и то необязательно, в моем случае можно взять последние 100 свечей). <br />Если сократить кол-во свечей с 3000 до 100, то скорость программы вырастет в 30 раз - что очень недурно. <br /><br />С другой стороны, когда мы просчитали все свечи до нужной, то просчитывать в очередной раз все 3000 свечей нет нужды при наступлении нужного нам события (по логике). <br />Можно взять предпоследнее значение и подставить в формулу и расчитать новое значение, в таком случае скорость скрипта еще вырастет. <br /><br />Однако разработчики так не сделали (или не подумали об этом). <br />В моем случае для просчет EMA нужно обойти все 3000 свечей, а затем и RSI вновь пойдет расчитывать все 3000 свечей, не смотря на то, что вроде вычисления основаны на ЕМА. <br /><br /><br />У кого-то возникнут вопросы, к чему это все, у нас компы и им не трудно каждый раз просчитывать 3000 и более свечей. <br />А вел я это к тому, что в один прекрасный день весь Quik начнет безбожно тупить и медленно работать, и для оптимальной работы понадобится дорогой компьютер. <br />Но этого можно избежать, если разработчики и сами авторы скриптов будут правильно понимать результат своей работы.<br /><br />UPD: <br /><br />В моем случае, дабы не считать каждый раз 3000 свечей можно сделать так:<br /><ol><li>запоминаем для какой свечи мы производим расчеты<br /><li>проверяем есть ли расчитанное значения для предыдущей свечи<br /><li>если да, то просто подставляем в формулу и получаем нужное значение для текущей свечи<br /><li>если нет, то вычисляем нужные значения для всех свечей, вплоть до предущей, а потом п. 3<br /></ol> <br />
			<i>22.02.2019 17:48:51, нет.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message36534/topic4293/</link>
			<guid>http://forum.quik.ru/messages/forum10/message36534/topic4293/</guid>
			<pubDate>Fri, 22 Feb 2019 17:48:51 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Оптимизация быстродействия</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message36533/topic4293/">Оптимизация быстродействия</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Год назад я поднимал вопрос, близкий &nbsp;к данной теме. Получить контроль над количеством свечек без нехороших излишеств. Не всем нужны 65000 свечек, многим и 300 избыточны. <br /><br /><noindex><a href="https://forum.quik.ru/messages/forum10/message30431/topic3560/#message30431" target="_blank" rel="nofollow">https://forum.quik.ru/messages/forum10/message30431/topic3560/#message30431</a></noindex><br /><br />И даже обещание дать ответ было получено.<br /><br /><noindex><a href="https://forum.quik.ru/messages/forum10/message30477/topic3560/#message30477" target="_blank" rel="nofollow">https://forum.quik.ru/messages/forum10/message30477/topic3560/#message30477</a></noindex><br /><br />Пожалуйста, соберитесь с силами и дайте ответ.<br /><br />А пока что, чтоб получить даже &quot;старые автоматические&quot; 3000 свечек, приходится удалять руками файлы в archive и перезаказывать данные. <br />Сделайте нормальное управление, без танцев с файлами. Ведь могли же когда-то ограничивать фиксированным начальным размером. <br /><br />Предложение ТС поддерживаю. &nbsp; <br />
			<i>22.02.2019 17:13:50, Борис Гудылин.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message36533/topic4293/</link>
			<guid>http://forum.quik.ru/messages/forum10/message36533/topic4293/</guid>
			<pubDate>Fri, 22 Feb 2019 17:13:50 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Оптимизация быстродействия</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message36532/topic4293/">Оптимизация быстродействия</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<a class="blog-p-user-name" id="bp_xLZRISc4" href="/user/12898/" bx-tooltip-user-id="12898">нет</a>, коряво написал вопрос в последний раз.<br />подскажите, пожалуйста, как можно создать новый ds_2 из последних 100 свечей старого ds, с возможностью вызова функций :C(i) и других?<br /><br />Если пытаюсь следующим образом, <br />
====code====
<pre>for i = #ds - limit, #ds

table.insert(ds_2, {Close = ds:C(i)})

end

-- то потом выдает ошибку
ds_2:C(#ds_2)
</pre>
============= <br />
			<i>22.02.2019 16:52:46, нет.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message36532/topic4293/</link>
			<guid>http://forum.quik.ru/messages/forum10/message36532/topic4293/</guid>
			<pubDate>Fri, 22 Feb 2019 16:52:46 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Оптимизация быстродействия</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message36530/topic4293/">Оптимизация быстродействия</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<a class="blog-p-user-name" id="bp_4wJj0vwW" href="/user/17/" bx-tooltip-user-id="17">Sergey Gorokhov</a>, подскажите, пожалуйста, как можно создать новый ds_2 из последних 10 свечей старых, с возможностью вызова функций :C(i) и других? <br />
			<i>22.02.2019 15:39:24, нет.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message36530/topic4293/</link>
			<guid>http://forum.quik.ru/messages/forum10/message36530/topic4293/</guid>
			<pubDate>Fri, 22 Feb 2019 15:39:24 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Оптимизация быстродействия</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message36519/topic4293/">Оптимизация быстродействия</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_oHFUXeJv" href="/user/12898/" bx-tooltip-user-id="12898">нет</a> написал:<br />можно ли ограничить количество последних свечей, получаемых из функции createDataSource. Мне не нужны все свечи тянуть оттуда, достаточно 100 последних свечей?<br />=============<br />Такой возможности нет.<br /><br /><br />====quote====<br /><a class="blog-p-user-name" id="bp_v7aRceTC" href="/user/12898/" bx-tooltip-user-id="12898">нет</a> написал:<br />можно ли после вызова createDataSource в полученном ds оставить 100 последних свечей?<br />=============<br />Такой возможности нет. Можно перенести данные из ds в Lua таблицу, а потом закрыть ds.<br /><br /><br />====quote====<br /><a class="blog-p-user-name" id="bp_FxLZYbjg" href="/user/12898/" bx-tooltip-user-id="12898">нет</a> написал:<br />можно ли как-то кешировать результат работы RSI? Например, я просчитал RSI для всех свечей из ds, а потом хочу через каждую минуту получать RSI только для последней, не производя вычисления для предыдущих свечей?<br />=============<br />Просто сохраняете данные в какую-нибудь Lua таблицу <br />
			<i>22.02.2019 05:44:31, Sergey Gorokhov.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message36519/topic4293/</link>
			<guid>http://forum.quik.ru/messages/forum10/message36519/topic4293/</guid>
			<pubDate>Fri, 22 Feb 2019 05:44:31 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Оптимизация быстродействия</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message36514/topic4293/">Оптимизация быстродействия</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Добрый день. <br />Уточните, пожалуйста, пару моментов:<br /><ul><li>можно ли ограничить количество последних свечей, получаемых из функции createDataSource. Мне не нужны все свечи тянуть оттуда, достаточно 100 последних свечей?<br /><li>можно ли после вызова createDataSource в полученном ds оставить 100 последних свечей?<br /><li>можно ли как-то кешировать результат работы RSI? Например, я просчитал RSI для всех свечей из ds, а потом хочу через каждую минуту получать RSI только для последней, не производя вычисления для предыдущих свечей?<br /></ul> <br />
			<i>21.02.2019 14:18:51, нет.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message36514/topic4293/</link>
			<guid>http://forum.quik.ru/messages/forum10/message36514/topic4293/</guid>
			<pubDate>Thu, 21 Feb 2019 14:18:51 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
	</channel>
</rss>
