<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>Форум QUIK [тема: Функция getCandlesByIndex() и закрытие свечки]</title>
		<link>http://forum.quik.ru</link>
		<description>Новое в теме Функция getCandlesByIndex() и закрытие свечки форума  на сайте Форум QUIK [forum.quik.ru]</description>
		<language>ru</language>
		<docs>http://backend.userland.com/rss2</docs>
		<pubDate>Tue, 12 May 2026 09:48:03 +0300</pubDate>
		<item>
			<title>Функция getCandlesByIndex() и закрытие свечки</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message69085/topic5457/">Функция getCandlesByIndex() и закрытие свечки</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Вы можете обнаруживать новую свечу по изменению числа свечей. <br />
			<i>14.04.2023 08:27:51, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message69085/topic5457/</link>
			<guid>http://forum.quik.ru/messages/forum10/message69085/topic5457/</guid>
			<pubDate>Fri, 14 Apr 2023 08:27:51 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Функция getCandlesByIndex() и закрытие свечки</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message69084/topic5457/">Функция getCandlesByIndex() и закрытие свечки</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Вроде как нашел некий вариант в виде таблицы. Почти на финишной прямой :))<br />Код выгружает в таблицу номера баров быстрее чем таймфрейм 1М, визуально наблюдаю заполнение таблицы в реальном времени. И тут очередной тупик, &nbsp;не могу взять данные из ячейки для дальнейшего сравнения. Даже смог посчитать количество строк и столбцов.<br />В документации одна строка про GetCell без примеров, перерыл пол интернета, попадались примеры но по аналогии у меня ничего не выходит. Вообще есть смысл использовать эту таблицу или просто кинуть данные эти в массив и дальше уже обычными методами?<br /><br />is_run = true<br /><br />class_code = &quot;SPBFUT&quot;<br />sec_code = &quot;SiM3&quot;<br />interval = INTERVAL_M1<br /><br />function cb(index)<br /> &nbsp;local t = ds:T(index)<br /> &nbsp;row = InsertRow(t_id,-1)<br /> &nbsp;SetCell(t_id,row,1,tostring(index))<br /> &nbsp;sleep(1000)<br />end	<br /><br /><br />function main()<br /> &nbsp; t_id= AllocTable()<br /> &nbsp; AddColumn(t_id,1,&#39;index&#39;,true,QTABLE_INT_TYPE,11)<br /> &nbsp; message(tostring(CreateWindow(t_id)),1)<br /> &nbsp; ds=CreateDataSource(class_code,sec_code,interval)<br /> &nbsp; sleep(1000)<br /> &nbsp; ds:SetUpdateCallback(cb)<br /><br />while is_run do<br /> &nbsp; local rows, col = GetTableSize(t_id) -- номер строки с 1 до x, номер колонки с 0 до n-1 (!!!)<br /><br /> &nbsp;--Cell = GetCell(t_id, 1,1).image<br />		 <br /> &nbsp; message(&#39;rows = &#39;..tostring(rows)..<br /> &nbsp;&#39;\n col = &#39;..tostring(col)..<br /> &nbsp;&#39;\n Cell = &#39;..tostring(Cell))<br /><br /> &nbsp; sleep(1000)<br />	<br /> &nbsp; function OnStop(stop_flag)<br /><br /> &nbsp; &nbsp; &nbsp;is_run= false<br /> &nbsp; end	<br />	end		<br />end <br />
			<i>13.04.2023 23:29:52, Денис.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message69084/topic5457/</link>
			<guid>http://forum.quik.ru/messages/forum10/message69084/topic5457/</guid>
			<pubDate>Thu, 13 Apr 2023 23:29:52 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Функция getCandlesByIndex() и закрытие свечки</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message69070/topic5457/">Функция getCandlesByIndex() и закрытие свечки</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Что-то счетчика тиков в чистоте я не обнаружил, в виде одной формулы (а я уж губы раскатал &nbsp;<img src="http://forum.quik.ru/upload/main/smiles/5/icon_biggrin.png" border="0" data-code=":lol:" data-definition="SD" alt=":lol:" style="width:16px;height:16px;" title="Широкая улыбка" class="bx-smile" /> ) только готовые индикаторы видел где уменьшается время до закрытия свечи. Тики похоже надо получать и сравнивать.<br />Вы хотите сказать, что часть блока тиков например из 500 штук &nbsp;на одной секунде времени может переходить на следующую секунду уже следующей минуты? Если так и есть, то видимо сравнивание тиков это то что нужно, посмотрю на &nbsp;днях, спасибо за наводку. <br />
			<i>12.04.2023 19:55:43, Денис.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message69070/topic5457/</link>
			<guid>http://forum.quik.ru/messages/forum10/message69070/topic5457/</guid>
			<pubDate>Wed, 12 Apr 2023 19:55:43 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Функция getCandlesByIndex() и закрытие свечки</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message69066/topic5457/">Функция getCandlesByIndex() и закрытие свечки</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Так как время свечи меняется в начале, то Вы можете обнаружить начало свечи, когда время текущей &nbsp;тика изменится относительно предыдущего. &nbsp; <br />
			<i>12.04.2023 19:30:11, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message69066/topic5457/</link>
			<guid>http://forum.quik.ru/messages/forum10/message69066/topic5457/</guid>
			<pubDate>Wed, 12 Apr 2023 19:30:11 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Функция getCandlesByIndex() и закрытие свечки</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message69065/topic5457/">Функция getCandlesByIndex() и закрытие свечки</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			можно сравнивать время <br />на предмет точного совпадения с началом интервала <br />
			<i>12.04.2023 19:27:09, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message69065/topic5457/</link>
			<guid>http://forum.quik.ru/messages/forum10/message69065/topic5457/</guid>
			<pubDate>Wed, 12 Apr 2023 19:27:09 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Функция getCandlesByIndex() и закрытие свечки</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message69064/topic5457/">Функция getCandlesByIndex() и закрытие свечки</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_tlwL8Trm" href="/user/14833/" bx-tooltip-user-id="14833">Денис</a> написал:<br /> <br />====quote====<br /><noindex><a href="/user/62/" target="_blank" rel="nofollow">nikolz</a></noindex> написал:<br />Так все же просто в этом случае .Время свечи содержит счетчик тиков. Если счетчик меньше предыдущего то это открытие новой свечи. А предыдущая &nbsp;это последняя закрытая. &nbsp;<br />=============<br /> Нашел код где выводит время бара, время изменяется при открытии нового бара. Выдает в таком виде, это оно?<br />sTime --1681312260 &nbsp;<br />=============<br />не время а счетчик тиков<br />см док <br />Функции O, H, L, C, V, T<br /><p><span class="bx-font" style="font-size:;"> </span></p><p><span class="bx-font" style="font-size:;">Функции в качестве параметра принимают индекс свечи и возвращают &nbsp;соответствующее значение. Время свечи возвращается с точностью до миллисекунд в &nbsp;виде таблицы с полями: &nbsp;</span></p><p><span class="bx-font" style="font-size:;">{year, month, day, week_day, hour, min, sec, ms,<B> count</B>} &nbsp;</span></p><p><span class="bx-font" style="font-size:;">Где: &nbsp;</span></p><ul><span class="bx-font" style="font-size:;"><br /><li><B>count – количество тиковых интервалов в секунду. Может принимать значения от </B><br /><B>«1» до «10000» включительно.</B></span><br /></ul><p>Пример: </p><p> <span class="bx-font" style="font-size:;"> &nbsp;</span></p><p></p><p></p>Open = ds:O(1)<br />High = ds:H(1)<br />Low = ds:L(1)<br />Close = ds:C(1)<br />Volume = ds:V(1)<br />week_day = ds:T(1).week_day<br />count = ds:T(1).count<br /><br /><p></p> <br />
			<i>12.04.2023 19:25:00, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message69064/topic5457/</link>
			<guid>http://forum.quik.ru/messages/forum10/message69064/topic5457/</guid>
			<pubDate>Wed, 12 Apr 2023 19:25:00 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Функция getCandlesByIndex() и закрытие свечки</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message69062/topic5457/">Функция getCandlesByIndex() и закрытие свечки</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_8TOgGhaf" href="/user/62/" bx-tooltip-user-id="62">nikolz</a> написал:<br />Так все же просто в этом случае .Время свечи содержит счетчик тиков. Если счетчик меньше предыдущего то это открытие новой свечи. А предыдущая &nbsp;это последняя закрытая. &nbsp;<br />=============<br />Нашел код где выводит время бара, время изменяется при открытии нового бара. Выдает в таком виде, это оно?<br />sTime --1681312260 &nbsp; <br />
			<i>12.04.2023 18:18:57, Денис.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message69062/topic5457/</link>
			<guid>http://forum.quik.ru/messages/forum10/message69062/topic5457/</guid>
			<pubDate>Wed, 12 Apr 2023 18:18:57 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Функция getCandlesByIndex() и закрытие свечки</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message69061/topic5457/">Функция getCandlesByIndex() и закрытие свечки</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_mUIndPvc" href="/user/2047/" bx-tooltip-user-id="2047">Станислав</a> написал:<br />Если использовать источником данных DataSource, то использовать SetUpdateCallback для получения информации о том, что появилась новая свеча можно. <br /><br />При появлении новой свечи в OnDataSourceUpdate изменится index и время свечи, пример:<br /><br /><br />-- Функция вызывается при изменении свечки в таблице data_source<br />-- OnDataSourceUpdate(TABLE data_source, STRING class_code, STRING sec_code, NUMBER interval, STRING param, NUMBER index)<br />function OnDataSourceUpdate(ds, class_code, sec_code, interval, param, index)<br />...<br />local datetime = ds:T(index)<br /><br />end<br /><br />...<br /><br />local ds, error = CreateDataSource(class_code, sec_code, interval, param)<br /> if ds ~= nil then<br />ds:SetUpdateCallback(function (...) OnDataSourceUpdate(ds, class_code, sec_code, interval, param, ...) end)<br />end<br />=============<br />Пробую прикрутить Ваш вариант, но чет не выходит, я уже и свой сократил, номера баров сыпет, время нет. <br />Если раскомментирую --local datetime = ds:T(ndex) &nbsp;то квик дает ошибку.<br /><br />stopped = false<br />function OnStop()<br />stopped = true<br />return 3000<br />end<br /><br /><br />class_code = &quot;SPBFUT&quot;<br />sec_code = &quot;SiM3&quot;<br />interval = INTERVAL_M1<br /><br /><br />function CreateDS()<br /> <br />ds = CreateDataSource(class_code, sec_code, interval) <br />local Size = ds:Size()<br />local datetime = ds:T()<br /><br />return Size, datetime<br />end<br /><br /><br /><br />function OnDataSourceUpdate(ds, class_code, sec_code, interval, param, index)<br /><br />--local datetime = ds:T(ndex)<br /><br />return datetime<br />end<br /><br /><br /><br />function main()<br /><br />while stopped == false &nbsp;do<br /><br />Size, datetime = CreateDS() <br /><br />message(&#39;Size --&#39;..tostring(Size)..&#39;\n datetime --&#39;..tostring(datetime ))<br />sleep(500)<br /><br />end<br /> <br />end &nbsp; <br />
			<i>12.04.2023 17:34:06, Денис.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message69061/topic5457/</link>
			<guid>http://forum.quik.ru/messages/forum10/message69061/topic5457/</guid>
			<pubDate>Wed, 12 Apr 2023 17:34:06 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Функция getCandlesByIndex() и закрытие свечки</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message69059/topic5457/">Функция getCandlesByIndex() и закрытие свечки</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_L3D1PqqV" href="/user/14833/" bx-tooltip-user-id="14833">Денис</a> написал:<br /> <br />====quote====<br /><noindex><a href="/user/62/" target="_blank" rel="nofollow">nikolz</a></noindex> написал:<br /> &nbsp;<br />====quote====<br /> <noindex><a href="/user/14833/" target="_blank" rel="nofollow">Денис</a></noindex> &nbsp;написал:<br />Погуглив немного нашел кое-что похожее для определения нового бара. Подправил, сейчас переменная first_candle_index обновляет свой индекс как только появляется новая свеча.<br />Но как это прикрутить для дальнейших вычислений, пока не допер.<br />Тут на форуме нашел вот что, цитирую : SetUpdateCallback при смене индекса даст вам как раз момент открытия новой свечи.<br />Вот как ее прикрутить к функции поиска индекса ниже? Или может есть другие методы какие?<br /><br />function newbar()<br />ds, error_desc = CreateDataSource(&quot;SPBFUT&quot;, &quot;SiM3&quot;, INTERVAL_M1)<br />local try_count = 0<br />while ds:Size() == 0 and try_count &lt; 1000 do<br />		sleep(100)<br />		try_count = try_count + 1<br />	end<br />if error_desc ~= nil and error_desc ~= &quot;&quot; then<br />		message(&quot;Ошибка получения таблицы свечей:&quot; .. error_desc)<br />		return 0<br />	end<br />	<br />local today_day = tonumber(os.date(&quot;%m&quot;))<br />local current_candle = ds:Size()<br />local max_candles = math.min(20, ds:Size())<br />local first_candle_index = nil<br />	<br />while first_candle_index == nil and current_candle &gt; ds:Size() - max_candles do<br />if tonumber(ds:T(current_candle).day) ~= today_day then<br /><br />first_candle_index = current_candle - 1<br />		end<br />	end<br /><br />	return first_candle_index<br />end<br />=============<br /> &nbsp;Рекомендую начать написание своего робота не в виде скрипта а в виде индикатора.<br />Если будете торговать каким-то конкретным инструментом, то этого вполне достаточно, будет проще сделать работающий. <br />-----------------<br />Кроме того, рекомендую писать не торговый робот, а торговый советник. <br />Так будет меньше шансов слить свой счет.<br />-----------------<br />Потом перепишите советник в робота,<br /> а затем если &nbsp;захотите большего -возьметесь за скрипты.<br />--------------------<br />В итоге напишите все быстрее и качественнее.<br />=============<br /> <br />Так я, если честно, qLua в глаза второй раз вижу, я больше на питоне, амиброкер,... хотел работающего бота перевести на qLua на срочный рынок для попробовать, почти все перевел, уперся в этот блин новый бар (получить его закрытие/открытие, так как расчет баров ведется после закрытия текущего). Собственно qLua - это вопрос разового применения. Хотел из питона сразу в Квик - но увидев что там еще больше прокладок между кодом и биржей - забил на это дело.<br />=============<br />Так все же просто в этом случае .<br />Время свечи содержит счетчик тиков. <br />Если счетчик меньше предыдущего то это открытие новой свечи. <br />А предыдущая &nbsp;это последняя закрытая. &nbsp; <br />
			<i>12.04.2023 16:51:43, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message69059/topic5457/</link>
			<guid>http://forum.quik.ru/messages/forum10/message69059/topic5457/</guid>
			<pubDate>Wed, 12 Apr 2023 16:51:43 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Функция getCandlesByIndex() и закрытие свечки</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message69058/topic5457/">Функция getCandlesByIndex() и закрытие свечки</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_kat5v15w" href="/user/62/" bx-tooltip-user-id="62">nikolz</a> написал:<br /> <br />====quote====<br /><noindex><a href="/user/14833/" target="_blank" rel="nofollow">Денис</a></noindex> написал:<br />Погуглив немного нашел кое-что похожее для определения нового бара. Подправил, сейчас переменная first_candle_index обновляет свой индекс как только появляется новая свеча.<br />Но как это прикрутить для дальнейших вычислений, пока не допер.<br />Тут на форуме нашел вот что, цитирую : SetUpdateCallback при смене индекса даст вам как раз момент открытия новой свечи.<br />Вот как ее прикрутить к функции поиска индекса ниже? Или может есть другие методы какие?<br /><br />function newbar()<br />ds, error_desc = CreateDataSource(&quot;SPBFUT&quot;, &quot;SiM3&quot;, INTERVAL_M1)<br />local try_count = 0<br />while ds:Size() == 0 and try_count &lt; 1000 do<br />		sleep(100)<br />		try_count = try_count + 1<br />	end<br />if error_desc ~= nil and error_desc ~= &quot;&quot; then<br />		message(&quot;Ошибка получения таблицы свечей:&quot; .. error_desc)<br />		return 0<br />	end<br />	<br />local today_day = tonumber(os.date(&quot;%m&quot;))<br />local current_candle = ds:Size()<br />local max_candles = math.min(20, ds:Size())<br />local first_candle_index = nil<br />	<br />while first_candle_index == nil and current_candle &gt; ds:Size() - max_candles do<br />if tonumber(ds:T(current_candle).day) ~= today_day then<br /><br />first_candle_index = current_candle - 1<br />		end<br />	end<br /><br />	return first_candle_index<br />end<br />=============<br /> Рекомендую начать написание своего робота не в виде скрипта а в виде индикатора.<br />Если будете торговать каким-то конкретным инструментом, то этого вполне достаточно, будет проще сделать работающий. <br />-----------------<br />Кроме того, рекомендую писать не торговый робот, а торговый советник. <br />Так будет меньше шансов слить свой счет.<br />-----------------<br />Потом перепишите советник в робота,<br /> а затем если &nbsp;захотите большего -возьметесь за скрипты.<br />--------------------<br />В итоге напишите все быстрее и качественнее.<br />=============<br /><br />Так я, если честно, qLua в глаза второй раз вижу, я больше на питоне, амиброкер,... хотел работающего бота перевести на qLua на срочный рынок для попробовать, почти все перевел, уперся в этот блин новый бар (получить его закрытие/открытие, так как расчет баров ведется после закрытия текущего). Собственно qLua - это вопрос разового применения. Хотел из питона сразу в Квик - но увидев что там еще больше прокладок между кодом и биржей - забил на это дело. <br />
			<i>12.04.2023 15:49:42, Денис.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message69058/topic5457/</link>
			<guid>http://forum.quik.ru/messages/forum10/message69058/topic5457/</guid>
			<pubDate>Wed, 12 Apr 2023 15:49:42 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Функция getCandlesByIndex() и закрытие свечки</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message69056/topic5457/">Функция getCandlesByIndex() и закрытие свечки</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_FeL4Sq7r" href="/user/14833/" bx-tooltip-user-id="14833">Денис</a> написал:<br />Погуглив немного нашел кое-что похожее для определения нового бара. Подправил, сейчас переменная first_candle_index обновляет свой индекс как только появляется новая свеча.<br />Но как это прикрутить для дальнейших вычислений, пока не допер.<br />Тут на форуме нашел вот что, цитирую : SetUpdateCallback при смене индекса даст вам как раз момент открытия новой свечи.<br />Вот как ее прикрутить к функции поиска индекса ниже? Или может есть другие методы какие?<br /><br />function newbar()<br />ds, error_desc = CreateDataSource(&quot;SPBFUT&quot;, &quot;SiM3&quot;, INTERVAL_M1)<br />local try_count = 0<br />while ds:Size() == 0 and try_count &lt; 1000 do<br />		sleep(100)<br />		try_count = try_count + 1<br />	end<br />if error_desc ~= nil and error_desc ~= &quot;&quot; then<br />		message(&quot;Ошибка получения таблицы свечей:&quot; .. error_desc)<br />		return 0<br />	end<br />	<br />local today_day = tonumber(os.date(&quot;%m&quot;))<br />local current_candle = ds:Size()<br />local max_candles = math.min(20, ds:Size())<br />local first_candle_index = nil<br />	<br />while first_candle_index == nil and current_candle &gt; ds:Size() - max_candles do<br />if tonumber(ds:T(current_candle).day) ~= today_day then<br /><br />first_candle_index = current_candle - 1<br />		end<br />	end<br /><br />	return first_candle_index<br />end<br />=============<br />Рекомендую начать написание своего робота не в виде скрипта а в виде индикатора.<br />Если будете торговать каким-то конкретным инструментом, то этого вполне достаточно, будет проще сделать работающий. <br />-----------------<br />Кроме того, рекомендую писать не торговый робот, а торговый советник. <br />Так будет меньше шансов слить свой счет.<br />-----------------<br />Потом перепишите советник в робота,<br /> а затем если &nbsp;захотите большего -возьметесь за скрипты.<br />--------------------<br />В итоге напишите все быстрее и качественнее. <br />
			<i>12.04.2023 15:37:52, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message69056/topic5457/</link>
			<guid>http://forum.quik.ru/messages/forum10/message69056/topic5457/</guid>
			<pubDate>Wed, 12 Apr 2023 15:37:52 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Функция getCandlesByIndex() и закрытие свечки</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message69055/topic5457/">Функция getCandlesByIndex() и закрытие свечки</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Если использовать источником данных DataSource, то использовать SetUpdateCallback для получения информации о том, что появилась новая свеча можно. <br /><br />При появлении новой свечи в OnDataSourceUpdate изменится index и время свечи, пример:<br /><br /><br />-- Функция вызывается при изменении свечки в таблице data_source<br />-- OnDataSourceUpdate(TABLE data_source, STRING class_code, STRING sec_code, NUMBER interval, STRING param, NUMBER index)<br />function OnDataSourceUpdate(ds, class_code, sec_code, interval, param, index)<br />...<br />local datetime = ds:T(index)<br /><br />end<br /><br />...<br /><br />local ds, error = CreateDataSource(class_code, sec_code, interval, param)<br /> if ds ~= nil then<br />ds:SetUpdateCallback(function (...) OnDataSourceUpdate(ds, class_code, sec_code, interval, param, ...) end)<br />end <br />
			<i>12.04.2023 14:55:46, Станислав.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message69055/topic5457/</link>
			<guid>http://forum.quik.ru/messages/forum10/message69055/topic5457/</guid>
			<pubDate>Wed, 12 Apr 2023 14:55:46 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Функция getCandlesByIndex() и закрытие свечки</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message69054/topic5457/">Функция getCandlesByIndex() и закрытие свечки</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Погуглив немного нашел кое-что похожее для определения нового бара. Подправил, сейчас переменная first_candle_index обновляет свой индекс как только появляется новая свеча.<br />Но как это прикрутить для дальнейших вычислений, пока не допер.<br />Тут на форуме нашел вот что, цитирую : SetUpdateCallback при смене индекса даст вам как раз момент открытия новой свечи.<br />Вот как ее прикрутить к функции поиска индекса ниже? Или может есть другие методы какие?<br /><br />function newbar()<br />ds, error_desc = CreateDataSource(&quot;SPBFUT&quot;, &quot;SiM3&quot;, INTERVAL_M1)<br />local try_count = 0<br />while ds:Size() == 0 and try_count &lt; 1000 do<br />		sleep(100)<br />		try_count = try_count + 1<br />	end<br />if error_desc ~= nil and error_desc ~= &quot;&quot; then<br />		message(&quot;Ошибка получения таблицы свечей:&quot; .. error_desc)<br />		return 0<br />	end<br />	<br />local today_day = tonumber(os.date(&quot;%m&quot;))<br />local current_candle = ds:Size()<br />local max_candles = math.min(20, ds:Size())<br />local first_candle_index = nil<br />	<br />while first_candle_index == nil and current_candle &gt; ds:Size() - max_candles do<br />if tonumber(ds:T(current_candle).day) ~= today_day then<br /><br />first_candle_index = current_candle - 1<br />		end<br />	end<br /><br />	return first_candle_index<br />end <br />
			<i>12.04.2023 14:22:17, Денис.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message69054/topic5457/</link>
			<guid>http://forum.quik.ru/messages/forum10/message69054/topic5457/</guid>
			<pubDate>Wed, 12 Apr 2023 14:22:17 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Функция getCandlesByIndex() и закрытие свечки</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message69041/topic5457/">Функция getCandlesByIndex() и закрытие свечки</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_tIGz8Bxf" href="/user/14833/" bx-tooltip-user-id="14833">Денис</a> написал:<br />Похоже не просто будет мне получить информацию о том, что текущая свеча закрылась. Из ответов выше кроме костылей с обработкой времени баров других вариантов нет?<br />В питоне есть candle_close = true or false, в Амиброкере тоже есть свой костыль. <br />Попробовал что-то изобразить, но сессия закончилась. <br />У меня вроде стандартная задача - начинать расчет баров (обычное сравнение Bar-1 и Bar-2), но только когда текущая свеча закрылась. То что после закрытия текущей те бары сдвинуться на 1 - это понятно.<br />Может есть какие варианты с меньшим количеством костылей?<br />Спасибо.<br />=============<br />закрытие свечи - это завершение интервала .Простейший алгоритм - синхронизируете ком от сервера точного времени и контролируете завершение текущего интервала времени.<br />---------------------<br />Но относительно нового бара вы ошибаетесь.<br />Новый бар возникнет не тогда, когда закроется предыдущая свеча, а тогда, когда появится сделка. Т е если сделки в новом интервале нет, то и бара нет. <br />
			<i>12.04.2023 06:34:14, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message69041/topic5457/</link>
			<guid>http://forum.quik.ru/messages/forum10/message69041/topic5457/</guid>
			<pubDate>Wed, 12 Apr 2023 06:34:14 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Функция getCandlesByIndex() и закрытие свечки</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message69037/topic5457/">Функция getCandlesByIndex() и закрытие свечки</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Похоже не просто будет мне получить информацию о том, что текущая свеча закрылась. Из ответов выше кроме костылей с обработкой времени баров других вариантов нет?<br />В питоне есть candle_close = true or false, в Амиброкере тоже есть свой костыль. <br />Попробовал что-то изобразить, но сессия закончилась. <br />У меня вроде стандартная задача - начинать расчет баров (обычное сравнение Bar-1 и Bar-2), но только когда текущая свеча закрылась. То что после закрытия текущей те бары сдвинуться на 1 - это понятно.<br />Может есть какие варианты с меньшим количеством костылей?<br />Спасибо. <br />
			<i>11.04.2023 23:59:01, Денис.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message69037/topic5457/</link>
			<guid>http://forum.quik.ru/messages/forum10/message69037/topic5457/</guid>
			<pubDate>Tue, 11 Apr 2023 23:59:01 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Функция getCandlesByIndex() и закрытие свечки</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message45576/topic5457/">Функция getCandlesByIndex() и закрытие свечки</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_JmLQxOZS" href="/user/12999/" bx-tooltip-user-id="12999">Andrey Bezrukov</a> написал:<br />Здравствуйте, <noindex><a href="/user/13936/" target="_blank" rel="nofollow">Иван</a></noindex>.<br /><br />Не вполне понятно, как связаны между собой вопрос о факте закрытия текущей свечи и проверка &quot;простого условия&quot; с пересечением графика МА и графика цены.<br /><br />Первая задача решается проверкой времени - Вы знаете интервал, время начала/окончания торгов. На основании этих данных знаете какая свеча когда открывается и закрывается. Далее сравниваете текущее время - попадает ли оно в диапазон времени расчёта текущей свечи, или вышла за него. <br />Касательно проверки &quot;простого условия&quot; - количество выполнения блока программы при выполнении определённого условия зависит от реализации самого условия и программы в целом - надо предусмотреть и/или пересмотреть механизмы от многочисленных малоинформативных срабатываний.<br /><br />В текущей формулировке Вашей задачи едва ли можем предложить более содержательный ответ. Просьба уточнить суть Вашей задачи, которую пытаетесь решить.<br />=============<br />Уже решил. Что бы не срабатывало по много раз когда идет одно и тоже событие, оно просто записывается в общую переменную и как итог срабатываем как и должно 1 раз. <br />
			<i>26.05.2020 18:24:33, Иван.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message45576/topic5457/</link>
			<guid>http://forum.quik.ru/messages/forum10/message45576/topic5457/</guid>
			<pubDate>Tue, 26 May 2020 18:24:33 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Функция getCandlesByIndex() и закрытие свечки</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message45574/topic5457/">Функция getCandlesByIndex() и закрытие свечки</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Здравствуйте, <a class="blog-p-user-name" id="bp_TMxQ6Rxz" href="/user/13936/" bx-tooltip-user-id="13936">Иван</a>.<br /><br />Не вполне понятно, как связаны между собой вопрос о факте закрытия текущей свечи и проверка "простого условия" с пересечением графика МА и графика цены.<br /><br />Первая задача решается проверкой времени - Вы знаете интервал, время начала/окончания торгов. На основании этих данных знаете какая свеча когда открывается и закрывается. Далее сравниваете текущее время - попадает ли оно в диапазон времени расчёта текущей свечи, или вышла за него. <br />Касательно проверки "простого условия" - количество выполнения блока программы при выполнении определённого условия зависит от реализации самого условия и программы в целом - надо предусмотреть и/или пересмотреть механизмы от многочисленных малоинформативных срабатываний.<br /><br />В текущей формулировке Вашей задачи едва ли можем предложить более содержательный ответ. Просьба уточнить суть Вашей задачи, которую пытаетесь решить. <br />
			<i>26.05.2020 17:36:11, Andrey Bezrukov.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message45574/topic5457/</link>
			<guid>http://forum.quik.ru/messages/forum10/message45574/topic5457/</guid>
			<pubDate>Tue, 26 May 2020 17:36:11 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Функция getCandlesByIndex() и закрытие свечки</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message45415/topic5457/">Функция getCandlesByIndex() и закрытие свечки</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_zLerrirZ" href="/user/17/" bx-tooltip-user-id="17">Sergey Gorokhov</a> написал:<br /><noindex><a href="/user/13936/" target="_blank" rel="nofollow">Иван</a></noindex>, <br />Для этого нужно понять что сделок больше не будет.<br />А этого никто не может знать, т.к. в будущее никто смотреть не умеет.<br /><br />Нужно либо ждать появления новой свечи, либо проверять текущее время.<br />Либо использовать оба варианта сразу.<br />=============<br />А как тогда делать проверку - написал простое условие - если цена пересекла MA - то вылазит сообщение. Но проблема в том сообщение будет вылазить не 1 раз, а бесконечно... <br />
			<i>22.05.2020 13:13:01, Иван.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message45415/topic5457/</link>
			<guid>http://forum.quik.ru/messages/forum10/message45415/topic5457/</guid>
			<pubDate>Fri, 22 May 2020 13:13:01 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Функция getCandlesByIndex() и закрытие свечки</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message45328/topic5457/">Функция getCandlesByIndex() и закрытие свечки</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<a class="blog-p-user-name" id="bp_XJ0pVapa" href="/user/13936/" bx-tooltip-user-id="13936">Иван</a>, <br />Для этого нужно понять что сделок больше не будет.<br />А этого никто не может знать, т.к. в будущее никто смотреть не умеет.<br /><br />Нужно либо ждать появления новой свечи, либо проверять текущее время.<br />Либо использовать оба варианта сразу. <br />
			<i>21.05.2020 10:14:39, Sergey Gorokhov.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message45328/topic5457/</link>
			<guid>http://forum.quik.ru/messages/forum10/message45328/topic5457/</guid>
			<pubDate>Thu, 21 May 2020 10:14:39 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Функция getCandlesByIndex() и закрытие свечки</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message45326/topic5457/">Функция getCandlesByIndex() и закрытие свечки</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Как при использовании функции t, n, l = getCandlesByIndex(tag, line, first_candle, getNumCandles(tag)); понять что последняя свеча уже закрылась или последнее значение индикатора уже рассчитано? &nbsp; <br />
			<i>21.05.2020 09:54:09, Иван.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message45326/topic5457/</link>
			<guid>http://forum.quik.ru/messages/forum10/message45326/topic5457/</guid>
			<pubDate>Thu, 21 May 2020 09:54:09 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
	</channel>
</rss>
