<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[QUIK -> DDE &mdash; Математика в скрипте LUA]]></title>
		<link>https://quik2dde.ru/viewtopic.php?id=402</link>
		<atom:link href="https://quik2dde.ru/extern.php?action=feed&amp;tid=402&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «Математика в скрипте LUA».]]></description>
		<lastBuildDate>Wed, 05 Oct 2022 08:58:20 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: Математика в скрипте LUA]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=3765#p3765</link>
			<description><![CDATA[<p><strong>dark184</strong>,<br />Любая тема на форуме имеет пользу.<br />Пусть будет.</p><p>Вам удачи в программировании и профита!</p>]]></description>
			<author><![CDATA[null@example.com (admin)]]></author>
			<pubDate>Wed, 05 Oct 2022 08:58:20 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=3765#p3765</guid>
		</item>
		<item>
			<title><![CDATA[Re: Математика в скрипте LUA]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=3764#p3764</link>
			<description><![CDATA[<p>Ой <img src="https://quik2dde.ru/img/smilies/hmm.png" width="15" height="15" alt="hmm" />. Я же уже выловил этот косяк пару месяцев назад и совсем забыл. Дело не в интерпретаторе, а вы попали в самую точку, дело в функции преобразования числа в строку. Я точно помню, как только выловил косяк, исправил его. Но для другого робота взял устаревший файл, где это не исправлено ;( Так что можно удалить лишнюю тему, я сам лоханулся <img src="https://quik2dde.ru/img/smilies/smile.png" width="15" height="15" alt="smile" /></p>]]></description>
			<author><![CDATA[null@example.com (dark184)]]></author>
			<pubDate>Wed, 05 Oct 2022 08:50:11 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=3764#p3764</guid>
		</item>
		<item>
			<title><![CDATA[Re: Математика в скрипте LUA]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=3763#p3763</link>
			<description><![CDATA[<div class="quotebox"><cite>dark184 пишет:</cite><blockquote><p> а по факту получаю 24,1000</p></blockquote></div><p>Вот эта цифра откуда взялась?</p><p>Интерпретатор Lua ошибаться не может. Это я вам гарантирую.</p><p>А вот как у вас реализовано преобразование ценны из числа в текст внутри SendOrder() - хороший вопрос.</p>]]></description>
			<author><![CDATA[null@example.com (swerg)]]></author>
			<pubDate>Wed, 05 Oct 2022 08:29:36 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=3763#p3763</guid>
		</item>
		<item>
			<title><![CDATA[Математика в скрипте LUA]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=3762#p3762</link>
			<description><![CDATA[<p>Всем привет. Можете подсказать что творит скрипт луа, причем дело похоже в самом интерпретаторе луа, встроенного в квик. В принципе я и раньше изредка встречал этот глюк, думал надо бы переписать по другому и более надежно, ибо сейчас использую цикл while, их я как раз стараюсь избегать всеми правдами и неправдами, ибо чревато зависоном. Но сделал как сделал, т.к. это было быстрее и проще всего и отладки минимум.<br />Итого, что имеем в скрипте<br /></p><div class="codebox"><pre><code>        local temp_percent =  buy_price / 100 * percent + buy_price
        sell_price = buy_price
        while temp_percent &gt; sell_price do
            sell_price = sell_price + PRICE_STEP
        end
        SendOrder(&quot;S&quot;, sell_price)</code></pre></div><p>Здесь робот уже нашел точку входа, сделка совершена, он выставляет лимитку на продажу. Да да, плохая процедура... НО! Это в оригинале. Сегодня именно эта процедура неожиданно выдала глюк. Покупка состоялась 24,850, шаг цены 0,005, percent = 0,6, теперь если посчитать temp_percent, он получается 24,9991. Далее тупо добавляем шаг цены сколько надо раз, пока temp_percent больше sell_price. Теоретически я ожидаю sell_price = 25,000, а по факту получаю 24,1000, да, да. Именно дробная часть 1000, т.е. переноса в целую часть не произошло! <br />Как я уже говорил, этот глюк уже не первый, единственная закономерность, которую мне удалось уловить, этот глюк происходит как раз на подобных граничных условиях, т.е. именно когда переполняется дробная часть и должен произойти перенос в целую часть. При этом всем, если пройти это пограничное состояние хотя бы еще на один шаг, этого бага вообще не наблюдается и все корректно.<br />Почему я привел именно этот код? Ну во первых именно он дает этот баг, хотя цену на покупку я рассчитываю уже другой процедурой<br /></p><div class="codebox"><pre><code>        local n,m = math.modf(Temp / PRICE_STEP)                -- Целая n и дробная части m Price_temp
        if m &gt; 0.5 then                                        -- Если дробная часть больше 0,5, то
            n = n + 1                                        -- Получили количество шагов до ближайшего кратного значения цены
        end
        buy_price = n * PRICE_STEP                            -- Цена для заявки на покупку готова.</code></pre></div><p>Здесь Temp, это линия индикатора на графике, НО! Сложность в том, что значение линии не кратно шагу цены, приходится приводить к кратным значениям.<br />Вот я и задумался, получив очередной глюк(крайне редкий и отловить его вообще не представляется возможным), как не наступить на эти же грабли позже. Может кто сможет объяснить в чем причина? Возможно и вторая процедура преобразования точно такая же косячная? Возможно есть какая то стандартная функция для этого?<br />И да, тут работает все как надо [url]https://qlua.ru/demo/,[/url] получаю вполне ожидаемый результат 25.<br /></p><div class="codebox"><pre><code>sell_price = 0
PRICE_STEP = 0.005
percent = 0.6
buy_price = 24.850

local temp_percent =  buy_price / 100 * percent + buy_price
sell_price = buy_price
while temp_percent &gt; sell_price do
    sell_price = sell_price + PRICE_STEP
end
print(&quot;sell_price = &quot;, sell_price)</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (dark184)]]></author>
			<pubDate>Wed, 05 Oct 2022 08:19:59 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=3762#p3762</guid>
		</item>
	</channel>
</rss>
