<?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; Lua: учебники, общие вопросы]]></title>
		<link>https://quik2dde.ru/index.php</link>
		<atom:link href="https://quik2dde.ru/extern.php?action=feed&amp;fid=7&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние темы раздела «QUIK -> DDE».]]></description>
		<lastBuildDate>Mon, 14 Oct 2024 17:43:04 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Проблема с обновлением данных в таблице созданной из Lua (Решено)]]></title>
			<link>https://quik2dde.ru/viewtopic.php?id=453&amp;action=new</link>
			<description><![CDATA[<p>Уже 3 часа пытаюсь понять в чем причина. Не обновляются данные в таблице, пока не проведу по ней мышью.</p><p>Код уж совсем простой и тут какие-то у меня не понятки вышли. Может кто сталкивался с такой проблемой. Данные через message() идут нормально, а вот в таблице не обновляются пока окно таблицы не получит какое-либо сообщение</p><p>Сам код:</p><div class="codebox"><pre><code>-- Переменны для замены на данные хранящиеся в настройках скрипта
local secCode = &quot;MMZ4&quot;

local atrID = &quot;MXI_ATR&quot;
local priceID = &quot;MXI_PRICE&quot;

--Переменные для замены на данные получаемые из терминала
local digit = 2

--Переменные глобальных таблиц и окон
local tableMain = nil
local hwndMain = nil

local isRun = true
function main()
    message(&quot;Hello. This is MambaBot&quot;,1)
    while isRun do
        if tableMain ~= nil then
            if IsWindowClosed(tableMain) then
                isRun = false
            end            
        end
        sleep(1000)
    end
    message(&quot;MambaBot has stopped&quot;)
end

function OnParam(class, sec)
    if(class==&quot;SPBFUT&quot; and sec==secCode) then
        if tableMain ~= nil then
            --Обновляем данные в ячеках главной таблицы
            SetCell(tableMain, 2, 1, getInfoParam(&quot;SERVERTIME&quot;), 0)
            --message(getInfoParam(&quot;SERVERTIME&quot;))
            local atrVal, count, legend
            atrVal, count, legend = getCandlesByIndex(atrID, 0, getNumCandles(atrID) - 1, 1)
            SetCell(tableMain, 7, 1, string.format(&quot;%.&quot; .. digit .. &quot;f&quot;, atrVal[0].close), atrVal[0].close)

            local priceCandleVal
            priceCandleVal, count, legend = getCandlesByIndex(priceID, 0, getNumCandles(priceID) - 1, 1)
            print(count)
            SetCell(tableMain, 3, 1, string.format(&quot;%.&quot; .. digit .. &quot;f&quot;, priceCandleVal[0].open), priceCandleVal[0].open)
            SetCell(tableMain, 4, 1, string.format(&quot;%.&quot; .. digit .. &quot;f&quot;, priceCandleVal[0].high), priceCandleVal[0].high)
            SetCell(tableMain, 5, 1, string.format(&quot;%.&quot; .. digit .. &quot;f&quot;, priceCandleVal[0].low), priceCandleVal[0].low)
            SetCell(tableMain, 6, 1, string.format(&quot;%.&quot; .. digit .. &quot;f&quot;, priceCandleVal[0].close),
                priceCandleVal[0].close)
            message(string.format(&quot;%.&quot; .. digit .. &quot;f&quot;, priceCandleVal[0].close))
        end
    end
end

function OnInit(script_path)

    tableMain = AllocTable()
    AddColumn(tableMain,0,&quot;param&quot;,true,QTABLE_STRING_TYPE,12)
    AddColumn(tableMain,1,&quot;value&quot;,true,QTABLE_STRING_TYPE,12)

    hwndMain = CreateWindow(tableMain)
    SetWindowCaption(tableMain,&quot;MambaBot Main&quot;)
    local rowNum = 1

    InsertRow(tableMain,-1)
    SetCell(tableMain,rowNum,0,&quot;Sec code&quot;,0)
    SetCell(tableMain,rowNum,1,secCode,0)
    rowNum = rowNum+1

    InsertRow(tableMain,-1)
    SetCell(tableMain,rowNum,0,&quot;Time&quot;,0)
    SetCell(tableMain,rowNum,1,&quot;00:00:00&quot;,0)
    rowNum = rowNum+1

    InsertRow(tableMain,-1)
    SetCell(tableMain,rowNum,0,&quot;Open&quot;,0)
    SetCell(tableMain,rowNum,1,&quot;0.0&quot;,0.0)
    rowNum = rowNum+1

    InsertRow(tableMain,-1)
    SetCell(tableMain,rowNum,0,&quot;High&quot;,0)
    SetCell(tableMain,rowNum,1,&quot;0.0&quot;,0.0)
    rowNum = rowNum+1

    InsertRow(tableMain,-1)
    SetCell(tableMain,rowNum,0,&quot;Low&quot;,0)
    SetCell(tableMain,rowNum,1,&quot;0.0&quot;,0.0)
    rowNum = rowNum+1

    InsertRow(tableMain,-1)
    SetCell(tableMain,rowNum,0,&quot;Close&quot;,0)
    SetCell(tableMain,rowNum,1,&quot;0.0&quot;,0.0)
    rowNum = rowNum+1

    InsertRow(tableMain,-1)
    SetCell(tableMain,rowNum,0,&quot;ATR value&quot;,0)
    SetCell(tableMain,rowNum,1,&quot;0.0&quot;,0.0)
    rowNum = rowNum+1
end

function OnStop(flag)
    if tableMain ~=nil then
        DestroyTable(tableMain)
    end
    isRun = false
    return 100
end</code></pre></div><p>Это всего лишь набросок будущего робота, просто на скоряк кодил, вспоминал как работать с таблицами и получением данных</p>]]></description>
			<author><![CDATA[null@example.com (AgentSmit)]]></author>
			<pubDate>Mon, 14 Oct 2024 17:43:04 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?id=453&amp;action=new</guid>
		</item>
		<item>
			<title><![CDATA[Данные по бумагам в портфеле скриптом lua]]></title>
			<link>https://quik2dde.ru/viewtopic.php?id=452&amp;action=new</link>
			<description><![CDATA[<p>Пытаюсь получить данные по бумагам в портфеле скриптом. Выдает то ошибки, то nill<br />неделю ковыряюсь, не понимаю в чем ошибка(( <br />в портфеле одна акция Роснефти, нужно что бы при запуске скрипта вывел месседж что в портфеле 1 акция Роснефти. </p><div class="codebox"><pre><code>  sec_code = &quot;SIBN&quot;
  Firm_ID = &quot;MC00025000XX&quot;
  Kod_klienta = &quot;4XXXN&quot;
 ACCOUNT = &quot;L01-00000F00&quot;
 limit_kind = &quot;1&quot;
  res = getDepo(Kod_klienta, Firm_ID, sec_code, ACCOUNT)
local lots = (&quot;depo_current_balance&quot;) 
message(&quot;Текущий остаток=&quot; ..lots)</code></pre></div><p>или </p><div class="codebox"><pre><code>sec_code = &quot;SIBN&quot;
Firm_ID = &quot;MC00025000XX&quot;
Kod_klienta = &quot;4XXXN&quot;
ACCOUNT = &quot;L01-00000F00&quot;

function LB()
  n = getNumberOf(&quot;depo_limits&quot;)
  value = 0
  res = nil
  for y = 0, n-1 do
    trade = getItem(&quot;depo_limits&quot;, y)
    if (trade[&quot;client_code&quot;] == Kod_klienta) and
      (trade[&quot;firmid&quot;] == Firm_ID) and
      (trade[&quot;sec_code&quot;] == sec_code) and
      (trade[&quot;trdaccid&quot;] == ACCOUNT) and
      (trade[&quot;limit_kind&quot;] == 2) then
        res = trade[&quot;currentbal&quot;]
        break
      end
  end
  return res
end

message(tostring(LB()), 0)</code></pre></div><p>Выдают nill</p>]]></description>
			<author><![CDATA[null@example.com (Alexey89)]]></author>
			<pubDate>Fri, 26 Jul 2024 06:19:17 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?id=452&amp;action=new</guid>
		</item>
		<item>
			<title><![CDATA[Как менять инструмент на графике из скрипта Lua?]]></title>
			<link>https://quik2dde.ru/viewtopic.php?id=448&amp;action=new</link>
			<description><![CDATA[<p>Хочу из таблицы, созданной lua скриптом через CreateTable(), при нажатии на строку, менять инструмент на графике. Такой себе аналог стандартной возможности квика с якорем и связанными графиками. Понимаю, что на прямую из луа таблицы такое не реализовано, но хочу подойти к вопросу через w32 модуль. </p><p>Вижу это таким образом: <br />1. Создаю &quot;таблицу текущих торгов&quot; с нужными инструментами <br />2. &quot;Швартую&quot; к ней &quot;якорем&quot; нужные графики<br />3. Через w32 нахожу &quot;таблицу текущих торгов&quot;<br />4. Выбираю инструмент, переданный из луа скрипта по коду инструмента.</p><p>До 3го шага дошёл и добираюсь до дескриптора MultiList класса &quot;Таблицы текущих торгов&quot;.<br /></p><div class="codebox"><pre><code>        
  hWnd = w32.FindWindow(&#039;InfoClass&#039;, &#039;&#039;)
  hWnd = w32.FindWindowEx(hWnd, 0, &#039;MDIClient&#039;, &#039;&#039;)
  hWnd = w32.FindWindowEx(hWnd, 0, &#039;&#039;, &#039;Tickers&#039;)
  hWnd = w32.FindWindowEx(hWnd, 0, &#039;&#039;, &#039;Tickers&#039;)
  hWnd = w32.FindWindowEx(hWnd, 0, &#039;MultiList&#039;, &#039;&#039;)</code></pre></div><p>Как кодом выбрать элемент в этом списке идей нет <img src="https://quik2dde.ru/img/smilies/sad.png" width="15" height="15" alt="sad" /></p><p>Но, вроде, если руками задать фокус на окне &quot;таблицы текущих торгов&quot;, нажать Ctrl+F, ввести код инструмента и нажать поиск, то в списке выберется нужная строка и поменяется таблица.</p><p>Можно как-то реализовать это через код?<br />Может как-то проще можно добиться реализации моей хотелки?</p>]]></description>
			<author><![CDATA[null@example.com (ossipov)]]></author>
			<pubDate>Wed, 13 Dec 2023 15:39:17 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?id=448&amp;action=new</guid>
		</item>
		<item>
			<title><![CDATA[Как выставить стоп-ордер на Lua в QUIK ?]]></title>
			<link>https://quik2dde.ru/viewtopic.php?id=447&amp;action=new</link>
			<description><![CDATA[<p>Привет всем! Не могу выставить стоп-ордер. Чего не хватает?<br />Нужно выставить стоп-заявку выше текущей цены на продажу с условием PRICE ниже STOPPRICE .<br />Данный код не выставляет ни чего.</p><div class="codebox"><pre><code>stop_or = {
     ACTION          = &quot;NEW_STOP_ORDER&quot;, 
     STOP_ORDER_KIND = &quot;TAKE_PROFIT_STOP_ORDER&quot;,
     OPERATION       = &quot;S&quot;,
     ACCOUNT         = n_depo,
     CLIENT_CODE     = n_client_code,
     CLASSCODE       = n_classcode,
     SECCODE         = n_seccode,
     STOPPRICE       = tostring(a+0.1),
     PRICE           = tostring(a),
     QUANTITY        = tostring(lot),
     TRANS_ID        = tostring(n_id)
    }
result = sendTransaction(stop_or)</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Серёга)]]></author>
			<pubDate>Fri, 08 Dec 2023 20:34:50 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?id=447&amp;action=new</guid>
		</item>
		<item>
			<title><![CDATA["Балансовая цена" для фьючерсов - что показывает после клиринга?]]></title>
			<link>https://quik2dde.ru/viewtopic.php?id=445&amp;action=new</link>
			<description><![CDATA[<p>Всем привет. Можете пояснить мне один нюанс? Потихоньку разбираюсь с фьючерсами, и произошел затык со средней ценой позиции(Таблица &quot;состояние счета&quot; поле &quot;балансовая цена&quot;). Проблема в том, что после клиринга она меняется, а до клиринга соответствует средней цене. То есть если я взял один лот по 100, а затем еще один по 300, то в этом поле будет отображаться 200. После клиринга эта цифра изменится в какую либо сторону. Полагаю это будет зависеть от вариационной маржи. С маржой вроде понятно, по сути это разница цен. И вот тут начинается, пишут что во время клиринга списывают или начисляют на СЧЕТ(правда я так точно и не понял что именно списывают или начисляют, но похоже как раз эту самую маржу или я не прав?). Тогда при чем здесь вообще средняя цена и почему она меняется? <br />Т.е. по сути я сейчас пытаюсь разобраться с тем, могу ли я использовать среднюю цену уже после клиринга или даже не одного для выставления заявок с фиксированной прибылью? Т.е. я например хочу 5% (жирно да <img src="https://quik2dde.ru/img/smilies/smile.png" width="15" height="15" alt="smile" /> но пусть будет так), а также есть у меня два лота один за 100 и второй за 300, т.е. 5% это 5 и 15, в сумме 20. если взять среднюю цену 200, то на 2 лота придется теже 20. НО! после клиринга балансовая цена изменится, например до 190. Будут ли в этом случае результат корректным?</p>]]></description>
			<author><![CDATA[null@example.com (dark184)]]></author>
			<pubDate>Tue, 28 Nov 2023 14:23:09 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?id=445&amp;action=new</guid>
		</item>
		<item>
			<title><![CDATA[Помогите найти цену последнего стоп ордера]]></title>
			<link>https://quik2dde.ru/viewtopic.php?id=444&amp;action=new</link>
			<description><![CDATA[<p>помогите найти цену нужного ордера<br />данная функция не находит нужный ордер и находится в постоянном поиске</p><div class="codebox"><pre><code>function last_order()
  local last_order = {}
  local n = getNumberOf(&quot;orders&quot;)

  while n &gt; 0 do
    local order = getItem(&quot;orders&quot;, n-1)
    if order.sec_code == n_seccode
         and order.trans_id == n_id 
    then
       last_order = order
       break
       n = n - 1
    end

  end

  return last_order
end</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Серёга)]]></author>
			<pubDate>Fri, 17 Nov 2023 09:14:50 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?id=444&amp;action=new</guid>
		</item>
		<item>
			<title><![CDATA[Получить sec_code при выборе бумаги в ТТТ.]]></title>
			<link>https://quik2dde.ru/viewtopic.php?id=442&amp;action=new</link>
			<description><![CDATA[<p>Код даже не выдает ошибок. Никакой реакции. Почему?&nbsp; Есть ли какой-нибудь вариант привязать getDataSourceInfo() к конкретному индикатору, что бы получать sec_code при выборе бумаги в ТТТ?&nbsp; </p><p>function OnCalculate(Index)<br />&nbsp; &nbsp;if Index == 1 then<br />&nbsp; &nbsp;local info = getDataSourceInfo();<br />&nbsp; &nbsp;message( info.sec_code )<br />&nbsp; &nbsp;end<br />&nbsp; &nbsp;return 0<br />end</p>]]></description>
			<author><![CDATA[null@example.com (Alexey89)]]></author>
			<pubDate>Thu, 19 Oct 2023 11:30:24 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?id=442&amp;action=new</guid>
		</item>
		<item>
			<title><![CDATA[Как вытащить запущенный скрипт? Ворует ли брокер скрипт?]]></title>
			<link>https://quik2dde.ru/viewtopic.php?id=441&amp;action=new</link>
			<description><![CDATA[<p>У меня в квике запущен скрипт. А сохраненный на диске случайно удалён. То есть скрипт загружается Quik&#039;ом на внешний сервер и продолжает работать. На диске на компе этот скрипт в других папках не находится.</p><p>Брокер может украсть код скрипта с внешнего сервера?<br />Как вытащить код запущенного скрипта?</p>]]></description>
			<author><![CDATA[null@example.com (ecoreon)]]></author>
			<pubDate>Thu, 05 Oct 2023 07:23:36 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?id=441&amp;action=new</guid>
		</item>
		<item>
			<title><![CDATA[Как получить sec_code по идентификатору графика?]]></title>
			<link>https://quik2dde.ru/viewtopic.php?id=440&amp;action=new</link>
			<description><![CDATA[<p>Присвоил графику идентификатор WWWbond.<br />Код работает. Выдает число свечек.</p><p>x = getNumCandles(&#039;WWWbond&#039;)<br />message(&#039;x= &#039; ..x)</p><p>Пытаюсь разными способами получить по этому идентификатору WWWbond sec_code. Никак не получается, такая возможность вообще есть?</p><p>Код не работает.</p><p>graphic_id = &#039;WWWbond&#039;<br />sec_code = getSecurityInfo(graphic_id)<br />message(&quot;График &quot; .. sec_code)</p>]]></description>
			<author><![CDATA[null@example.com (Alexey89)]]></author>
			<pubDate>Tue, 05 Sep 2023 06:44:17 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?id=440&amp;action=new</guid>
		</item>
		<item>
			<title><![CDATA[добавить к цене акции число для стопа и профита.]]></title>
			<link>https://quik2dde.ru/viewtopic.php?id=439&amp;action=new</link>
			<description><![CDATA[<p>Здравствуйте. </p><p>Пытался сделать универсальный скрипт. Он работает с любой акцией из последней заявки таблицы заявок. Автоматом считает стоп и тейк. Не могу задать цену на 0,5% выше или ниже текущей. Пытался задать стоп и тейк в количестве шагов цены, но у каждой бумаги разные шаги по отношению к ее цене. 30 шагов цены где-то это 0,2% а где-то 1,5%.&nbsp; Не подходит. А если задавать цену процентом, то часто цена не попадает в шаг цены и ошибки не дают работать скрипту. Что посоветуете? наверняка я туплю и там одна маленькая строчка кода)) </p><br /><p>Колхоз что есть сейчас (грубый выбор числа шагов цены исходя из последней цены акции)</p><p> local buy_price = priceLAST + price_step * xxx </p><br /><br /><p> if priceLAST &gt; 10000 then<br />&nbsp; &nbsp; &nbsp; &nbsp; xxx = 20<br />&nbsp; &nbsp; elseif priceLAST &gt; 1000 then<br />&nbsp; &nbsp; &nbsp; &nbsp; xxx = 25<br />&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; elseif priceLAST &gt; 400 then<br />&nbsp; &nbsp; &nbsp; &nbsp; xxx = 30&nbsp; -- РОСНЕФТЬ 477.2&nbsp; &nbsp;0,3&nbsp; &nbsp; ЭН ГРУПП 481,8 30 ШАГОВ 1,33 ПРОЦЕНТОВ<br />&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; elseif priceLAST &gt; 220 then<br />&nbsp; &nbsp; &nbsp; &nbsp; xxx = 80&nbsp; -- СБЕРБАНК 238,65&nbsp; 80 ШАГОВ 0,3 ПРОЦЕНТА<br />&nbsp; &nbsp; &nbsp; &nbsp; <br />&nbsp; &nbsp; &nbsp; &nbsp; elseif priceLAST &gt; 190 then<br />&nbsp; &nbsp; &nbsp; &nbsp; xxx = 6&nbsp; &nbsp; -- М ВИДЕО 193,3&nbsp; 6 ШАГОВ&nbsp; &nbsp;0,3 ПРИМЕРНО<br />&nbsp; &nbsp; &nbsp; &nbsp; elseif priceLAST &gt; 180 then<br />&nbsp; &nbsp; &nbsp; &nbsp; xxx = 11&nbsp; -- МЕЧЕЛ 189,45&nbsp; 11 ШАГОВ 0,3<br />&nbsp; &nbsp; &nbsp; &nbsp; elseif priceLAST &gt; 175 then<br />&nbsp; &nbsp; &nbsp; &nbsp; xxx = 48 --&nbsp; МЕЧЕЛ 179.26&nbsp; &nbsp;48 ШАГОВ&nbsp; 0,3 <br />&nbsp; &nbsp; &nbsp; &nbsp; <br /> end</p>]]></description>
			<author><![CDATA[null@example.com (Alexey89)]]></author>
			<pubDate>Tue, 04 Jul 2023 09:29:08 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?id=439&amp;action=new</guid>
		</item>
		<item>
			<title><![CDATA[Получить  sec_code из открытого стакана или графика]]></title>
			<link>https://quik2dde.ru/viewtopic.php?id=437&amp;action=new</link>
			<description><![CDATA[<p>Получить&nbsp; sec_code из открытого стакана или графика и вывести меседжем. Активного стакана или графика активного. <br />Не задавая sec_code заранее. Знаю способ как получить sec_code из заявки, а вот открытый стакан или график скриптом никак не получается. Такое вообще возможно? </p><p>Код вроде этого не работает</p><p>local level2 = getQuoteLevel2(&quot;TQBR&quot;, 1)<br />if level2 ~= nil then -- проверяем, что level2 не nil<br />local sec_code = level2.sec_code<br />message(sec_code)<br />else<br />message(&quot;Ошибка получения информации об открытом стакане&quot;)<br />end</p>]]></description>
			<author><![CDATA[null@example.com (Alexey89)]]></author>
			<pubDate>Fri, 23 Jun 2023 18:37:00 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?id=437&amp;action=new</guid>
		</item>
		<item>
			<title><![CDATA[Запрос таблицы заявок и вывод названия акции по последней заявке]]></title>
			<link>https://quik2dde.ru/viewtopic.php?id=436&amp;action=new</link>
			<description><![CDATA[<p>Запрос таблицы заявок и вывод названия акции по последней заявке мэсэджем. Пытаю чат GPT, он дает тонны кода по подобным запросам. Такое ощущение что таблица заявок защищена чем-то. То функции nil, то не определены. </p><br /><p>Например </p><div class="codebox"><pre><code>-- определяем функцию для поиска последней исполненной заявки
function last_trade()
local last_trade = {}
local n = getNumberOf(&quot;trades&quot;)

while n &gt; 0 do
local trade = getItem(&quot;trades&quot;, n)
if trade.flags == 1 then
last_trade = trade
break
end
n = n - 1
end

return last_trade
end

-- получаем последнюю исполненную заявку
local trade = last_trade()

-- проверяем условия и выводим информацию
if trade.class_code == &quot;TQBR&quot; and trade.client_code == &quot;4X55N&quot; then
if trade.sec_code == &quot;LKOH&quot; then
message(&quot;Акция: ЛУКОЙЛ\nКупля/продажа: &quot; .. trade.dir .. &quot;\nЧисло лотов: &quot; .. trade.qty)
elseif trade.sec_code == &quot;ROSN&quot; then
message(&quot;Акция: РОСНЕФТЬ\nКупля/продажа: &quot; .. trade.dir .. &quot;\nЧисло лотов: &quot; .. trade.qty)
elseif trade.sec_code == &quot;MAGN&quot; then
message(&quot;Акция: ММК\nКупля/продажа: &quot; .. trade.dir .. &quot;\nЧисло лотов: &quot; .. trade.qty)
elseif trade.sec_code == &quot;SBER&quot; then
message(&quot;Акция: СБЕРБАНК\nКупля/продажа: &quot; .. trade.dir .. &quot;\nЧисло лотов: &quot; .. trade.qty)
elseif trade.sec_code == &quot;GAZP&quot; then
message(&quot;Акция: ГАЗПРОМ\nКупля/продажа: &quot; .. trade.dir .. &quot;\nЧисло лотов: &quot; .. trade.qty)
elseif trade.sec_code == &quot;AFKS&quot; then
message(&quot;Акция: СИСТЕМА\nКупля/продажа: &quot; .. trade.dir .. &quot;\nЧисло лотов: &quot; .. trade.qty)
elseif trade.sec_code == &quot;PLZL&quot; then
message(&quot;Акция: ПОЛЮС\nКупля/продажа: &quot; .. trade.dir .. &quot;\nЧисло лотов: &quot; .. trade.qty)
elseif trade.sec_code == &quot;MTLR&quot; then
message(&quot;Акция: МЕЧЕЛ\nКупля/продажа: &quot; .. trade.dir .. &quot;\nЧисло лотов: &quot; .. trade.qty)
elseif trade.sec_code == &quot;BANE&quot; then
message(&quot;Акция: БАШНЕФТЬ\nКупля/продажа: &quot; .. trade.dir .. &quot;\nЧисло лотов: &quot; .. trade.qty)
end
end</code></pre></div><p>Может есть что проще и надежней. За 2 недели мытарств ни разу не получил ни кусочка инфы из таблицы заявок. Из стакана цену последней сделки по конкретной бумаге могу получить. А из таблицы заявок ни кусочка информации.&nbsp; Заявки исполненные всегда в наличии в этой таблице.</p>]]></description>
			<author><![CDATA[null@example.com (Alexey89)]]></author>
			<pubDate>Fri, 16 Jun 2023 09:52:30 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?id=436&amp;action=new</guid>
		</item>
		<item>
			<title><![CDATA[Получить данные из колонки "Доступно" из таблицы "Позиции по инстр."]]></title>
			<link>https://quik2dde.ru/viewtopic.php?id=434&amp;action=new</link>
			<description><![CDATA[<p>Всем привет,</p><p>Подскажите, пожалуйста, как получить данные из колонки &quot;Доступно&quot; из таблицы &quot;Позиции по инструментам&quot; для режима торгов Т2.<br />Через getDepo не получается:</p><div class="codebox"><pre><code>function main()
   
   ticker = &quot;ETLN&quot;
   firmid = &quot;XXXXXXXXXXXXX&quot;
   clientcode = &quot;XXXXXX&quot;
   account = &quot;XXXXX-XXXXXXXX&quot; 
   
   depodata = getDepo(clientcode, firmid, ticker, account)
   dostupno = depodata.depo_limit_available   
   
   message (ticker..&quot; &quot;..dostupno)

end</code></pre></div><p>При запуске скрипта результат по доступному количеству - ноль. А в getDepoEx нет нужного параметра.</p>]]></description>
			<author><![CDATA[null@example.com (alex.a)]]></author>
			<pubDate>Tue, 30 May 2023 07:14:52 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?id=434&amp;action=new</guid>
		</item>
		<item>
			<title><![CDATA[Как зафиксировать открытие новой свечи]]></title>
			<link>https://quik2dde.ru/viewtopic.php?id=433&amp;action=new</link>
			<description><![CDATA[<p>Приветствую, коллеги.<br />Я правда Lua второй раз вижу, честно признаюсь...Больше по питону, амиброкеру...<br />Но понадобилось определить открытие новой свечи, в питоне решалось 1 словом-&nbsp; candle_close = true или False.<br />А как на этом языке вопрос нахождения новой свечи решается, может кто-то нечто подобное уже делал, ведь у многих роботы наверно приступают к расчету по закрытию текущей свечи (или открытию новой). Перелопатил много информации на этом языке, даже продвинулся немного. Но уперся в несколько моментов. </p><p>1. Основной&nbsp; (потому что на п.2 я врядли уже что-то найду)- как сравнить 2 рядом стоящих числа в массиве на предмет одинаковости или нет. Лучше последнее с предпоследним сравнивать, хотя это одно и то же видимо.<br />2. И второй как взять данные из таблицы, которая заполняется в реальном времени номерами баров через Getcell,&nbsp; созданной пользователем при помощи Setcell. В мануале что-то не густо примеров на эту тему ))<br />Спасибо за помощь.</p>]]></description>
			<author><![CDATA[null@example.com (DennyV8)]]></author>
			<pubDate>Fri, 14 Apr 2023 21:20:49 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?id=433&amp;action=new</guid>
		</item>
		<item>
			<title><![CDATA[А хотите lua консольку в quik?]]></title>
			<link>https://quik2dde.ru/viewtopic.php?id=431&amp;action=new</link>
			<description><![CDATA[<div class="codebox"><pre><code>-- нельзя конечно взять и вызвать произвольную функцию из dll, функция должна соответствовать типу lua_CFunction
-- но в частном случае, когда функция без аргументов и возвращает bool, это работает
package.loadlib(&#039;kernel32.dll&#039;,&#039;AllocConsole&#039;)(true)

-- подключим потоки ввода-выовода к консольке
io.output(&#039;CONOUT$&#039;)
io.input(&#039;CONIN$&#039;)

-- все, теперь можно читать из io.input и писать в io.output. print() почему-то не работает, но при желании его можно переопределить

function main()
 io.write(&#039;&gt; &#039;)
 io.flush()

 l = io.read(&#039;l&#039;)
 while l do
 -- можно выполнять команды как-то примерно так:
  f,e = load(l)
  if f then
    s,r = pcall(f)
    if not s then
      io.write(&quot;Error call: &quot;);
    end
    io.write(r == nil and &#039;&#039; or tostring(r),&#039;\n&#039;)
  else
    io.write(&quot;Error load: &quot;, e, &quot;\n&quot;);
  end
  io.write(&#039;&gt; &#039;)
  io.flush()
  l = io.read(&#039;l&#039;)
 -- чтобы выйти, надо нажать Ctrl-Z и Enter
 end
 
 -- почистим за собой и закроем консольку
 -- закрывать консольное окошко крестиком в правом верхнем углу нельзя - квик помрет
 io.close(io.output()) 
 io.close(io.input()) 
 package.loadlib(&#039;kernel32.dll&#039;,&#039;FreeConsole&#039;)(true)
end</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (barlone)]]></author>
			<pubDate>Tue, 21 Feb 2023 05:26:39 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?id=431&amp;action=new</guid>
		</item>
	</channel>
</rss>
