<?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=371&amp;type=atom" />
	<updated>2022-05-28T13:59:59Z</updated>
	<generator>PunBB</generator>
	<id>https://quik2dde.ru/viewtopic.php?id=371</id>
		<entry>
			<title type="html"><![CDATA[Re: Возращает только одно значение]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=3484#p3484" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>snegovik3009 пишет:</cite><blockquote><p>... В втб в&nbsp; утренню и дневную сесию на SPB до открытия Америки обували людей постоянно.</p></blockquote></div><p>Привет. Не только втб, Любое ПО аля quik, очень сильно помогает расстаться с деньгами.<br />Условные заявки много сложнее лимитных и биржа ничего не знает об условных заявках, только лимитки.</p>]]></content>
			<author>
				<name><![CDATA[kalikazandr]]></name>
				<uri>https://quik2dde.ru/profile.php?id=208</uri>
			</author>
			<updated>2022-05-28T13:59:59Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=3484#p3484</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Возращает только одно значение]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=3483#p3483" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>kalikazandr пишет:</cite><blockquote><p>Приветы, не стоит однако забывать, что выставляя стоп, вы просто говорите брокеру - на забери мои деньги!<br />Вам нужно подумать об алгоритме, который по условию будет закрывать позицию лимитками.</p></blockquote></div><p>Привет. Возможно стоит сделать, но пока я только учусь qlua. И роботам пока доверять большие деньги не буду. Основной счет только в ручном управлении(и помощь от робота советника на писанным для amibroker). То что собирают стопы это конечно проблема. В втб в&nbsp; утренню и дневную сесию на SPB до открытия Америки обували людей постоянно.</p>]]></content>
			<author>
				<name><![CDATA[snegovik3009]]></name>
				<uri>https://quik2dde.ru/profile.php?id=3360</uri>
			</author>
			<updated>2022-05-27T12:06:33Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=3483#p3483</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Возращает только одно значение]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=3482#p3482" />
			<content type="html"><![CDATA[<p>БЛАГОДАРЮ! Очень помогли.<br /></p><div class="codebox"><pre><code>IsRun       = true
ACCOUNT     = &#039;NL0011100043&#039; -- Код счета
CLASS_CODE  = &#039;QJSIM&#039; -- Код класса
EXPIRY_DATE = &#039;TODAY&#039; -- Срок действия стоп-заявки: &#039;TODAY&#039; - до окончания текущей торговой сессии, &#039;GTC&#039; -до отмены, или время в формате &#039;ГГГГММДД&#039;
PriceStep   = 0
Procent     = 2
IsRun       = true
SEC_CODE    = &#039;&#039; -- Код инструмента
QTY_LOTS    = 0
PRICE = 0

function OnStop()
    IsRun = false
end

function main()

    while IsRun do
        secs = ScanerPortfelya()
        for _, sec in pairs(secs) do
            
            PrintDbgStr(&quot;-----------------START--------------------&quot;)
            PrintDbgStr(&quot;SEC_CODE_=&quot; .. sec.sec_code .. &quot;_QTY_LOTS_=&quot; .. sec.currentbal..&quot;_PRICE_=&quot;..sec.wg_position_price)
            PrintDbgStr(&quot;==================END=======================&quot;)
        end
        sleep(1000)
        SEC_CODE = &quot;&quot;
        PRICE = 0
        QTY_LOTS = 0
    end
end

-- Сканирует Портфель
ScanerPortfelya = function()
       -- Перебирает таблицу &quot;Позиции по инструментам&quot;
    local num = getNumberOf(&#039;depo_limits&#039;)
    local depo_limit
    local ret = {}
    for i = 0, num - 1 do
        depo_limit = getItem(&#039;depo_limits&#039;, i)
        if depo_limit.limit_kind == 0 and depo_limit.currentbal ~= 0 then
            table.insert(ret, {
                sec_code = depo_limit.sec_code;
                currentbal = depo_limit.currentbal;
                wg_position_price = depo_limit.awg_position_price
            })
            PrintDbgStr(&quot;-----------------START--------------------&quot;)
            PrintDbgStr(&quot;Код бумаги_&quot; .. depo_limit.sec_code) -- Код бумаги  (STRING)  
            PrintDbgStr(&quot;Код клиента_&quot; .. depo_limit.client_code)
            PrintDbgStr(&quot;Текущий остаток по бумагам_&quot; .. depo_limit.currentbal)
            PrintDbgStr(&quot;Цена приобретения_&quot; .. depo_limit.awg_position_price)
            PrintDbgStr(&quot;Тип лимита_&quot; .. depo_limit.limit_kind)
            PrintDbgStr(&quot;==================END=======================&quot;)
           end
    end
    return ret
end</code></pre></div><p>[10128] -----------------START--------------------<br />[10128] SEC_CODE_=GAZP_QTY_LOTS_=30.0_PRICE_=265.25666666667<br />[10128] ==================END=======================<br />[10128] -----------------START--------------------<br />[10128] SEC_CODE_=GMKN_QTY_LOTS_=1.0_PRICE_=19778.0<br />[10128] ==================END=======================<br />[10128] -----------------START--------------------<br />[10128] SEC_CODE_=LKOH_QTY_LOTS_=3.0_PRICE_=3988.3333333333<br />[10128] ==================END=======================<br />[10128] -----------------START--------------------<br />[10128] SEC_CODE_=ROSN_QTY_LOTS_=1.0_PRICE_=351.5<br />[10128] ==================END=======================<br />[10128] -----------------START--------------------<br />[10128] SEC_CODE_=SBER_QTY_LOTS_=30.0_PRICE_=121.82666666667<br />[10128] ==================END=======================<br />Возращает то что нужно!!! Спасибо!</p>]]></content>
			<author>
				<name><![CDATA[snegovik3009]]></name>
				<uri>https://quik2dde.ru/profile.php?id=3360</uri>
			</author>
			<updated>2022-05-27T11:17:43Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=3482#p3482</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Возращает только одно значение]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=3481#p3481" />
			<content type="html"><![CDATA[<p>Приветы, не стоит однако забывать, что выставляя стоп, вы просто говорите брокеру - на забери мои деньги!<br />Вам нужно подумать об алгоритме, который по условию будет закрывать позицию лимитками.</p>]]></content>
			<author>
				<name><![CDATA[kalikazandr]]></name>
				<uri>https://quik2dde.ru/profile.php?id=208</uri>
			</author>
			<updated>2022-05-27T06:29:27Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=3481#p3481</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Возращает только одно значение]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=3480#p3480" />
			<content type="html"><![CDATA[<p>Если вы хотите из ScanerPortfelya() вернуть непременно список, тогда его надо возвращать через таблицу (массив):<br /></p><div class="codebox"><pre><code>ScanerPortfelya = function()
......
        local ret = {}
        for i = 0, num - 1 do
......
                table.insert(ret, {
                        sec_code=depo_limit.sec_code;
                        currentbal=depo_limit.currentbal;
                        wg_position_price=depo_limit.awg_position_price
                })
        end
        return ret</code></pre></div><p>И после массив этот обрабатывать в цикле:</p><div class="codebox"><pre><code>secs = ScanerPortfelya()
for _,sec in pairs(secs) do
      PrintDbgStr(&quot;SEC_CODE_&quot;..sec.sec_code..&quot;_QTY_LOTS_&quot;..sec.currentbal)
end</code></pre></div><p>Обратите внимание на разные переменные sec и secs. Возможно, есть смысл выбрать &quot;более различающиеся&quot; имена для них.</p><p>Можно и не через возвращаемую переменную передавать, а через глобальную (не забыть инициализировать её таблицей). Тут по вкусу.</p><p>[hr][/hr]<br />Либо код обработки встроить внутрь цикла в функции ScanerPortfelya(), тогда и возвращать ничего не придется.</p>]]></content>
			<author>
				<name><![CDATA[swerg]]></name>
				<uri>https://quik2dde.ru/profile.php?id=78</uri>
			</author>
			<updated>2022-05-26T11:34:38Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=3480#p3480</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Возращает только одно значение]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=3479#p3479" />
			<content type="html"><![CDATA[<p>Доброго времени суток. Подскажите. Не могу сообразить. Сканирую таблицу depo_limits в самой функции видит позиции, но возращает только одну и туже позицию, что через return, что через присваивание глобальных переменных. Результат одинаковый. Как сделать что бы возращались параметры по каждой позиции, а не только одной и той же? Хочу написать скрипт для выставления стопов в портфеле акции.<br /></p><div class="codebox"><pre><code>IsRun       = true
ACCOUNT     = &#039;NL0011100043&#039; -- Код счета
CLASS_CODE  = &#039;QJSIM&#039; -- Код класса
EXPIRY_DATE = &#039;TODAY&#039; -- Срок действия стоп-заявки: &#039;TODAY&#039; - до окончания текущей торговой сессии, &#039;GTC&#039; -до отмены, или время в формате &#039;ГГГГММДД&#039;
PriceStep   = 0
Procent     = 2
IsRun       = true
SEC_CODE    = &#039;&#039; -- Код инструмента
QTY_LOTS    = 0

function OnStop()
    IsRun = false
end

function main()

    while IsRun do
    ScanerPortfelya()
    PrintDbgStr(&quot;SEC_CODE_&quot;..SEC_CODE..&quot;_QTY_LOTS_&quot;..QTY_LOTS)
        sleep(1000)
        SEC_CODE = &quot;&quot;
        QTY_LOTS = 0
    end
end

-- Сканирует Портфель
ScanerPortfelya = function()
    -- Акции
    
        -- Перебирает таблицу &quot;Позиции по инструментам&quot;
        local num = getNumberOf(&#039;depo_limits&#039;)
        local depo_limit
        for i = 0, num - 1 do
            depo_limit = getItem(&#039;depo_limits&#039;, i)
            if depo_limit.limit_kind == 0 and depo_limit.currentbal ~= 0 then
                
                SEC_CODE = depo_limit.sec_code
                QTY_LOTS = depo_limit.currentbal

            PrintDbgStr(&quot;-----------------START--------------------&quot;)
            PrintDbgStr(&quot;Код бумаги_&quot;..depo_limit.sec_code)      -- Код бумаги  (STRING)  
            --PrintDbgStr(&quot;Счет депо_&quot;..depo_limit.trdaccid)     -- Счет депо  (STRING)  
            --PrintDbgStr(&quot;Идентификатор фирмы_&quot;..depo_limit.firmid)
            PrintDbgStr(&quot;Код клиента_&quot;..depo_limit.client_code)
           -- PrintDbgStr(&quot;Входящий остаток по бумагам_&quot;..depo_limit.openbal)
           -- PrintDbgStr(&quot;Входящий лимит по бумагам_&quot;..depo_limit.openlimit)
            PrintDbgStr(&quot;Текущий остаток по бумагам_&quot;..depo_limit.currentbal)
            -- PrintDbgStr(&quot;Текущий лимит по бумагам_&quot;..depo_limit.currentlimit)
            -- PrintDbgStr(&quot;Заблокировано на продажу количества лотов_&quot;..depo_limit.locked_sell)
            -- PrintDbgStr(&quot;Заблокированного на покупку количества лотов_&quot;..depo_limit.locked_buy)
            -- PrintDbgStr(&quot;Стоимость ценных бумаг, заблокированных под покупку_&quot;..depo_limit.locked_buy_value)
            -- PrintDbgStr(&quot;Стоимость ценных бумаг, заблокированных под продажу_&quot;..depo_limit.locked_sell_value)
            PrintDbgStr(&quot;Цена приобретения_&quot;..depo_limit.awg_position_price)
            PrintDbgStr(&quot;Тип лимита_&quot;..depo_limit.limit_kind)
            PrintDbgStr(&quot;==================END=======================&quot;)
           -- return  depo_limit.sec_code, depo_limit.currentbal, depo_limit.awg_position_price
            
           -- return depo_limit.sec_code, depo_limit.currentbal 
            end
        end
end</code></pre></div><p>Результат:<br />[14036] -----------------START--------------------<br />[14036] Код бумаги_SBER<br />[14036] Код клиента_1238<br />[14036] Текущий остаток по бумагам_10.0<br />[14036] Цена приобретения_118.37<br />[14036] Тип лимита_0<br />[14036] ==================END=======================<br />[14036] SEC_CODE_SBER_QTY_LOTS_10.0<br />[14036] -----------------START--------------------<br />[14036] Код бумаги_GMKN<br />[14036] Код клиента_1238<br />[14036] Текущий остаток по бумагам_1.0<br />[14036] Цена приобретения_19778.0<br />[14036] Тип лимита_0<br />[14036] ==================END=======================<br />[14036] -----------------START--------------------<br />[14036] Код бумаги_LKOH<br />[14036] Код клиента_1238<br />[14036] Текущий остаток по бумагам_1.0<br />[14036] Цена приобретения_3925.0<br />[14036] Тип лимита_0<br />[14036] ==================END=======================<br />[14036] -----------------START--------------------<br />[14036] Код бумаги_ROSN<br />[14036] Код клиента_1238<br />[14036] Текущий остаток по бумагам_1.0<br />[14036] Цена приобретения_351.5<br />[14036] Тип лимита_0<br />[14036] ==================END=======================<br />[14036] -----------------START--------------------<br />[14036] Код бумаги_SBER<br />[14036] Код клиента_1238<br />[14036] Текущий остаток по бумагам_10.0<br />[14036] Цена приобретения_118.37<br />[14036] Тип лимита_0<br />[14036] ==================END=======================<br />[14036] SEC_CODE_SBER_QTY_LOTS_10.0</p>]]></content>
			<author>
				<name><![CDATA[snegovik3009]]></name>
				<uri>https://quik2dde.ru/profile.php?id=3360</uri>
			</author>
			<updated>2022-05-26T08:20:26Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=3479#p3479</id>
		</entry>
</feed>
