<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[QUIK -> DDE &mdash; Как перезапустить скрипт или предотвратить остановку из-за nil ошибки?]]></title>
	<link rel="self" href="https://quik2dde.ru/extern.php?action=feed&amp;tid=355&amp;type=atom" />
	<updated>2021-11-18T21:12:22Z</updated>
	<generator>PunBB</generator>
	<id>https://quik2dde.ru/viewtopic.php?id=355</id>
		<entry>
			<title type="html"><![CDATA[Re: Как перезапустить скрипт или предотвратить остановку из-за nil ошибки?]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=3375#p3375" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[kalikazandr]]></name>
				<uri>https://quik2dde.ru/profile.php?id=208</uri>
			</author>
			<updated>2021-11-18T21:12:22Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=3375#p3375</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Как перезапустить скрипт или предотвратить остановку из-за nil ошибки?]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=3374#p3374" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[ecoreon]]></name>
				<uri>https://quik2dde.ru/profile.php?id=3323</uri>
			</author>
			<updated>2021-11-18T19:37:36Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=3374#p3374</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Как перезапустить скрипт или предотвратить остановку из-за nil ошибки?]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=3373#p3373" />
			<content type="html"><![CDATA[<p>Но зачем?</p>]]></content>
			<author>
				<name><![CDATA[swerg]]></name>
				<uri>https://quik2dde.ru/profile.php?id=78</uri>
			</author>
			<updated>2021-11-18T18:09:30Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=3373#p3373</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Как перезапустить скрипт или предотвратить остановку из-за nil ошибки?]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=3372#p3372" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[ecoreon]]></name>
				<uri>https://quik2dde.ru/profile.php?id=3323</uri>
			</author>
			<updated>2021-11-18T13:52:59Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=3372#p3372</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Как перезапустить скрипт или предотвратить остановку из-за nil ошибки?]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=3371#p3371" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[swerg]]></name>
				<uri>https://quik2dde.ru/profile.php?id=78</uri>
			</author>
			<updated>2021-11-18T12:42:28Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=3371#p3371</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Как перезапустить скрипт или предотвратить остановку из-за nil ошибки?]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=3370#p3370" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[ecoreon]]></name>
				<uri>https://quik2dde.ru/profile.php?id=3323</uri>
			</author>
			<updated>2021-11-18T12:11:52Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=3370#p3370</id>
		</entry>
</feed>
