<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[QUIK -> DDE &mdash; Общие вопросы по написанию скриптов LUA.]]></title>
		<link>https://quik2dde.ru/viewtopic.php?id=405</link>
		<atom:link href="https://quik2dde.ru/extern.php?action=feed&amp;tid=405&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «Общие вопросы по написанию скриптов LUA.».]]></description>
		<lastBuildDate>Wed, 11 Oct 2023 12:14:16 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: Общие вопросы по написанию скриптов LUA.]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=4287#p4287</link>
			<description><![CDATA[<p>Понимаю то, что вам требуется.<br />Но нормальных штатных средств для этого нет.</p><p>Особенно вот этого:<br /></p><div class="quotebox"><cite>dark184 пишет:</cite><blockquote><p>дергать текущую свечу по ее изменению, желательно с обоих графиков.</p></blockquote></div>]]></description>
			<author><![CDATA[null@example.com (swerg)]]></author>
			<pubDate>Wed, 11 Oct 2023 12:14:16 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=4287#p4287</guid>
		</item>
		<item>
			<title><![CDATA[Re: Общие вопросы по написанию скриптов LUA.]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=4286#p4286</link>
			<description><![CDATA[<p>Для моей задачи синхронность не играет вообще никакой роли. Главное выцеплять из двух графиков правильные данные. Для меня важно дергать текущую свечу по ее изменению, желательно с обоих графиков.</p>]]></description>
			<author><![CDATA[null@example.com (dark184)]]></author>
			<pubDate>Wed, 11 Oct 2023 06:10:00 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=4286#p4286</guid>
		</item>
		<item>
			<title><![CDATA[Re: Общие вопросы по написанию скриптов LUA.]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=4285#p4285</link>
			<description><![CDATA[<p>Построить синтетические индикаторы от нескольких графиков - это шаманство и колдунство, т.к. данные приходят несинхронно.</p>]]></description>
			<author><![CDATA[null@example.com (swerg)]]></author>
			<pubDate>Tue, 10 Oct 2023 17:08:39 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=4285#p4285</guid>
		</item>
		<item>
			<title><![CDATA[Re: Общие вопросы по написанию скриптов LUA.]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=4284#p4284</link>
			<description><![CDATA[<p>Всем привет. Возник такой вопрос. Мне в индикаторе нужны два источника данных с двух инструментов. Тестовый вариант индикатора написал. Добавил в график два графика Price. Оба нужны для расчета. Как я понимаю с первого графика я могу получать данные как обычный индикатор, со второго графика получаю данные по идентификатору функцией getCandlesByIndex().<br />Получается какой то бред, с первого графика я получаю чушь, со второго получаю в OnCalculate() все исторические данные, начиная с первой до последней строки. Более данный коллбэк не срабатывает вообще</p><div class="codebox"><pre><code>function OnCalculate(i)
      local C1=C(i)
      local t=getCandlesByIndex(Settings.sec,0,i,1);  t=t[#t];
      if t  then
         local C2=t.close;
         if C2  and C1 then
            x=C1
            х1=C2
         end
      end
   return x,х1
end</code></pre></div><p>По задумке в С1 должна быть цена закрытия текущей свечи первого (верхнего инструмента), Но по факту оказывается цена закрытия свечи толи предыдущей, толи следующей за текущей(т.к. почему то коллбэк просматривает всю историю и замолкает, а должен отрабатывать при изменении цены насколько я понял), НО! нижнего графика.<br />В С2 должна быть цена закрытия текущей свечи уже нижнего графика, где sec это идентификатор второго (нижнего) графика.<br />Что я делаю не так?</p>]]></description>
			<author><![CDATA[null@example.com (dark184)]]></author>
			<pubDate>Tue, 10 Oct 2023 15:42:12 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=4284#p4284</guid>
		</item>
		<item>
			<title><![CDATA[Re: Общие вопросы по написанию скриптов LUA.]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=4279#p4279</link>
			<description><![CDATA[<p>Блин, жаль.</p>]]></description>
			<author><![CDATA[null@example.com (dark184)]]></author>
			<pubDate>Tue, 19 Sep 2023 07:14:19 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=4279#p4279</guid>
		</item>
		<item>
			<title><![CDATA[Re: Общие вопросы по написанию скриптов LUA.]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=4278#p4278</link>
			<description><![CDATA[<div class="quotebox"><cite>dark184 пишет:</cite><blockquote><p>кроме этих, например тот же OnDepoLimit() индикатор не отработает?</p></blockquote></div><p>Нет, только указанные выше в индикаторе работают.</p>]]></description>
			<author><![CDATA[null@example.com (swerg)]]></author>
			<pubDate>Tue, 19 Sep 2023 07:09:38 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=4278#p4278</guid>
		</item>
		<item>
			<title><![CDATA[Re: Общие вопросы по написанию скриптов LUA.]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=4277#p4277</link>
			<description><![CDATA[<p>Я имел ввиду кроме этих, например тот же OnDepoLimit() индикатор не отработает?</p>]]></description>
			<author><![CDATA[null@example.com (dark184)]]></author>
			<pubDate>Tue, 19 Sep 2023 05:37:07 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=4277#p4277</guid>
		</item>
		<item>
			<title><![CDATA[Re: Общие вопросы по написанию скриптов LUA.]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=4276#p4276</link>
			<description><![CDATA[<p>У индикатора свои колбеки. Про это написано в документации.</p><ul><li><p>Init </p></li><li><p>OnCalculate </p></li><li><p>OnDestroy </p></li><li><p>OnChangeSettings </p></li></ul>]]></description>
			<author><![CDATA[null@example.com (swerg)]]></author>
			<pubDate>Tue, 19 Sep 2023 05:34:45 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=4276#p4276</guid>
		</item>
		<item>
			<title><![CDATA[Re: Общие вопросы по написанию скриптов LUA.]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=4275#p4275</link>
			<description><![CDATA[<p>А вот насчет коллбэков, индикатор их тоже может отрабатывать? Просто в справке я не нашел ни слова об этом.</p>]]></description>
			<author><![CDATA[null@example.com (dark184)]]></author>
			<pubDate>Tue, 19 Sep 2023 05:25:47 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=4275#p4275</guid>
		</item>
		<item>
			<title><![CDATA[Re: Общие вопросы по написанию скриптов LUA.]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=4274#p4274</link>
			<description><![CDATA[<div class="quotebox"><cite>dark184 пишет:</cite><blockquote><p>1. Зачем индикатору функция sendTransaction()??? Индикатор тоже может выставлять заявки?</p></blockquote></div><p>Да, может.<br />Если по какой-то причине это удобнее - то можно и в индикаторе.</p><div class="quotebox"><cite>dark184 пишет:</cite><blockquote><p>2. Судя по описанию, есть также функции для получения данных с любых графиков по идентификаторам. Т.е. скрипт индикатора тоже это умеет?</p></blockquote></div><p>Да. Это способ строить синтетические графики.</p><div class="quotebox"><cite>dark184 пишет:</cite><blockquote><p>3. Неужели скрипт индикатора умеет работать и со стаканом???<br />4. А вот функции CreateDataSource() я не нашел.</p></blockquote></div><p><em>Из справки:</em><br /></p><h5>Список функций, доступных из скрипта индикатора:</h5><ul><li><p><strong>getWorkingFolder&nbsp; </strong>– возвращает путь, по которому находится файл info.exe, исполняющий скрипт,</p></li><li><p><strong>getScriptPath&nbsp; </strong>– возвращает путь, по которому находится запускаемый скрипт</p></li><li><p><strong>getNumberOf&nbsp; </strong>– возвращает количество записей в таблице «TableName»</p></li><li><p><strong>getItem&nbsp; </strong>– возвращает таблицу Lua, содержащую информацию о данных из строки с номером «Index» из таблицы с именем «TableName»</p></li><li><p><strong>getParamEx&nbsp; </strong>– получает значения всех параметров биржевой информации из Таблицы текущих торгов</p></li><li><p><strong>message&nbsp; </strong>– отображает сообщения в терминале QUIK</p></li><li><p><strong>isConnected&nbsp; </strong>– определяет состояние подключения клиентского места к серверу</p></li><li><p><strong>getTradeDate&nbsp; </strong>– получает дату торговой сессии</p></li><li><p><strong>getInfoParam&nbsp; </strong>– позволяет получить параметры для информационного окна (Связь/Информационное окно)</p></li><li><p><strong>getClassSecurities&nbsp; </strong>– получает список кодов инструментов для списка классов, заданного списком кодов</p></li><li><p><strong>getClassInfo&nbsp; </strong>– получает информацию о классе</p></li><li><p><strong>getClassesList&nbsp; </strong>– получает список кодов классов, полученных с сервера в ходе сеанса связи</p></li><li><p><strong>getSecurityInfo&nbsp; </strong>– получает информацию по инструменту</p></li><li><p><strong>getQuoteLevel2&nbsp; </strong>– получает стакан по указанному классу и инструменту</p></li><li><p><strong>getMoney&nbsp; </strong>– получает информацию по денежным позициям</p></li><li><p><strong>getDepo&nbsp; </strong>– получает позиции по инструментам</p></li><li><p><strong>sendTransaction&nbsp; </strong>– функция для работы с заявками</p></li><li><p><strong>SearchItems&nbsp; </strong>– позволяет реализовать быструю выборку элементов из хранилища терминала и возвращает таблицу с индексами элементов, удовлетворяющих условию поиска</p></li><li><p><strong>getPortfolioInfo&nbsp; </strong>– получает значения параметров таблицы «Клиентский портфель»</p></li><li><p><strong>getBuySellInfo&nbsp; </strong>– получает параметры таблицы «Купить/Продать»</p></li><li><p><strong>getPortfolioInfoEx&nbsp; </strong>– получает значения параметров таблицы «Клиентский портфель» с учетом срока расчётов</p></li><li><p><strong>getBuySellInfoEx&nbsp; </strong>– получает параметры таблицы «Купить/Продать» с учетом срока расчётов</p></li><li><p><strong>getOrderByNumber&nbsp; </strong>–возвращает таблицу Lua, содержащую описание параметров Таблицы заявок и индекс заявки в хранилище терминала</p></li><li><p><strong>RGB </strong>– преобразовывает компоненты RGB (red, green, blue) в одно число</p></li><li><p><strong>AddLabel </strong>- добавляет метку с заданными параметрами</p></li><li><p><strong>DelLabel </strong>- удаляет метку с заданными параметрами</p></li><li><p><strong>DelAllLabels </strong>- удаляет все метки на диаграмме с указанным графиком</p></li><li><p><strong>GetLabelParams </strong>- получает параметры метки</p></li><li><p><strong>SetLabelParams </strong>- задает параметры для метки с указанным идентификатором</p></li><li><p><strong>SetValue </strong>- устанавливает указанное значение на выбранной линии определенной свечи индикатора</p></li><li><p><strong>GetValue </strong>- получает значение, установленное на выбранной линии указанной свечи индикатора</p></li><li><p><strong>SetRangeValue </strong>- устанавливает указанное значение на выбранной линии для определенного интервала индексов свечей индикатора</p></li><li><p><strong>isDarkTheme </strong>- позволяет получить информацию о том, в какой теме оформления интерфейса в настоящий момент работает терминал: стандартной или тёмной</p></li></ul>]]></description>
			<author><![CDATA[null@example.com (swerg)]]></author>
			<pubDate>Mon, 18 Sep 2023 19:32:49 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=4274#p4274</guid>
		</item>
		<item>
			<title><![CDATA[Re: Общие вопросы по написанию скриптов LUA.]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=4273#p4273</link>
			<description><![CDATA[<p>Всем доброго времени суток. Есть пара вопросов по индикаторам. Бегло почитал и увидел некоторые странности.<br />1. Зачем индикатору функция sendTransaction()??? Индикатор тоже может выставлять заявки? Если да, то я очень сильно удивлен...<br />2. Судя по описанию, есть также функции для получения данных с любых графиков по идентификаторам. Т.е. скрипт индикатора тоже это умеет?<br />3. Неужели скрипт индикатора умеет работать и со стаканом???<br />4. А вот функции CreateDataSource() я не нашел. Принципиально мне понятно почему, ибо как я понял для индикатора источником данных является сам график цены в котором он и открыт. Но все же, есть возможность создать второй источник данных с другого инструмента??? Т.е. например так, открываю график цены и объема на один инструмент, затем в настройках графика добавляю новый инструмент с графиком price. В итоге имеем два графика Price в одном окне, добавляю сюда же свой индикатор. Смогу ли я в индикаторе работать сразу с двумя графиками? Или с 10, а то и с 50?</p>]]></description>
			<author><![CDATA[null@example.com (dark184)]]></author>
			<pubDate>Mon, 18 Sep 2023 12:06:49 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=4273#p4273</guid>
		</item>
		<item>
			<title><![CDATA[Re: Общие вопросы по написанию скриптов LUA.]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=4257#p4257</link>
			<description><![CDATA[<p>Есть еще один вопрос... Помогите модифицировать такой шаблон в <br /></p><div class="codebox"><pre><code>string.gmatch(str, &quot;[^;]+&quot;)</code></pre></div><p> Проблема в том, например, есть строка<br /></p><div class="codebox"><pre><code>30.08.2021 13:01;374158285;22180842523;;Купля;1</code></pre></div><p>Если в ней встречаются подряд два символа &quot;;&quot;, то есть в формате csv одна ячейка пустая, функция не возвращает ни пустую строку, ни значение nil. Я ожидаю получить значение &quot;Купля&quot;, а получаю следующее значение за ней &quot;1&quot;.<br />Пока забил туда такой костыль<br /></p><div class="codebox"><pre><code>str = string.gsub(str,&quot;;;&quot;,&quot;;0;&quot;)</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (dark184)]]></author>
			<pubDate>Sun, 25 Jun 2023 15:24:33 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=4257#p4257</guid>
		</item>
		<item>
			<title><![CDATA[Re: Общие вопросы по написанию скриптов LUA.]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=4255#p4255</link>
			<description><![CDATA[<p>Всем привет. Возникла необходимость разобрать строку по шаблону и чтобы не плодить if задумался, а может ли string.match или какая другая функция, искать подстроку одновременно по двум шаблонам? Первое же совпадение необходимо вернуть.<br />Если более подробно. Есть строка с разделителями &quot;;&quot;, в которой есть набор символов &quot;Купля&quot;, &quot;Продажа&quot; или вообще не попасться совпадения. В любом случае возможен только один из трех вариантов, в первом надо вернуть &quot;Купля&quot;, во втором &quot;Продажа&quot;, в третьем nil. Именно этим функция и занимается, но как правильно составить шаблон и возможно ли это?</p>]]></description>
			<author><![CDATA[null@example.com (dark184)]]></author>
			<pubDate>Sun, 25 Jun 2023 11:23:12 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=4255#p4255</guid>
		</item>
		<item>
			<title><![CDATA[Re: Общие вопросы по написанию скриптов LUA.]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=4246#p4246</link>
			<description><![CDATA[<p>Все равно надо проверить все три условия в любом языке, иначе как узнать &quot;куда надо&quot;?</p><p>Так что спокойно пишите 2 условия - и все будет хорошо и максимально быстро:</p><div class="codebox"><pre><code>if Var == 0 then
....
elseif Var &gt; 0 then
....
else
  -- здесь точно Var &lt; 0
....
end</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (swerg)]]></author>
			<pubDate>Sun, 18 Jun 2023 16:50:59 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=4246#p4246</guid>
		</item>
		<item>
			<title><![CDATA[Re: Общие вопросы по написанию скриптов LUA.]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=4245#p4245</link>
			<description><![CDATA[<p>Есть еще вопрос. <br />К примеру есть у меня три условия:<br /></p><div class="codebox"><pre><code>1. Var == 0
2. Var &gt; 0
3. Var &lt; 0</code></pre></div><p>Все их надо проверить и выполнить три разных действия. Само собой самое очевидное что можно сделать это использовать<br /></p><div class="codebox"><pre><code>if then end </code></pre></div><p> или же его полный вариант. Но это занимает время, ибо всегда проверяются все три условия в случае сокращенного написания или могут проверяться до трех условий. <br />А можно ли на Lua придумать что то, чтобы не проверять условия, а сразу уходить туда, куда надо?<br />Для примера можно привести swith-case из того же Си. Правда он тоже не умеет так, но это самый близкий по смыслу оператор...<br />Да и некое подобие Switch можно относительно легко построить с помощью таблицы(только для default уже скорее всего придется использовать метатаблицу и метод _index), а вот именно для условий ничего в голову не приходит.</p>]]></description>
			<author><![CDATA[null@example.com (dark184)]]></author>
			<pubDate>Sun, 18 Jun 2023 15:36:14 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=4245#p4245</guid>
		</item>
	</channel>
</rss>
