<?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; Обработка тиков по интервалу количества]]></title>
		<link>https://quik2dde.ru/viewtopic.php?id=325</link>
		<atom:link href="https://quik2dde.ru/extern.php?action=feed&amp;tid=325&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «Обработка тиков по интервалу количества».]]></description>
		<lastBuildDate>Fri, 31 Jul 2020 20:53:36 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: Обработка тиков по интервалу количества]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=2816#p2816</link>
			<description><![CDATA[<div class="quotebox"><cite>MetalHeart пишет:</cite><blockquote><p>А вот про ограничение &quot;1000 тиков ограничение, если по 200 тиков, то 4 точки будет показывать&quot; вообще ничего не понял, не объясните?</p></blockquote></div><p>Здравствуйте, вы хотите интервал в 200 тиков, 1 тик = 1 бар {open,high,low,close,datetime}все цены равны.<br />В настройках графика стоит ограничение в 1000 баров, у вас 1 бар = 200 тиков 1000/200 = 5 баров, т.к. тики шустро обновляются на графике, то вы будете видеть только 4 ваших бара, которые связаны какой-то линией.<br />В примере в качестве источника тиков - таблица обезличенных сделок.<br />Используя lua_share [url]https://quik2dde.ru/viewtopic.php?id=306,[/url] а именно пространство имен &#039;queues&#039; можно создать очередь ваших баров для индикатора, который при каждом вызове OnCalculate будет разгружать очередь, искать соответствие по datetime на истории тиков и устанавливать нужное значение на график из вашего бара<br /></p><div class="codebox"><pre><code>--local sh = require&#039;lua_share&#039;
--local tics = sh.GetNameSpace(&#039;queues&#039;)
local tics = {}
local t = {}
local count = 0
local tf = 200
local ticker = &quot;SiU0&quot;
local function new_tic(p, dt)
    if not t.O then
        t.O = p
        t.H = p
        t.L = p
        t.C = p
        t.dt = dt
        count = 1
        return
    end
    if p &gt; t.H then t.H = p end
    if p &lt; t.L then t.L = p end
    t.C = p
    count = count + 1
    if count == tf then
        message(&quot;bar time &quot;..os.date(&quot;%H:%M:%S&quot;,os.time(t.dt))..
            &quot;\nO= &quot;..t.O..
            &quot;\nH= &quot;..t.H..
            &quot;\nL= &quot;..t.L..
            &quot;\nC= &quot;..t.C, 2)
        tics[#tics+1] = t
        --tics.indicator = t
        t.O = nil
    end
end

local exitflag
function main()
    local old_tlr = getNumberOf(&quot;all_trades&quot;) - 500
    while not exitflag do
        local tlr = getNumberOf(&quot;all_trades&quot;)
        if tlr &gt; old_tlr then
            for i=old_tlr, tlr-1 do
                local item = getItem(&quot;all_trades&quot;,i)
                if item and item.sec_code == ticker then
                    new_tic(item.price, item.datetime)
                end
            end
            old_tlr = tlr
        end
        sleep(1)
    end
end
function OnStop()
    exitflag = true
end</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (kalikazandr)]]></author>
			<pubDate>Fri, 31 Jul 2020 20:53:36 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=2816#p2816</guid>
		</item>
		<item>
			<title><![CDATA[Re: Обработка тиков по интервалу количества]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=2815#p2815</link>
			<description><![CDATA[<p>kalikazandr, swerg, в любом случае спасибо за активность, постоянно натыкаюсь на ваши ники в разных постах, познавательно)</p>]]></description>
			<author><![CDATA[null@example.com (MetalHeart)]]></author>
			<pubDate>Fri, 31 Jul 2020 18:56:10 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=2815#p2815</guid>
		</item>
		<item>
			<title><![CDATA[Re: Обработка тиков по интервалу количества]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=2814#p2814</link>
			<description><![CDATA[<p>Стандартные интервалы меня точно не устраивают. Тики же квик получает, работать с ними позволяет, в данный момент меня рисование на графики как таковое не интересует. Мне нужно взять пусть 200 тиков, это возможно без проблем, насколько я понял, засунуть их в цикл в качестве входных данных, за эти 200 тиков найти макс, мин, открытие-закрытие как на обычной свече. Т.е. это я так понимаю один цикл. И потом это повторять опять же на следующие 200 тиков. Допустим это будет одна функция. А потом результаты этой функции подсунуть следующей функции-индикатору, чтобы получить данные скользящей средней. Опять же, рисовать не обязательно это. Код индикатора доступен, как это делается в общем скрипте с роботом, примеры есть. У меня пока что загвоздка именно в обработке тиков.</p><p>А вот про ограничение &quot;1000 тиков ограничение, если по 200 тиков, то 4 точки будет показывать&quot; вообще ничего не понял, не объясните?</p>]]></description>
			<author><![CDATA[null@example.com (MetalHeart)]]></author>
			<pubDate>Fri, 31 Jul 2020 18:53:06 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=2814#p2814</guid>
		</item>
		<item>
			<title><![CDATA[Re: Обработка тиков по интервалу количества]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=2813#p2813</link>
			<description><![CDATA[<div class="quotebox"><cite>swerg пишет:</cite><blockquote><p>С произвольными интервалами даже не знаю как реализовать то, что вы хотите.</p></blockquote></div><p>На тиковом можно, но смысл пропадает, 1000 тиков ограничение, если по 200 тиков, то 4 точки будет показывать</p>]]></description>
			<author><![CDATA[null@example.com (kalikazandr)]]></author>
			<pubDate>Wed, 29 Jul 2020 07:42:33 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=2813#p2813</guid>
		</item>
		<item>
			<title><![CDATA[Re: Обработка тиков по интервалу количества]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=2812#p2812</link>
			<description><![CDATA[<p>В QUIK скрипты индикаторов и &quot;роботов&quot;, так скажем - это полностью непересекающиеся сущности.<br />Функция main() есть только в &quot;роботах&quot;, в индикаторах ее нет.<br />Посмотрите именно написание индикаторов по справке. Там нельзя в произвольный момент времени &quot;брать тики&quot;, там все привязано к моментам получения цены по инструменту (по факту совершения новых сделок на бирже).<br />В этом смысле построить индикатор с произвольным интервалом (вроде это вы хотите) - не совсем понятно как. А может вас стандартные (т.е. имеющиеся в QUIK) интервалы устроят?</p><p>С произвольными интервалами даже не знаю как реализовать то, что вы хотите.</p>]]></description>
			<author><![CDATA[null@example.com (swerg)]]></author>
			<pubDate>Wed, 29 Jul 2020 03:28:45 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=2812#p2812</guid>
		</item>
		<item>
			<title><![CDATA[Обработка тиков по интервалу количества]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=2811#p2811</link>
			<description><![CDATA[<p>Здравствуйте! Я новичок, разбираюсь с QLUA.<br />Столкнулся с такой задачей - нужно взять тики по инструменту, отсчитать заданное их количество, назовем его интервалом, (например, 200шт), в этом интервале найти максимум и минимум цены, а также цены первого и последнего тика. И так обновляться в реальном времени. Затем эти данные подставить в индикатор скользящей средней в качестве Open, Close, Low, High.<br />Пока понимаю, что данные можно получить либо через getCandlesByIndex, либо через CreateDataSource, но не понимаю, как их дальше обрабатывать.<br />Буду благодарен за пример скрипта.</p><p>Мой набросок нерабочего варианта(</p><p>function main()<br />x = getNumCandles(&#039;Instrument&#039;)<br />Instr, InstrN, InstrName = getCandlesByIndex(&#039;Instr&#039;, 0, 0, x)<br />for i = 0, InstrN-1, 1 do<br />tick = Instr{i}.close</p><p>--if tick[now-1]&gt;tick[now] then HIGH = tick[now-1] else HIGH = tick[now] end<br />--if tick[now-1]&lt;tick[now] then LOW = tick[now-1] else LOW = tick[now] end</p><p>end<br />--message(&#039;HIGH = &#039;..HIGH..&#039;, LOW = &#039;..LOW)<br />end</p>]]></description>
			<author><![CDATA[null@example.com (MetalHeart)]]></author>
			<pubDate>Tue, 28 Jul 2020 22:32:08 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=2811#p2811</guid>
		</item>
	</channel>
</rss>
