<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>Форум QUIK [тема: Вопрос по скрипту индикатора AD]</title>
		<link>http://forum.quik.ru</link>
		<description>Новое в теме Вопрос по скрипту индикатора AD форума  на сайте Форум QUIK [forum.quik.ru]</description>
		<language>ru</language>
		<docs>http://backend.userland.com/rss2</docs>
		<pubDate>Sun, 24 May 2026 03:10:54 +0300</pubDate>
		<item>
			<title>Вопрос по скрипту индикатора AD</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message38212/topic4504/">Вопрос по скрипту индикатора AD</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_Z6rsab0R" href="/user/12619/" bx-tooltip-user-id="12619">Анатолий</a> написал:<br />за весь диапазон доступных с биржи свечей, от самой последней до самой первой, <br />=============<br />Да верно<br /><br /><br />====quote====<br /><a class="blog-p-user-name" id="bp_nDIJVajQ" href="/user/12619/" bx-tooltip-user-id="12619">Анатолий</a> написал:<br />однакож вам видимо трудно было об этом сразу сказать.. ))))<br />=============<br /><br />читайте внимательней<br /><br />====quote====<br /><a class="blog-p-user-name" id="bp_w1theAx8" href="/user/17/" bx-tooltip-user-id="17">Sergey Gorokhov</a> написал:<br />Нет никакого периода. n в формуле обозначает текущую свечку для которой происходит расчет.Например если свечек 5 значит n=5<br />=============<br /> <br />
			<i>03.06.2019 04:35:28, Sergey Gorokhov.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message38212/topic4504/</link>
			<guid>http://forum.quik.ru/messages/forum10/message38212/topic4504/</guid>
			<pubDate>Mon, 03 Jun 2019 04:35:28 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Вопрос по скрипту индикатора AD</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message38197/topic4504/">Вопрос по скрипту индикатора AD</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Лол ))))) Вообщем с помощью отладки вашего скрипта индикатора AD.lua выяснил что итоговое значение AD он выдает суммируя мгновенные значения (по формуле для каждой свечки) за весь диапазон доступных с биржи свечей, от самой последней до самой первой, однакож вам видимо трудно было об этом сразу сказать.. )))) <br />
			<i>01.06.2019 14:03:40, Анатолий.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message38197/topic4504/</link>
			<guid>http://forum.quik.ru/messages/forum10/message38197/topic4504/</guid>
			<pubDate>Sat, 01 Jun 2019 14:03:40 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Вопрос по скрипту индикатора AD</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message38153/topic4504/">Вопрос по скрипту индикатора AD</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			К томуже количеством свечей по которому рассчитывается AD не является количество свечей отображаемых на графике - я хотьь увеличиваю хоть уменьшаю диапазон отображаемого графика, т.е. кол-во свечей на графике, но знаения AD для каждой свечи остаются неизменными, отсюда &nbsp;вывод что количество свечей у вас в индикаторе фиксированное но не пойму где оно задается <br />
			<i>30.05.2019 09:54:10, Анатолий.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message38153/topic4504/</link>
			<guid>http://forum.quik.ru/messages/forum10/message38153/topic4504/</guid>
			<pubDate>Thu, 30 May 2019 09:54:10 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Вопрос по скрипту индикатора AD</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message38152/topic4504/">Вопрос по скрипту индикатора AD</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Только вот непойму где у вас для индикатора AD определяется количество свечей по которым он рассчитывается? В настройках &nbsp;индикатора на графике нет ничего связанного с выбором периода для расчета, в скрипте AD.lua я тоже чтото ничего связанного с определением диапазона расчета (т.е. с количеством свечек по которому он рассчитывается) невижу <br />
			<i>30.05.2019 09:40:03, Анатолий.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message38152/topic4504/</link>
			<guid>http://forum.quik.ru/messages/forum10/message38152/topic4504/</guid>
			<pubDate>Thu, 30 May 2019 09:40:03 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Вопрос по скрипту индикатора AD</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message38136/topic4504/">Вопрос по скрипту индикатора AD</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_1FELHap4" href="/user/12619/" bx-tooltip-user-id="12619">Анатолий</a> написал:<br />Получается что для 1ой свечи CumAD = ADn и он же будет CumADn-1 для 2ой свечи правильно?<br />=============<br />Да правильно.<br /><br /><br />====quote====<br /><a class="blog-p-user-name" id="bp_Xg3HbSVh" href="/user/12619/" bx-tooltip-user-id="12619">Анатолий</a> написал:<br /> т.е. в вашем индикаторе A/D и индикаторе Чайкина они рассчитываются от выбранного интервала (количества свечей взятых для рассчета)?<br />=============<br /><br />Если свечек 5 значит для расчета 5й свечки надо посчитать по 1й по 2й по 3й по 4й и наконец по 5й.<br />Если свечек 6 значит для расчета 6й свечки надо посчитать по 1й по 2й по 3й по 4й по 5й и наконец по 6й.<br />Если свечек 7 значит для расчета 7й свечки надо посчитать по 1й по 2й по 3й по 4й по 5й по 6й и наконец по 7й.<br />и так далее. <br />
			<i>29.05.2019 11:57:01, Sergey Gorokhov.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message38136/topic4504/</link>
			<guid>http://forum.quik.ru/messages/forum10/message38136/topic4504/</guid>
			<pubDate>Wed, 29 May 2019 11:57:01 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Вопрос по скрипту индикатора AD</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message38127/topic4504/">Вопрос по скрипту индикатора AD</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_89YMI5B7" href="/user/17/" bx-tooltip-user-id="17">Sergey Gorokhov</a> написал:<br />Следовательно n-1 это предыдущая свечка.<br />=============<br />Хорошо - &nbsp;значит если свечек пять то тогда получается - для 5ой (последней) свечи:<br />CumAD = ADn + CumADn-1<br />где CumADn-1 это CumAD для 4ой свечи и т.д. &nbsp;в итоге каким же тогда будет CumAD для последней, 1ой, свечи? Получается что для 1ой свечи CumAD = ADn и он же будет CumADn-1 для 2ой свечи правильно? т.е. в вашем индикаторе A/D и индикаторе Чайкина они рассчитываются от выбранного интервала (количества свечей взятых для рассчета)? <br />
			<i>28.05.2019 16:15:09, Анатолий.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message38127/topic4504/</link>
			<guid>http://forum.quik.ru/messages/forum10/message38127/topic4504/</guid>
			<pubDate>Tue, 28 May 2019 16:15:09 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Вопрос по скрипту индикатора AD</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message38126/topic4504/">Вопрос по скрипту индикатора AD</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_lP04P6oN" href="/user/12619/" bx-tooltip-user-id="12619">Анатолий</a> написал:<br /> если &nbsp;говорите что CumADn-1 тоже для этой же свечи?<br />=============<br />Никто такого не говорил. <br />Было четко сказано:<br /><br />====quote====<br /><a class="blog-p-user-name" id="bp_wFd77YSb" href="/user/17/" bx-tooltip-user-id="17">Sergey Gorokhov</a> написал:<br />n в формуле обозначает текущую свечку<br />=============<br /><br />Следовательно n-1 это предыдущая свечка. <br />
			<i>28.05.2019 15:54:45, Sergey Gorokhov.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message38126/topic4504/</link>
			<guid>http://forum.quik.ru/messages/forum10/message38126/topic4504/</guid>
			<pubDate>Tue, 28 May 2019 15:54:45 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Вопрос по скрипту индикатора AD</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message38125/topic4504/">Вопрос по скрипту индикатора AD</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_GSxAclXr" href="/user/17/" bx-tooltip-user-id="17">Sergey Gorokhov</a> написал:<br />Нет никакого периода. n в формуле обозначает текущую свечку для которой происходит расчет.Например если свечек 5 значит n=5<br />=============<br />Тут опять непойму - что же есть тогда tmp.pp (CumADn-1) из tmp.p = CLH/HL + (tmp.pp or 0)? т.е. согласно вашей формуле CumAD = ADn + CumADn-1<br />Для каждой свечи можно получить только одно значение ADn согласно значениям цен (открытия &nbsp;закрытия и т.д.) и обьема этой свечи чтоже вы тогда прибавляете к ADn в качестве &nbsp;CumADn-1 если &nbsp;говорите что CumADn-1 тоже для этой же свечи? <br />
			<i>28.05.2019 15:13:14, Анатолий.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message38125/topic4504/</link>
			<guid>http://forum.quik.ru/messages/forum10/message38125/topic4504/</guid>
			<pubDate>Tue, 28 May 2019 15:13:14 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Вопрос по скрипту индикатора AD</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message37882/topic4504/">Вопрос по скрипту индикатора AD</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_DlT14Jzm" href="/user/12619/" bx-tooltip-user-id="12619">Анатолий</a> написал:<br />1) За какой период получается суммируются вычисленные значения AD? Чему равно n-?<br />=============<br />Нет никакого периода. n в формуле обозначает текущую свечку для которой происходит расчет.<br />Например если свечек 5 значит n=5<br /><br />====quote====<br /><a class="blog-p-user-name" id="bp_Go5Pd1Lv" href="/user/12619/" bx-tooltip-user-id="12619">Анатолий</a> написал:<br />2) Для чего это делается? В литературе по тех.анализу я ненашел ничего о суммировании этого индикатора с его предыдущими значениями, хотя литературы очень много всю ее пересмотреть сложно, можно у вас попросить ссылку на литературу по которой у вас сделан индикатор AD, т.е. с сумрованием тогового значения за n периодов?<br />=============<br />К сожалению на литературу ссылку дать не можем, но такая же формула легко находится в <noindex><a href="https://en.wikipedia.org/wiki/Accumulation/distribution_index" target="_blank" rel="nofollow">википедии</a></noindex><br /><br /><br />====quote====<br /><a class="blog-p-user-name" id="bp_7iZxX94Y" href="/user/12619/" bx-tooltip-user-id="12619">Анатолий</a> написал:<br />Изменил эту строчку на &nbsp;tmp.p = CLH/HL &nbsp;в файлах AD.lua и CO.lua<br />=============<br />Зачем? Настоятельно НЕ рекомендуем менять наши формулы, т.к. потом мы не сможем Вам объяснить почему у Вас данные не совпадают.<br /><br />====quote====<br /><a class="blog-p-user-name" id="bp_3EicOvqN" href="/user/12619/" bx-tooltip-user-id="12619">Анатолий</a> написал:<br />но CO по прежнему несовпадает<br />=============<br />Надо разбираться.<br />Вообще не понятно зачем Вы пишите свои формулы расчета когда уже есть готовые наши формулы. <br />Если не нравятся наши формулы, то очень зря, они отточены годами и оправдали свою надежность.<br />Тем более что, как показал разбор выше, в своих формулах Вы рано или поздно придете к тому что уже есть в наших.<br /><br /><br />====quote====<br /><a class="blog-p-user-name" id="bp_dPtwMSe5" href="/user/12619/" bx-tooltip-user-id="12619">Анатолий</a> написал:<br />Ну и хотел еще добавить - ваш индикатор A/D («Накопление/распределение») вовсе не оригинальный индикатор A/D разработанный Ларри Вильмсом в 1972 и вычисляемый по формуле <br />=============<br /><br />Никто не мешает Вам написать индикатор так как Вам хочется. <br />
			<i>10.05.2019 11:28:15, Sergey Gorokhov.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message37882/topic4504/</link>
			<guid>http://forum.quik.ru/messages/forum10/message37882/topic4504/</guid>
			<pubDate>Fri, 10 May 2019 11:28:15 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Вопрос по скрипту индикатора AD</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message37881/topic4504/">Вопрос по скрипту индикатора AD</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_0CLtTLR3" href="/user/17/" bx-tooltip-user-id="17">Sergey Gorokhov</a> написал:<br />Документация к терминалу в файле info.chm, или можно открыть нажав F1Формулы к индикаторам приведены в следующем разделе:<br />=============<br />Ясно спасибо, нетуда смотрел, скажите еще пожалуйста:<br />1) За какой период получается суммируются вычисленные значения AD? Чему равно n-?<br />2) Для чего это делается? В литературе по тех.анализу я ненашел ничего о суммировании этого индикатора с его предыдущими значениями, хотя литературы очень много всю ее пересмотреть сложно, можно у вас попросить ссылку на литературу по которой у вас сделан индикатор AD, т.е. с сумрованием тогового значения за n периодов?<br /><br />Да точно tmp.p = CLH/HL + (tmp.pp or 0) &nbsp;- это и есть &nbsp;CumAD = ADn + CumADn-1<br /><br />Изменил эту строчку на &nbsp;tmp.p = CLH/HL &nbsp;в файлах AD.lua и CO.lua &nbsp;после чего индикатор AD стал совпадать с моим расчетным<br />но CO по прежнему несовпадает хотя отличается ненамного, у себя CO я рассчитываю как <br /><br /><br />CO = SMA (AD,3) - SMA(AD,10) - где SMA - среднеарифметическое суммы индикаторов AD за периоды 3 и 10<br /><br />у вас формула в CO.lua в functions CO() &nbsp; такая же - &nbsp; return rS_MA - rL_MA<br />В настройках индикатора метод подсчета средней - SMA я естественно выставил, почему несовпадение непойму<br /><br />Ну и хотел еще добавить - ваш индикатор A/D («Накопление/распределение») вовсе не оригинальный индикатор A/D разработанный Ларри Вильмсом в 1972 и вычисляемый по формуле <br /><br /><br />A/D = ( ( C - O) / ( H - L) ) * V<br /><br />Ваш индикатор A/D не что иное как индикатор аккумуляции/распределения &nbsp;VA Чайкина (Volume Accumulation) - накопленный обьем<br /> ( т.е. не осциллятор а индикатор) <br /><br />Который как раз таки и рассчитывается по формуле<br /><br />VA = ( ( C - L ) - ( H - C ) ) / ( H - L ) ) * V <br />
			<i>10.05.2019 11:07:30, Анатолий.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message37881/topic4504/</link>
			<guid>http://forum.quik.ru/messages/forum10/message37881/topic4504/</guid>
			<pubDate>Fri, 10 May 2019 11:07:30 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Вопрос по скрипту индикатора AD</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message37877/topic4504/">Вопрос по скрипту индикатора AD</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_7w4a2wg6" href="/user/12619/" bx-tooltip-user-id="12619">Анатолий</a> написал:<br />Где в вашей документации эта формула? Ненашел,<br />=============<br />Документация к терминалу в файле info.chm, или можно открыть нажав F1<br />Формулы к индикаторам приведены в следующем разделе:<br />-Раздел 4. Работа с графиками<br />--Методы технического анализа<br />---A/D («Накопление/распределение»)<br /><br />====quote====<br /><a class="blog-p-user-name" id="bp_z4hlc62K" href="/user/12619/" bx-tooltip-user-id="12619">Анатолий</a> написал:<br />Где в скрипте индикатора AD.lua этот код CumAD = ADn + CumADn-1 ?<br />=============<br />Вот:<br /><br />====quote====<br /><a class="blog-p-user-name" id="bp_azc8vfwT" href="/user/12619/" bx-tooltip-user-id="12619">Анатолий</a> написал:<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; tmp.p = CLH/HL + (tmp.pp or 0)<br />=============<br /> <br />
			<i>10.05.2019 09:13:43, Sergey Gorokhov.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message37877/topic4504/</link>
			<guid>http://forum.quik.ru/messages/forum10/message37877/topic4504/</guid>
			<pubDate>Fri, 10 May 2019 09:13:43 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Вопрос по скрипту индикатора AD</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message37876/topic4504/">Вопрос по скрипту индикатора AD</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_GbObHG3r" href="/user/17/" bx-tooltip-user-id="17">Sergey Gorokhov</a> написал:<br />Да но дальше еще сложение, согласно формуле (которая если что есть в документации)CumAD = ADn + CumADn-1,<br />=============<br />Где в вашей документации эта формула? Ненашел,<br />Где в скрипте индикатора AD.lua этот код CumAD = ADn + CumADn-1 ?<br />В функции AD () непосредственно такого ненаблюдаю<br /><br />function AD() --Accumulation/Distribution (&quot;AD&quot;)<br /> &nbsp; &nbsp;local tmp = {pp=nil, p=nil}<br /> &nbsp; &nbsp;local it = {p=0, l=0}<br />return function (I, Fsettings, ds)<br /> &nbsp; &nbsp;if I == 1 then<br /> &nbsp; &nbsp; &nbsp; &nbsp;tmp = {pp=nil, p=nil}<br /> &nbsp; &nbsp; &nbsp; &nbsp;it = {p=0, l=0}<br /> &nbsp; &nbsp;end<br /> &nbsp; &nbsp;if CandleExist(I,ds) then<br /> &nbsp; &nbsp; &nbsp; &nbsp;if I~=it.p then <br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;it={p=I, l=it.l+1}<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;tmp.pp = tmp.p<br /> &nbsp; &nbsp; &nbsp; &nbsp;end<br /> &nbsp; &nbsp; &nbsp; &nbsp;local CLH=(2*GetValueEX(it.p,CLOSE,ds)-GetValueEX(it.p,HIGH,ds) - GetValueEX(it.p,LOW,ds))*GetValueEX(it.p,VOLUME,ds)<br /> &nbsp; &nbsp; &nbsp; &nbsp;local HL=GetValueEX(it.p,HIGH,ds) - GetValueEX(it.p,LOW,ds)<br /> &nbsp; &nbsp; &nbsp; &nbsp;if HL==0 then <br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;tmp.p = tmp.pp or 0<br /> &nbsp; &nbsp; &nbsp; &nbsp;else<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;tmp.p = CLH/HL + (tmp.pp or 0)<br /> &nbsp; &nbsp; &nbsp; &nbsp;end<br /> &nbsp; &nbsp; &nbsp; &nbsp;if it.l==1 then<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if HL == 0 then return 0<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else return CLH/HL end<br /> &nbsp; &nbsp; &nbsp; &nbsp;else<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return tmp.p<br /> &nbsp; &nbsp; &nbsp; &nbsp;end<br /> &nbsp; &nbsp;end<br />return nil<br />end<br />end<br /><br />Вижу только в <br /><br /> &nbsp;if HL==0 then <br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;tmp.p = tmp.pp or 0<br /> &nbsp; &nbsp; &nbsp; &nbsp;else<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;tmp.p = CLH/HL + (tmp.pp or 0)<br /> &nbsp; &nbsp; &nbsp; &nbsp;end<br /><br /><br /> похожую строчку &nbsp; tmp.p = CLH/HL + (tmp.pp or 0) <br />
			<i>10.05.2019 09:02:53, Анатолий.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message37876/topic4504/</link>
			<guid>http://forum.quik.ru/messages/forum10/message37876/topic4504/</guid>
			<pubDate>Fri, 10 May 2019 09:02:53 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Вопрос по скрипту индикатора AD</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message37874/topic4504/">Вопрос по скрипту индикатора AD</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_RymsLfDu" href="/user/12619/" bx-tooltip-user-id="12619">Анатолий</a> написал:<br />Вот подскажите пожалуйста, функция OnCalculate, из описания - функция вызывается при поступлении новой или изменении существующей свечки в источнике данных для индикатора, возвращает два аргумента - один из них координата x другой координата yя так понимаю, т.е. первый - местоположение свечки в рядяах свечей, второй фактически само значение индикатора<br />=============<br />Нет такого в описании. Почитайте внимательней<br /><br /><br />====quote====<br /><a class="blog-p-user-name" id="bp_R7pATgd7" href="/user/12619/" bx-tooltip-user-id="12619">Анатолий</a> написал:<br />и у меня и у вас тоже абсолютно одинаковая<br />=============<br />Вы же понимаете что чудес не бывает если цифры разные значит формула разная. Это же математика.<br /><br /><br />====quote====<br /><a class="blog-p-user-name" id="bp_xwk5f5sg" href="/user/12619/" bx-tooltip-user-id="12619">Анатолий</a> написал:<br />Где CLH/HL &nbsp;и есть AD<br />=============<br />Да но дальше еще сложение, согласно формуле (которая если что есть в документации)<br />CumAD = ADn + CumADn-1,<br /><br /><br />====quote====<br /><a class="blog-p-user-name" id="bp_anjbJLd7" href="/user/12619/" bx-tooltip-user-id="12619">Анатолий</a> написал:<br />Раз формулы одинаковые и значения свечей тоже то значит полученные из формулы значения в вашем скрипте еще и после формулы зачем то дополнительно меняются изучив скрипт AD.lua не трудно догадатся что изменяются они в функции OnCalculate в функции ConvertValue(Settings, func(Index, Settings)) где func(Index, Settings) это переименованная в Init функция AD():<br />=============<br /><br />Вы категорически не правы, функция ConvertValue тут не причем.<br />Если не верите, просто уберите ее из OnCalculate<br />
