<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>Форум QUIK [тема: Модуль подключения индикаторов папки LuaIndicators с сайта ARQA (https://arqatech.com/ru/support/files/)]</title>
		<link>http://forum.quik.ru</link>
		<description>Новое в теме Модуль подключения индикаторов папки LuaIndicators с сайта ARQA (https://arqatech.com/ru/support/files/) форума  на сайте Форум QUIK [forum.quik.ru]</description>
		<language>ru</language>
		<docs>http://backend.userland.com/rss2</docs>
		<pubDate>Sat, 02 May 2026 14:28:46 +0300</pubDate>
		<item>
			<title>Модуль подключения индикаторов папки LuaIndicators с сайта ARQA (https://arqatech.com/ru/support/files/)</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message76369/topic8691/">Модуль подключения индикаторов папки LuaIndicators с сайта ARQA (https://arqatech.com/ru/support/files/)</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_LAdbTkjf" href="/user/13952/" bx-tooltip-user-id="13952">TGB</a> написал:<br /> <br />====quote====<br /><noindex><a href="/user/16131/" target="_blank" rel="nofollow">VPM</a></noindex> написал:<br />Какую задачу хотите решить?<br />=============<br /> &nbsp; &nbsp; &nbsp; В заголовке ветки написано: подключение в скрипте индикаторов папки LuaIndicators с сайта ARQA<br />=============<br />Но это не задача, это некий сервис. Повторюсь <br />====quote====<br /><a class="blog-p-user-name" id="bp_UovV3deJ" href="/user/16131/" bx-tooltip-user-id="16131">VPM</a> написал:<br />Не знаю как последние алгоритмы разработчиков , не пробовал, а первые это транжирство памяти, и помнится Вы мне тоже помогали с этим вопросом разбираться. Из своего опыта нельзя на прямую использовать в алгоритмах эти индикаторы!<br />=============<br /> <br />
			<i>09.08.2024 23:14:23, VPM.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message76369/topic8691/</link>
			<guid>http://forum.quik.ru/messages/forum10/message76369/topic8691/</guid>
			<pubDate>Fri, 09 Aug 2024 23:14:23 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Модуль подключения индикаторов папки LuaIndicators с сайта ARQA (https://arqatech.com/ru/support/files/)</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message76368/topic8691/">Модуль подключения индикаторов папки LuaIndicators с сайта ARQA (https://arqatech.com/ru/support/files/)</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_VIxYHG8f" href="/user/16131/" bx-tooltip-user-id="16131">VPM</a> написал:<br />Какую задачу хотите решить?<br />=============<br /> &nbsp; &nbsp; &nbsp;В заголовке ветки написано: подключение в скрипте индикаторов папки LuaIndicators с сайта ARQA <br />
			<i>09.08.2024 23:10:01, TGB.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message76368/topic8691/</link>
			<guid>http://forum.quik.ru/messages/forum10/message76368/topic8691/</guid>
			<pubDate>Fri, 09 Aug 2024 23:10:01 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Модуль подключения индикаторов папки LuaIndicators с сайта ARQA (https://arqatech.com/ru/support/files/)</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message76367/topic8691/">Модуль подключения индикаторов папки LuaIndicators с сайта ARQA (https://arqatech.com/ru/support/files/)</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Ваш код это некий сервис, по подключению алгоритмов (ну по крайней мере я так понял) наверняка он хороший и правильный, вот тока зачем? Какую задачу хотите решить?<br />Я показал альтернативный подход через класс луа, хотите используете в алгоритмах программ в потоке маин, хотите в виде индикатора квика, все &quot;по образу и подобию&quot;, с контролем памяти, и однообразной инициализацией. <br />
			<i>09.08.2024 23:04:22, VPM.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message76367/topic8691/</link>
			<guid>http://forum.quik.ru/messages/forum10/message76367/topic8691/</guid>
			<pubDate>Fri, 09 Aug 2024 23:04:22 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Модуль подключения индикаторов папки LuaIndicators с сайта ARQA (https://arqatech.com/ru/support/files/)</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message76366/topic8691/">Модуль подключения индикаторов папки LuaIndicators с сайта ARQA (https://arqatech.com/ru/support/files/)</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_lgMIQlBM" href="/user/16131/" bx-tooltip-user-id="16131">VPM</a> написал:<br />Из своего опыта нельзя на прямую использовать в алгоритмах эти индикаторы!<br />=============<br /> &nbsp; &nbsp; Это вам так кажется. Вы проверили мои коды и нашли ошибки, в том числе транжирство памяти? Если да, то покажите. <br />
			<i>09.08.2024 22:54:51, TGB.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message76366/topic8691/</link>
			<guid>http://forum.quik.ru/messages/forum10/message76366/topic8691/</guid>
			<pubDate>Fri, 09 Aug 2024 22:54:51 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Модуль подключения индикаторов папки LuaIndicators с сайта ARQA (https://arqatech.com/ru/support/files/)</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message76365/topic8691/">Модуль подключения индикаторов папки LuaIndicators с сайта ARQA (https://arqatech.com/ru/support/files/)</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			А понял, если Вы про это, только на график как индикатор и очень осторожно, так ка это путь убить КВИК на повал. Не знаю как последние алгоритмы разработчиков , не пробовал, а первые это транжирство памяти, и помнится Вы мне тоже помогали с этим вопросом разбираться. Из своего опыта нельзя на прямую использовать в алгоритмах эти индикаторы! <br />
			<i>09.08.2024 22:49:27, VPM.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message76365/topic8691/</link>
			<guid>http://forum.quik.ru/messages/forum10/message76365/topic8691/</guid>
			<pubDate>Fri, 09 Aug 2024 22:49:27 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Модуль подключения индикаторов папки LuaIndicators с сайта ARQA (https://arqatech.com/ru/support/files/)</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message76364/topic8691/">Модуль подключения индикаторов папки LuaIndicators с сайта ARQA (https://arqatech.com/ru/support/files/)</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_1EDOttR3" href="/user/16131/" bx-tooltip-user-id="16131">VPM</a> написал:<br /> выше привел код подключения модулей, в том числе алгоритмов, которые ныне упаковываю в класс луа. Вот еще из рабочей программы и здесь уже алгоритмы есть индикаторов<br />=============<br /> &nbsp;И где же индикаторы из папки &nbsp;LuaIndicators? Покажите маленький тест их использования. <br />
			<i>09.08.2024 22:40:27, TGB.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message76364/topic8691/</link>
			<guid>http://forum.quik.ru/messages/forum10/message76364/topic8691/</guid>
			<pubDate>Fri, 09 Aug 2024 22:40:27 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Модуль подключения индикаторов папки LuaIndicators с сайта ARQA (https://arqatech.com/ru/support/files/)</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message76363/topic8691/">Модуль подключения индикаторов папки LuaIndicators с сайта ARQA (https://arqatech.com/ru/support/files/)</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Так возвращаю результат <br />local out = decycler&#91;class_names&#91;1&#93;&#93;&#91;symbol_names&#91;n&#93;&#93;&#91;interval_values&#91;1&#93;&#93;:calculate(I) <br />
			<i>09.08.2024 22:34:48, VPM.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message76363/topic8691/</link>
			<guid>http://forum.quik.ru/messages/forum10/message76363/topic8691/</guid>
			<pubDate>Fri, 09 Aug 2024 22:34:48 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Модуль подключения индикаторов папки LuaIndicators с сайта ARQA (https://arqatech.com/ru/support/files/)</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message76362/topic8691/">Модуль подключения индикаторов папки LuaIndicators с сайта ARQA (https://arqatech.com/ru/support/files/)</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Вот пример создания <br /><br />-- Инициализация стратегии Decycler<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;--settings.dec = {period = 60, depth = 0, wid = 0, sigma = 1}<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;decycler&#91;class&#93;&#91;symbol&#93;&#91;interval&#93; = DecyclerQueue.new( {<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;period = 120, <br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;depth = 0, wid = 0, sigma = 1, <br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;scale = feed&#91;1&#93;.sec_scale, <br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;step = feed&#91;1&#93;.sec_price_step<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;, ds&#91;n&#93;&#91;i&#93;--dataSource:getDataSource(class, symbol, interval)<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;, class, symbol, interval<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;) <br />
			<i>09.08.2024 22:32:58, VPM.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message76362/topic8691/</link>
			<guid>http://forum.quik.ru/messages/forum10/message76362/topic8691/</guid>
			<pubDate>Fri, 09 Aug 2024 22:32:58 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Модуль подключения индикаторов папки LuaIndicators с сайта ARQA (https://arqatech.com/ru/support/files/)</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message76361/topic8691/">Модуль подключения индикаторов папки LuaIndicators с сайта ARQA (https://arqatech.com/ru/support/files/)</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<a class="blog-p-user-name" id="bp_yuLzRRPm" href="/user/13952/" bx-tooltip-user-id="13952">TGB</a>, &nbsp;Ни как не использую, выше привел код подключения модулей, в том числе алгоритмов, которые ныне упаковываю в класс луа. Вот еще из рабочей программы и здесь уже алгоритмы есть индикаторов<br />
====code====
<pre> local FractalAnalyzer = require("FractalAnalyzerClass") --setmetatable(FractalAnalyzer, __object_behaviour)
&nbsp;&nbsp;&nbsp;&nbsp;local BalanceTracker = require("BalanceTrackerClass")
&nbsp;&nbsp;&nbsp;--local Analytics = require("Analytics")
&nbsp;&nbsp;&nbsp;--local Strategy = require("Strategy")
&nbsp;&nbsp;&nbsp;&nbsp;--local Strategy1 = require("Strategy1") --setmetatable(Strategy1, __object_behaviour)
&nbsp;&nbsp;&nbsp;&nbsp;--local Strategy2 = require("Strategy2") --setmetatable(Strategy2, __object_behaviour)
&nbsp;&nbsp;&nbsp;local ChannelPDF = require('ChannelPDFQueueClass')
&nbsp;&nbsp;&nbsp;&nbsp;local DecyclerQueue = require('DecyclerQueueClass')
&nbsp;&nbsp;&nbsp;&nbsp;local DetrenderQueue = require('DetrenderQueueClass')
&nbsp;&nbsp;&nbsp;--local HPR = require("hprsClass") setmetatable(HPR, __object_behaviour)
&nbsp;&nbsp;&nbsp;&nbsp;local HPR = require("HPRsClassv1") --setmetatable(HPR, __object_behaviour)
&nbsp;&nbsp;&nbsp;&nbsp;local Result = require("ResultClass")
&nbsp;&nbsp;&nbsp;&nbsp;local Position = require("PositionClass")
&nbsp;&nbsp;&nbsp;&nbsp;local Instruction = require("InstructionClass")
&nbsp;&nbsp;&nbsp;&nbsp;local Signal = require("SignalClass")
&nbsp;&nbsp;&nbsp;&nbsp;local TimeFrameSynchronizer = require("TimeFrameSynchronizer")
&nbsp;&nbsp;&nbsp;&nbsp;local TradeManager = require("TradeManagerClass")
</pre>
============= <br />
			<i>09.08.2024 22:29:19, VPM.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message76361/topic8691/</link>
			<guid>http://forum.quik.ru/messages/forum10/message76361/topic8691/</guid>
			<pubDate>Fri, 09 Aug 2024 22:29:19 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Модуль подключения индикаторов папки LuaIndicators с сайта ARQA (https://arqatech.com/ru/support/files/)</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message76360/topic8691/">Модуль подключения индикаторов папки LuaIndicators с сайта ARQA (https://arqatech.com/ru/support/files/)</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_yMEKIsX8" href="/user/16131/" bx-tooltip-user-id="16131">VPM</a> написал:<br /> Вся библиотека индикаторов от любезно предоставленная разработчиками копируется и вставляется в папку LuaIndicators. Что тут можно показать?<br />=============<br /> &nbsp;Вы ускользаете от вопроса. Покажите как вы используете эти индикаторы в своем скрипте? <br />
			<i>09.08.2024 22:21:42, TGB.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message76360/topic8691/</link>
			<guid>http://forum.quik.ru/messages/forum10/message76360/topic8691/</guid>
			<pubDate>Fri, 09 Aug 2024 22:21:42 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Модуль подключения индикаторов папки LuaIndicators с сайта ARQA (https://arqatech.com/ru/support/files/)</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message76359/topic8691/">Модуль подключения индикаторов папки LuaIndicators с сайта ARQA (https://arqatech.com/ru/support/files/)</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<a class="blog-p-user-name" id="bp_ArdQai82" href="/user/13952/" bx-tooltip-user-id="13952">TGB</a>, &nbsp;Вся библиотека индикаторов от любезно предоставленная разработчиками копируется и вставляется в папку LuaIndicators. Что тут можно показать? <img src="http://forum.quik.ru/upload/main/smiles/5/icon_eek.png" border="0" data-code=":shock:" data-definition="SD" alt=":shock:" style="width:16px;height:16px;" title="Удивленно" class="bx-smile" /> <br /><br />Я про другое, это луа, здесь создается таблица и вне вставляются элементы (пусть даже алгоритмы), и затем возвращаем и читаем все ТОЧКА. Для каких целей Ваш алгоритм не очень понятно? <br />
			<i>09.08.2024 22:16:28, VPM.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message76359/topic8691/</link>
			<guid>http://forum.quik.ru/messages/forum10/message76359/topic8691/</guid>
			<pubDate>Fri, 09 Aug 2024 22:16:28 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Модуль подключения индикаторов папки LuaIndicators с сайта ARQA (https://arqatech.com/ru/support/files/)</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message76358/topic8691/">Модуль подключения индикаторов папки LuaIndicators с сайта ARQA (https://arqatech.com/ru/support/files/)</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_d8HAsWJt" href="/user/16131/" bx-tooltip-user-id="16131">VPM</a> написал:<br />Да нет просто скопировать и вставить.<br />=============<br /> &nbsp; А это уже интересно. Покажите какой нибуть просто скопированный, вставленный (без последующей модификации) и работающий индикатор из папки LuaIndicators. <br />
			<i>09.08.2024 22:07:53, TGB.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message76358/topic8691/</link>
			<guid>http://forum.quik.ru/messages/forum10/message76358/topic8691/</guid>
			<pubDate>Fri, 09 Aug 2024 22:07:53 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Модуль подключения индикаторов папки LuaIndicators с сайта ARQA (https://arqatech.com/ru/support/files/)</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message76357/topic8691/">Модуль подключения индикаторов папки LuaIndicators с сайта ARQA (https://arqatech.com/ru/support/files/)</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<a class="blog-p-user-name" id="bp_stdFaup5" href="/user/13952/" bx-tooltip-user-id="13952">TGB</a>, &nbsp;Код я скинул и указал параметры для того чтоб показать как реализуются модули, и только. <br />====quote====<br /><a class="blog-p-user-name" id="bp_iIwgOBqO" href="/user/13952/" bx-tooltip-user-id="13952">TGB</a> написал:<br />То есть, если вам в скрипте надо использовать уже существующий индикатор, то вам интересно его программировать &nbsp;и отлаживать.<br />=============<br />Да нет просто скопировать и вставить.<br />====quote====<br /><a class="blog-p-user-name" id="bp_3G4SEYg1" href="/user/13952/" bx-tooltip-user-id="13952">TGB</a> написал:<br />Действительно, нет проблем реализовать самому любой индикатор. Но вопрос зачем, когда есть готовые коды некоторых индикаторов?<br />=============<br />Очень редко применяю готовый код, скорее в тестерах для проверки идеи. А вот хорошую идею это да. <br /><br />Основная проблема этих старых алгоритмов - это их математика, которая плохо подходит для внутри дневной торговли. &nbsp; <br />
			<i>09.08.2024 21:59:32, VPM.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message76357/topic8691/</link>
			<guid>http://forum.quik.ru/messages/forum10/message76357/topic8691/</guid>
			<pubDate>Fri, 09 Aug 2024 21:59:32 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Модуль подключения индикаторов папки LuaIndicators с сайта ARQA (https://arqatech.com/ru/support/files/)</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message76356/topic8691/">Модуль подключения индикаторов папки LuaIndicators с сайта ARQA (https://arqatech.com/ru/support/files/)</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_3hbrdjBY" href="/user/16131/" bx-tooltip-user-id="16131">VPM</a> написал:<br />Скорее не понятно, зачем? <br />=============<br /> &nbsp; То есть, если вам в скрипте надо использовать уже существующий индикатор, то вам интересно его программировать &nbsp;и отлаживать. Если это так, то ваша позиция понятна. Действительно, нет проблем реализовать самому любой индикатор. Но вопрос зачем, когда есть готовые коды некоторых индикаторов?<br /> &nbsp; &nbsp;Интересно. зачем вы к своему сообщению "присобачили" код? Вы, что, хотите им кого-то напугать &nbsp;<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 />
			<i>09.08.2024 21:45:29, TGB.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message76356/topic8691/</link>
			<guid>http://forum.quik.ru/messages/forum10/message76356/topic8691/</guid>
			<pubDate>Fri, 09 Aug 2024 21:45:29 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Модуль подключения индикаторов папки LuaIndicators с сайта ARQA (https://arqatech.com/ru/support/files/)</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message76354/topic8691/">Модуль подключения индикаторов папки LuaIndicators с сайта ARQA (https://arqatech.com/ru/support/files/)</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_QGYUp4iJ" href="/user/13952/" bx-tooltip-user-id="13952">TGB</a> написал:<br />Интересно: нет ни вопросов, ни замечаний. То ли все ясно, то ли не понятно ничего.<br />=============<br />Скорее не понятно, зачем? Ведь таблица луа это уже модуль. Ну к примеру моя любая программа сейчас выглядит так,<br /> и это не все классы. <br />При этом память на один инструмент не более 1000 кб, быстродействие алгоритма ограничиваю чтобы не перегружать процессор. Но это только мое мнение.
====code====
<pre>-- Установите путь к вашему каталогу с модулями
&nbsp;&nbsp;&nbsp;local path = '...&#92;&#92;modules';
&nbsp;&nbsp;&nbsp;&nbsp;package.path = path.."&#92;&#92;?.lua;".. package.path
&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;-- Проверка и подключение необходимых модулей
&nbsp;&nbsp;&nbsp;&nbsp;local function safeRequire(moduleName)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local success, result = pcall(require, moduleName)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if not success then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;error("Failed to load module: " .. moduleName .. "&#92;n" .. result)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return result
&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;-- Модули
&nbsp;&nbsp;&nbsp;&nbsp;--local Log = require("LogClass")
&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;local Utility = require("Utility")
&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;local Queue = require("QueueClass") -- Реализация класса `Queue` двусвязной очереди
&nbsp;&nbsp;&nbsp;&nbsp;local Color = require("ColorClass")
&nbsp;&nbsp;&nbsp;&nbsp;local Label = require("LabelClass")
&nbsp;&nbsp;&nbsp;&nbsp;local WindowCoordinates = require("WindowCoordinatesClass")
&nbsp;&nbsp;&nbsp;&nbsp;local TableSaverLoader = require("TableSaverLoader")
&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;local TimeHandler = require("TimesClass")
&nbsp;&nbsp;&nbsp;&nbsp;local Checker = require("Checker") --setmetatable(Checker, __object_behaviour)
&nbsp;&nbsp;&nbsp;&nbsp;local Event = require("EventClass")
&nbsp;&nbsp;&nbsp;&nbsp;--local VersionManager = require("VersionManager")
&nbsp;&nbsp;&nbsp;&nbsp;local StateMachine = require("StateMachine") --&nbsp;&nbsp;Управляет состояниями и переходами между ними.
&nbsp;&nbsp;&nbsp;&nbsp;local StateManager = require("StateManager") -- Отвечает за сохранение и загрузку состояния из файла.
&nbsp;&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp;&nbsp;local DS = require("DSClass") --setmetatable(DS, __object_behaviour)
&nbsp;&nbsp;&nbsp;&nbsp;local RiskManagement = require("rmClass") --setmetatable(rm, __object_behaviour)
&nbsp;&nbsp;&nbsp;&nbsp;local MoneyManagement = require("mmClass") --setmetatable(mm, __object_behaviour)
&nbsp;&nbsp;&nbsp;&nbsp;local CapitalManagement = require("cmClass") --setmetatable(CapitalManagement, __object_behaviour)
</pre>
============= <br />
			<i>09.08.2024 21:01:09, VPM.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message76354/topic8691/</link>
			<guid>http://forum.quik.ru/messages/forum10/message76354/topic8691/</guid>
			<pubDate>Fri, 09 Aug 2024 21:01:09 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Модуль подключения индикаторов папки LuaIndicators с сайта ARQA (https://arqatech.com/ru/support/files/)</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message76353/topic8691/">Модуль подключения индикаторов папки LuaIndicators с сайта ARQA (https://arqatech.com/ru/support/files/)</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Интересно: нет ни вопросов, ни замечаний. То ли все ясно, то ли не понятно ничего. <br />
			<i>09.08.2024 20:49:18, TGB.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message76353/topic8691/</link>
			<guid>http://forum.quik.ru/messages/forum10/message76353/topic8691/</guid>
			<pubDate>Fri, 09 Aug 2024 20:49:18 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Модуль подключения индикаторов папки LuaIndicators с сайта ARQA (https://arqatech.com/ru/support/files/)</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message76103/topic8691/">Модуль подключения индикаторов папки LuaIndicators с сайта ARQA (https://arqatech.com/ru/support/files/)</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			На всякий случай:<br /> &nbsp; &nbsp;в кодах индикаторов папки LuaIndicators используется вызов стандартной функции unpack, который, в версиях Lua 5.3 - 5.4 ошибочен и должно быть: table.unpack(......).<br /> &nbsp; &nbsp;В коде модуля mod_IND.lua это учитывается как ошибочный вариант так и исправленный (строка в модуле: , unpack = unpack or table.unpack). <br />
			<i>14.07.2024 20:43:17, TGB.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message76103/topic8691/</link>
			<guid>http://forum.quik.ru/messages/forum10/message76103/topic8691/</guid>
			<pubDate>Sun, 14 Jul 2024 20:43:17 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Модуль подключения индикаторов папки LuaIndicators с сайта ARQA (https://arqatech.com/ru/support/files/)</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message76052/topic8691/">Модуль подключения индикаторов папки LuaIndicators с сайта ARQA (https://arqatech.com/ru/support/files/)</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			1. Инструкция приведена в комментариях теста модуля.<br /><br /> 2. &nbsp;Код теста:<br />
====code====
<pre>
--&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Инструкция
-- 1. Скачать папку LuaIndicators (Примеры функций расчета индикаторов терминала QUIK на языке Lua) с сайта
-- https://arqatech.com/ru/support/files/&nbsp;&nbsp;и переслать в папку расположения info.exe.
-- 2. Модуль подключения индикаторов(под именем mod_IND.lua) переслать в папку расположения info.exe.
-- 3. Запустить тест test_IND.
-- ----
-- P.S.
-- 1. Учитывать, что при расчете индикаторов первые значения (1 .... Период расчета индикатора - 1)
-- обычно nil.
-- 2. Результат расчета индикатора может иметь несколько значений и это определяется функцией OnCalculate 
-- кода используемого индикатора папки LuaIndicators.
-- 3. В модуле mod_IND.lua представлены три примера объявления заголовочных функций описаний параметров 
-- подключаемых индикаторов. Параметры такой функции это список полей из таблицы Settings соответствующего 
-- индикатора папки LuaIndicators, для которых требуется задать значения, определяющие поведение создаваемого
-- замыкания.

---------------------------------------------------------------------
timeout = 300
is_run = true

function main()
&nbsp;&nbsp; -- GetDataSource подключается к графику --
&nbsp;&nbsp; local function GetDataSource(class_code, sec_code, timeframe)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local ds, Error = CreateDataSource(class_code, sec_code, timeframe)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- Ждет 10 сек., пока данные будут получены с сервера --
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for i = 1, 1000 do if not ((Error == "" or Error == nil) and ds:Size() == 0) then break end; sleep(10) end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if Error ~= "" and Error ~= nil then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; message(debug.getinfo(1).currentline..': Ошибка подключения к графику: '..Error)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return nil
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return ds
&nbsp;&nbsp; end
&nbsp;&nbsp; -------------------------------- Тест индикаторов -------------------------------------------------
&nbsp;&nbsp; local INDICATORS = require('mod_IND')
&nbsp;&nbsp; ---------------------------------------------------------------------------------------------------
&nbsp;&nbsp; --&nbsp;&nbsp;Подключение к источнику данных (графику)
&nbsp;&nbsp; local DS = GetDataSource(getClassInfo('QJSIM') and 'QJSIM' or 'TQBR', 'SBER', INTERVAL_M1)
&nbsp;&nbsp; if not DS then return end -- не удалось подключиться к источнику данных ---
&nbsp;&nbsp; local size = DS:Size()
&nbsp;&nbsp; message('size = ' .. size)
&nbsp;&nbsp; -------------------------------------------------------------------------------------------------
&nbsp;&nbsp; --&nbsp;&nbsp; &#60;Функция создания индикаторов&#62; (&#60;Параметры индикатора&#62;)
&nbsp;&nbsp; -- Результат: функция-замыкание расчета индикатора.
&nbsp;&nbsp; ------
&nbsp;&nbsp; -- Вызов полученного замыкания:
&nbsp;&nbsp; --&nbsp;&nbsp;&nbsp;&nbsp; &#60;Функция-замыкание&#62;(&#60;Очередное значение для расчета индикатора&#62;)
&nbsp;&nbsp; --&nbsp;&nbsp;Результат (возможно несколько значений, определяемых видом индикатора):&nbsp;&nbsp;значения индикатора, 
&nbsp;&nbsp; -- определяемые параметрами создания замыкания на основе кода индикатора в папке ...Lua&#92;&#92;LuaIndicators.
&nbsp;&nbsp; -- !! В кодах индикаторов результат определяется функцией OnCalculate.
&nbsp;&nbsp; ---------
&nbsp;&nbsp; --&nbsp;&nbsp; !&nbsp;&nbsp;Для сброса индикатора-замыкания в начальное состояние, его надо пересоздать.
&nbsp;&nbsp; ---------------------------------------------------------------------------------------------------
&nbsp;&nbsp; local AC_IND1 = INDICATORS.AC(
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3,&nbsp;&nbsp;&nbsp;&nbsp; -- Период короткой скользящей
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5,&nbsp;&nbsp;&nbsp;&nbsp; -- Период длинной скользящей
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'SMA'&nbsp;&nbsp;-- Метод расчета скользящих (SMA, MMA, EMA, WMA, SMMA, VMA)
&nbsp;&nbsp; ) 

&nbsp;&nbsp; local AC_IND2 = INDICATORS.AC( -- return value
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5,&nbsp;&nbsp;&nbsp;&nbsp; -- Период короткой скользящей
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;9,&nbsp;&nbsp;&nbsp;&nbsp; -- Период длинной скользящей
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'SMA'&nbsp;&nbsp;-- Метод расчета скользящих (SMA, MMA, EMA, WMA, SMMA, VMA)
&nbsp;&nbsp; ) 

&nbsp;&nbsp; local MA_IND1 = INDICATORS.MA( -- return value
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5,&nbsp;&nbsp;&nbsp;&nbsp; -- Период скользящей
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'SMA'&nbsp;&nbsp;-- Метод расчета скользящих (SMA, MMA, EMA, WMA, SMMA, VMA)
&nbsp;&nbsp; )

&nbsp;&nbsp; local MA_IND2 = INDICATORS.ADX( -- return {&#91;'ADX'&#93;, &#91;'+DI'&#93;, &#91;'-DI'&#93;}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;7,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -- Период короткой скользящей
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'EMA'&nbsp;&nbsp;&nbsp;&nbsp;-- Метод расчета скользящих (SMA, MMA, EMA, WMA, SMMA, VMA)
&nbsp;&nbsp; )
&nbsp;&nbsp; 
&nbsp;&nbsp; -- Использование индикатора --- 
&nbsp;&nbsp; for i = 1, size do 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AC_IND1(DS:C(i))
&nbsp;&nbsp; end

&nbsp;&nbsp; for i = 1, size &#62; 15 and 15 or size do 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AC_IND2(DS:C(i))
&nbsp;&nbsp; end

&nbsp;&nbsp; for i = 1, size &#62; 15 and 15 or size&nbsp;&nbsp;do 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local tbl = {MA_IND1(DS:C(i))}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;message('MA_IND1 : ' .. tostring(tbl&#91;2&#93;))
&nbsp;&nbsp; end

&nbsp;&nbsp; for i = 1, size &#62; 100 and 100 or size&nbsp;&nbsp;do
&nbsp;&nbsp;&nbsp;&nbsp; MA_IND2(DS:H(i))
&nbsp;&nbsp; end
&nbsp;&nbsp; ---- Сброс индикатора (запрос нового замыкания) ---
&nbsp;&nbsp; MA_IND2 = INDICATORS.MA( -- return value
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;100,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -- Период&nbsp;&nbsp;скользящей
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'EMA'&nbsp;&nbsp;&nbsp;&nbsp;-- Метод расчета скользящих (SMA, MMA, EMA, WMA, SMMA, VMA)
&nbsp;&nbsp; )
&nbsp;&nbsp; -- Тест индикаторов Конец&nbsp;&nbsp;----------------------------------------

&nbsp;&nbsp; while is_run do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sleep(timeout)
&nbsp;&nbsp; end
end

function OnStop()
&nbsp;&nbsp; is_run = false
&nbsp;&nbsp; return 10000&nbsp;&nbsp;-- (млс.) ожидание завершения потока main прежде чем принудительное его завершение ---
end
</pre>
=============
<br /><br />------------------------------------------------------------------------------------------------<br />2. &nbsp;Код модуля:<br />
====code====
<pre>
--- Модуль подключения индикаторов папки LuaIndicators с сайта ARQA (https://arqatech.com/ru/support/files/):
-- Примеры функций расчета индикаторов терминала QUIK на языке Lua.
-------------------------------------------- 
local IND = {}
---------------------------------------------------------------------------------------------------
--- КОНСТАНТЫ -------------------------------------------------------------------------------------
local SMA,MMA,EMA,WMA,SMMA,VMA = 'SMA','MMA','EMA','WMA','SMMA','VMA'
local OPEN,HIGH,LOW,CLOSE,VOLUME,MEDIAN,TYPICAL,WEIGHTED,DIFFERENCE,ANY = 'O','H','L','C','V','M','T','W','D','A'
---------------------------------------------------------------------------------------------------
---------------- Подключение к роботу индикаторы из папки LuaIndicators (с файлами кодов индикаторов) ------------
local pach_IND = getWorkingFolder() .. '&#92;&#92;LuaIndicators'&nbsp;&nbsp;--&nbsp;&nbsp;&nbsp;&nbsp; Путь к кодам индикаторов --
-- ! Код индикатора из папки LuaIndicators помещаются в исходном виде внутрь оболочки-фабрики (на Lua), 
-- обеспечивающей создание индикаторов-замыканий с параметрами заданными при вызове такой фабрики.
--&nbsp;&nbsp;! Пролог: начало функции-фабрики:&nbsp;&nbsp;&nbsp;&nbsp; ------
local Prologue = &#91;&#91; -- создание окружения фабрики ---
local PRM = {...}&nbsp;&nbsp;---
PRM = PRM&#91;1&#93;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -- Таблица параметров индикатора ---
------------------------------------------------------
-- Таблица окружения создаваемого замыкания индикатора --
-- Начальная инициализация тиблицы-окружения замыканий-индикаторо (объектами, используемыми в вычислении индикаторов)
-- выполняется из ! текущего окружения фабрики. Существенно только то, что эти объекты должны существовать. 
local ENV_IND = {&nbsp;&nbsp;
&nbsp;&nbsp; -- Объекты из _ENV, необходимые для расчета индикаторов --
&nbsp;&nbsp; tonumber = tonumber
&nbsp;&nbsp; , tostring = tostring
&nbsp;&nbsp; , type = type
&nbsp;&nbsp; , select = select
&nbsp;&nbsp; , table = table
&nbsp;&nbsp; , pack = pack or table.pack&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- 
&nbsp;&nbsp; , unpack = unpack or table.unpack&nbsp;&nbsp;--
&nbsp;&nbsp; , string = string
&nbsp;&nbsp; , math = math
&nbsp;&nbsp; , package = package
&nbsp;&nbsp; , require = require
&nbsp;&nbsp; , debug = debug
&nbsp;&nbsp; , next = next
&nbsp;&nbsp; , os = os
&nbsp;&nbsp; , io = io
&nbsp;&nbsp; , RGB = RGB
&nbsp;&nbsp; , message = message
&nbsp;&nbsp; , getWorkingFolder = getWorkingFolder
&nbsp;&nbsp; , getScriptPath = getScriptPath
&nbsp;&nbsp; -- !! Переменнпой ENV_begin таблиц-окружения замыканий-индикаторов будет присвоено окружение-родитель (с чего все началось)
&nbsp;&nbsp; , ENV_begin = type(ENV_begin) == 'table' and ENV_begin or _ENV&nbsp;&nbsp;--&nbsp;&nbsp;при первом формировании таблицы-окружения ENV_begin = _ENV
}
local ENV_ENV = _ENV&nbsp;&nbsp; -- Сохранения окружения --
_ENV = ENV_IND&nbsp;&nbsp; -- Переключение окружения перед инициализацией замыкания индикатора ---
&#93;&#93; 

-- -- ! Эпилог: в конце функции-фабрики:&nbsp;&nbsp;&nbsp;&nbsp; ------
local Epilogue = &#91;&#91;
---- Начало эпилога ---
&nbsp;&nbsp; if not PRM then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;message(debug.getinfo(1).currentline .. ' ! ОШИБКА: не заданы параметры индикатора ' .. tostring(Settings.Name), 3)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 
&nbsp;&nbsp; end
&nbsp;&nbsp; --- 
&nbsp;&nbsp; for k, v in next, PRM do&nbsp;&nbsp;-- присвоение параметров индикатора --
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if not Settings&#91;k&#93; then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -- #### Выдача сообщения об ошибки ---
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; message(debug.getinfo(1).currentline .. ' ! ОШИБКА в параметрах индикатора ' .. tostring(Settings.Name), 3)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Settings&#91;k&#93; = v 
&nbsp;&nbsp; end
&nbsp;&nbsp; Init()&nbsp;&nbsp;-- Инициализация фабрики параметрами индикатора --- 

&nbsp;&nbsp; -- Перегрузка function GetValueEX ---
&nbsp;&nbsp; function GetValueEX(I,VT, DS) 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return ds_IND
&nbsp;&nbsp; end
&nbsp;&nbsp; 
&nbsp;&nbsp; -- Перегрузка function CandleExist(I,ds)&nbsp;&nbsp; -- проверка существования свечи&nbsp;&nbsp;---
&nbsp;&nbsp; function CandleExist(I,ds)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return true
&nbsp;&nbsp; end 
&nbsp;&nbsp; 
&nbsp;&nbsp; local Index_IND = 0&nbsp;&nbsp; -- Внутренний счетчик обращения к индикатору (внешняя локальная переменная замыкания)---
&nbsp;&nbsp; ------
&nbsp;&nbsp; _ENV = ENV_ENV&nbsp;&nbsp;&nbsp;&nbsp;-- Восстановление окружения ---
&nbsp;&nbsp; return&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- возврат замыкания расчета очередного значения шндикатора --
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;function (DS)&nbsp;&nbsp;-- функция-замыкание для вычисления индикатора --
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; _ENV = ENV_IND&nbsp;&nbsp;-- ENV_IND - переменная хранения окружения, созданного для замыкания индикатора
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ds_IND = DS&nbsp;&nbsp;&nbsp;&nbsp; -- Передача значения в расчет индикатора ----
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Index_IND = Index_IND + 1
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return&nbsp;&nbsp;OnCalculate(Index_IND)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&#93;&#93;

local Indicator_factories = {}&nbsp;&nbsp; -- таблица функций-фабрик создания индикаторов {&#60;Имя индикатора&#62; = &#60;Функция&#62;}&nbsp;&nbsp;--
----
-- Функция создает фабрики индикаторов на основе кодов из папки LuaIndicators&nbsp;&nbsp;--
-- Результат функция-замыкание индикатора: F_IND ---
--&nbsp;&nbsp; Вызов функции: F_IND(val)
-- где val - очередное значение источника индикатора --
-- а результат функции: значения индикатора (их может быть несколько, в зависимости от вида индикатора)
local function Get_Indicator(Indic, Settings)
&nbsp;&nbsp; local func = Indicator_factories&#91;Indic&#93;
&nbsp;&nbsp; if not func then -- Ищется код индикатора и создается его фабрика ---
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- Создание фабрики индикатора (поиск кода индикатора, добавление пролога и эпилога, 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- компиляция и добавление в Indicator_factories)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local folder_of = pach_IND .. '&#92;&#92;' .. Indic .. '.lua'&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local kod_IND
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--- Чтениие источника&nbsp;&nbsp;---
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local kodZ, io_open, err =&nbsp;&nbsp;pcall( io.open, folder_of, 'r')&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if io_open then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kod_IND = io_open:read('*a')
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; assert(io_open:close())
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; message(debug.getinfo(1).currentline .. ' ! ОШИБКА: нет кода индикатора ' .. tostring(Indic), 3)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;kodZ, func, err =&nbsp;&nbsp;pcall(load, Prologue .. kod_IND .. Epilogue)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if not func then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; message(debug.getinfo(1).currentline .. ' ! ОШИБКА: трансляции код индикатора ' .. tostring(Indic) .. '. Подробности: ' .. tostring(err), 3)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;---
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Indicator_factories&#91;Indic&#93; = func&nbsp;&nbsp;-- 
&nbsp;&nbsp; end
&nbsp;&nbsp; -- Возвращает экземпляр функции индикатора с состоянием, определяемым параметрами вызова данной функции ---
&nbsp;&nbsp; return func(Settings)&nbsp;&nbsp; -- результат функция-замыкание индикатора ---
end

---------------------------------------------------------------------------------------------------
--&nbsp;&nbsp; &#60;Функция создания индикаторов&#62; (&#60;Параметры индикатора&#62;)
-- Результат: функция-замыкание расчета индикатора.
------
-- Вызов полученного замыкания:
--&nbsp;&nbsp;&nbsp;&nbsp; &#60;Функция-замыкание&#62;(&#60;Очередное значение для расчета индикатора&#62;)
--&nbsp;&nbsp;Результат (возможно несколько значений, определяемых видом индикатора):&nbsp;&nbsp;значения индикатора, 
-- определяемые параметрами создания замыкания на основе кода индикатора в папке ...Lua&#92;&#92;LuaIndicators.
-- !! В кодах индикаторов результат определяется функцией OnCalculate.
-----
--&nbsp;&nbsp; !&nbsp;&nbsp;Для сброса индикатора-замыкания в начальное состояние, его надо пересоздать.
---------------------------------------------------------------------------------------------------
--------------- Далее представлены три примера объявления заголовочных функций описаний параметров 
-- подключаемых индикаторов. Параметры такой функции это список полей из таблицы Settings соответствующего 
-- индикатора папки LuaIndicators, для которых требуется задать значения, определяющие поведение создаваемого
-- замыкания. Результат: значения функции OnCalculate (их может быть несколько) оответствующего индикатора.
-- AC (Accelerator/Decelerator Oscillator)
IND.AC = function(
&nbsp;&nbsp; SHORT_Period,&nbsp;&nbsp;-- Период короткой скользящей
&nbsp;&nbsp; LONG_Period,&nbsp;&nbsp; -- Период длинной скользящей
&nbsp;&nbsp; Metod&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- Метод расчета скользящих (SMA, MMA, EMA, WMA, SMMA, VMA)
)
&nbsp;&nbsp; local Settings = {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SHORT_Period = SHORT_Period, 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LONG_Period = LONG_Period, 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Metod = Metod
&nbsp;&nbsp; }
&nbsp;&nbsp; 
&nbsp;&nbsp; -- Возвращает экземпляр функции индикатора с состоянием, определяемым параметрами вызова текущей функции--
&nbsp;&nbsp; return Get_Indicator('AC', Settings)
end

--Average Directional Movement Index ("ADX")
IND.ADX = function( 
&nbsp;&nbsp; Period,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- Период
&nbsp;&nbsp; Metod&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- Метод расчета скользящих (SMA, MMA, EMA, WMA, SMMA, VMA)
)
&nbsp;&nbsp; local Settings = {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Period = Period, 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Metod = Metod
&nbsp;&nbsp; }
&nbsp;&nbsp; 
&nbsp;&nbsp; -- Возвращает экземпляр функции индикатора с состоянием, определяемым параметрами вызова текущей функции-
&nbsp;&nbsp; return Get_Indicator('ADX', Settings)
end

--Moving Average ("MA")&nbsp;&nbsp;&nbsp;&nbsp;( 50000 циклов,&nbsp;&nbsp;Period = 100, Metod = SMA:&nbsp;&nbsp;340 млс.)
IND.MA = function(
&nbsp;&nbsp; Period,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- Период
&nbsp;&nbsp; Metod&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- Метод расчета скользящих (SMA, MMA, EMA, WMA, SMMA, VMA)
)
&nbsp;&nbsp; local Settings = {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Period = Period,&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Metod = Metod
&nbsp;&nbsp; }
&nbsp;&nbsp; 
&nbsp;&nbsp; -- Возвращает экземпляр функции индикатора с состоянием, определяемым параметрами вызова текущей функции-
&nbsp;&nbsp; return Get_Indicator('MA', Settings)
end
--&nbsp;&nbsp; И так далее (по образу и подобию уже представленных)&nbsp;&nbsp;---
return IND
</pre>
============= <br />
			<i>08.07.2024 21:57:41, TGB.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message76052/topic8691/</link>
			<guid>http://forum.quik.ru/messages/forum10/message76052/topic8691/</guid>
			<pubDate>Mon, 08 Jul 2024 21:57:41 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
	</channel>
</rss>
