<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>Форум QUIK [тема: Не активен скрипт. Что не так]</title>
		<link>http://forum.quik.ru</link>
		<description>Новое в теме Не активен скрипт. Что не так форума  на сайте Форум QUIK [forum.quik.ru]</description>
		<language>ru</language>
		<docs>http://backend.userland.com/rss2</docs>
		<pubDate>Thu, 30 Apr 2026 21:39:53 +0300</pubDate>
		<item>
			<title>Не активен скрипт. Что не так</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message44920/topic5373/">Не активен скрипт. Что не так</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_ndb7dhTi" href="/user/13860/" bx-tooltip-user-id="13860">Александр</a> написал:<br /> <br />====quote====<br /><noindex><a href="/user/17/" target="_blank" rel="nofollow">Sergey Gorokhov</a></noindex> написал:<br /> <noindex><a href="/user/13860/" target="_blank" rel="nofollow">Александр</a></noindex> , <br />А у нас работает.<br />Значит Вы что то сделали не так. <br />Идентификаторы задали на графиках?<br />=============<br /> Спасибо, что помогаете. <br />А настройки такие же ставите? Или что то другое? <br /><br />Я задал для индикатора &nbsp;NVTK_MA и цены NVTK_Price<br /><br />Скрипт в любое место ложить можно или в папку с квиком. Можете написать как правильно сделать? &nbsp;<br />=============<br />Добрый день.<br /><br />В любом месте можно.<br />Удалось ли Вам запустить скрипт. <br />
			<i>14.05.2020 15:32:43, Egor Zaytsev.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message44920/topic5373/</link>
			<guid>http://forum.quik.ru/messages/forum10/message44920/topic5373/</guid>
			<pubDate>Thu, 14 May 2020 15:32:43 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Не активен скрипт. Что не так</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message44413/topic5373/">Не активен скрипт. Что не так</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_u90CX2F7" href="/user/17/" bx-tooltip-user-id="17">Sergey Gorokhov</a> написал:<br /><noindex><a href="/user/13860/" target="_blank" rel="nofollow">Александр</a></noindex>, <br />А у нас работает.<br />Значит Вы что то сделали не так. <br />Идентификаторы задали на графиках?<br />=============<br />Спасибо, что помогаете. <br />А настройки такие же ставите? Или что то другое? <br /><br />Я задал для индикатора &nbsp;NVTK_MA и цены NVTK_Price<br /><br />Скрипт в любое место ложить можно или в папку с квиком. Можете написать как правильно сделать? &nbsp; <br />
			<i>06.05.2020 17:24:37, Александр.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message44413/topic5373/</link>
			<guid>http://forum.quik.ru/messages/forum10/message44413/topic5373/</guid>
			<pubDate>Wed, 06 May 2020 17:24:37 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Не активен скрипт. Что не так</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message44408/topic5373/">Не активен скрипт. Что не так</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<a class="blog-p-user-name" id="bp_n1T3a02R" href="/user/13860/" bx-tooltip-user-id="13860">Александр</a>, <br />А у нас работает.<br />Значит Вы что то сделали не так. <br />Идентификаторы задали на графиках? <br />
			<i>06.05.2020 15:07:25, Sergey Gorokhov.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message44408/topic5373/</link>
			<guid>http://forum.quik.ru/messages/forum10/message44408/topic5373/</guid>
			<pubDate>Wed, 06 May 2020 15:07:25 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Не активен скрипт. Что не так</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message44372/topic5373/">Не активен скрипт. Что не так</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_qa6mGPC9" href="/user/17/" bx-tooltip-user-id="17">Sergey Gorokhov</a> написал:<br /><noindex><a href="/user/13860/" target="_blank" rel="nofollow">Александр</a></noindex>, <br /><br />Автор кода не предусмотрел автосоздания следующих файлов <br /> 
