<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>Форум QUIK [тема: Ограничение 50 транзакций в секунду]</title>
		<link>http://forum.quik.ru</link>
		<description>Новое в теме Ограничение 50 транзакций в секунду форума  на сайте Форум QUIK [forum.quik.ru]</description>
		<language>ru</language>
		<docs>http://backend.userland.com/rss2</docs>
		<pubDate>Tue, 19 May 2026 15:16:15 +0300</pubDate>
		<item>
			<title>Ограничение 50 транзакций в секунду</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum1/message47054/topic2916/">Ограничение 50 транзакций в секунду</a></b> в форуме <a href="http://forum.quik.ru/forum1/">Система QUIK</a>. <br />
			На QUIK 8.6.0.97 данный код работает без превышения транзакций<br />уже несколько дней <br />
			<i>16.07.2020 10:51:43, Михаил Е.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum1/message47054/topic2916/</link>
			<guid>http://forum.quik.ru/messages/forum1/message47054/topic2916/</guid>
			<pubDate>Thu, 16 Jul 2020 10:51:43 +0300</pubDate>
			<category>Система QUIK</category>
		</item>
		<item>
			<title>Ограничение 50 транзакций в секунду</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum1/message47053/topic2916/">Ограничение 50 транзакций в секунду</a></b> в форуме <a href="http://forum.quik.ru/forum1/">Система QUIK</a>. <br />
			Кажется, подсчет транзакций можно сделать следующим образом<br />- запоминаем транзакцию когда её отправляем<br />- когда получили ответ от сервера, начинаем считать 1 секунду<br />- можно поставить лимит времени, когда мы сами забудем транзакцию<br />например, если соединение разорвалось и сервер не ответил<br />
====code====
<pre>--
-- Подсчёт количества событий, произошедших за последние несколько секунд.
-- При регистрации очередного события в массив событий добавляется новый элемент с указанием текущего момента времени.
-- При подсчёте числа событий учитываются только те события, которые произошли не более чем указанное количество
-- секунд назад, а остальные события удаляются из массива.
--

local EventsCounter = {}

local function systime()
&nbsp;&nbsp;&nbsp;&nbsp;local d = os.sysdate()
&nbsp;&nbsp;&nbsp;&nbsp;local mcs = d.mcs or 0
&nbsp;&nbsp;&nbsp;&nbsp;d.ms = nil
&nbsp;&nbsp;&nbsp;&nbsp;d.mcs = nil
&nbsp;&nbsp;&nbsp;&nbsp;return os.time(d) + mcs * 0.000001
end

