<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>Форум QUIK [тема: OnTransReply  и sendTransaction]</title>
		<link>http://forum.quik.ru</link>
		<description>Новое в теме OnTransReply  и sendTransaction форума  на сайте Форум QUIK [forum.quik.ru]</description>
		<language>ru</language>
		<docs>http://backend.userland.com/rss2</docs>
		<pubDate>Fri, 01 May 2026 07:13:09 +0300</pubDate>
		<item>
			<title>OnTransReply  и sendTransaction</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message26732/topic3035/">OnTransReply  и sendTransaction</a></b> <i>Не вызывается OnTransReply  </i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<a class="blog-p-user-name" id="bp_hX1I6AUh" href="/user/7362/" bx-tooltip-user-id="7362">Enfernuz</a>, <br /><br />sendTransaction возвращает только ошибки возникающие ДО отправки транзакции на сервер. Например, неправильный синтаксис.<br />Все остальное, приходит в OnTransReply <br />
			<i>19.09.2017 10:08:45, Sergey Gorokhov.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message26732/topic3035/</link>
			<guid>http://forum.quik.ru/messages/forum10/message26732/topic3035/</guid>
			<pubDate>Tue, 19 Sep 2017 10:08:45 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>OnTransReply  и sendTransaction</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message26722/topic3035/">OnTransReply  и sendTransaction</a></b> <i>Не вызывается OnTransReply  </i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			При посыле транзакции с завышенным числом лотов в терминале выскакивает сообщение &quot;Превышен лимит по бумаге&quot;, но в возврате от sendTransaction -- пустая строка.<br />Это баг или фича? <br />
			<i>19.09.2017 04:12:22, Enfernuz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message26722/topic3035/</link>
			<guid>http://forum.quik.ru/messages/forum10/message26722/topic3035/</guid>
			<pubDate>Tue, 19 Sep 2017 04:12:22 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>OnTransReply  и sendTransaction</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message26457/topic3035/">OnTransReply  и sendTransaction</a></b> <i>Не вызывается OnTransReply  </i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Надо прочитать документацию:<br />sendTransaction<br /><span class="bx-font" style="font-size:;"> </span><span class="bx-font" style="font-size:;">Функция предназначена для отправки транзакций в торговую систему. &nbsp;</span><br /><span class="bx-font" style="font-size:;">Формат вызова: &nbsp;</span><br /><span class="bx-font" style="font-size:;">STRING <B>result</B> sendTransaction(TABLE transaction)</span><span class="bx-font" style="font-size:;"> Параметры: &nbsp;<ul><li><B>result </B>– строка, содержащая текст ошибки, если она &nbsp;случилась при обработке транзакции; <br /></ul></span> <br />
			<i>30.08.2017 13:42:31, Николай  Камынин.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message26457/topic3035/</link>
			<guid>http://forum.quik.ru/messages/forum10/message26457/topic3035/</guid>
			<pubDate>Wed, 30 Aug 2017 13:42:31 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>OnTransReply  и sendTransaction</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message26449/topic3035/">OnTransReply  и sendTransaction</a></b> <i>Не вызывается OnTransReply  </i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Добрый день.<br /><br />Собственно проблема в том, что OnTransReply &nbsp;не вызывается после sendTransaction<br />Как узнать какие ошибки возникли при попытке сделать sendTransaction<br />Использую quik junior<br />
====code====
<pre>function SL_TP(Price, Type)
&nbsp;&nbsp;&nbsp;&nbsp;-- ID транзакции
&nbsp;&nbsp;&nbsp;&nbsp;trans_id = trans_id + 1;

