<?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; Как перезапустить скрипт или предотвратить остановку из-за nil ошибки?]]></title>
		<link>https://quik2dde.ru/viewtopic.php?id=355</link>
		<atom:link href="https://quik2dde.ru/extern.php?action=feed&amp;tid=355&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «Как перезапустить скрипт или предотвратить остановку из-за nil ошибки?».]]></description>
		<lastBuildDate>Thu, 18 Nov 2021 21:12:22 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: Как перезапустить скрипт или предотвратить остановку из-за nil ошибки?]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=3375#p3375</link>
			<description><![CDATA[<div class="quotebox"><cite>ecoreon пишет:</cite><blockquote><div class="quotebox"><cite>swerg пишет:</cite><blockquote><p>Но зачем?</p></blockquote></div><p>Чаще всего ошибка вылетала при исполнении цикла while</p></blockquote></div><p>привет! считайте лимиты сами, вам понадобятся НаПокупкуНеМаржин(не помню как параметр на lua) из портфеля клиента и параметры d_long и d_short из таблицы купить/продать, но если у вас такой косячный брокер, то лучше эти параметры сохранять в файл(иногда). а цикл уберите.</p>]]></description>
			<author><![CDATA[null@example.com (kalikazandr)]]></author>
			<pubDate>Thu, 18 Nov 2021 21:12:22 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=3375#p3375</guid>
		</item>
		<item>
			<title><![CDATA[Re: Как перезапустить скрипт или предотвратить остановку из-за nil ошибки?]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=3374#p3374</link>
			<description><![CDATA[<div class="quotebox"><cite>swerg пишет:</cite><blockquote><p>Но зачем?</p></blockquote></div><p>Чаще всего ошибка вылетала при исполнении цикла while</p><p>Ввёл в код ещё промежуточную переменную на значение getdepoex, чтобы уж наверняка:</p><p>ts=getdepoex(...)<br />If ts then<br />&nbsp; tbl_shares = ts<br />&nbsp; ...<br />end</p><p>И внутри while тоже.</p><p>Но теперь вся программа стала работать в 1.5 раза дольше, уменьшение sleep до 100 не особо ускоряет</p>]]></description>
			<author><![CDATA[null@example.com (ecoreon)]]></author>
			<pubDate>Thu, 18 Nov 2021 19:37:36 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=3374#p3374</guid>
		</item>
		<item>
			<title><![CDATA[Re: Как перезапустить скрипт или предотвратить остановку из-за nil ошибки?]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=3373#p3373</link>
			<description><![CDATA[<p>Но зачем?</p>]]></description>
			<author><![CDATA[null@example.com (swerg)]]></author>
			<pubDate>Thu, 18 Nov 2021 18:09:30 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=3373#p3373</guid>
		</item>
		<item>
			<title><![CDATA[Re: Как перезапустить скрипт или предотвратить остановку из-за nil ошибки?]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=3372#p3372</link>
			<description><![CDATA[<div class="quotebox"><cite>swerg пишет:</cite><blockquote><div class="codebox"><pre><code>tbl_shares = getDepoEx(m_firm, m_client, m_sec, m_acc, 2)
if tbl_shares then
    ....
end</code></pre></div><p>и весь код, использующий tbl_shares, убрать под этот if</p></blockquote></div><p>спасибо!!</p><p>а если так?</p><p>if getDepoEx(m_firm, m_client, m_sec, m_acc, 2) then<br />&nbsp; &nbsp; &nbsp; tbl_shares = getDepoEx(m_firm, m_client, m_sec, m_acc, 2)<br />&nbsp; &nbsp; &nbsp; qb = tbl_shares.locked_buy/lot<br />&nbsp; &nbsp; &nbsp; K1= {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[&#039;ACTION&#039;]=&#039;KILL_ORDER&#039;,<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[&#039;CLASSCODE&#039;]=m_class,<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[&#039;SECCODE&#039;]=m_sec,<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[&#039;ORDER_KEY&#039;]=tostring(key_b3),<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[&#039;TRANS_ID&#039;]=tostring(id_b3)<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br />&nbsp; &nbsp; &nbsp; Err_K1 = sendTransaction(K1)<br />&nbsp; &nbsp; &nbsp; while tbl_shares.locked_buy/lot==qb do<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; sleep(200)<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if getDepoEx(m_firm, m_client, m_sec, m_acc, 2) then<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;tbl_shares = getDepoEx(m_firm, m_client, m_sec, m_acc, 2)<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; end<br />&nbsp; &nbsp; &nbsp; end<br />end</p>]]></description>
			<author><![CDATA[null@example.com (ecoreon)]]></author>
			<pubDate>Thu, 18 Nov 2021 13:52:59 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=3372#p3372</guid>
		</item>
		<item>
			<title><![CDATA[Re: Как перезапустить скрипт или предотвратить остановку из-за nil ошибки?]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=3371#p3371</link>
			<description><![CDATA[<div class="codebox"><pre><code>tbl_shares = getDepoEx(m_firm, m_client, m_sec, m_acc, 2)
if tbl_shares then
    ....
end</code></pre></div><p>и весь код, использующий tbl_shares, убрать под этот if</p>]]></description>
			<author><![CDATA[null@example.com (swerg)]]></author>
			<pubDate>Thu, 18 Nov 2021 12:42:28 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=3371#p3371</guid>
		</item>
		<item>
			<title><![CDATA[Как перезапустить скрипт или предотвратить остановку из-за nil ошибки?]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=3370#p3370</link>
			<description><![CDATA[<p>Есть такая часть скрипта Quik Lua, проверяющая снятие заявки&nbsp; (см. ниже).<br />Однако периодически (с вероятностью 15-20% в день) скрипт останавливается, если на стороне брокера не подгружается лимит по бумаге, т.к. в результате программа получает значение по лимиту nil и не может сравнить значение.</p><p>Как сделать перезапуск остановленного скрипта после ошибки или предотвратить остановку скрипта при получении значения nil?</p><p>tbl_shares = getDepoEx(m_firm, m_client, m_sec, m_acc, 2)<br />qb = tbl_shares.locked_buy/lot<br />K1= {<br />&nbsp; &nbsp;&nbsp; [&#039;ACTION&#039;]=&#039;KILL_ORDER&#039;,<br />&nbsp; &nbsp;&nbsp; [&#039;CLASSCODE&#039;]=m_class,<br />&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; [&#039;SECCODE&#039;]=m_sec,<br />&nbsp; &nbsp;&nbsp; [&#039;ORDER_KEY&#039;]=tostring(key_b3),<br />&nbsp; &nbsp;&nbsp; [&#039;TRANS_ID&#039;]=tostring(id_b3)<br />&nbsp; &nbsp; }<br />Err_K1 = sendTransaction(K1)<br />while tbl_shares.locked_buy/lot==qb do<br />&nbsp; &nbsp; sleep(200)<br />&nbsp; &nbsp; &nbsp; &nbsp; tbl_shares = getDepoEx(m_firm, m_client, m_sec, m_acc, 2)<br />end</p>]]></description>
			<author><![CDATA[null@example.com (ecoreon)]]></author>
			<pubDate>Thu, 18 Nov 2021 12:11:52 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=3370#p3370</guid>
		</item>
	</channel>
</rss>