====code====
<pre>local Out = func(Index, Settings)</pre>
=============
<br /><br /><br />====quote====<br /><a class="blog-p-user-name" id="bp_30BDu9bI" href="/user/12619/" bx-tooltip-user-id="12619">Анатолий</a> написал:<br />Будьте любезны обьясните пожалуйста что она делает и зачем? Зачем она дополнительно меняет уже готовое значение функции AD?<br /><br />=============<br /><br />Это опциональная функция которая позволяет при желании включить округление Round значений индикатора, либо умножить значения на заданный коэффицент Multiply.<br />По умолчанию эти параметры выключены.<br />
====code====
<pre>Round = "off",
Multiply = 1,</pre>
============= <br />
			<i>10.05.2019 08:12:10, Sergey Gorokhov.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message37874/topic4504/</link>
			<guid>http://forum.quik.ru/messages/forum10/message37874/topic4504/</guid>
			<pubDate>Fri, 10 May 2019 08:12:10 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Вопрос по скрипту индикатора AD</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message37868/topic4504/">Вопрос по скрипту индикатора AD</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Всех приветствую, опять вопрос по индикаторам, стал изучать скрипт индикатора Accumulation/Distribution AD.lua<br />из дополнительно предоставленных индикаторных скриптов для графиков любезно предоставленных компанией ARQATECH<br /><noindex><a href="https://pastebin.com/ZCjRxVd9" target="_blank" rel="nofollow">https://pastebin.com/ZCjRxVd9</a></noindex><br />Вот подскажите пожалуйста, функция OnCalculate, из описания - функция вызывается при поступлении новой или изменении существующей свечки в источнике данных для индикатора, возвращает два аргумента - один из них координата x другой координата y<br />я так понимаю, т.е. первый - местоположение свечки в рядяах свечей, второй фактически само значение индикатора<br /><br />Я запрограммировал в своем скрипте получение индикатора AD непосредственно из значений свечей и в итоге мои значения AD не такие как показывает ваш индикатор на графике, причем что как у меня так и у вас сама формула расчета AD одинаковая - <br /><br />У вас она в скрипте выглядит как:<br /><br />function AD() --Accumulation/Distribution (&quot;AD&quot;)<br /> &nbsp; &nbsp;local tmp = {pp=nil, p=nil}<br /> &nbsp; &nbsp;local it = {p=0, l=0}<br />return function (I, Fsettings, ds)<br /> &nbsp; &nbsp;if I == 1 then<br /> &nbsp; &nbsp; &nbsp; &nbsp;tmp = {pp=nil, p=nil}<br /> &nbsp; &nbsp; &nbsp; &nbsp;it = {p=0, l=0}<br /> &nbsp; &nbsp;end<br /> &nbsp; &nbsp;if CandleExist(I,ds) then<br /> &nbsp; &nbsp; &nbsp; &nbsp;if I~=it.p then <br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;it={p=I, l=it.l+1}<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;tmp.pp = tmp.p<br /> &nbsp; &nbsp; &nbsp; &nbsp;end<br /> &nbsp; &nbsp; &nbsp; &nbsp;local CLH=(2*GetValueEX(it.p,CLOSE,ds)-GetValueEX(it.p,HIGH,ds) - GetValueEX(it.p,LOW,ds))*GetValueEX(it.p,VOLUME,ds)<br /> &nbsp; &nbsp; &nbsp; &nbsp;local HL=GetValueEX(it.p,HIGH,ds) - GetValueEX(it.p,LOW,ds)<br /> &nbsp; &nbsp; &nbsp; &nbsp;if HL==0 then <br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;tmp.p = tmp.pp or 0<br /> &nbsp; &nbsp; &nbsp; &nbsp;else<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;tmp.p = CLH/HL + (tmp.pp or 0)<br /> &nbsp; &nbsp; &nbsp; &nbsp;end<br /> &nbsp; &nbsp; &nbsp; &nbsp;if it.l==1 then<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if HL == 0 then return 0<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else return CLH/HL end<br /> &nbsp; &nbsp; &nbsp; &nbsp;else<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return tmp.p<br /> &nbsp; &nbsp; &nbsp; &nbsp;end<br /> &nbsp; &nbsp;end<br />return nil<br />end<br />end<br /><br />А именно строчки <br /><br />CLH=(2*GetValueEX(it.p,CLOSE,ds)-GetValueEX(it.p,HIGH,ds) - GetValueEX(it.p,LOW,ds))*GetValueEX(it.p,VOLUME,ds)<br />HL=GetValueEX(it.p,HIGH,ds) - GetValueEX(it.p,LOW,ds)<br /><br />Где CLH/HL &nbsp;и есть AD<br /><br />У меня AD рассчитывается так - <br /><br />((2*datatb:C(candle)-datatb:L(candle))-(datatb:H(candle)))/(datatb:H(candle)-datatb:L(candle)))*datatb:V(candle)<br />Где datatb - таблица с получаемыми значениями свечей<br />Так вот по вашему индикатору AD &nbsp;значения получаются какие то совсем астрономические - скажем для образца возьмем график ИнтерРао<br />с дневным периодом -<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;У вас &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; у меня<br />08.05.19 &nbsp; &nbsp; 6006783,524897 &nbsp; &nbsp; &nbsp;-129967.14285714<br />07.05.19 &nbsp; &nbsp; 6084763,810612 &nbsp; &nbsp; &nbsp;-9633.2300884955<br />Ну и так далее<br /><br />Ну и соответственно рассчитываемые по индикатору AD значения осциллятора Чайкина тоже какие то совсем другие, хотя его формула<br />и у меня и у вас тоже абсолютно одинаковая<br /><br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;У вас &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; у меня<br />08.05.19 &nbsp; &nbsp; 11650,613 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; -18427.413178682<br />07.05.19 &nbsp; &nbsp; 7774,461856 &nbsp; &nbsp; &nbsp; -19034.307618411<br />Ну и так далее<br /><br />Раз формулы одинаковые и значения свечей тоже то значит полученные из формулы значения в вашем скрипте еще и после формулы зачем то дополнительно меняются изучив скрипт AD.lua не трудно догадатся что изменяются они в функции OnCalculate в функции ConvertValue(Settings, func(Index, Settings)) где func(Index, Settings) это переименованная в Init функция AD():<br /><br />function Init()<br /> &nbsp; &nbsp;func = AD()<br /> &nbsp; &nbsp;return #Settings.line<br />end<br /><br />function OnCalculate(Index)<br />local Out = ConvertValue(Settings, func(Index, Settings))<br />local HL = tonumber(Settings.Horizontal_line)<br /> &nbsp; &nbsp;if Out then<br /> &nbsp; &nbsp; &nbsp; &nbsp;if Out &gt; (HL or 0) then<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return HL,Out,nil<br /> &nbsp; &nbsp; &nbsp; &nbsp;else<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return HL,nil,Out<br /> &nbsp; &nbsp; &nbsp; &nbsp;end<br /> &nbsp; &nbsp;else<br /> &nbsp; &nbsp; &nbsp; &nbsp;return HL,nil,nil<br /> &nbsp; &nbsp;end<br />end<br /><br />И вот сама функция ConvertValue<br /><br />function ConvertValue(T,...)<br />local function r(V, R) <br /> &nbsp; &nbsp;if R and string.upper&#174;== &quot;ON&quot; then R=0 end<br /> &nbsp; &nbsp;if V and tonumber&#174; then<br /> &nbsp; &nbsp; &nbsp; &nbsp;if V &gt;= 0 then return math.floor(V * 10^R + 0.5) / 10^R<br /> &nbsp; &nbsp; &nbsp; &nbsp;else return math.ceil(V * 10^R - 0.5) / 10^R end<br /> &nbsp; &nbsp;else return V end<br />end<br /> &nbsp; &nbsp;if arg.n &gt; 0 then<br /> &nbsp; &nbsp; &nbsp; &nbsp;for i = 1, arg.n do<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;arg&#91;i&#93;=arg&#91;i&#93; and r(arg&#91;i&#93; * ((T and T.Multiply) or 1), (T and T.Round) or &quot;off&quot;)<br /> &nbsp; &nbsp; &nbsp; &nbsp;end<br /> &nbsp; &nbsp; &nbsp; &nbsp;return unpack(arg)<br /> &nbsp; &nbsp;else return nil end<br />end<br /><br />Будьте любезны обьясните пожалуйста что она делает и зачем? Зачем она дополнительно меняет уже готовое значение функции AD? <br />
			<i>09.05.2019 16:21:24, Анатолий.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message37868/topic4504/</link>
			<guid>http://forum.quik.ru/messages/forum10/message37868/topic4504/</guid>
			<pubDate>Thu, 09 May 2019 16:21:24 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
	</channel>
</rss>