&nbsp;&nbsp;&nbsp;&nbsp;-- Находит направление для заявки
&nbsp;&nbsp;&nbsp;&nbsp;local operation = "";
&nbsp;&nbsp;&nbsp;&nbsp;local price = "0"; -- Цена, по которой выставится заявка при срабатывании Стоп-Лосса (для рыночной заявки по акциям должна быть 0)
&nbsp;&nbsp;&nbsp;&nbsp;local stopprice = ""; -- Цена Тейк-Профита
&nbsp;&nbsp;&nbsp;&nbsp;local stopprice2 = ""; -- Цена Стоп-Лосса
&nbsp;&nbsp;&nbsp;&nbsp;local market = "YES"; -- После срабатывания Тейка, или Стопа, заявка сработает по рыночной цене
&nbsp;&nbsp;&nbsp;&nbsp;-- Если открыт BUY, то направление стоп-лосса и тейк-профита SELL, иначе направление стоп-лосса и тейк-профита BUY
&nbsp;&nbsp;&nbsp;&nbsp;if Type == 'BUY' then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;operation = "S"; -- Тейк-профит и Стоп-лосс на продажу(чтобы закрыть BUY, нужно открыть SELL)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- Если не акции
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if CLASS_CODE ~= 'QJSIM' and CLASS_CODE ~= 'TQBR' then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;price = tostring(math.floor(getParamEx(CLASS_CODE, SEC_CODE, 'PRICEMIN').param_value)); -- Цена выставляемой заявки после страбатывания Стопа минимально возможная, чтобы не проскользнуло
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;market = "NO";&nbsp;&nbsp;-- После срабатывания Тейка, или Стопа, заявка сработает НЕ по рыночной цене
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stopprice&nbsp;&nbsp;&nbsp;&nbsp;= tostring(Price + TAKE_PROFIT*SEC_PRICE_STEP); -- Уровень цены, когда активируется Тейк-профит
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stopprice2&nbsp;&nbsp;&nbsp;&nbsp;= tostring(Price - STOP_LOSS*SEC_PRICE_STEP); -- Уровень цены, когда активируется Стоп-лосс
&nbsp;&nbsp;&nbsp;&nbsp;else -- открыт SELL
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;operation = "B"; -- Тейк-профит и Стоп-лосс на покупку(чтобы закрыть SELL, нужно открыть BUY)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- Если не акции
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if CLASS_CODE ~= 'QJSIM' and CLASS_CODE ~= 'TQBR' then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;price = tostring(math.floor(getParamEx(CLASS_CODE, SEC_CODE, 'PRICEMAX').param_value)); -- Цена выставляемой заявки после страбатывания Стопа максимально возможная, чтобы не проскользнуло
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;market = "NO";&nbsp;&nbsp;-- После срабатывания Тейка, или Стопа, заявка сработает НЕ по рыночной цене
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stopprice&nbsp;&nbsp;&nbsp;&nbsp;= tostring(Price - TAKE_PROFIT*SEC_PRICE_STEP); -- Уровень цены, когда активируется Тейк-профит
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stopprice2&nbsp;&nbsp;&nbsp;&nbsp;= tostring(Price + STOP_LOSS*SEC_PRICE_STEP); -- Уровень цены, когда активируется Стоп-лосс
&nbsp;&nbsp;&nbsp;&nbsp;end;
&nbsp;&nbsp;&nbsp;&nbsp;-- Заполняет структуру для отправки транзакции на Стоп-лосс и Тейк-профит
&nbsp;&nbsp;&nbsp;&nbsp;local Transaction = {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#91;"ACTION"&#93;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= "NEW_STOP_ORDER", -- Тип заявки
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#91;"TRANS_ID"&#93;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= tostring(trans_id),
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#91;"CLASSCODE"&#93;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = CLASS_CODE,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#91;"SECCODE"&#93;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = SEC_CODE,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#91;"ACCOUNT"&#93;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = ACCOUNT,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#91;"OPERATION"&#93;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = operation, -- Операция ("B" - покупка(BUY), "S" - продажа(SELL))
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#91;"QUANTITY"&#93;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= "1", -- Количество в лотах
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#91;"PRICE"&#93;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = price, -- Цена, по которой выставится заявка при срабатывании Стоп-Лосса (для рыночной заявки по акциям должна быть 0)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#91;"STOPPRICE"&#93;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = stopprice, -- Цена Тейк-Профита
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#91;"STOP_ORDER_KIND"&#93;&nbsp;&nbsp;&nbsp;&nbsp; = "TAKE_PROFIT_AND_STOP_LIMIT_ORDER", -- Тип стоп-заявки
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#91;"EXPIRY_DATE"&#93;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = "TODAY", -- Срок действия стоп-заявки ("GTC" – до отмены,"TODAY" - до окончания текущей торговой сессии, Дата в формате "ГГММДД")
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- "OFFSET" - (ОТСТУП)Если цена достигла Тейк-профита и идет дальше в прибыль,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- то Тейк-профит сработает только когда цена вернется минимум на 2 шага цены назад,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- это может потенциально увеличить прибыль
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#91;"OFFSET"&#93;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= tostring(2*SEC_PRICE_STEP),
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#91;"OFFSET_UNITS"&#93;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= "PRICE_UNITS", -- Единицы измерения отступа ("PRICE_UNITS" - шаг цены, или "PERCENTS" - проценты)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- "SPREAD" - Когда сработает Тейк-профит, выставится заявка по цене хуже текущей на 100 шагов цены,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- которая АВТОМАТИЧЕСКИ УДОВЛЕТВОРИТСЯ ПО ТЕКУЩЕЙ ЛУЧШЕЙ ЦЕНЕ,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- но то, что цена значительно хуже, спасет от проскальзывания,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- иначе, сделка может просто не закрыться (заявка на закрытие будет выставлена, но цена к тому времени ее уже проскочит)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#91;"SPREAD"&#93;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= tostring(100*SEC_PRICE_STEP),
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#91;"SPREAD_UNITS"&#93;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= "PRICE_UNITS", -- Единицы измерения защитного спрэда ("PRICE_UNITS" - шаг цены, или "PERCENTS" - проценты)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- "MARKET_TAKE_PROFIT" = ("YES", или "NO") должна ли выставится заявка по рыночной цене при срабатывании Тейк-Профита.
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- Для рынка FORTS рыночные заявки, как правило, запрещены,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- для лимитированной заявки на FORTS нужно указывать заведомо худшую цену, чтобы она сработала сразу же, как рыночная
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#91;"MARKET_TAKE_PROFIT"&#93;&nbsp;&nbsp;= market,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#91;"STOPPRICE2"&#93;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= stopprice2, -- Цена Стоп-Лосса
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#91;"IS_ACTIVE_IN_TIME"&#93;&nbsp;&nbsp; = "NO",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- "MARKET_TAKE_PROFIT" = ("YES", или "NO") должна ли выставится заявка по рыночной цене при срабатывании Стоп-Лосса.
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- Для рынка FORTS рыночные заявки, как правило, запрещены,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-- для лимитированной заявки на FORTS нужно указывать заведомо худшую цену, чтобы она сработала сразу же, как рыночная
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#91;"MARKET_STOP_LIMIT"&#93;&nbsp;&nbsp; = market,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#91;"COMMENT"&#93;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = "Простой MA-робот ТЕЙК-ПРОФИТ и СТОП-ЛОСС"
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;-- Отправляет транзакцию на установку ТЕЙК-ПРОФИТ и СТОП-ЛОСС
&nbsp;&nbsp;&nbsp;&nbsp;sendTransaction(Transaction);
&nbsp;&nbsp; 
 -- Ждет, пока не получит статус текущей транзакции (переменные "trans_Status" и "trans_result_msg" заполняются в функции OnTransReply())
&nbsp;&nbsp;&nbsp;&nbsp;while Run and trans_Status == nil do sleep(10); end;


Собственно на этой проверке все переходит в бесконечный цикл.

</pre>
=============

====code====
<pre>function OnTransReply(trans_reply)
message("OnTransReply")

 if trans_reply.trans_id == trans_id then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;trans_Status = trans_reply.status;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;trans_result_msg&nbsp;&nbsp;= trans_reply.result_msg;
&nbsp;&nbsp;&nbsp;end;
end;
</pre>
============= <br />
			<i>30.08.2017 10:38:54, neutron.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message26449/topic3035/</link>
			<guid>http://forum.quik.ru/messages/forum10/message26449/topic3035/</guid>
			<pubDate>Wed, 30 Aug 2017 10:38:54 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
	</channel>
</rss>
