Некто (Все сообщения пользователя)

Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Скрипт, сохраняющий историю., Я пока учусь :)
 
Цитата
Дмитрий пишет:
Совершенно верно
Цитата
Старатель пишет:
В обоих случаях должно возвращаться одинаковое число свечей. Если это не так, - ищите ошибку у себя.
Интересно, кто прав?  :)  

Цитата
Старатель пишет:
В настройках графика нет пункта "отображать данные за один день", но есть настройка Intra-day, где указывается нужное время.
Хотел вставить скриншот, но сценарий страницы глючит, даже браузер "не отвечает". На словах объясню.
Можете без ЭЦП и без подключения к серверу Квик запустить - там ищите.
Контекстное меню графика - "Параметры текущего окна" - появится окно "Настройка параметров диаграммы" - вкладка "Диаграмма" - " Показывать графики" есть пункт "выбрать с" - можно выбрать на определённый день, но только до 18:45, так что, хоть там и
Цитата
Старатель пишет:
нет пункта "отображать данные за один день"
однако, есть пункт с другим названием, но отображающий данные именно за один день.

Цитата
Старатель пишет:
есть настройка Intra-day, где указывается нужное время.
Видимо, это может подойти тем, кто каждый день будет сохранять историю после 23:49. Приятного им времяпрепровождения.
Скрипт, сохраняющий историю., Я пока учусь :)
 
Цитата
Некто пишет:
Хочу сделать скрипт, сохраняющий в файл историю, как с Финама (потом сравню ).
Как я и хотел, скрипт сохраняет в файл историю в том же формате, что и один из возможных при скачивании с Финама.
Есть только одна сложность: в текущей версии мой код просто сохраняет данные всех свечей на минутном периоде. Чтобы сравнить с файлами Финама, пришлось в текстовом редакторе вырезать данные по трём дням в отдельные файлы. Сравнил - они совпадают байт-в-байт.
Чтобы не возиться с редактированием в текстовом редакторе, я хотел установить через контекстное меню графика Квика ограничение - отображать график за один день, сохранять моим скриптом его данные в файл, потом сравнивать с файлом с Финама с данными за тот же день.
На графике, при настройке в контекстном меню отображать данные за один день, отображаются данные по фьючерсам только до вечерней сессии (кажется, до 18:49). Но мне-то надо до 23:49!

Вопрос: можно ли как-то настроить в Квике отбражение минутных графиков фьючерсов с 10:00 до 23:49?

Если нет, то придётся мне совершенствовать код, чтобы он сам сохранял историю за каждый день по отдельным файлам.
Скрипт, сохраняющий историю., Я пока учусь :)
 
Цитата
Некто пишет:
Для Si getNumCandles() в 21:30 возвращает бОльшее число.
Днём не проверял, завтра посмотрю.
Скрипт, сохраняющий историю., Я пока учусь :)
 
В своём скрипте сначала вызываю getNumCandles(), потом getCandlesByIndex(), потом сравниваю кол-во свечей, которые они вернули.
Для графика Сбера периодов 1 и 2 мин они равны. Для Si getNumCandles() в 21:30 возвращает бОльшее число.
Возможно, это связано с тем, что на FORTS после 19:00 начинается новая сессия?
Функция os.exit().
 
Цитата
Sergey Gorokhov пишет:
Попробуйте функцию error (message [, level])
Так она, вроде, не прекращает выполнение скрипта?
Функция os.exit().
 
Цитата
Sergey Gorokhov пишет:
Попробуйте функцию error (message [, level])
Цитата
Некто пишет:
Вопрос: как из функции, которая вызвана из другой, возможно, с большой вложенностью, вывести сообщение и затем завершить работу скрипта без цепочки "return"?
Завершить работу скрипта прямо в той функции, где обнаружена ошибка, без возврата и обработки.
error() во-первых требует вызова ра?ом во-вторых, возвращает управление.

1. А с os.exit() в Quik что не так?

2. Можно ли в QLua использовать assert()?
Функция os.exit().
 
Из main() вызов функции f(p), в начале которой проверяется параметр p:

Код
if p==nil then
   message("Ошибка.")
   os.exit()
end
Раньше я os.exit() никогда не использовал, ожидал, что просто завершится скрипт. Вместо этого Quik  закрылся в один миг, окна с сообщением "Ошибка" я не видел. Обычно Квик спрашивает подтверждение "Вы действительно желаете завершить работу?", но в данной ситуации этого не было.

Вопрос: как из функции, которая вызвана из другой, возможно, с большой вложенностью, вывести сообщение и затем завершить работу скрипта без цепочки "return"?
Максимальная длина идентификаторов.
 
Цитата
Sergey Gorokhov пишет:
Остальные ограничения из перечисленных такие же как и в обычном LUA
Ища в интернете ответ на вопрос
Цитата
Некто пишет:
Какая максимальная длина идентификаторов (имён функций, перемеменных, ну и что там ещё бывает) поддерживается в QLua?
я находил примерно такое: "Именами (идентификаторами) переменных в Lua могут быть любые последовательности из букв, цифр и символа подчеркивания, начинающиеся не с цифры. " и ни слова про длину.

Может, кто-то напишет, как оно
Цитата
Sergey Gorokhov пишет:
в обычном LUA
Максимальная длина идентификаторов.
 
Какая максимальная длина идентификаторов (имён функций, перемеменных, ну и что там ещё бывает) поддерживается в QLua?
Скрипт, сохраняющий историю., Я пока учусь :)
 