--- Конструктор.
-- @param self объект
-- @param interval количество секунд, на протяжении которых отслеживаются события
-- @param bump максимальное количество секунд, на протяжении которого событие занимает очередь без регистрации
local function new(self, interval, bump)
&nbsp;&nbsp;&nbsp;&nbsp;local object = {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;interval = interval,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bump = bump,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;events = {},
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;setmetatable(object, self)
&nbsp;&nbsp;&nbsp;&nbsp;self.__index = self
&nbsp;&nbsp;&nbsp;&nbsp;return object
end

EventsCounter.new = new

--- Зарегистрировать событие.
-- @param self объект
local function registerEvent(self, trans_id)
&nbsp;&nbsp;&nbsp;&nbsp;self.events&#91;trans_id&#93; = systime()
end

EventsCounter.registerEvent = registerEvent

--- Запомнить событие до его регистрации
-- @param self объект
local function preRegisterEvent(self, trans_id)
&nbsp;&nbsp;&nbsp;&nbsp;self.events&#91;trans_id&#93; = systime() + self.bump
end

EventsCounter.preRegisterEvent = preRegisterEvent

--- Узнать, сколько событий произошло за последние несколько секунд.
-- @param self объект
-- @return количество событий, произошедших за последние несколько секунд
local function getCount(self)
&nbsp;&nbsp;&nbsp;&nbsp;local now = systime()
&nbsp;&nbsp;&nbsp;&nbsp;local count = 0
&nbsp;&nbsp;&nbsp;&nbsp;local remove = {}
&nbsp;&nbsp;&nbsp;&nbsp;for id, time in pairs(self.events) do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if now - time &#60;= self.interval then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;count = count + 1
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;remove&#91;id&#93; = true
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;for id, _ in pairs(remove) do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.events&#91;id&#93; = nil
&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;return count
end

EventsCounter.getCount = getCount


return EventsCounter
</pre>
=============
<br />Отправка транзакции
====code====
<pre>local EventsCounter = require("EventsCounter")

local eventsCounter = EventsCounter:new(1.0, 30.0)

function myTransactionSend(transaction)
-- Перед отправкой транзакции проверяем количество событий и притормаживаем, если надо
&nbsp;&nbsp;while eventsCounter:getCount() &#62;= 50 do
&nbsp;&nbsp;&nbsp;&nbsp;sleep(10)
&nbsp;&nbsp;end

-- Ваш код, который отсылает заявку
&nbsp;&nbsp;sendTransaction()

&nbsp;&nbsp;eventsCounter:preRegisterEvent(tonumber(transaction.TRANS_ID))
end
</pre>
=============
<br />Получение ответа на транзакцию:
====code====
<pre>-- ответ на отправку транзакции
function OnTransReply(trans_reply)
&nbsp;&nbsp;eventsCounter:registerEvent(transReply.trans_id)
end</pre>
============= <br />
			<i>16.07.2020 10:51:08, Михаил Е.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum1/message47053/topic2916/</link>
			<guid>http://forum.quik.ru/messages/forum1/message47053/topic2916/</guid>
			<pubDate>Thu, 16 Jul 2020 10:51:08 +0300</pubDate>
			<category>Система QUIK</category>
		</item>
		<item>
			<title>Ограничение 50 транзакций в секунду</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum1/message45754/topic2916/">Ограничение 50 транзакций в секунду</a></b> в форуме <a href="http://forum.quik.ru/forum1/">Система QUIK</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_6qqPBjpk" href="/user/11047/" bx-tooltip-user-id="11047">Михаил Е</a> написал:<br /> <br />====quote====<br /><noindex><a href="/user/82/" target="_blank" rel="nofollow">swerg</a></noindex> написал:<br />Вполне может еще сетевой буфер влиять: несколько транзакций по факту накапливаются на вашей стороне в один сетевой пакет, после чего весь макет одновременно уезжает серверу, где они все сразу обрабатывает<br />Это можно объяснить как меньшее кол-во заявок в секунду по вашим замерам, так и одновременность их обработки.<br /><br />Попробуйте связаться с брокером и уточнить у него по чем для вас встанет для вас увеличение допустимого количества транзакций в секунду. Вдруг это будет обозримая цифра.<br />Ну либо придётся менять алгоритм, избавляюсь от простой идеи одновременного снятия буквально всех заявок. Наверняка ведь вашу торговую идею можно реализовать иначе, красивее и без внезапного снятия буквально всех выставленных заявок.<br />=============<br /> :)<br />Сначала там вообще была оплата за каждую транзакцию выше 20 в секунду,<br />я подумал это какая-то дыра, даже если снимать все заявки в квике, когда заявок несколько десятков.<br />Я предложил брокеру например платить фикс сумму в месяц, на что они просто сделали до 50 транзакций в секунду,<br />дальше будет ошибка.<br />=============<br />Дыра - в смысле практически неконтролируемо получаю доп комиссию от брокера,<br />и я не понимал как уследить, где было больше 20 тр. в секунду... <br />
			<i>29.05.2020 12:13:00, Михаил Е.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum1/message45754/topic2916/</link>
			<guid>http://forum.quik.ru/messages/forum1/message45754/topic2916/</guid>
			<pubDate>Fri, 29 May 2020 12:13:00 +0300</pubDate>
			<category>Система QUIK</category>
		</item>
		<item>
			<title>Ограничение 50 транзакций в секунду</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum1/message45753/topic2916/">Ограничение 50 транзакций в секунду</a></b> в форуме <a href="http://forum.quik.ru/forum1/">Система QUIK</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_AhR2fLub" href="/user/82/" bx-tooltip-user-id="82">swerg</a> написал:<br />Вполне может еще сетевой буфер влиять: несколько транзакций по факту накапливаются на вашей стороне в один сетевой пакет, после чего весь макет одновременно уезжает серверу, где они все сразу обрабатывает<br />Это можно объяснить как меньшее кол-во заявок в секунду по вашим замерам, так и одновременность их обработки.<br /><br />Попробуйте связаться с брокером и уточнить у него по чем для вас встанет для вас увеличение допустимого количества транзакций в секунду. Вдруг это будет обозримая цифра.<br />Ну либо придётся менять алгоритм, избавляюсь от простой идеи одновременного снятия буквально всех заявок. Наверняка ведь вашу торговую идею можно реализовать иначе, красивее и без внезапного снятия буквально всех выставленных заявок.<br />=============<br />:)<br />Сначала там вообще была оплата за каждую транзакцию выше 20 в секунду,<br />я подумал это какая-то дыра, даже если снимать все заявки в квике, когда заявок несколько десятков.<br />Я предложил брокеру например платить фикс сумму в месяц, на что они просто сделали до 50 транзакций в секунду,<br />дальше будет ошибка. <br />
			<i>29.05.2020 12:08:34, Михаил Е.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum1/message45753/topic2916/</link>
			<guid>http://forum.quik.ru/messages/forum1/message45753/topic2916/</guid>
			<pubDate>Fri, 29 May 2020 12:08:34 +0300</pubDate>
			<category>Система QUIK</category>
		</item>
		<item>
			<title>Ограничение 50 транзакций в секунду</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum1/message45744/topic2916/">Ограничение 50 транзакций в секунду</a></b> в форуме <a href="http://forum.quik.ru/forum1/">Система QUIK</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_OkxdNB6E" href="/user/11047/" bx-tooltip-user-id="11047">Михаил Е</a> написал:<br />Возможно Sergey Gorokhov - сможете объяснить как хотят транзакции между квиком и сервером<br />=============<br />Вопрос слишком общий для того чтобы можно было дать на него предметный ответ.<br />Легко можем ответить что они ходят по TCP протоколу, и ответ будет вписываться в вопрос.<br />Однако, что-то подсказывает что вы не это хотите услышать, тогда что?<br /><br />====quote====<br /><a class="blog-p-user-name" id="bp_xadeiM62" href="/user/11047/" bx-tooltip-user-id="11047">Михаил Е</a> написал:<br />и как замеряется этот интервал - 50 транзакций в секунду?<br /><br />=============<br />Интервал замеряется сервером QUIK по времени получения транзакций.<br />Ключевая особенность как раз в том что время получения транзакции это далеко не то же самое что время ее отправки до сервера.<br />И да <a class="blog-p-user-name" id="bp_qiuaBrsg" href="/user/82/" bx-tooltip-user-id="82">swerg</a>, прав, проблема может возникать при буферизации.<br />Почтой ответили более подробно. <br />
			<i>29.05.2020 07:22:14, Sergey Gorokhov.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum1/message45744/topic2916/</link>
			<guid>http://forum.quik.ru/messages/forum1/message45744/topic2916/</guid>
			<pubDate>Fri, 29 May 2020 07:22:14 +0300</pubDate>
			<category>Система QUIK</category>
		</item>
		<item>
			<title>Ограничение 50 транзакций в секунду</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum1/message45743/topic2916/">Ограничение 50 транзакций в секунду</a></b> в форуме <a href="http://forum.quik.ru/forum1/">Система QUIK</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_Av1FSOdE" href="/user/82/" bx-tooltip-user-id="82">swerg</a> написал:<br />Это можно объяснить как меньшее кол-во заявок в секунду по вашим замерам, так и одновременность их обработки.<br />=============<br />Уточнение:<br />Эт<B>им</B> можно объяснить.... и далее по тексту. <br />
			<i>29.05.2020 06:52:01, swerg.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum1/message45743/topic2916/</link>
			<guid>http://forum.quik.ru/messages/forum1/message45743/topic2916/</guid>
			<pubDate>Fri, 29 May 2020 06:52:01 +0300</pubDate>
			<category>Система QUIK</category>
		</item>
		<item>
			<title>Ограничение 50 транзакций в секунду</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum1/message45742/topic2916/">Ограничение 50 транзакций в секунду</a></b> в форуме <a href="http://forum.quik.ru/forum1/">Система QUIK</a>. <br />
			Вполне может еще сетевой буфер влиять: несколько транзакций по факту накапливаются на вашей стороне в один сетевой пакет, после чего весь макет одновременно уезжает серверу, где они все сразу обрабатывает<br />Это можно объяснить как меньшее кол-во заявок в секунду по вашим замерам, так и одновременность их обработки.<br /><br />Попробуйте связаться с брокером и уточнить у него по чем для вас встанет для вас увеличение допустимого количества транзакций в секунду. Вдруг это будет обозримая цифра.<br />Ну либо придётся менять алгоритм, избавляюсь от простой идеи одновременного снятия буквально всех заявок. Наверняка ведь вашу торговую идею можно реализовать иначе, красивее и без внезапного снятия буквально всех выставленных заявок. <br />
			<i>29.05.2020 06:51:00, swerg.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum1/message45742/topic2916/</link>
			<guid>http://forum.quik.ru/messages/forum1/message45742/topic2916/</guid>
			<pubDate>Fri, 29 May 2020 06:51:00 +0300</pubDate>
			<category>Система QUIK</category>
		</item>
		<item>
			<title>Ограничение 50 транзакций в секунду</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum1/message45728/topic2916/">Ограничение 50 транзакций в секунду</a></b> в форуме <a href="http://forum.quik.ru/forum1/">Система QUIK</a>. <br />
			_sk_, код в целом работает, но иногда сбоит.<br />Причем если смотреть по таблице транзакций (время и микросекунды),<br />то иногда не вижу чтобы в 1 секунду были ровно 50 транзакций (бывало 23),<br />а ошибка есть.<br />Или что странно там по 5-10 транзакций пишутся с одинаковой секундой и микросекундой (1/1000000),<br />но это вообще не реально выглядит, по логам скрипта время различается,<br />хотя бы на несколько миллисекунд.<br /><br />Возможно Sergey Gorokhov - сможете объяснить как хотят транзакции между квиком и сервером<br />и как замеряется этот интервал - 50 транзакций в секунду? <br />
			<i>28.05.2020 18:49:32, Михаил Е.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum1/message45728/topic2916/</link>
			<guid>http://forum.quik.ru/messages/forum1/message45728/topic2916/</guid>
			<pubDate>Thu, 28 May 2020 18:49:32 +0300</pubDate>
			<category>Система QUIK</category>
		</item>
		<item>
			<title>Ограничение 50 транзакций в секунду</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum1/message43698/topic2916/">Ограничение 50 транзакций в секунду</a></b> в форуме <a href="http://forum.quik.ru/forum1/">Система QUIK</a>. <br />
			<a class="blog-p-user-name" id="bp_FGoIfU32" href="/user/115/" bx-tooltip-user-id="115">_sk_</a>, спасибо большое за ваш пример!<br />для себя опытным путём определил, что
====code====
<pre>while eventsCounter:getCount() &#62; 45 do
&nbsp;&nbsp;&nbsp;&nbsp;sleep(10)
end</pre>
=============
пролазит в ограничение 50 транзакций от брокера,<br />не вызывая ошибок сервера квика. <br />
			<i>17.04.2020 10:20:47, Михаил Е.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum1/message43698/topic2916/</link>
			<guid>http://forum.quik.ru/messages/forum1/message43698/topic2916/</guid>
			<pubDate>Fri, 17 Apr 2020 10:20:47 +0300</pubDate>
			<category>Система QUIK</category>
		</item>
		<item>
			<title>Ограничение 50 транзакций в секунду</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum1/message43696/topic2916/">Ограничение 50 транзакций в секунду</a></b> в форуме <a href="http://forum.quik.ru/forum1/">Система QUIK</a>. <br />
			Вот пример реализации объекта.<br />
====code====
<pre>--
-- Подсчёт количества событий, произошедших за последние несколько секунд.
-- При регистрации очередного события в массив событий добавляется новый элемент с указанием текущего момента времени.
-- При подсчёте числа событий учитываются только те события, которые произошли не более чем указанное количество
-- секунд назад, а остальные события удаляются из массива.
--

local EventsCounter = {}

local function systime()
&nbsp;&nbsp;&nbsp;&nbsp;local d = os.sysdate()
&nbsp;&nbsp;&nbsp;&nbsp;local mcs = d.mcs or 0
&nbsp;&nbsp;&nbsp;&nbsp;d.ms = nil
&nbsp;&nbsp;&nbsp;&nbsp;d.mcs = nil
&nbsp;&nbsp;&nbsp;&nbsp;return os.time(d) + mcs * 0.000001
end

--- Конструктор.
-- @param self объект
-- @param interval количество секунд, на протяжении которых отслеживаются события
local function new(self, interval)
&nbsp;&nbsp;&nbsp;&nbsp;local object = {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;interval = interval,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;id = 0,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;events = {},
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;setmetatable(object, self)
&nbsp;&nbsp;&nbsp;&nbsp;self.__index = self
&nbsp;&nbsp;&nbsp;&nbsp;return object
end

EventsCounter.new = new

--- Зарегистрировать событие.
-- @param self объект
local function registerEvent(self)
&nbsp;&nbsp;&nbsp;&nbsp;self.id = self.id + 1
&nbsp;&nbsp;&nbsp;&nbsp;self.events&#91;self.id&#93; = systime()
end

EventsCounter.registerEvent = registerEvent

--- Узнать, сколько событий произошло за последние несколько секунд.
-- @param self объект
-- @return количество событий, произошедших за последние несколько секунд
local function getCount(self)
&nbsp;&nbsp;&nbsp;&nbsp;local now = systime()
&nbsp;&nbsp;&nbsp;&nbsp;local count = 0
&nbsp;&nbsp;&nbsp;&nbsp;local remove = {}
&nbsp;&nbsp;&nbsp;&nbsp;for id, time in pairs(self.events) do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if now - time &#60;= self.interval then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;count = count + 1
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;remove&#91;id&#93; = true
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;for id, _ in pairs(remove) do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.events&#91;id&#93; = nil
&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;return count
end

EventsCounter.getCount = getCount

return EventsCounter</pre>
=============
<br />Использовать примерно так:<br /><br />
====code====
<pre>local EventsCounter = require("EventsCounter")

local eventsCounter = EventsCounter:new(1)

-- Перед отправкой транзакции проверяем количество событий и притормаживаем, если надо
while eventsCounter:getCount() &#62; 40 do
&nbsp;&nbsp;&nbsp;&nbsp;sleep(10)
end
-- Ваш код, который отсылает заявку
sendTransaction()
--
eventsCounter:registerEvent()</pre>
=============
Недостатком является ожидание, пока предыдущие события уйдут в прошлое. А можно было бы что-то полезное делать. Но для такой реализации уже более сложный код надо писать.<br /><br />Успехов! <br />
			<i>17.04.2020 06:50:05, _sk_.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum1/message43696/topic2916/</link>
			<guid>http://forum.quik.ru/messages/forum1/message43696/topic2916/</guid>
			<pubDate>Fri, 17 Apr 2020 06:50:05 +0300</pubDate>
			<category>Система QUIK</category>
		</item>
		<item>
			<title>Ограничение 50 транзакций в секунду</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum1/message43694/topic2916/">Ограничение 50 транзакций в секунду</a></b> в форуме <a href="http://forum.quik.ru/forum1/">Система QUIK</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_SoIdrN4e" href="/user/115/" bx-tooltip-user-id="115">_sk_</a> написал:<br />Заведите себе объект, который вычисляет количество отправленных заявок в последнюю секунду (реализация через очередь). Если количество заявок больше, скажем, 45, не отправляйте новые. Понятно, что ограничение неприятное и неудобное, но спамить сервер тоже не правильно.<br />=============<br />Извините, можете привести пример, как написать это эффективно?<br /><br />Например достался код коннектора у которого, повезло,<br />всего одна точка sendTransaction:<br />
====code====
<pre>-- отправка траназакции квику
function router:processTransaction(transaction, tJson)
&nbsp;&nbsp;trace("info", "NEW TRANSACTION: " .. tJson)
&nbsp;&nbsp;local ok = sendTransaction(transaction)
&nbsp;&nbsp;if ok ~= "" then
&nbsp;&nbsp;&nbsp;&nbsp; -- код, чтобы обработать ошибку
&nbsp;&nbsp;end&nbsp;&nbsp;
end
</pre>
=============
Как сделать, чтобы проходило не более 50ти в секунду,<br />но при этом не тупо делать sleep(1000 / 50) ? <br />
			<i>16.04.2020 20:36:31, Михаил Е.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum1/message43694/topic2916/</link>
			<guid>http://forum.quik.ru/messages/forum1/message43694/topic2916/</guid>
			<pubDate>Thu, 16 Apr 2020 20:36:31 +0300</pubDate>
			<category>Система QUIK</category>
		</item>
		<item>
			<title>Ограничение 50 транзакций в секунду</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum1/message25476/topic2916/">Ограничение 50 транзакций в секунду</a></b> в форуме <a href="http://forum.quik.ru/forum1/">Система QUIK</a>. <br />
			Заведите себе объект, который вычисляет количество отправленных заявок в последнюю секунду (реализация через очередь). Если количество заявок больше, скажем, 45, не отправляйте новые. Понятно, что ограничение неприятное и неудобное, но спамить сервер тоже не правильно. <br />
			<i>26.06.2017 06:07:37, _sk_.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum1/message25476/topic2916/</link>
			<guid>http://forum.quik.ru/messages/forum1/message25476/topic2916/</guid>
			<pubDate>Mon, 26 Jun 2017 06:07:37 +0300</pubDate>
			<category>Система QUIK</category>
		</item>
		<item>
			<title>Ограничение 50 транзакций в секунду</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum1/message25465/topic2916/">Ограничение 50 транзакций в секунду</a></b> в форуме <a href="http://forum.quik.ru/forum1/">Система QUIK</a>. <br />
			<a class="blog-p-user-name" id="bp_5b5tFFyj" href="/user/3905/" bx-tooltip-user-id="3905">Let_it_go</a>, <br /><br />Сервер снимет 50 заявок, остальные 10 останутся активными, а на транзакцию придет ошибка "Количество транзакций превышает..." <br />
			<i>23.06.2017 19:50:23, Sergey Gorokhov.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum1/message25465/topic2916/</link>
			<guid>http://forum.quik.ru/messages/forum1/message25465/topic2916/</guid>
			<pubDate>Fri, 23 Jun 2017 19:50:23 +0300</pubDate>
			<category>Система QUIK</category>
		</item>
		<item>
			<title>Ограничение 50 транзакций в секунду</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum1/message25464/topic2916/">Ограничение 50 транзакций в секунду</a></b> в форуме <a href="http://forum.quik.ru/forum1/">Система QUIK</a>. <br />
			Ещё вопрос.<br />У меня выставлено 60 заявок. У брокера ограничение 50 заявок.<br />Я использую для массового снятия заявок функцию на Луа
====code====
<pre>
function killAllOrders(table_mask)
&nbsp;&nbsp;&nbsp;&nbsp;-- данная функция отправит транзакции на отмену АКТИВНЫХ заявок соответствующим фильтру указанному как входящий параметр table_mask
&nbsp;&nbsp;&nbsp;&nbsp;-- список всех возможных параметров&nbsp;&nbsp;: ACCOUNT,CLASSCODE,SECCODE,OPERATION,CLIENT_CODE,COMMENT
&nbsp;&nbsp;&nbsp;&nbsp;-- если вызвать функцию с параметром nil - снимутся ВСЕ активные заявки
&nbsp;&nbsp;&nbsp;&nbsp;local i,key,val,result_num=0,0,0,0
&nbsp;&nbsp;&nbsp;&nbsp;local tokill=true
&nbsp;&nbsp;&nbsp;&nbsp;local row={}
&nbsp;&nbsp;&nbsp;&nbsp;local result_str=""

&nbsp;&nbsp;&nbsp;&nbsp;for i=0,getNumberOf("orders")-1,1 do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;row=getItem("orders",i)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tokill=false
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if orderflags2table(row.flags).active then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tokill=true
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if table_mask~=nil then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for key,val in pairs(table_mask) do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if string_lower(key)=='comment' then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if string_find(string_lower(row.brokerref),string_lower(val))==nil then&nbsp;&nbsp;&nbsp;&nbsp;tokill=false break end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if row&#91;string_lower(key)&#93;~=val then tokill=false&nbsp;&nbsp;&nbsp;&nbsp;break end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if tokill then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;res,ms=killOrder(tostring(row.order_num),row&#91;securityfiledname&#93;,row.class_code)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result_num=result_num+1
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if res then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result_str=result_str..row.order_num..","
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result_str=result_str.."!"..row.order_num..","
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;end
&nbsp;&nbsp;&nbsp;&nbsp;return true,"QL.killAllOrders(): Sended "..result_num.." transactions. order_nums:"..result_str
end</pre>
=============
Вопрос. Эта функция снимет 50 заявок? Или она не снимет ни одной заявки, ведь сервер увидит что его мучают и не снимет ничего? <br />
			<i>23.06.2017 19:42:46, Let_it_go.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum1/message25464/topic2916/</link>
			<guid>http://forum.quik.ru/messages/forum1/message25464/topic2916/</guid>
			<pubDate>Fri, 23 Jun 2017 19:42:46 +0300</pubDate>
			<category>Система QUIK</category>
		</item>
		<item>
			<title>Ограничение 50 транзакций в секунду</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum1/message25463/topic2916/">Ограничение 50 транзакций в секунду</a></b> в форуме <a href="http://forum.quik.ru/forum1/">Система QUIK</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_s9r6myfR" href="/user/3905/" bx-tooltip-user-id="3905">Let_it_go</a> написал:<br />Брокер может делать такое ограничение, а может не делать?<br /><br />=============<br /><br />Да верно. Это опция, которая настраивается по усмотрению брокера, а НЕ ограничение сервера.<br /><br /><br />====quote====<br /><a class="blog-p-user-name" id="bp_gaICCac6" href="/user/3905/" bx-tooltip-user-id="3905">Let_it_go</a> написал:<br />Это настраивается для всех клиентов, или брокер может вводить персональные ограничения для отдельных клиентов если видит, что они флудят заявками?<br />=============<br /><br />Брокер может указать как глобальную настройку так и индивидуальную, т.е. возможны оба варианта. <br />
			<i>23.06.2017 19:06:06, Sergey Gorokhov.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum1/message25463/topic2916/</link>
			<guid>http://forum.quik.ru/messages/forum1/message25463/topic2916/</guid>
			<pubDate>Fri, 23 Jun 2017 19:06:06 +0300</pubDate>
			<category>Система QUIK</category>
		</item>
		<item>
			<title>Ограничение 50 транзакций в секунду</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum1/message25462/topic2916/">Ограничение 50 транзакций в секунду</a></b> в форуме <a href="http://forum.quik.ru/forum1/">Система QUIK</a>. <br />
			Спасибо за ответ.<br />Это стало появляться совсем недавно. Брокер может делать такое ограничение, а может не делать?<br />Это настраивается для всех клиентов, или брокер может вводить персональные ограничения для отдельных клиентов если видит, что они флудят заявками? <br />
			<i>23.06.2017 18:49:35, Let_it_go.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum1/message25462/topic2916/</link>
			<guid>http://forum.quik.ru/messages/forum1/message25462/topic2916/</guid>
			<pubDate>Fri, 23 Jun 2017 18:49:35 +0300</pubDate>
			<category>Система QUIK</category>
		</item>
		<item>
			<title>Ограничение 50 транзакций в секунду</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum1/message25461/topic2916/">Ограничение 50 транзакций в секунду</a></b> в форуме <a href="http://forum.quik.ru/forum1/">Система QUIK</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_9colTDRy" href="/user/3905/" bx-tooltip-user-id="3905">Let_it_go</a> написал:<br />Кто автор этой ошибки<br /><br />=============<br />Ошибку вернул сервер QUIK на стороне брокера.<br /><br /><br />====quote====<br /><a class="blog-p-user-name" id="bp_yZEVq5PJ" href="/user/3905/" bx-tooltip-user-id="3905">Let_it_go</a> написал:<br />Почему оно возникает несколько раз при попытке "Снять все активные заявки" через контекстное меню (клик правой кнопкой по таблице заявок). На скриншоте видно, что команда сгенерировалась 6 раз.<br /><br />=============<br /><br />Потому что на бирже нет такой транзакции "Снять все активные заявки", впрочем как и на сервере QUIK.<br />Такая транзакция есть только в терминале, а терминал на сервер все равно отправляет столько транзакций на снятие сколько активных заявок. А раз на сервере настроено ограничение, то сервер не пускает на биржу все транзакции, а только часть. <br />
			<i>23.06.2017 18:22:05, Sergey Gorokhov.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum1/message25461/topic2916/</link>
			<guid>http://forum.quik.ru/messages/forum1/message25461/topic2916/</guid>
			<pubDate>Fri, 23 Jun 2017 18:22:05 +0300</pubDate>
			<category>Система QUIK</category>
		</item>
		<item>
			<title>Ограничение 50 транзакций в секунду</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum1/message25460/topic2916/">Ограничение 50 транзакций в секунду</a></b> в форуме <a href="http://forum.quik.ru/forum1/">Система QUIK</a>. <br />
			Добрый день.<br />При попытке &quot;снять все заявки&quot; (их у меня больше сотни) начало появляться сообщение:<br />Количество транзакций превышает максимально разрешённое 50 в секунду.<br />Кто автор этой ошибки<br />1. КВИК<br />2. Брокер<br />3. Биржа?<br /><br />Почему оно возникает несколько раз при попытке &quot;Снять все активные заявки&quot; через контекстное меню (клик правой кнопкой по таблице заявок). На скриншоте видно, что команда сгенерировалась 6 раз.<br /><img src="https://content.screencast.com/users/astro-12/folders/Snagit/media/780e4f1c-428e-43b9-a0bb-2240131c3789/06.23.2017-18.14.png" alt="Пользователь добавил изображение" border="0" /> <br />
			<i>23.06.2017 18:15:17, Let_it_go.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum1/message25460/topic2916/</link>
			<guid>http://forum.quik.ru/messages/forum1/message25460/topic2916/</guid>
			<pubDate>Fri, 23 Jun 2017 18:15:17 +0300</pubDate>
			<category>Система QUIK</category>
		</item>
	</channel>
</rss>
