>> a = 130.01
a =
130.0100
>> b = 130.02-0.01
b =
130.0100
>> bb = floor(b*100)/100
bb =
130.0100
>> a-b
ans =
-2.8422e-14
>> a-bb
ans =
0
>> a==bb
ans =
1
Выход 2:
Код
>> a-b<0.01
ans =
1
простое сложение с 0.01
Пользователь
Сообщений: Регистрация: 01.06.2015
23.02.2017 13:52:01
Цитата
Алексей написал: Недавно стал программировать на LUA и столкнулся со странной проблемой, собственно она в коде:
Код
function OnInit () end
function main ()
a = 130.01
b = 130.02 - 0.01
if a = = b then
message ( "a равно b" )
else
message ( "a не равно b" )
end
end
function OnStop () end
Вот это все я просто запускаю из QUIK. И получается 130,01 не равно 130,01, это как?
Это плавающая точка:
Код
>> a = 130.01
a =
130.0100
>> b = 130.02-0.01
b =
130.0100
>> a-b
ans =
-2.8422e-14
Заявка -> Сообщение
Пользователь
Сообщений: Регистрация: 01.06.2015
22.02.2017 20:42:44
Как НЕ получать сообщение? Или так и задумано?
Заявка -> Сообщение
Пользователь
Сообщений: Регистрация: 01.06.2015
22.02.2017 13:55:29
Посылаю заявку в скрипте луа sendTransaction, квик выдает сообщение "Заявка 25109199245 успешно зарегистрирована." Но я не прошу мне сообщать. И в купайле sendTransaction все делает тихо. В чем фишка?
Да дело не в купайле. И с луа и даже с самим квиком все тоже самое. Все просто. Арка завязана на биржу и брокера, а не на потребителя как скажем Ами.
LUA и QPILE, Сравнение возможностей двух языков
Пользователь
Сообщений: Регистрация: 01.06.2015
19.02.2017 16:36:20
Цитата
Boris Litvinov написал: Он доведен до своих пределов. Но если вы найдете баги, и напишите на форум, вам ответят, и примут меры. А это значит поддержка есть.
Сомневаюсь. Ну например при запуске квика раньше скрипт запускался сам, а с 7-ки перестал. Надо ручками. Я правда не обращался за поддержкой, но вот теперь проверим как отреагируют.
LUA и QPILE, Сравнение возможностей двух языков
Пользователь
Сообщений: Регистрация: 01.06.2015
19.02.2017 16:32:35
Цитата
Николай Камынин написал: он уже давно не поддерживается разработчиками, поэтому и умер.
То есть не умер, а убили...
LUA и QPILE, Сравнение возможностей двух языков
Пользователь
Сообщений: Регистрация: 01.06.2015
18.02.2017 00:44:01
Купайлу скоро конец - это его подавляюший недостаток
"Очень" это своя база данных, тестер, робот, анализ прошедшего дня с сохранением в эксель. Конечно есть и минусы. В том числе визуализация ценовых рядов. Но зато это "очень" в амиброкере под управлением того же матлаба. Там на одном графике у меня до четырех стратегий по четыре варианта параметров. А в квике получилось только три и без визуализации параметров.
INDICATORS.ZIP
Пользователь
Сообщений: Регистрация: 01.06.2015
16.02.2017 10:59:58
Николай Камынин, Быстрее будет скинуть данные в матлаб и сделать с ними все, что угодно. Квик, хоть с луа, хоть без, даже для визуалиции не очень...
Я уже довольно много лет смотрю, на всякий случай еще раз с пристрастием посмотрел - не мигает совершенно, только цифирьки аккуратно меняются. А на луа и присматриваться не надо - сразу по глазам бьет.
Формат данных в таблице луа
Пользователь
Сообщений: Регистрация: 01.06.2015
15.02.2017 14:57:15
Интересно, а зачем нужна функция Clear? "Удаляет содержимое таблицы с идентификатором «t_id». Если чтобы заново записать таблицу не думая о количестве рядов, как я делаю в купайле функцией DELETE_ALL_ITEMS(). То не очень - таблица мигает. В купайле не мигает
Формат данных в таблице луа
Пользователь
Сообщений: Регистрация: 01.06.2015
15.02.2017 13:48:00
ОК. Понял. Спасибо.
Формат данных в таблице луа
Пользователь
Сообщений: Регистрация: 01.06.2015
15.02.2017 13:34:28
Цитата
Sergey Gorokhov написал: округлить число до двух знаков и вывести
Целое? До двух знаков? Это как?
Формат данных в таблице луа
Пользователь
Сообщений: Регистрация: 01.06.2015
15.02.2017 13:13:34
Ширину понятно как установить. А как вывести целое число с двумя, например знаками? Или строки выровнить в право, а не влево?
Sleep в индикаторе
Пользователь
Сообщений: Регистрация: 01.06.2015
13.02.2017 15:52:55
Алексей, Кажется с вашей помощью я понял особенную логику индикаторов арки. Буду копать в указанном вами направлении. Спасибо.
Не понял - на графике рисуется C(Index), а не SetValue. Как на графике нарисовать свои данные и желательно, для экономии ресурсов, одним действием?
SetRangeValue
Пользователь
Сообщений: Регистрация: 01.06.2015
13.02.2017 12:32:24
Смысл в том чтобы расчет проводить не в индикаторе (то есть не в потоке квика, как я понимаю). А в индикатор передать уже готовые данные и просто нарисовать.
Импорт линий и меток на график, Автоматизация рисования уровней на графике
Пользователь
Сообщений: Регистрация: 01.06.2015
12.02.2017 11:35:06
Позволяет, но не очень. У меня так получилось -
Sleep в индикаторе
Пользователь
Сообщений: Регистрация: 01.06.2015
11.02.2017 18:24:10
Цитата
swerg написал: Индикаторы пересчитываются по каждому мовому данному, фактически по каждой сделке по инструменту. вы можете ограничить частоту расчета просто пропуская отдельные вызовы но лучше, конечно, написать индикатор так, чтобы он не тормозил
Облом. Не нашел способа как пропустить вызов OnCalculate. Пустой return или его отсутствие стирает всё.
Sleep в индикаторе
Пользователь
Сообщений: Регистрация: 01.06.2015
11.02.2017 11:47:33
Алексей, Как правило меняются максимум только два последних значения и можно было бы попробовать подумать как не перерисовывать остальные. Но при первом расчете (применить \/ добавить \/ ОК) квик все перерисовывает, потом вроде нет... Как узнать намерения квика в каждом конкретном случае я не вижу. Скорость обновления меня практически не волнует. И 5 сек устроит. Что было бы существеннее экономии на перерисовке. Но можно ли применять слип и куда его вставить техподдержка молчит.
Sergey Gorokhov написал: Как уже говорилось, индикаторы будут переписаны. Не сейчас, но будут.
То есть не просто "просто пропускайте их и все"?
SetRangeValue
Пользователь
Сообщений: Регистрация: 01.06.2015
10.02.2017 12:53:27
Замечательная казалось бы функция, позволяющая вставлять точки гуртом, а не по одиночке. SetRangeValue(1, index-range, index-1, nil) Но она принимает только скаляр, то есть нарисовать можно только горизонтальную линию или все стереть. И кстати почему с помощью SetRangeValue и SetValue нельзя поставить значение на последней свечке? В чем смысл такого ограничения?
INDICATORS.ZIP
Пользователь
Сообщений: Регистрация: 01.06.2015
10.02.2017 12:05:56
Цитата
s_mike@rambler.ru написал: Дело в том, что это совсем не так просто, как пишет Сергей Горохов. Иначе это было бы сделано в примерах индикатора из архива. Нужно делать дополнительный буфер свечей,
Я именно об этом. А он делает вид что не понимает. В общем, спасение утопающих...
валерий написал: Sergey Gorokhov , Индекс в OnCalculate(index). Конкретно, вот график с одной фишкой, пропуски не показывать, фильтр по дневной сессии. Какие свечи будет перебирать индекс? Только те что на графике?
OnCalculate вернет столько свечек сколько на графике.
Будем надеяться, что сие есть стандарт. Вечный. Спасибо.
валерий написал: Это в 7.2. А что в 7.7? Организовать вычисления при наличии пустых свечек конечно можно, но это накладно и в 99 случаях не нужно.
Никто Вас не заставляет "производить вычисления при наличии пустых свечек", просто пропускайте их и все. Именно это корректно позволяют сделать изменения в 7.7.
Ну да, тогда о чем же эта тема? И почему бы в ваших индикаторах в просто не вставить "просто пропускайте их и все"? Делов-то.
INDICATORS.ZIP
Пользователь
Сообщений: Регистрация: 01.06.2015
10.02.2017 10:48:39
Sergey Gorokhov, Индекс в OnCalculate(index). Конкретно, вот график с одной фишкой, пропуски не показывать, фильтр по дневной сессии. Какие свечи будет перебирать индекс? Только те что на графике?
Settings =
{
Name = "+PE",
fname = "OSCp",
line=
{
{
Name = "eq - ",
Color = RGB(40, 80, 190),
Type = TYPE_LINE,
Width = 1
},
{
Name = "pos - ",
Color = RGB(255, 60, 50),
Type = TYPE_LINE,
Width = 2
}
}
}
function Init()
return #Settings.line
end
function OnCalculate(index)
local fnm = "\\" .. Settings.fname .. ".txt"
if index == Size() then
local callResult, result = pcall(dofile, getScriptPath() .. fnm)
if not callResult then
return
end
SetValue(index-#eq, 1, nil)
SetValue(index-#pos, 2, nil)
local cnt = 0
for i = index-#eq+1, index-1 do
cnt = cnt + 1
SetValue(i, 1, eq[cnt])
SetValue(i, 2, pos[cnt])
end
return eq[#eq], pos[#pos]
end
end
В файле для дуфайл - типа этого: pos={0.00,0.00,0.00,1.00,1.00,} eq={0.43,0.43,0.43,0.45,0.44,} только длиннее - 300-500 палок.
INDICATORS.ZIP
Пользователь
Сообщений: Регистрация: 01.06.2015
10.02.2017 10:03:53
Цитата
Sergey Gorokhov написал: Как связан фильтр по времени с наличием либо отсутствием пустых свечек?
Обобщу. Индекс теперь будет перебирать все свечи, что у него в базе данных, или только те, что на графике? И фильтр по времени, и фильтр на пропуски.
Sleep в индикаторе
Пользователь
Сообщений: Регистрация: 01.06.2015
10.02.2017 00:06:35
Алексей, Меня интересует просто рисовалка готовых данных. Никаких расчетов нет. Все рисуется на последнем баре - SetValue. Скорость не важна. Лишь бы при большом количестве индикаторов не тормозился сам квик.
Sleep в индикаторе
Пользователь
Сообщений: Регистрация: 01.06.2015
09.02.2017 23:59:41
swerg, Тормозить не должен, все просто - взять готовые данные и нарисовать. Впрочем тормоза странные - все бегает, процессор на две трети пуст, но иногда тормозит правая кнопка мыши или по двойному щелчку стакан открывается с задержкой.
Цитата
пропуская отдельные вызовы
Вы имеете в виду поставить счетчик на первом баре и пока он не сработает просто пустой return? Надо попробовать.
Sleep в индикаторе
Пользователь
Сообщений: Регистрация: 01.06.2015
09.02.2017 17:20:34
Такое впечатление, что если повесить много даже простых индикаторов, квик начинает подтормаживать. Как часто рассчитываются индикаторы? На каждом тике? Как можно ограничить частоту расчета? Куда бы можно было вставить слип? Не очень понятно.
INDICATORS.ZIP
Пользователь
Сообщений: Регистрация: 01.06.2015
09.02.2017 16:48:33
Это в 7.2. А что в 7.7? Организовать вычисления при наличии пустых свечек конечно можно, но это накладно и в 99 случаях не нужно.
INDICATORS.ZIP
Пользователь
Сообщений: Регистрация: 01.06.2015
09.02.2017 14:48:42
Кстати, хотелось бы уточнить. Если на графике стоит фильтр по времени, то отсутствующие свечи все равно теперь будут подаваться в функцию индикатора?
Концепции Амиброкера это почемуто не противоречит и пользователей устраивает. Я же не сам это придумал. Любой индикатор это вообще то, чего реально нет. Это отражение реальности, а не сама реальность. Способов отражения, в том числе и пропусков, несчетное множество. А предложение позволяет пользователю выбрать или самое простое и ходовое zero-order hold или полную своду творчества или компромисс, когда по нулевым объемам можно выявить пропуски и как-то дополнить зох.
INDICATORS.ZIP
Пользователь
Сообщений: Регистрация: 01.06.2015
08.02.2017 15:45:47
Слава богу! Да еще, прошу зафиксировать предложение по стандарту. На графике клиент выбирает нужны пустые интервалы или нет. На сдвоенных графиках выбирает чем пустые интервалы заполняются: нулями, предыдущими значениями или только объем нулями, а остальное предыдущими. Ну а функции клуа - визивиг.
INDICATORS.ZIP
Пользователь
Сообщений: Регистрация: 01.06.2015
08.02.2017 13:58:17
Вопрос тем кто пользует 77, сам я с большииим лагом обновляюсь. А на графиках как нововведение отражается? Пустые интервалы теперь убрать нельзя?
INDICATORS.ZIP
Пользователь
Сообщений: Регистрация: 01.06.2015
08.02.2017 09:32:38
Давно так не смеялся... Стандарт это когда выбираешь нужный размер одежды из набора стандартных, а кода юбка не выше колена... Еще хуже, когда ботинки только одного стандарта.
dofile
Пользователь
Сообщений: Регистрация: 01.06.2015
03.02.2017 15:39:05
Понял. Спасибо.
dofile
Пользователь
Сообщений: Регистрация: 01.06.2015
03.02.2017 13:33:09
Использую dofile для постоянной подгрузки данных в виде таблицы из текстового файла типа: qq={113.00,113.00,-0.99,-1.03,-0.79,-0.93,-0.66,-0.84,} Подлиннее конечно. Но раз в минут 15-20, луа сообщает об ошибке: " '}' expected near '<eof>' ". Похоже он обращается к еще не закрытому и недописанному файлу. Некритично, так как продолжает работать, но неприятно. Может что посоветуете?
Последний индекс
Пользователь
Сообщений: Регистрация: 01.06.2015
24.01.2017 00:00:35
Можете это в виде кода написать?
Последний индекс
Пользователь
Сообщений: Регистрация: 01.06.2015
23.01.2017 23:59:15
Что значит "просто запомнить предыдущее значение"? На каком индексе его брать и запоминать?
Последний индекс
Пользователь
Сообщений: Регистрация: 01.06.2015
23.01.2017 23:50:19
Как узнать значение? На какой свечке? Если на первой там все понятно, но оно не будет соответствовать последнему расчету. А как на последней, если я не могу ее определить?