<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[QUIK -> DDE &mdash; StaticVar: Обмен данными между Lua-скриптами в QUIK]]></title>
	<link rel="self" href="https://quik2dde.ru/extern.php?action=feed&amp;tid=61&amp;type=atom" />
	<updated>2024-09-27T12:03:42Z</updated>
	<generator>PunBB</generator>
	<id>https://quik2dde.ru/viewtopic.php?id=61</id>
		<entry>
			<title type="html"><![CDATA[Re: StaticVar: Обмен данными между Lua-скриптами в QUIK]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=4358#p4358" />
			<content type="html"><![CDATA[<p>Я использую версию 5.4.1.<br />Скрипт предоставить могу. Он несложный.<br />Но я тут сделал одно наблюдение. Я обычно запускаю quik на виртуальной машине с Windows 10. И если в это же время на этом же компьютере (точнее на ноутбуке) запущена ещё одна (вторая) виртуальная машина, например, с Windows 7, то эта ошибка начинает появляться где-то раз в час. Если вторая виртуальная машина работает под Windows XP, т.е. меньше запрашивает памяти, чем Windows 7 (2Гб против 8Гб), то эта ошибка появляется несколько реже. Если же вторая виртуальная машина вообще не запущена, то эта ошибка появляется совсем редко (но всё равно появляется). Хотя возможно вторая виртуальная машина несильно влияет на частоту появления этой ошибки – надо ещё понаблюдать.<br />А вот появляется ли эта ошибка, когда quik запущен не на виртуальной, а на реальной машине, сказать не могу. Последние дня два я погонял этот скрипт на реальной машине – этой ошибки не возникало вообще.<br />Т.е. пока, на данный момент, из всего этого можно сделать вывод, что появление этой ошибки связано не только со скриптом, но и с особенностями работы виртуальной машины.<br />Хотя по логике, всё должно работать одинаково – что на виртуальной машине, что на реальной.<br />Но это всё конечно предположение.<br />Может есть какое-то ограничение на количество этих статических переменных?</p>]]></content>
			<author>
				<name><![CDATA[igor]]></name>
				<uri>https://quik2dde.ru/profile.php?id=3369</uri>
			</author>
			<updated>2024-09-27T12:03:42Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=4358#p4358</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: StaticVar: Обмен данными между Lua-скриптами в QUIK]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=4357#p4357" />
			<content type="html"><![CDATA[<p>Использовал на Lua 5.3 и Lua 5.4. Поведение одинаковое.<br />Скрипт, который бы воспроизводил проблему в процессе подготовки.</p>]]></content>
			<author>
				<name><![CDATA[leher63]]></name>
				<uri>https://quik2dde.ru/profile.php?id=4031</uri>
			</author>
			<updated>2024-09-25T14:44:12Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=4357#p4357</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: StaticVar: Обмен данными между Lua-скриптами в QUIK]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=4356#p4356" />
			<content type="html"><![CDATA[<p>Надо как-то разбираться.<br />Но всё равно нужен какой-то скрипт, который проблему бы воспроизводил. Пусть и случайно и пусть изредка.</p><p>Какая версия Lua используется в терминале?</p>]]></content>
			<author>
				<name><![CDATA[swerg]]></name>
				<uri>https://quik2dde.ru/profile.php?id=78</uri>
			</author>
			<updated>2024-09-25T05:38:02Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=4356#p4356</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: StaticVar: Обмен данными между Lua-скриптами в QUIK]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=4355#p4355" />
			<content type="html"><![CDATA[<p>У меня аналогичная проблема, выходит такая же ошибка, причем совершенно в случайном порядке.<br />Связываю эту ошибку с StaticVar вот по каким наблюдениям.<br />Своего бота, написанного на Lua, я разместил внутри кода индикатора QUIK. Для отображения параметров бота я использую таблицы рабочего места QUIK, данные в который передаются из индикатора через StaticVar.<br />После того, как стали появляться ошибки я добавил в код индикатора следующие строки, которые выполняются при инициализации индикатора:</p><div class="codebox"><pre><code>local resultTable = {}
for a, b in pairs(_G) do
    table.insert(resultTable, a..&quot;\t&quot;..tostring(b))
    if  type(b) == &quot;table&quot; then
        for x, y in pairs(b) do
            table.insert(resultTable, &quot;\t&quot;.. &quot;|-- &quot;.. x..&#039;\t&#039;..tostring(y))
        end
    end
end
local f = io.open(dir_logFile..&#039;\\&#039;..&#039;GLOBAL.txt&#039;, &#039;w&#039;)
for i = 1, #resultTable do
    f:write(resultTable[i]..&#039;\n&#039;) 
    f:flush() 
end
f:close()</code></pre></div><p>Данный код сохраняет содержимое глобального окружения в файл. Для таблиц и функций указываются используемые ими адреса.<br />При возникновении ошибки я беру адрес из сообщения об ошибке и пробую его найти в вышеуказанном файле, который сформировал бот, в котором появилась ошибка.<br />Целиком совпадения не было ни разу, но максимальное совпадение первых символов адреса из сообщения об ошибке всегда приходится на функции StaticVar (пример на приложенном скриншоте).<br /><span class="postimg"><img src="https://i.postimg.cc/kXWLmXwM/image.jpg" alt="https://i.postimg.cc/kXWLmXwM/image.jpg" /></span><br />Я не знаю насколько правильно производить такие сравнения, и возможно притянуты за уши совпадения, но другого способа найти хоть какую-то зацепку по возникающей ошибке я не знаю.<br />Буду благодарен если кто-то подскажет как найти источник ошибки.</p><p>ps. Ошибка носит случайный характер, так как код бота, находящийся в индикаторе, восстанавливает свою работу при получении следующего тика (изменения данных по свече) после возникновения ошибки.</p>]]></content>
			<author>
				<name><![CDATA[leher63]]></name>
				<uri>https://quik2dde.ru/profile.php?id=4031</uri>
			</author>
			<updated>2024-09-24T19:43:07Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=4355#p4355</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: StaticVar: Обмен данными между Lua-скриптами в QUIK]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=4354#p4354" />
			<content type="html"><![CDATA[<p>Используется ещё w32.dll.<br />Но самое неприятное то, что непонятно как определить, в каком именно месте скрипта происходит это событие. Это происходит где-то раз в 2 часа. Всё остальное время работает нормально.<br />Этот скрипт просто выводит данные в пользовательские таблицы то, что передаёт ему с помощью StaticVar другой скрипт.</p>]]></content>
			<author>
				<name><![CDATA[igor]]></name>
				<uri>https://quik2dde.ru/profile.php?id=3369</uri>
			</author>
			<updated>2024-09-24T11:26:04Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=4354#p4354</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: StaticVar: Обмен данными между Lua-скриптами в QUIK]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=4353#p4353" />
			<content type="html"><![CDATA[<p><strong>igor</strong>, всё может быть.<br />1. Надо скрипт, воспроизводящий проблему. Тогда можно будет что-то сказать предметно.</p><p>2. А еще какие-то внешние dll используются? а если другие dll отключить/удалить?<br />3. А если отключить StaticVar и не использовать её - проблема остаётся?</p><p>Хотя в целом ситуация странноватая, пока таких сообщений не было, при том, что данная библиотека не менялась уже несколько лет. Но, мало ли, всякое бывает.</p>]]></content>
			<author>
				<name><![CDATA[swerg]]></name>
				<uri>https://quik2dde.ru/profile.php?id=78</uri>
			</author>
			<updated>2024-09-24T10:03:21Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=4353#p4353</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: StaticVar: Обмен данными между Lua-скриптами в QUIK]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=4352#p4352" />
			<content type="html"><![CDATA[<p>У меня скрипт, использующий эту dll-ку (StaticVar), почему-то эпизодически останавливается с ошибкой &quot;ACCESS VIOLATION at address 00007FFD5BFF815B&quot;.<br />Может ли эта dll-ка быть причиной?</p>]]></content>
			<author>
				<name><![CDATA[igor]]></name>
				<uri>https://quik2dde.ru/profile.php?id=3369</uri>
			</author>
			<updated>2024-09-24T08:30:56Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=4352#p4352</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: StaticVar: Обмен данными между Lua-скриптами в QUIK]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=4294#p4294" />
			<content type="html"><![CDATA[<p><strong>Alexey89</strong>, сборку для Lua 5.4 высылаю по запросу<br />Напишите на swerg@swerg.ru</p>]]></content>
			<author>
				<name><![CDATA[swerg]]></name>
				<uri>https://quik2dde.ru/profile.php?id=78</uri>
			</author>
			<updated>2023-10-30T04:39:01Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=4294#p4294</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: StaticVar: Обмен данными между Lua-скриптами в QUIK]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=4293#p4293" />
			<content type="html"><![CDATA[<p>О великий Swerg. Заработало!!!!&nbsp; &nbsp;Круть неимоверная. Теперь я эту переменную прикручу так что при запуске скрипта на активный график ставится заявка. С ценой&nbsp; priceLAST&nbsp; + несколько шагов.&nbsp; Считалку числа лотов прикручу. И надеюсь будет толк. </p><p>Еще вопросик в квике поставил версию 5.3.5 под 5.4.1 работать отказалась это баг или фича?</p>]]></content>
			<author>
				<name><![CDATA[Alexey89]]></name>
				<uri>https://quik2dde.ru/profile.php?id=3408</uri>
			</author>
			<updated>2023-10-29T20:14:44Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=4293#p4293</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: StaticVar: Обмен данными между Lua-скриптами в QUIK]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=4292#p4292" />
			<content type="html"><![CDATA[<p><strong>Alexey89</strong><br />Надо скрипт переделать&nbsp; так:</p><div class="codebox"><pre><code>stv = require(&quot;StaticVar&quot;)

function main()
    stv.UseNameSpace(&quot;testNS&quot;)    -- вот эту строку надо перенести сюда
    message(&quot;(test-2) &quot; .. tostring(stv.GetCurrentNameSpace()) .. &quot;.xxx=&quot; .. tostring(stv.GetVar(&quot;xxx&quot;)), 1)
end</code></pre></div><p>И всё заработает.</p><p>Суть в том, что UseNameSpace() работает &quot;раздельно&quot; в основном потоке выполнения (callback&#039;и)&nbsp; и в main()<br />Сделано это было вот почему, вот для какого сценария:<br />Выполняется main(), в ней выполняется вызов&nbsp; UseNameSpace(). Разумеется, код в main() ожидает, что указанный NameSpace и будет выбран до нового вызова UseNameSpace() в коде main().<br />Тут одновременно c main() запускается какой-то callback (т.к. работает в основном потоке), в коде которого вызывается UseNameSpace(), устанавливая свой NameSpace для работы callback&#039;а. Т.е. код callback&#039;а отдельно устанавливает свой&nbsp; NameSpace для своей работы.<br />Но код main() в это время ведь тоже продолжает выполняться, подразумевая своё значение NameSpace.</p><p>Поэтому и было сделано такое вот разделение: в main() устанавливается и поддерживается свой NameSpace, в остальном коде (коде основного потока) - свой NameSpace.</p><p>В общем надо отдельно не забывать устанавливать требуемый NameSpace как в main(), так и в каждом callbak&#039;е.</p><p>Хотя, возможно, в вашем случае никакие NameSpace устанавливать и не требуется.</p>]]></content>
			<author>
				<name><![CDATA[swerg]]></name>
				<uri>https://quik2dde.ru/profile.php?id=78</uri>
			</author>
			<updated>2023-10-29T07:05:03Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=4292#p4292</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: StaticVar: Обмен данными между Lua-скриптами в QUIK]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=4291#p4291" />
			<content type="html"><![CDATA[<p>Пытаюсь прикрутить StaticVar.dll&nbsp; к индикатору&nbsp; </p><div class="codebox"><pre><code>Settings = {
    Name = &quot;goodmode&quot;
}

-- Create a global table to store data
myData = {}
 
function Init()
    -- Add the required code here
    stv = require(&quot;StaticVar&quot;)
    stv.UseNameSpace(&quot;testNS&quot;)
    return 1
end

function OnCalculate(Index)
   if Index == 1 then
        local info = getDataSourceInfo()

        -- Store the sec_code value in the global table
        table.insert(myData, info.sec_code)

        -- Output the sec_code value to the message
        message(info.sec_code)

        -- Add the required code here
        stv.SetVar(&quot;xxx&quot;, info.sec_code)
  end
        
    return 0
end  </code></pre></div><p>и забирать переменную скриптом&nbsp; </p><br /><div class="codebox"><pre><code>stv = require(&quot;StaticVar&quot;)

stv.UseNameSpace(&quot;testNS&quot;)

function main()
     
    message(&quot;(test-2) &quot; .. tostring(stv.GetCurrentNameSpace()) .. &quot;.xxx=&quot; .. tostring(stv.GetVar(&quot;xxx&quot;)), 1)
end</code></pre></div><br /><p>к сожалению не работает. есть вероятность что я что-то делаю не так и из индикатора можно давать данные в&nbsp; UseNameSpace ?</p>]]></content>
			<author>
				<name><![CDATA[Alexey89]]></name>
				<uri>https://quik2dde.ru/profile.php?id=3408</uri>
			</author>
			<updated>2023-10-28T18:34:11Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=4291#p4291</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: StaticVar: Обмен данными между Lua-скриптами в QUIK]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=4014#p4014" />
			<content type="html"><![CDATA[<p>К сожалению не видел в почте письма, видимо ушло в спам ;( За это время я тоже не бездельничал, подумал что библиотека больше не поддерживается. Продумываю и начал реализацию другой концепции, объединения всех роботов в один. Возможно не самое лучшее решение, но по крайней мере не будет зависимости от сторонних библиотек. В любом случае робот еще очень далек от совершенства и версий луа сменится еще с десяток пока я завершу его. А возможно это эпопея с роботами будет продолжаться бесконечно. Сколь бы не идеален был робот, а стратегии в любом случае будут меняться, добавляться новые, некоторые уже показывают свою неэффективность на определенных инструментах, а на других крайне эффективны... Я изначально писал робота с четким разделением на части, это &quot;торговая&quot; часть, она работает исключительно на торгах, и часть &quot;стратегии&quot;, которая к бирже не прикасается и занимается исключительно анализом...</p>]]></content>
			<author>
				<name><![CDATA[dark184]]></name>
				<uri>https://quik2dde.ru/profile.php?id=3309</uri>
			</author>
			<updated>2022-12-05T06:57:24Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=4014#p4014</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: StaticVar: Обмен данными между Lua-скриптами в QUIK]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=4013#p4013" />
			<content type="html"><![CDATA[<p><strong>dark184</strong>,<br />написал вам на e-mail<br />Еще кому нужна для Lua5.4 - пишите на swerg@swerg.ru</p>]]></content>
			<author>
				<name><![CDATA[swerg]]></name>
				<uri>https://quik2dde.ru/profile.php?id=78</uri>
			</author>
			<updated>2022-12-05T04:14:58Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=4013#p4013</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: StaticVar: Обмен данными между Lua-скриптами в QUIK]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=3994#p3994" />
			<content type="html"><![CDATA[<p>Если можно.</p>]]></content>
			<author>
				<name><![CDATA[dark184]]></name>
				<uri>https://quik2dde.ru/profile.php?id=3309</uri>
			</author>
			<updated>2022-11-28T08:00:14Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=3994#p3994</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: StaticVar: Обмен данными между Lua-скриптами в QUIK]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=3993#p3993" />
			<content type="html"><![CDATA[<p><strong>dark184</strong>,<br />для Lua5.4 в архиве нет сборки.<br />Нужна?</p>]]></content>
			<author>
				<name><![CDATA[swerg]]></name>
				<uri>https://quik2dde.ru/profile.php?id=78</uri>
			</author>
			<updated>2022-11-28T05:25:39Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=3993#p3993</id>
		</entry>
</feed>
