Получение исторических значений для Implyed Volatility
Пользователь
Сообщений: Регистрация: 23.12.2017
13.12.2024 20:36:22
Цитата
Андрей написал: Добрый день, у меня вопросы по получению данных опционов: 1) Как можно получить параметр подразумеваемой волатильности для выбранного страйка, или же в целом улыбку (ImplyedVolatility) 2) Как можно получить данный параметр за прошлое время ?
Цель - хочу построить график ATM волатильности для базового актива.
Интересует именно QLua.
Получение исторических значений для Implyed Volatility
Пользователь
Сообщений: Регистрация: 23.12.2017
13.12.2024 20:35:47
Добрый день, у меня вопросы по получению данных опционов: 1) Как можно получить параметр подразумеваемой волатильности для выбранного страйка, или же в целом улыбку (ImplyedVolatility) 2) Как можно получить данный параметр за прошлое время ?
Цель - хочу построить график ATM волатильности для базового актива.
Trans2Quik.dll Где найти инструкцию по подобию "Get Started" ?, Где найти инструкцию по подобию "Get Started" ?
Ссылки для скачивания библиотеки trans2quik.dll (в архиве также есть примеры на C++ и C#): - , -
По функционалу см. Руководство пользователя QUIK: раздел 6. "Совместная работа с другими приложениями", п. 6.10. "Импорт транзакций через API" .
Благодарю. Подскажите еще, есть ли какая то страница где выкладываются обновления по данной библиотеке ? Или же всегда по запросу ее можно только получить ?
Trans2Quik.dll Где найти инструкцию по подобию "Get Started" ?, Где найти инструкцию по подобию "Get Started" ?
Пользователь
Сообщений: Регистрация: 23.12.2017
12.10.2024 21:21:04
Добрый день. Меня интересуют следующие вопросы (знаю тема не нова кто использует библиотеку просьба не кидаться кетчупом)
1) Где найти страницу с приложенной последней актуальной версией библиотеки trans2quik.dll (и в идеале возможность выбора версий в зависимости от версии терминала) ? 2) Есть ли где либо (в гите / или на сайте) примеры взаимодействия C# и квика через trans2quik.dll ? 3) Поддерживает ли библиотека стандарт .net 2.0 ? (в частности интересует работа с верcисями .net 6 или .net 8 версия C# 10 или 11) 4) Где найти страницу по подобию "GetStarted" ? 5) Есть ли документация / описание функций / возможностей ? Где ее найти ?
Просьба отозваться всех кто имеет опят работы
Как квик считает волатильности бида и аска ?
Пользователь
Сообщений: Регистрация: 23.12.2017
01.08.2018 16:49:56
Подскажите как квик выворачивает волатильности бида и аска ? То что улыбка транслируется биржей - я знаю, меня интересует именно подсчет волатильности по ценам.
Я в своей программе считаю волатильность через метод Ньютона Рафсона, получается хорошо для опционов дата экспираций которых достаточно сильно оттдалена от текущего момента. , однако для опционов которые экспирируются завтра - расчет разительно расходится с данными квика. Подскажите как Вы считаете волатильность по переданной цене ?
Создает ли CreateDataSource источник данных если его запустить во внерабочее время ?
Пользователь
Сообщений: Регистрация: 23.12.2017
07.04.2018 21:22:21
Благодарю
Создает ли CreateDataSource источник данных если его запустить во внерабочее время ?
Пользователь
Сообщений: Регистрация: 23.12.2017
07.04.2018 21:22:11
Да, наверное все празнуют)
Посмотримс, если что то методом тестов проверять буду все
Создает ли CreateDataSource источник данных если его запустить во внерабочее время ?
Пользователь
Сообщений: Регистрация: 23.12.2017
07.04.2018 18:05:18
Игорь Б, Нет, мне нужно не в потоковом режиме (описанная тобой функция же поэтапно "в режиме реального времени" предоставляет инфу). Мне же нужна функция, которая бы при каждом вызове давала информацию о направлении последней сделки (работающая не как коллбек, а как функция выдающая значение даже на нелеквиде за последнюю сделку) - для этого из таблицы тягать буду это значение, а что бы делать это, нужна подписка на тики
Но это мы уже отклонились от заданного мною вопроса, я не про тики конкретно спрашивал, а вовсе про CreateDataSource
Создает ли CreateDataSource источник данных если его запустить во внерабочее время ?
Пользователь
Сообщений: Регистрация: 23.12.2017
07.04.2018 16:30:52
Да вроде и на минутках тоже зависал...
Тики в другом скрипте нужны (пишу на С++ обертку для функций торгующих, и там в одной из функций планируется возвращать направление предыдущей сделки (нужна подписка на обезличенные сделки) по этому тики нужны, так как при их заказе (судя по информации с данного форума) создается подписка на обезличенные сделки).
Создает ли CreateDataSource источник данных если его запустить во внерабочее время ?
Пользователь
Сообщений: Регистрация: 23.12.2017
07.04.2018 14:46:51
Доброго времени суток, вопрос следующий: Создает ли CreateDataSource источник данных если его запустить во внерабочее время ?
Дело в том, что в моих скриптах ,всегда когда я создаю источник данных перед началом сессии или же во внерабочее время (по фьючерсам имею ввиду, к примеру во время клиринга или же ночью) то Size() всегда зависает равным 0. После я перезапускаю обычно скрипт когда начинаются торги.
Если не перезапускать скрипт, то тогда изменится ли Size() на адекватное значение и пойдут ли котировки ? Или же обязательно нужно перезапускить (либо програмно раз в пару мин к примемеру проверять создался ли источник данных и пересоздавать его вновь если значение size() все еще равно нулю ?)
Дабы не быть голословным вот пример:
Код
main = function()
class_code = "SPBFUT";
sec_code = "RIU8";
ds, Error = CreateDataSource(class_code, sec_code, 0)
while (Error == "" or Error == nil) and ds:Size() == 0 do sleep(1) end; -- вот в этом цикле зависает скрипт если во внерабочее время запустить данный пример. Зависает из за того что size() == 0
ds:SetEmptyCallback();
message("Источник создан");
end;
Вполне возможно он все таки сам выйдет из этого цикла, но у меня не когда не хватало терпения это проверить, сразу же перезапускал.
Ошибка получения параметра "order_num" поля таблицы "orders" через lua_CApi.
Пользователь
Сообщений: Регистрация: 23.12.2017
05.04.2018 10:29:02
Вы правы господа, не думал что order_num превысит int.
Ошибка получения параметра "order_num" поля таблицы "orders" через lua_CApi.
Egor Zaytsev, Прозьба просмотреть и дать ответ на мой вопрос вот из этой темы:
Похоже все таки какая то ошибка происходит во время стыковки с квиком, так как для фьючерсов описанный мною способ работает верно, а вот для акций - возвращает не верное значение запрашиваемого параметра.
Ошибка получения параметра "order_num" поля таблицы "orders" через lua_CApi.
Пользователь
Сообщений: Регистрация: 23.12.2017
04.04.2018 17:49:01
Причем, если брать фьючерсы вместо акций,то скрипт работает верно.
Ошибка получения параметра "order_num" поля таблицы "orders" через lua_CApi.
Пользователь
Сообщений: Регистрация: 23.12.2017
04.04.2018 17:47:11
Здравствуйте, данный вопрос является продолжением начатой мною темы: Которая перешла в несколько иное русло.
Как уже писал в данной теме, я не смог удалить ордер из за того, что не получилось передать в качестве параметра требуемый order_num.
Когда я протестировал два одинаковых скрипта (один на чистом lua, а другой на lua_CApi ) - то обнаружил интересную закономерность (либо я криворукий... поправте в случае нахождения ошибки) первый скрипт - на qlua - возвращает верное значение lua_CApi. Второй (скрипт близнец) - на С++ с использованием lua_CApi - возвращает значение order_num: -2147483648
Ниже представляю оба тестовых скрипта: большая просьба как к админам, так и просто к тем кто пишет ботов на С++ так же как и я поправить или же прокомментировать мои ошибки, или же как можно обойти встречную мною ситуацию:
Qlua:
Код
function main()
for i = getNumberOf("orders")-1,0,-1 do
T = getItem("orders",i);
if T.sec_code == "ROSN" and
bit.test(T.flags,0) then
message(tostring(T.order_num));
end;
end;
end;
Кстати говоря, написал вам тут как делаю, после сам интереса рази пересобрал все быстро в Луа - и понял что поспешил позоже. (луа скрипт сработал в отличии от моего), придется свое творение дебагить получше
Egor Zaytsev написал: В ручном режиме снять заявку удается? Выложите полный скрипт.
Да в ручную удается. Снятие ордера делаю из dll через написанную (и протестированную) мною обертку. для sendTransaction. Описание обертки тут:
Функция удаляющая ордера:
Код
double count_time_diff(std::chrono::time_point<std::chrono::system_clock> t)
{
auto end = std::chrono::system_clock::now();
std::chrono::duration<double> elapsed_seconds = end - t;
return elapsed_seconds.count();
}
bool deleteOrder(Symb_data params, int order_num, bool is_stopOrder, lua_State *L)
{
lua_settop(L, 0);
bool ans = false;
Ttransaction T(L, params);
int trans_id = T.trans_id();
T.classcode();
T.seccode();
if (is_stopOrder)
{
T.action(order_Action::KILL_STOP_ORDER);
T.stop_order_key(order_num);
}
else
{
T.action(order_Action::KILL_ORDER);
T.order_key(order_num);
}
std::string res = sendTransaction(T);
if (res.compare("") == 0)
{
ans = true;
auto doLoop = [&]()
{
bool ans = false;
std::vector<OrderData> orders;
if (get_Orders_Info(orders, params))
{
for (size_t i = 0; i < orders.size(); i++)
{
if (orders[i].trans_ID == trans_id)
{
ans = true;
break;
}
}
}
return ans;
};
auto start = std::chrono::system_clock::now();
while (count_time_diff(start) <= 30 && doLoop())
{
Sleep(1);
}
if (doLoop())
ans = false;
}
else
{
res = "Ошибка удаления ордера:\n " + res;
msg_ToQuik(L, res, 3);
}
return ans;
}
Да, хоть я и пишу на С++, но все работает. Данная функция справляется со своими задачами на фьючерсах, а вот лимитку на акциях удалить не получается...
Ошибка "Вы не можете снять эту заявку"
Пользователь
Сообщений: Регистрация: 23.12.2017
04.04.2018 12:11:20
Возможно есть еще какие нибудь варианты ?
Ошибка "Вы не можете снять эту заявку"
Пользователь
Сообщений: Регистрация: 23.12.2017
04.04.2018 12:10:56
Цитата
Egor Zaytsev написал: С подобной проблемой уже на форуме обращались. Например здесь можно найти решение:
Благодарю за ответ, однако мне это не поможет. Заявка точно активна и ORDER_KEY точно передается как string .
Ошибка "Вы не можете снять эту заявку"
Пользователь
Сообщений: Регистрация: 23.12.2017
03.04.2018 19:22:50
И еще поправка более верно ошибка звучит так: "Вы не можете снять ДАННУЮ заявку"
PS Сделайте как нибудь на досуге возможность редактирования тем и сообщений на форуме.
Ошибка "Вы не можете снять эту заявку"
Пользователь
Сообщений: Регистрация: 23.12.2017
03.04.2018 19:12:47
Не знаю имеет ли это значение, но ордер который я намереваюсь удалить. был выставлен вручную.
В итоге получаю описанную выше ошибку. подскажите какие поля я не верно заполняю ? Стараюсь снять заявку на акциях.
Даты экспираций в структурах orders и stop_orders
Пользователь
Сообщений: Регистрация: 23.12.2017
03.04.2018 18:04:30
Вопрос №1 В каких случаях дата жкспирации может равняться "-1" ? (имеются ввиду поля таблиц где она как число представлена) Вопрос №2 Почему возвращается дата экспирации равная "1601.01.01 00:00:00" даже в случае когда ордер выставлен не как "До отмены", а как "До определенной даты"?
в каких случаях order_date_time == nil в таблице orders
Пользователь
Сообщений: Регистрация: 23.12.2017
03.04.2018 11:39:27
У меня с выше описанной ситуацией как раз ток (только уже запрашиваю T.expiry)
в каких случаях order_date_time == nil в таблице orders
Пользователь
Сообщений: Регистрация: 23.12.2017
03.04.2018 11:38:39
Еще вопрос, в каких случаях поле "expiry" в таблице orders может быть равным -1 ?
в каких случаях order_date_time == nil в таблице orders
в каких случаях order_date_time == nil в таблице orders
Пользователь
Сообщений: Регистрация: 23.12.2017
03.04.2018 10:21:09
По инструменту открыта лимитка на покупку. счет правда демка Ваша, но думаю это не должно влиять на правильность работы функции.
Следующий код от чего то показывает что поле order_date_time == nil Подскажите в чем может быть причина ?
Код
function main()
for i = getNumberOf("orders")-1,0,-1 do
T = getItem("orders",i);
if T.sec_code == "SiM8" and
bit.test(T.flags,0) then
message(tostring(T.order_date_time));
end;
end;
end;
Расчет стоимости фьючерсов, Как определить программно стоимость позиции или лота "сложных" фьючерсов на индексы и биржевые товары (Ri, BR и др.)
Пользователь
Сообщений: Регистрация: 23.12.2017
01.04.2018 18:12:46
Создайте функцию. опишите все, входные параметры снизте по минимуму и готово
Расчет стоимости фьючерсов, Как определить программно стоимость позиции или лота "сложных" фьючерсов на индексы и биржевые товары (Ri, BR и др.)
Пользователь
Сообщений: Регистрация: 23.12.2017
01.04.2018 10:44:02
Цитата
Иван Ру написал: Уточняю, мне нужен рублевый эквивалент стоимости одного фьючерса (1 лота),
Для одного лота по РТС: РТС(руб) = 10 * 0,02 * курс доллара(вечерний) где: 10 - шаг цены в пунктах
Для бренд - шаг в спецификации смотреть)
Расчет стоимости фьючерсов, Как определить программно стоимость позиции или лота "сложных" фьючерсов на индексы и биржевые товары (Ri, BR и др.)
Пользователь
Сообщений: Регистрация: 23.12.2017
01.04.2018 10:42:10
Возможно требуется что то в роде этого:
По РТС = Цена в пунктах * 0,02 * курс доллара.
0,02 - стоимость шага цены на РТС, на бренд должно быть в спецификации где то указано. Курс доллара - берется на вечернюю сесиию. (как то раз для тестов пробовал переводить по данной формуле РТС в рубли, на бирже где то была выкладка курсов для перевода, ну и квик сигнализирует постоянно о них но где таблично эти значения взять - не знаю).
Где ошибка при подписки на тиковые данные ?
Пользователь
Сообщений: Регистрация: 23.12.2017
01.04.2018 09:54:53
Цитата
Борис Гудылин написал: Можно увидеть живьем Ваш DataSource.
Где ошибка при подписки на тиковые данные ?
Пользователь
Сообщений: Регистрация: 23.12.2017
01.04.2018 09:45:32
Цитата
Борис Гудылин написал: Определитесь, что же Вам надо на самом деле - количество открытых позиций или количество совершенных сделок.
Это старая тема, тогда нужны были тики, сейчас OI. А в целом это и много еще чего в дальнейшем возможно понадобится.
Цитата
Борис Гудылин написал: Для дневок будет 1 (одна) свечка. Разработчики обоснуют - почему.
С отрисовкой графиков все в порядке, если на реале и должна быть одна свечка на дневном графике, то тогда только вопрос к разработчикам (от чего так ???) Демка мне нужно то только для теста правильности срабатывания функций торговли, а не для тестов робота)
Где ошибка при подписки на тиковые данные ?
Пользователь
Сообщений: Регистрация: 23.12.2017
31.03.2018 17:07:14
Дабы не плодить лишние темы, спрошу здесь, в чем может быть ошибка (на вашей демке на сей раз) в этом вот скрипте, стараюсь получить OI по дневному графику:
Код
DS = {};
function main()
DS.oi, err = CreateDataSource("SPBFUT", "RIM8", 1440,"numtrades");
while (err == "" or err == nil) and DS.oi:Size() == 0 do sleep(1) end;
message(tostring(DS.oi:Size()));
end;
Проблема та же. На реальном счете, нету зависаний в цикле, однако вместо этого возвращается размер равный 1, хоть данных более чем достаточно. (точно больше одной свечи на дневном графике)))
Поле "param_value" из таблицы ф-ции "getParamEx" и "getParamEx2"
Пользователь
Сообщений: Регистрация: 23.12.2017
27.03.2018 18:01:16
Благодарю
Где ошибка при подписки на тиковые данные ?
Пользователь
Сообщений: Регистрация: 23.12.2017
27.03.2018 17:44:25
Кстати да, от чего то не строится...
Где ошибка при подписки на тиковые данные ?
Пользователь
Сообщений: Регистрация: 23.12.2017
27.03.2018 17:26:45
Прикладываемый код не как не может выйти из цикла. Но если подписываться на минутки к примеру, то подписка срабатывает.
Код
main = function()
class_code = "SPBFUT";
sec_code = "RIM8";
ds, Error = CreateDataSource(class_code, sec_code, 0)
while (Error == "" or Error == nil) and ds:Size() == 0 do sleep(1) end;
ds:SetEmptyCallback();
end;
Поле "param_value" из таблицы ф-ции "getParamEx" и "getParamEx2"
Пользователь
Сообщений: Регистрация: 23.12.2017
27.03.2018 15:26:02
В инструкции сказано, что данное поле мажет содержать следующие типы данных :
«1» - DOUBLE;
«2» - LONG;
«3» - CHAR;
«4» - перечислимый тип;
«5» - время;
«6» - дата
Меня интересует как представляются последние два типа данных ? Структура(если да, то какие конкретно поля в ней) или же числовое значение ? (к примеру дата в Unix формате).
Заранее благодарю.
Установка Quik на Linux
Пользователь
Сообщений: Регистрация: 23.12.2017
23.03.2018 18:11:05
Благодарю за отзыв, попробую повозиться. Ищу просто альтернативу виндовс хостингу (для алгоритмической торговли) Линукс хостинги вроде за те же деньги более интересные варианты предлагают. Вот и задумался над подобной стыковкой.
MT5 кстати на линукс не ставили случаем? он мне тоже понадобится
Установка Quik на Linux
Пользователь
Сообщений: Регистрация: 23.12.2017
23.03.2018 17:31:29
Доброго времени суток, хотелось бы узнать есть ли надежный способ поставить Quik на линукс системы (Debian, Ubuntu...) Какие зависимости нужны будут и не будет ли глючить. Так же интересно будет ли работать Lua и стыковки Lua + C++ dll при банной установки. Возможно где то есть готовая инструкция по подобной установке ?
понять демо или реальный qlua
Пользователь
Сообщений: Регистрация: 23.12.2017
14.03.2018 13:27:22
Благодарю всех за ответы.
понять демо или реальный qlua
Пользователь
Сообщений: Регистрация: 23.12.2017
13.03.2018 20:56:56
Доброго времени суток господа.
Подскажите, как Вы отличаете демо от реала используя Qlua ?
CreateDataSource Params
Пользователь
Сообщений: Регистрация: 23.12.2017
09.03.2018 14:25:31
Данный вопрос уже поднимался на форуме, однако у меня он возник вновь. Я выгрузил параметры из таблицы текущих торгов, однако хотелось бы узнать какие из них лишние? К примеру ISIN-код бумаги явно не вписывается в концепцию источников данных... Возможно существует готовый и отредактированный список ? У меня получилась следующая выгрузка,:
оформление таблицы съехало. но в общем разобраться можно. (переменная, описание как оно уже есть, тип принемаемый полем, тип Луа, тип С++ (так как я к примену на плюсах пишу и с Луа стыкую))
2) К таблицам добавить типы данных каждой из строк таблицы
Уточните, что здесь имеется ввиду под типами данных?
Цитата
3) Сделать описание типов данных к таблице для функции sentTransaction (я знаю что там все в виде строк передается, но нужно сделать описание исходных типов данных)
Значения полей соответствуют параметрам, описанным в Руководстве пользователя QUIK, в разделе «Формат .tri-файла с параметрами транзакций».
опишу на небольшом примере. И так по всем таблицам, переменным...
А аналогом какого формата они являются ? (int, long, double...) и какова должна быть точность после запятой ?
Улучшить документацию по Qlua
Пользователь
Сообщений: Регистрация: 23.12.2017
07.03.2018 09:18:31
1) Сделать как можно больше примеров (по возможности на каждую из функций)
2) К таблицам добавить типы данных каждой из строк таблицы
3) Сделать описание типов данных к таблице для функции sentTransaction (я знаю что там все в виде строк передается, но нужно сделать описание исходных типов данных)
4) перенести Api Qlua на С++. (это даст пользователям куда больше возможностей для написания роботов и этим Вы сможете несколько упрочить свои позиции на рынке. ведь тот же Mql5 и то более удобен для написания роботов. НО НЕ ДЕЛАЙТЕ еще один Mql5! Этих специализированных языков (которые не дают возможности сделать что то кроме своей узкой задачи и так полно...) ).
вопросы по полям sentTransaction
Пользователь
Сообщений: Регистрация: 23.12.2017
07.03.2018 08:44:57
Я знаю что все поля заполняются как строки, но мне нужно знать каков изначальный тип данных (я позже перевожу его в строковый формат)
Подскажите какому типу соответствует значение следующих полей (и до какого знака нужно их округлять, если тип double или float): START_DISCOUNT LOWER_DISCOUNT UPPER_DISCOUNT PARTNER SETTLE_CODE REPOTERM REPORATE REFUNDRATE SETTLE_DATE - интересует формат даты в строке "YYYYMMDD" ? BASE_ORDER_KEY VOLUMEMN VOLUMEPL KFL KGO
Как разделить строку на отдельные числа?, Исторические данные
Пользователь
Сообщений: Регистрация: 23.12.2017
03.03.2018 13:21:59
Я не люблю луа, так что с ним приходится только для примеров сталкиваться. делаю сейчас для себя некий API простенький для подключения к квику из С++. А Луа использую только что бы примеры функций написать (а далее их уже переписываю на плюсах). Так что с отладчиком не помогу к сожалению.