<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[QUIK -> DDE &mdash; Структура робота.]]></title>
	<link rel="self" href="https://quik2dde.ru/extern.php?action=feed&amp;tid=369&amp;type=atom" />
	<updated>2022-04-21T05:09:48Z</updated>
	<generator>PunBB</generator>
	<id>https://quik2dde.ru/viewtopic.php?id=369</id>
		<entry>
			<title type="html"><![CDATA[Re: Структура робота.]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=3472#p3472" />
			<content type="html"><![CDATA[<p><strong>musin</strong>,<br />получилось разобраться?</p>]]></content>
			<author>
				<name><![CDATA[swerg]]></name>
				<uri>https://quik2dde.ru/profile.php?id=78</uri>
			</author>
			<updated>2022-04-21T05:09:48Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=3472#p3472</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Структура робота.]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=3471#p3471" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>musin пишет:</cite><blockquote><p>Это все я понимаю. Я просто удалил лишние строки , чтоб поменьше текста было.<br />...</p><p>вот в чем вопрос. В организации порядка функций. Может я что то неправильно понял из всех инструкций.</p></blockquote></div><p>Привет! На сколько мне известно, лишних строк в примерах не работающих скриптов не бывает, чаще их не хватает.<br />После оправки транзакции, флага не существует, его можно получить:<br />1. в потоке квика в OnTransReply, OnOrder и т.д.;<br />2. просматривать таблицу заявок в потока main на предмет появления новой записи (и в последующем ее изменении, если заявка исполнилась при выставлении, то изменений больше не будет).<br />Оба варианта требуют ожидания ответа от биржи на транзакцию.</p>]]></content>
			<author>
				<name><![CDATA[kalikazandr]]></name>
				<uri>https://quik2dde.ru/profile.php?id=208</uri>
			</author>
			<updated>2022-04-19T19:32:26Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=3471#p3471</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Структура робота.]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=3470#p3470" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>musin пишет:</cite><blockquote><p>Я не могу понять в каком потоке и как работают callbak&#039;и.</p></blockquote></div><p>В основном потоке терминала. <br />main() - в другом потоке.<br />Т.е. код callbak&#039;ов выполняется строго последовательно, в смысле только когда один заканчивается - начинает работать какой-то другой, а вот код из main() работает одновременно и параллельно со всем этим, это следует учитывать.</p><div class="quotebox"><cite>musin пишет:</cite><blockquote><p>если я ставлю sleep, то почему то сначала отрабатывает sleep и только потом идет скрипт дальше.</p></blockquote></div><p>Так sleep() это и есть &quot;приостановить работу программы на указанное время в миллисекундах&quot;.<br />Другое дело, что если вы его применяете внутри main(), то сам терминал работает как и раньше (т.к. он рабтает в своём основном потоке), а main() на время выполнения sleep останавливается. Для этого sleep и нужен.</p><div class="quotebox"><cite>musin пишет:</cite><blockquote><p>Даже почти разобрался с флагами. Допустим мне нужен флаг что сделка исполнена. (0x2)<br />Почему не запускается такое условие</p><div class="codebox"><pre><code>main()
    flag ==55
    sell() --- Функция продажи. Проверенно.
    while flag ~= 0x2 do 
      sleep(50)
    end
end </code></pre></div></blockquote></div><p>Потому что 0x2 это не значение flag на заявке, это &quot;битовая маска&quot;. Тут стоит почитать про двоичную систему счисления, биты, битовые операции.</p><p>Т.е. ваше условие, если я его верно понял, следует написать так:<br /></p><div class="codebox"><pre><code>    while (flag &amp; 0x2) == 0  do 
      sleep(50)
    end</code></pre></div>]]></content>
			<author>
				<name><![CDATA[swerg]]></name>
				<uri>https://quik2dde.ru/profile.php?id=78</uri>
			</author>
			<updated>2022-04-19T19:10:38Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=3470#p3470</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Структура робота.]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=3468#p3468" />
			<content type="html"><![CDATA[<p><strong>swerg</strong><br />Это все я понимаю. Я просто удалил лишние строки , чтоб поменьше текста было.<br />Я накидал общий шаблон.<br />Я не могу понять в каком потоке и как работают callbak&#039;и.<br />Тот же пример , что я писал выше , если я ставлю sleep , то почему то сначала отрабатывает sleep и только потом идет скрипт дальше.</p><br /><div class="codebox"><pre><code>main()
    while is_Run == true do
        buy()
        sell()
        calculate()
        sleep(10000)   --&lt;&lt;&lt;&lt;
    end
end</code></pre></div><br /><p>Даже почти разобрался с флагами. Допустим мне нужен флаг что сделка исполнена. (0x2)<br />Почему не запускается такое условие</p><div class="codebox"><pre><code>main()
    flag ==55
    sell() --- Функция продажи. Проверенно.
    while flag ~= 0x2 do 
      sleep(50)
    end
end 

--- здесь calback OnOrder(order) работы с флагом
OnOrder(order)</code></pre></div><p>вот в чем вопрос. В организации порядка функций. Может я что то неправильно понял из всех инструкций.</p>]]></content>
			<author>
				<name><![CDATA[musin]]></name>
				<uri>https://quik2dde.ru/profile.php?id=3355</uri>
			</author>
			<updated>2022-04-19T09:35:23Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=3468#p3468</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Структура робота.]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=3467#p3467" />
			<content type="html"><![CDATA[<p><strong>musin</strong>,<br />Приветствую вас на форуме!</p><p>Я бы рекомендовал начать понимание как оно все устроено вот с этой темы на форуме: [url=https://quik2dde.ru/viewtopic.php?id=16]Основы программирования на QLua[/url].</p><p>Что до общей структуры вашего скрипта - то да, вполне подходяще. Если вы не собираетесь супер-оперативно реагировать на события (сделки, движения стакана). (Хотя, конечно, в рамках QLua термин &quot;супер быстро&quot; относительно условный).<br />Желательно еще добавить например после calculate() вызов<br /></p><div class="codebox"><pre><code>sleep(1)</code></pre></div><p>Хотя бы с единичкой, хотя тут все очень зависит от требуемой оперативности работы. Если особой оперативности не требуется - то агрумент sleep сделать больше (он в миллисекундах).</p>]]></content>
			<author>
				<name><![CDATA[swerg]]></name>
				<uri>https://quik2dde.ru/profile.php?id=78</uri>
			</author>
			<updated>2022-04-19T08:31:06Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=3467#p3467</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Структура робота.]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=3466#p3466" />
			<content type="html"><![CDATA[<p>Доброго времени суток всем. В QLua пару недель только. Есть небольшой опыт в программировании на другом ЯП.<br />И отсюда вылазят некоторые проблемы.</p><p>А именно структура самого файла и соответственно работа самого скрипта.</p><p>Не получается понять что и где должно быть.<br />Как я вижу сейчас.<br />Поправьте меня если я не прав.</p><div class="codebox"><pre><code>--========&gt;  Н А Ч А Л О
is_Run = true

--========&gt; П Е Р Е М Е Н Н Ы Е 



-- *****************************************************************
        ----------&gt;&gt; Т Е Л О   С К Р И П Т А  &lt;&lt;---------
function main()
    while is_Run == true do
        buy()
        sell()
        calculate()
    end
end
-- * * * * * * * * * * С A L L B A C K&#039;и * * * * * * * * * * * 



 
function OnStop()    --
is_Run = false        --
end                    --
----------------------

----------&gt;&gt; Ф У Н К Ц И И &lt;&lt;========
function buy()
end 

function sell()
end

function calculate()
end</code></pre></div>]]></content>
			<author>
				<name><![CDATA[musin]]></name>
				<uri>https://quik2dde.ru/profile.php?id=3355</uri>
			</author>
			<updated>2022-04-19T07:10:36Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=3466#p3466</id>
		</entry>
</feed>