Цитата
Sergey Gorokhov пишет:
Кстати у нас даже готовый пример есть:
Просматривая код скрипта, я сразу обратил внимание, что в нём без нужды используется OnInit(), OnStop(), while WORK do. Я делаю без этого.
Запустил скрипт, жду... А он всё работает и работает... Пришлось останавливать.
А выход из while WORK do ... end сделать нельзя?

Резалт работы ВАШЕГО скрипта из выходного файла:

Цитата
DATE,TIME,OPEN,HIGH,LOW,CLOSE,VOL
20030605,000000,8.2,8.269,8.075,8.10205,596600
20030606,000000,8.148,8.189,8.06,8.172,314300
20030609,000000,8.13194,8.27,8.121,8.20197,731000
20030610,000000,8.2,8.23655,7.94,8.02473,1092500
Сразу видно, что время 000000 - это ошибка. Остальное не проверял, нет желания.

Я лучше сам сделаю код, который будет работать правильно, чем юзать уродства, сделанные чёрти как.
Цитата
Некто пишет:
Теперь понятно, почему Quick такой глючный - его программируют не по KISS, а по "вполне нормальным" принципам.
Скрипт, сохраняющий историю., Я пока учусь :)
 
Цитата
Sergey Gorokhov пишет:
Попробуйте поискать например в документации Qlua.chm
Я нашёл нужную инфу и закодировал раньше, чем прочёл написанные Вами строки  :D  


Цитата
Sergey Gorokhov пишет:
Нет это не "из пушки по воробьям" а вполне нормальный доступ к данным.
Изучать 2 функции, кодировать код с колбэком, изучать "то что создается функцией CreateDataSource", и т. д. и т. п. вместо элементарного использования getCandlesByIndex? Теперь понятно, почему Quick такой глючный - его программируют не по KISS, а по "вполне нормальным" принципам.

------------------------------------------------------------------------

Теперь мне надо форматированно сохранять данные из таблицы в файл истории. Я подозреваю, что форматирование будет сложнее того, что я делал на Lua раньше.
Скрипт, сохраняющий историю., Я пока учусь :)
 
А я уж начал с getCandlesByIndex возиться... Все темы на этом форуме, в инете, которые через поиск нашел посмотрел, но не нашёл инфу о структуре TABLE t, которую возвращает эта функция. Может, кто подскажет?


Цитата
Sergey Gorokhov пишет:
Задачу можно решить без открытия окна с графиком, через функции CreateDataSource и SetUpdateCallback
А это не "из пушки по воробьям"? Мне всего-то надо раз в день сохранить в файл истории новые данные.


Цитата
s_mike@rambler.ru пишет:
разбирайте возврат функции T().
В разделе справки "Функции O, H, L, C, V, T":
Цитата
Функции в качестве параметра принимают индекс свечи
и пример:
Код
Open = ds: O(1) 
Стыдно спросить, но:
1. Что такое "ds:"?
2. Индекс свечи какого графика (или чего-то другого?) вернёт O(1) ?
Скрипт, сохраняющий историю., Я пока учусь :)
 
Цитата
s_mike@rambler.ru пишет:
Создайте таблицу с целочисленными индексами и присваивайте по этим индексам таблицы с нужными вам полями.
С этим разобрался.

Теперь подскажите, пожалуйста, как получать год, месяц, число, час, минута, OHLC для свечи?
Пытался по справке разобраться, по разделу "Функции для доступа к источнику данных" и "Функции O, H, L, C, V, T", но там всё очень сумбурно - не понял.
Скрипт, сохраняющий историю., Я пока учусь :)
 
Хочу сделать скрипт, сохраняющий в файл историю, как с Финама (потом сравню  ;-)  ). Думаю сделать это по данным свечей графика (а как-то иначе можно?).

Для начала помогите, пожалуйста, разобраться с таблицами.
Планирую сделать таблицу, в которую потом будут помещены данные всех свечей с графика. Нужны: год, месяц, число, час, минута, OHLC.
На Си я бы описал структуру с OHLC и прочим, затем объявил бы массив таких структур. А как сделать это на Lua?
Подскажите, как использовать getNumCandles()?, Я пока учусь :)
 
Пишу свою первую программу на Lua, которая бы выводила количество свечей на графике сбера. В справке по Lua написано:

Цитата
Функция предназначена для получения информации о количестве свечек по выбранному идентификатору.
В качестве идентификатора попробовал использовать заголовок окна с графиком SBER, скопировал его заголовок 'Графики #8' в код:
Код
N=0
function main()
N=getNumCandles("Графики #8");
message("На графике " .. N .. " свечей." )
end
В окне сообщений скрипт выводит 0, хотя на графике сотни свечей.

В чём ошибка?
Точность чисел с плавающей точкой.
 
Цитата
s_mike@rambler.ru пишет:
вычисления все же лучше делать в double
Про вычисления тоже хочется знать, я забыл спросить.


Цитата
Николай Камынин пишет:
Тип float - 7 значащих цифр. double -15 цифр.
В справочнике написано, для long double и double точность

Цитата
не менее 10 значащих цифр.
Реальная точность зависит от компилятора (возможно, от опций компиляции).

По-быстрому сварганил:

Код
#include <stdio.h>
int main()
{
   printf("%.20f\n%.20f", 1.0/3.0, 1000+1.0/3.0);
   return 0;
}

Резалт:

Цитата
0.33333333333333331000
1000.33333333333340000000
вроде, 17 значащих цифр.

Буду double использовать.
Точность чисел с плавающей точкой.
 
1. Какую точность для чисел с плавающей точкой обеспечивают переменные Lua?

2. Если надо будет передать переменную из скрипта на Lua в модуль, написанный на Си, то в переменных какого типа языка Си лучше хранить значения High, Low, Open, Close? Нужно использовать long double, или хватит double?
Страницы: 1
Наверх