====code====
<pre>&nbsp;&nbsp;PositionList&nbsp;&nbsp;=&nbsp;&nbsp; "c:&#92;&#92;TurboMartin&#92;&#92;Position.txt"&nbsp;&nbsp; -- здесь хранятся данные о позиции. 
CurrentState&nbsp;&nbsp;=&nbsp;&nbsp; "c:&#92;&#92;TurboMartin&#92;&#92;CurrentState.txt"&nbsp;&nbsp; -- здесь хранятся данные о позиции. 
LogFileName&nbsp;&nbsp;=&nbsp;&nbsp; "c:&#92;&#92;Log&#92;&#92;turbomartin_log.txt"&nbsp;&nbsp; -- Технический лог. 
&nbsp;&nbsp;</pre>
=============
 <br /><br />создайте их вручную<br />=============<br />Спасибо! Тоже думал об этом, создал их руками. но скрипт так же не работает. ( <br />
			<i>06.05.2020 00:54:25, Александр.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message44372/topic5373/</link>
			<guid>http://forum.quik.ru/messages/forum10/message44372/topic5373/</guid>
			<pubDate>Wed, 06 May 2020 00:54:25 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Не активен скрипт. Что не так</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message44358/topic5373/">Не активен скрипт. Что не так</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<a class="blog-p-user-name" id="bp_iiQ6FdVf" href="/user/13860/" bx-tooltip-user-id="13860">Александр</a>, <br /><br />Автор кода не предусмотрел автосоздания следующих файлов <br />
====code====
<pre>PositionList = "c:&#92;&#92;TurboMartin&#92;&#92;Position.txt" -- здесь хранятся данные о позиции.
CurrentState = "c:&#92;&#92;TurboMartin&#92;&#92;CurrentState.txt" -- здесь хранятся данные о позиции.
LogFileName = "c:&#92;&#92;Log&#92;&#92;turbomartin_log.txt" -- Технический лог.
</pre>
=============
<br /><br />создайте их вручную <br />
			<i>05.05.2020 16:13:55, Sergey Gorokhov.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message44358/topic5373/</link>
			<guid>http://forum.quik.ru/messages/forum10/message44358/topic5373/</guid>
			<pubDate>Tue, 05 May 2020 16:13:55 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Не активен скрипт. Что не так</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message44314/topic5373/">Не активен скрипт. Что не так</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Версия Квик 8,3 , 64 разрядная система. Хотел запустить скрипт усреднятор на акцию новотека, нашел на гитхабе, но не запускается. Значок красный квадрат и ошибок не пишет. Помогите запустить)) Спасибо!<br /><br />-- Усреднятор фьючерсный<br />-- &quot;Turbo Pascal&quot; (с) 2019.<br /><br />-- открывает сделку по пересечению MA.<br />-- На графике - только цена и МА. Суффиксы: (_Price и _MA)<br />-- Усреднение - CrossMA+StepSize.<br /><br />ClientCode = &quot;&quot; -- общий код для акций и фьючерсов.<br />SleepDuration = 10; -- отдыхаем 10 секунд. Слишком часто не надо молотить.<br />TickerCode = &quot;NVTK&quot;;<br />ClassCode = &quot;TQBR&quot;<br />AccountCode = &quot;&quot;<br />LotSize = 1<br />StepSize = 20<br />TakeSize = 20<br />TP=20<br />TRAIL=20<br />SL=10<br /><br />-- Update 05.05.2019<br />MaxDrillDown = 5000000<br />-- Параемтр MaxDrillDown указывает, сколько мы можем плить, набирая позу, максимум.<br />-- При превышении данной нормы, происходит немедленный сброс позиции (стоплосс),<br />-- и начинается поиск новой начальной точки входа.<br /><br />PositionList = &quot;c:\\TurboMartin\\Position.txt&quot; -- здесь хранятся данные о позиции.<br />CurrentState = &quot;c:\\TurboMartin\\CurrentState.txt&quot; -- здесь хранятся данные о позиции.<br /><br />LogFileName = &quot;c:\\Log\\turbomartin_log.txt&quot; -- Технический лог.<br /><br />is_run=true<br /><br />function main()<br />	while is_run do<br />		if HaveOpenPosition()==false then<br />			SetValueToFile(CurrentState, &quot;MARTIN&quot;);<br />			SetValueToFile(PositionList, &quot;&quot;);<br />		end<br />		<br />		aCurrentState = GetValueFromFile(CurrentState);<br />		if aCurrentState==&quot;MARTIN&quot; then<br />			-- Сначала получаем текущую цену.<br />			local CurrentPrice=GetLastPrice(TickerCode, &quot;LAST&quot;);<br />			-- Теперь читаем таблицу сделок.<br />			<br />			--local PosList = LoadPositionList();		<br />			local f,err = io.open(PositionList,&quot;r&quot;)<br />			if not f then<br />				return nil,err<br />			end<br />			<br />			LastPrice = 0;<br />			Summa = 0;<br />			NLot = 0;<br />			SummaMinus = 0;<br />			<br />			local PosList={};<br />			while true do<br />				local val = f:read(&quot;*l&quot;)<br />				if val == nil then break end<br />				NLot=NLot+1<br />				Summa = Summa+val;<br />				SummaMinus = SummaMinus+(val-CurrentPrice)<br />				PosList&#91;NLot&#93; = val;<br />				LastPrice = val;<br />			end<br />			f:close()<br />			<br />			if (MaxDrillDown&gt;SummaMinus) then<br />				DoFire(CurrentPrice, &quot;S&quot;, NLot)<br />				SetValueToFile(PositionList, &quot;&quot;);<br />				SetValueToFile(CurrentState, &quot;MARTIN&quot;);<br />			end<br />			<br />			if NLot&gt;0 then<br />				Srednyaya = Summa/NLot;<br />			else<br />				Srednyaya=0;<br />			end<br />			WLOG(&quot;Sr=&quot;..Srednyaya..&quot; Last=&quot;..LastPrice..&quot; Curr=&quot;..CurrentPrice..&quot; NLot=&quot;..NLot..&quot; State=&quot;..aCurrentState);<br />			<br />			-- Ок, теперь выясняем где мы.<br />			if (Srednyaya&gt;0) and (CurrentPrice&gt;Srednyaya+TakeSize) then -- Если Выше средней на 200, то ставим трейл 200-200-100.<br />				DoTrailStop(CurrentPrice, &quot;B&quot;, NLot, TP, TRAIL, SL)<br />				SetValueToFile(CurrentState, &quot;TRAIL&quot;)<br />			end<br />			<br />			WLOG(&quot;Last-Step=&quot;..LastPrice-StepSize);<br />			<br />			if (CurrentPrice&lt;(LastPrice-StepSize)) or (LastPrice==0) then<br />				-- Если ниже нижней на Stepsize, то можно ставить еще одну сделку. Либо открывать первую.<br />				WLOG(&quot;We are here&quot;);<br />				-- Но снавала проверяем простейший разворот - пересечение машки.<br />				if PriceCrossMAToUp(TickerCode) then<br />					DoFire(CurrentPrice, &quot;B&quot;)<br />					-- Теперь добавляем в таблицу, и сохраняем на диск.<br />					PosList&#91;NLot+1&#93;=CurrentPrice;<br />					-- и сохраняем обновленный список.<br />					local l_file=io.open(PositionList, &quot;w&quot;) -- используем &quot;w&quot;, перезаписываем всё.<br />					for key, aaa in ipairs(PosList) do<br />					l_file:write(aaa..&quot;\n&quot;)<br />					end<br />					l_file:close()<br />					SetValueToFile(CurrentState, &quot;MARTIN&quot;);<br />				end;<br />			end<br />		end -- if aCurrentState==MARTIN<br />		<br />		sleep(SleepDuration*1000) -- Отдыхаем SleepDuration секунд.<br />	end<br />end<br /><br />function GetLastPrice(TickerCode, CandleType)<br />	-- Берем цену из графика. CreateDataSource пока не используем, т.к. при необходимости модификации<br />	-- алгоритма, хотим легко добавлять индикаторы.<br />	-- Плюс меньше зависим от коннекта - графики всегда с нами.<br />	local NL=getNumCandles(TickerCode..&quot;_Price&quot;)<br />	tL, nL, lL = getCandlesByIndex (TickerCode..&quot;_Price&quot;, 0, NL-1, 1) -- last свеча<br />	local aCurrentPrice=tL&#91;0&#93;.close -- получили текущую цену (ЦПС)<br />	if CandleType==&quot;OPEN&quot; then aCurrentPrice=tL&#91;0&#93;.open end;<br />	if CandleType==&quot;HIGH&quot; then aCurrentPrice=tL&#91;0&#93;.high end;<br />	if CandleType==&quot;LOW&quot; then aCurrentPrice=tL&#91;0&#93;.low end;<br />	return aCurrentPrice<br />end<br /><br />function GetMA(TickerCode)<br />	-- получаем текущие значения Боллинлжера.<br />	-- LineCode может иметь значения: &quot;High&quot;, &quot;Middle&quot;, &quot;Low&quot;<br />	local NbbL=getNumCandles(TickerCode..&quot;_MA&quot;)<br />	tbbL, nbbL, lbbL = getCandlesByIndex (TickerCode..&quot;_MA&quot;, 0, NbbL-1, 1) &nbsp;-- last свеча, средняя линия Боллинджера<br />	MA = tbbL&#91;0&#93;.close -- тек значение средней BB Local<br />	return MA;<br />end<br /><br />function PriceCrossMAToUp(TickerCode)<br />	-- Функция возвращает TRUE, если пересекли среднюю линию Боллинджера снизу вверх<br />	if GetLastPrice(TickerCode, &quot;OPEN&quot;)&lt;GetMA(TickerCode)<br />		and GetLastPrice(TickerCode, &quot;LAST&quot;)&gt;GetMA(TickerCode)<br />	then return true<br />	else return false<br />	end;<br />end<br /><br />function PriceCrossMAToDown(TickerCode)<br />	-- Функция возвращает TRUE, если пересекли среднюю линию Боллинджера снизу вверх<br />	if GetLastPrice(TickerCode, &quot;OPEN&quot;)&gt;GetMA(TickerCode)<br />		and GetLastPrice(TickerCode, &quot;LAST&quot;)&lt;GetMA(TickerCode)<br />	then return true<br />	else return false<br />	end;<br />end<br /><br />function DoFire(p_price, p_dir) -- Функция - СДЕЛКА ПО РЫНКУ!<br />	if p_dir == &quot;B&quot; then AAA = 1 else AAA = -1 end<br />	t = {<br />			&#91;&quot;CLASSCODE&quot;&#93;=ClassCode,<br />			&#91;&quot;SECCODE&quot;&#93;=TickerCode,<br />			&#91;&quot;ACTION&quot;&#93;=&quot;NEW_ORDER&quot;, -- новая сделка.<br />			&#91;&quot;ACCOUNT&quot;&#93;=AccountCode,<br />			&#91;&quot;CLIENT_CODE&quot;&#93;=ClientCode,<br />			&#91;&quot;TYPE&quot;&#93;=&quot;L&quot;, -- &quot;M&quot; &quot;L&quot;. По M давал ошибку на TQBR.<br />			&#91;&quot;OPERATION&quot;&#93;=p_dir, -- направление сделки, &quot;B&quot; или &quot;S&quot;<br />			&#91;&quot;QUANTITY&quot;&#93;=tostring(LotSize), -- объем, (акции - в лотах, а не штуках).<br />			&#91;&quot;PRICE&quot;&#93;=tostring(p_price+(100*AAA)), -- цену лимитки ставим для мгновенного исполнения.<br />			&#91;&quot;TRANS_ID&quot;&#93;=&quot;1&quot;<br />		}<br />	<br />	res1 = sendTransaction(t) -- ... передаем сделку по рынку.<br />	<br />	if (res1~=&quot;&quot;) then -- Ошибочка вышла. Логируем ошибку.<br />		WLOG(&quot;SendTransaction Error = &quot;..res1);<br />	end<br />	<br />	WLOG(os.date()..&quot;;SECCODE=&quot;..TickerCode..&quot;;PRICE=&quot;..p_price..&quot;;DIR=&quot;..p_dir..&quot;\n&quot;)<br />		<br />	return res1<br />end<br /><br />function DoTrailStop(p_price, p_dir, LotSize, TP, TRAIL, SL) -- &quot;B&quot; or &quot;S&quot; -- СДЕЛКА ПО РЫНКУ!!!<br /><br />	WLOG(&quot;DoTrailStop. Start. p_dir=&quot;..p_dir..&quot;. p_price=&quot;..p_price)<br /><br />	-- Здесь - три вспомогательных флага направления. Чтобы не писать отдельно для Лонг и Шорт.<br />	if p_dir == &quot;B&quot; then AAA = 1 else AAA = -1 end<br />	if p_dir == &quot;B&quot; then BBB = &quot;S&quot; else BBB = &quot;B&quot; end<br />	if p_dir == &quot;B&quot; then CCC = &quot;4&quot; else CCC = &quot;5&quot; end<br /><br />	t_stop =<br />	{<br />		&#91;&#39;ACTION&#39;&#93; = &quot;NEW_STOP_ORDER&quot;, <br />		&#91;&#39;PRICE&#39;&#93; = tostring(p_price-(100*AAA)), -- меньше, проскальзывание<br />		&#91;&#39;EXPIRY_DATE&#39;&#93; = &quot;GTC&quot;,<br />		&#91;&#39;STOPPRICE&#39;&#93; = tostring(p_price+(TP*AAA)), -- тейк<br />		&#91;&#39;STOPPRICE2&#39;&#93; = tostring(p_price-(SL*AAA)), -- больше, срабатывание стопа<br />		&#91;&#39;STOP_ORDER_KIND&#39;&#93; = &quot;TAKE_PROFIT_AND_STOP_LIMIT_ORDER&quot;,<br />		&#91;&#39;OFFSET&#39;&#93; = tostring(TRAIL),<br />		&#91;&quot;OFFSET_UNITS&quot;&#93; = &quot;PRICE_UNITS&quot;,<br />		&#91;&quot;MARKET_TAKE_PROFIT&quot;&#93; = &quot;YES&quot;,<br />		&#91;&#39;TRANS_ID&#39;&#93; = &quot;2&quot;,<br />		&#91;&#39;CLASSCODE&#39;&#93; = ClassCode,<br />		&#91;&#39;SECCODE&#39;&#93; = TickerCode,<br />		&#91;&#39;ACCOUNT&#39;&#93; = AccountCode,<br />		&#91;&#39;CLIENT_CODE&#39;&#93; = ClientCode, <br />		&#91;&#39;TYPE&#39;&#93; = &quot;L&quot;, -- лимитка<br />		&#91;&#39;OPERATION&#39;&#93; = BBB, -- направление стопа (обратное к сделке).<br />		&#91;&#39;CONDITION&#39;&#93; = tostring(CCC), -- 4 или 5 (&quot;меньше или равно&quot; или &quot;больше или равно&quot;) - направление стоп-цены.<br />		&#91;&#39;QUANTITY&#39;&#93; = tostring(LotSize) -- кол-во контрактов<br />	}	<br />	res2 = sendTransaction(t_stop)<br />	WLOG(&quot;Результат выставления стопа (должно быть пусто) = &#39;&quot;..res2..&quot;&#39;&quot;)<br /> &nbsp; <br />	WLOG(&quot;DoTrailStop. End.&quot;) -- Пишем в лог, что эту контрольную точку прошли.<br />end<br /><br />function GetValueFromFile(FileName) -- Читаем параметр из файла.<br />	local f = io.open(FileName, &quot;r&quot;);<br />	if f == nil then -- если файла нет, но создаем пустой.<br />		f = io.open(FileName,&quot;w&quot;);<br />		DefaultValueForFile = &quot;MARTIN&quot; -- по умолчанию пишем нуль.<br />		-- Для LastDirection надо бы писать не нуль, а &quot;B&quot;, но пусть будет нуль, т.к.<br />		-- этого условия достаточно для открытия начальной сделки.<br />		f:write(DefaultValueForFile)<br />		f:close();<br />		-- Открывает уже гарантированно существующий файл в режиме &quot;чтения/записи&quot;<br />		f = io.open(FileName, &quot;r&quot;);<br />	end;<br />	aValue = f:read(&quot;*l&quot;)<br />	f:close()<br />	return aValue<br />end<br /><br />function SetValueToFile(FileName, aValue) -- Пишем параметр в файл.<br />	local ff=io.open(FileName, &quot;w&quot;) -- используем &quot;w&quot;, а не &quot;a&quot;, чтобы перезаписать существующий.<br />	ff:write(aValue)<br />	ff:close()<br />end<br /><br />function OnStop(stop_flag)<br />	is_run=false<br />end<br /><br />function WLOG(st) -- Универсальная функция записи в лог.<br />	local l_file=io.open(LogFileName, &quot;a&quot;) -- используем &quot;a&quot;, чтобы добавить новую строку.<br />	l_file:write(os.date()..&quot; &quot;..st..&quot;\n&quot;)<br />	l_file:close()<br />end<br /><br />function HaveOpenPosition() -- Возвращает TRUE, если есть открытая позиция по инструменту.<br />	for i = 0,getNumberOf(&quot;FUTURES_CLIENT_HOLDING&quot;) - 1 do<br />		if getItem(&quot;FUTURES_CLIENT_HOLDING&quot;,i).sec_code == TickerCode then<br />			if getItem(&quot;FUTURES_CLIENT_HOLDING&quot;,i).totalnet ~= 0 then<br />				return true<br />			else<br />				return false<br />			end<br />		end<br />	end<br />end <br />
			<i>04.05.2020 17:52:45, Александр.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message44314/topic5373/</link>
			<guid>http://forum.quik.ru/messages/forum10/message44314/topic5373/</guid>
			<pubDate>Mon, 04 May 2020 17:52:45 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
	</channel>
</rss>
