<?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; Простой вопрос по сделке через QLua скрипт]]></title>
		<link>https://quik2dde.ru/viewtopic.php?id=428</link>
		<atom:link href="https://quik2dde.ru/extern.php?action=feed&amp;tid=428&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «Простой вопрос по сделке через QLua скрипт».]]></description>
		<lastBuildDate>Sun, 22 Jan 2023 17:04:35 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: Простой вопрос по сделке через QLua скрипт]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=4099#p4099</link>
			<description><![CDATA[<p>Для этого есть единственная и бесплатная программа QUIK.</p>]]></description>
			<author><![CDATA[null@example.com (swerg)]]></author>
			<pubDate>Sun, 22 Jan 2023 17:04:35 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=4099#p4099</guid>
		</item>
		<item>
			<title><![CDATA[Re: Простой вопрос по сделке через QLua скрипт]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=4097#p4097</link>
			<description><![CDATA[<p>Спасибо. Подскажите, какой бесплатной программой можно визуализировать графики цен акций, которые сохраняет в файл Quik, напр., свечные графики с интервалом 1 мин.? Сам Quik, похоже, не показывает графики из файла.</p>]]></description>
			<author><![CDATA[null@example.com (Serge1234)]]></author>
			<pubDate>Sat, 21 Jan 2023 21:35:41 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=4097#p4097</guid>
		</item>
		<item>
			<title><![CDATA[Re: Простой вопрос по сделке через QLua скрипт]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=4093#p4093</link>
			<description><![CDATA[<div class="quotebox"><cite>Serge1234 пишет:</cite><blockquote><p>деньги от продажи акций ещё не вернулись на счёт? Меня интересует, как скрипту узнать, что эти деньги от продажи акции вернулись на счёт и их можно снова использовать для покупки?</p></blockquote></div><p>При исполнении заявки лимиты меняются не по изменению статуса заявки, а по сделке.<br />Сделки и заявки с точки зрения трансляции данных с биржи - не связанные сущности. Т.е. они, конечно, связаны логически, но запросто может возникнуть ситуация (да и постоянно она происходит), когда информацию об изменении статуса заявки уже пришла и флажки, например, на заявке уже изменились (и balance), но информация о сделке еще не пришла. Соответственно, лимиты еще не изменились. Лимиты изменятся только по приходу сделки.</p><p>Глазом это не видно, конечно, но в скрипте, в событиях скрипта - &quot;видно&quot;.</p>]]></description>
			<author><![CDATA[null@example.com (swerg)]]></author>
			<pubDate>Wed, 18 Jan 2023 18:41:13 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=4093#p4093</guid>
		</item>
		<item>
			<title><![CDATA[Re: Простой вопрос по сделке через QLua скрипт]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=4092#p4092</link>
			<description><![CDATA[<p>Определение &quot;заявка выполнена&quot; - оно не совсем точное, потому в зависимости от трактовки разные указанные вами признаки могут быть использованы или не могут.</p><p>В самом деле, что есть &quot;заявка выполнена&quot;? Варианты есть:<br />- заявка не активна (по флагам) - это означает или полностью снята, или частично исполнена, остаток снят, или полностью исполнена;<br />- balance == 0 - возникает только в случае &quot;заявка полностью исполнена&quot;; однако заявка может быть исполнена не полностью, после чего снята, тогда balance != 0, хотя по флагам &quot;исполнена / не активна&quot;.</p><p>Так что в зависимости от того что вы понимаете под термином &quot;заявка исполнена&quot; зависит то, на какие признаки смотреть.<br />Более того, возможно следует смотреть на разные признаки, т.к. ситуации могут быть разные, в которых следует принимать разные решения.</p>]]></description>
			<author><![CDATA[null@example.com (swerg)]]></author>
			<pubDate>Wed, 18 Jan 2023 18:24:14 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=4092#p4092</guid>
		</item>
		<item>
			<title><![CDATA[Re: Простой вопрос по сделке через QLua скрипт]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=4091#p4091</link>
			<description><![CDATA[<p>Кто скажет, зачем столько условий для проверки, что заявка выполнена (balance == 0, 2 мл. бита флагов == 0)? Чем эти условия отличаются? Может быть, когда balance == 0, но флаги говорят, что заявка ещё не выполнена, деньги от продажи акций ещё не вернулись на счёт? Меня интересует, как скрипту узнать, что эти деньги от продажи акции вернулись на счёт и их можно снова использовать для покупки?</p>]]></description>
			<author><![CDATA[null@example.com (Serge1234)]]></author>
			<pubDate>Wed, 18 Jan 2023 17:34:58 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=4091#p4091</guid>
		</item>
		<item>
			<title><![CDATA[Re: Простой вопрос по сделке через QLua скрипт]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=4088#p4088</link>
			<description><![CDATA[<p>Спасибо, а в каком коллбэке (видимо, что-то типа OnAccountBalance) и в каком параметре таблицы узнать после совершения сделки, сколько сейчас денег на счёте, чтобы скрипт знал, какой суммой для покупки акций располагает в данный момент?</p>]]></description>
			<author><![CDATA[null@example.com (Serge1234)]]></author>
			<pubDate>Wed, 04 Jan 2023 21:02:28 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=4088#p4088</guid>
		</item>
		<item>
			<title><![CDATA[Re: Простой вопрос по сделке через QLua скрипт]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=4087#p4087</link>
			<description><![CDATA[<div class="quotebox"><cite>Serge1234 пишет:</cite><blockquote><p>2. Есть ли в Lua проверка на ошибки в именах переменных (чтобы все переменные были объявлены), напр., один раз я написал quantity, а другой раз quantyti? В Perl для этого есть директива use strict, а как в Lua?</p></blockquote></div><p>Увы, в Lua такого нет.<br />Можно попробовать воспользоваться какими-нибудь статическими анализаторами для Lua, таковые есть.</p><div class="quotebox"><cite>Serge1234 пишет:</cite><blockquote><p>3. Как можно в OnOrder убедиться, что моя заявка полностью выполнена?</p></blockquote></div><p>Использование <span style="color: darkblue">order.flags % 4 == 0</span> будет отличным вариантом, думаю. Во всяком случае это будет точно признак &quot;заявка исполнена&quot;.<br />Хотя, хорошо бы проверить какое будет состояние битов 0 и 1 поля flags для частично исполненной заявки, после чего снятой. Из справки сложно сделать однозначный вывод. Только постановка эксперимента (хотя бы на демо-контуре).</p>]]></description>
			<author><![CDATA[null@example.com (swerg)]]></author>
			<pubDate>Tue, 03 Jan 2023 17:40:10 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=4087#p4087</guid>
		</item>
		<item>
			<title><![CDATA[Re: Простой вопрос по сделке через QLua скрипт]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=4086#p4086</link>
			<description><![CDATA[<p>Ясно, спасибо.<br />Возникли ещё вопросы:</p><p>1. Если функция main и коллбэки вызывают одну и ту же функцию, то она должна быть потокобезопасная (раньше их называли реентерабельными). Я правильно понимаю, что если в такой функции все переменные, в которые она пишет, объявить как local, то они будут размещены в её стеке и она будет потокобесопасной?<br />В Perl можно написать for my $i=..., тогда $i будет локализована в теле этого цикла, а в Lua почему-то не сделали, чтобы можно было написать for local i=1... Где в этом случае будет локализована переменная i, если она не будет объявлена? Надо ли в потокобезопасных функциях обязательно писать<br />local i<br />for i=... ?</p><p>2. Есть ли в Lua проверка на ошибки в именах переменных (чтобы все переменные были оъявлены), напр., один раз я написал quantity, а другой раз quantyti? В Perl для этого есть директива use strict, а как в Lua?</p><p>3. Как можно в OnOrder убедиться, что моя заявка полностью выполнена? Там есть поле balance. Вроде бы, когда оно равно нулю (а поле qty тогда вроде бы должно быть равно заданному количеству лотов в заявке), заявка полностью выполнена. Но на каком-то форуме я видел старое сообщение от swerg, что поле balance иногда может иметь значение nil. Это правда? Я в описании OnOrder такого не видел... И ещё можно вроде бы в этом убедиться, если выполняется order.flags % 4 == 0. Что из этой кучи проверок предпочесть?</p>]]></description>
			<author><![CDATA[null@example.com (Serge1234)]]></author>
			<pubDate>Tue, 03 Jan 2023 11:34:37 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=4086#p4086</guid>
		</item>
		<item>
			<title><![CDATA[Re: Простой вопрос по сделке через QLua скрипт]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=4085#p4085</link>
			<description><![CDATA[<div class="quotebox"><cite>Serge1234 пишет:</cite><blockquote><p>Почему не получается обратиться как m.a1? Как можно это сделать?</p></blockquote></div><p>Тут есть один маленький ньюанс<br />m.a1 это не m[a1]<br />m.a1 это m[&quot;a1&quot;]</p>]]></description>
			<author><![CDATA[null@example.com (BlaZed)]]></author>
			<pubDate>Mon, 02 Jan 2023 17:30:48 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=4085#p4085</guid>
		</item>
		<item>
			<title><![CDATA[Re: Простой вопрос по сделке через QLua скрипт]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=4084#p4084</link>
			<description><![CDATA[<p>Почему, к примеру, в OnTransReply(trans_reply) к элементу таблицы можно обращаться через точку:<br />trans_reply.trans_id<br />а в моём массиве<br />a1=1<br />m={ [a1]=&#039;111&#039; }<br />надо использовать квадратные скобки:<br />m[a1]</p><p>Почему не получается обратиться как m.a1? Как можно это сделать?</p>]]></description>
			<author><![CDATA[null@example.com (Serge1234)]]></author>
			<pubDate>Sun, 01 Jan 2023 18:07:00 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=4084#p4084</guid>
		</item>
		<item>
			<title><![CDATA[Re: Простой вопрос по сделке через QLua скрипт]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=4083#p4083</link>
			<description><![CDATA[<p>Сейчас смортю минутные свечи в окне OBLG ETF График цены и объёма, навожу курсор последовательно слева направо на свечи и в хинте под курсором смотрю время: 21:53, 22:00, 22:03, 22:05, 22:06, 22:09, 22:13. В соседнем окне GOLD ETF время в соседних свечах, как и положено, возрастает на 1 минуту. Как это чудо можно понять??</p><p>Посмотрел это на Андроиде, и там та же картина. Такое впечатление, что пропускаюся свечи, у которых цена не изменилась и объём равен нулю. Я о такой фиче не знал...</p>]]></description>
			<author><![CDATA[null@example.com (Serge1234)]]></author>
			<pubDate>Thu, 29 Dec 2022 19:16:42 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=4083#p4083</guid>
		</item>
		<item>
			<title><![CDATA[Re: Простой вопрос по сделке через QLua скрипт]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=4082#p4082</link>
			<description><![CDATA[<div class="quotebox"><cite>Serge1234 пишет:</cite><blockquote><p>... Прошло 15 минут с тех пор, как я начал запускать эту программку</p></blockquote></div><div class="quotebox"><cite>swerg пишет:</cite><blockquote><p>В том виде как вы привели эту программку - она не может 15 минут выполняться.<br />Это просто 2 строчки. Если буквально такой скрипт сделать - то он запустится и тут же остановится.<br />Т.е. на самом деле у вас скрипт совсем другой, а в этом деле как раз все нюансы и важны. но вы их не показываете.</p></blockquote></div><p>Вы шутите? Я имел в виду, что я эту программку запускал много раз в течение 15-ти минут, и ничего не менялось... И данные не менялись ЧАСАМИ, хотя, за день до этого актуальные данные поступали уже через неск. минут.</p><div class="quotebox"><cite>Serge1234 пишет:</cite><blockquote><p>Кстати, сейчас после 19:00 несколько минут опять наблюдал маразм в некоторых стаканах квика (в GOLD ETF): зелёненькие строчки с ценами и количеством для покупок наползали на красные строчки, некоторые зелёные строчки были высоко в красных.</p></blockquote></div><div class="quotebox"><cite>swerg пишет:</cite><blockquote><p>Там в 19-00 наверное торговая сессия заканчивается? тогда после торг. сессии биржа может транслировать всё что угодно (надо не забывать, что квик лишь ретранслирует данные с биржи!). Возможно там какой-то специальный послеторговый аукцион идет, где заявки сразу не удовлетворяются и просто собираются какое-то время, потому и чехарда в стакане.</p></blockquote></div><p>Сессия на мосбирже оканчивается вроде бы в 18:45, а в 19:00 она возобновляется, поэтому 19:02 рабочее время...</p><div class="quotebox"><cite>Serge1234 пишет:</cite><blockquote><p>Да, ещё остаётся проблема: если в стакане долго ничего не меняется, но скрипт не хочет ждать, тогда, похоже, в цикле надо запускать getQuoteLevel2, пока она не выдаст скрипту всё, что ему надо для начала работы?</p></blockquote></div><div class="quotebox"><cite>swerg пишет:</cite><blockquote><p>Это не понятно. getQuoteLevel2 выдает текущее состояние стакана, полученное терминалом. Зачем много раз опрашивать?</p></blockquote></div><p>Да, с этим я разобрался. После переделки скрипта в соответствии с примером Старателя, он, похоже, стал работать корректно. Остаётся непонятным, как, напр., получить актуальную цену последней сделки (LAST), если getParamEx2 доверять нельзя, а в стакане плохо видно эти сделки...</p><p>На этом форуме как-то непонятно работает цитирование, мне в этом ответе пришлось расставлять теги цитирования вручную...</p>]]></description>
			<author><![CDATA[null@example.com (Serge1234)]]></author>
			<pubDate>Thu, 29 Dec 2022 18:44:55 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=4082#p4082</guid>
		</item>
		<item>
			<title><![CDATA[Re: Простой вопрос по сделке через QLua скрипт]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=4081#p4081</link>
			<description><![CDATA[<div class="quotebox"><cite>Serge1234 пишет:</cite><blockquote><p>... Прошло 15 минут с тех пор, как я начал запускать эту программку</p></blockquote></div><p>В том виде как вы привели эту программку - она не может 15 минут выполняться.<br />Это просто 2 строчки. Если буквально такой скрипт сделать - то он запустится и тут же остановится.<br />Т.е. на самом деле у вас скрипт совсем другой, а в этом деле как раз все нюансы и важны. но вы их не показываете.</p><div class="quotebox"><cite>Serge1234 пишет:</cite><blockquote><p>А я думал: буду быстро опрашивать в цикле эти значения без коллбэков</p></blockquote></div><p>Так колбеки - это ж и есть кайф! не надо крутить никакие циклы, не надо подбирать sleep.<br />Как только терминал получил событие - тут же колбек и вызвался, мы тут же на него и отреагировали.</p><div class="quotebox"><cite>Serge1234 пишет:</cite><blockquote><p>Кстати, сейчас после 19:00 несколько минут опять наблюдал маразм в некоторых стаканах квика (в GOLD ETF): зелёненькие строчки с ценами и количеством для покупок наползали на красные строчки, некоторые зелёные строчки были высоко в красных.</p></blockquote></div><p>Там в 19-00 наверное торговая сессия заканчивается? тогда после торг. сессии биржа может транслировать всё что угодно (надо не забывать, что квик лишь ретранслирует данные с биржи!). Возможно там какой-то специальный послеторговый аукцион идет, где заявки сразу не удовлетворяются и просто собираются какое-то время, потому и чехарда в стакане.</p><div class="quotebox"><cite>Serge1234 пишет:</cite><blockquote><p>И для бумаг, с которыми работаешь в скрипте, надо задать скрипту диапазон цен, чтобы как-то определять, что полученная из функции цена похожа на реальную... Кто мешает брокеру подшутить и передать, скажем, значение BID для акции сберика в размере 1000 р.?</p></blockquote></div><p>Вообще говоря любые ограничения в скриптах - очень полезны. По времени, по скачкам цен, по прочим разным параметрам. Реальные скрипты всегда постепенно обрастают такого рода защитами, т.к. вполне может проскочить какая-то одна сделка по &quot;нереальной&quot; цене (ну т.е. сделка-то такая на самом деле пройдёт, но такой цена будет ну оочень кратковременно), а скрипт с дуру среагирует и начнет скупать, хотя цена уже отскочила.<br />И чем &quot;скоростнее&quot; стратегия - тем больше таких защит надо предусматривать в скрипте. Обязательно!</p><p>Вообще сколь-нибудь скоростные стратегии реализовывать и пытаться вскочить в большие гэпы - очень скользкое занятие в рамках клиентского терминала. Клиентские терминалы в этой цепочке - совершенно точно самые крайние звенья в&nbsp; этой цепи.<br />А любой гэп - это точно всегда большая волотильность на рынке, а значит забитые интернет-каналы, пиковые нагрузки на сервера брокера по рассылке данных и т.д. Где в этом месте окажется ваш конечный терминал - очень большой вопрос. И насколько доезжающая в него информация будет актуальной - тоже вопрос. И вы никак не можете ни проверить это, но влиять.</p><div class="quotebox"><cite>Serge1234 пишет:</cite><blockquote><p>Да, ещё остаётся проблема: если в стакане долго ничего не меняется, но скрипт не хочет ждать, тогда, похоже, в цикле надо запускать getQuoteLevel2, пока она не выдаст скрипту всё, что ему надо для начала работы?</p></blockquote></div><p>Это не понятно. getQuoteLevel2 выдает текущее состояние стакана, полученное терминалом. Зачем много раз опрашивать?</p>]]></description>
			<author><![CDATA[null@example.com (swerg)]]></author>
			<pubDate>Thu, 29 Dec 2022 06:36:07 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=4081#p4081</guid>
		</item>
		<item>
			<title><![CDATA[Re: Простой вопрос по сделке через QLua скрипт]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=4080#p4080</link>
			<description><![CDATA[<p>Интересно, можно успеть поймать скриптом падение цены во время крупной продажи и на кратковременной просадке купить бумаг? Такое впечатление, что с момента отправки транзакции и до приёма заявки сервером биржи пройдёт не менее секунды, как правило, ловить уже будет нечего...</p>]]></description>
			<author><![CDATA[null@example.com (Serge1234)]]></author>
			<pubDate>Wed, 28 Dec 2022 17:11:37 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=4080#p4080</guid>
		</item>
		<item>
			<title><![CDATA[Re: Простой вопрос по сделке через QLua скрипт]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=4079#p4079</link>
			<description><![CDATA[<p>Нет! Я сейчас в терминале смотрю BID и OFFER этого фонда ВТБ Росс. облигации, в стакане, соответственно, 133.36 и 133.40 р. Приложение для Андроида показывает то же. А этот скрипт упорно показывает 133.40 и 133.44 р. Откуда он это получает?</p><p>И второе: если я на что-то подписАлся, то я в скрипте как-то должен же узнать, начали эти данные соответствовать действительности, или они левые, как те, что вижу сейчас?</p><p>В этой моей программке, что я приводил выше, нет коллбэк функций, она не занимает время.</p><p>... Прошло 15 минут с тех пор, как я начал запускать эту программку, что привёл выше, а она выдаёт всё те же левые значения 133.40 и 133.4...</p><p>Вот здесь нашёл вроде бы решение проблемы:<br />[url]https://forum.quik.ru/messages/forum10/message46822/topic5631/#message46822[/url]</p><p>Получается, что getParamEx2, грубо говоря, фуфло, и непонятно, для чего нужна... А я думал: буду быстро опрашивать в цикле эти значения без коллбэков и вызова &quot;тяжёлых&quot; функций... Вот тебе, бабушка, и Юрьев день...</p><p>Обратил внимание на квалификацию саппорта квика в этой ветке их форума:<br />Alexander Kopyatkevich QUIK clients support:<br />===<br />09.07.2020 17:54:34<br />Именно для этого и нужно предварительно выполнить подписку на получение определенного параметра через ParamRequest.<br />После выполнения подписки с сервера QUIK отправятся последние данные, которые и будут являться актуальными.<br />===</p><p>Кстати, сейчас после 19:00 несколько минут опять наблюдал маразм в некоторых стаканах квика (в GOLD ETF): зелёненькие строчки с ценами и количеством для покупок наползали на красные строчки, некоторые зелёные строчки были высоко в красных. Лучшая цена на покупку была выше, чем лучшая цена на продажу. Получается, что мало получить стакан, надо делать защиту от дурака: перебирать все цены снизу вверх и проверять, что они строго возрастают. Только после этого можно что-то пытаться делать, а то можно навыставлять скриптом такие заявки, что пойдешь по миру...</p><p>И для бумаг, с которыми работаешь в скрипте, надо задать скрипту диапазон цен, чтобы как-то определять, что полученная из функции цена похожа на реальную... Кто мешает брокеру подшутить и передать, скажем, значение BID для акции сберика в размере 1000 р.?</p><p>Кстати, эта моя программка, что выше, по-прежнему показывает значения для облигаций в 133.40 и 133.44 р. И это после того, как квик 2341234123 раз получал эти параметры с сервера... Это разработчики квика такие молодцы?</p><p>Да, ещё остаётся проблема: если в стакане долго ничего не меняется, но скрипт не хочет ждать, тогда, похоже, в цикле надо запускать getQuoteLevel2, пока она не выдаст скрипту всё, что ему надо для начала работы?</p>]]></description>
			<author><![CDATA[null@example.com (Serge1234)]]></author>
			<pubDate>Wed, 28 Dec 2022 15:06:41 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=4079#p4079</guid>
		</item>
	</channel>
</rss>
