Quik собственность разработчиков. Право использования софта определяется лицензией. ------------------------ Немного не точно написал. Речь не про протокол DDE а про формат данных таблиц Excel. ------------------- Но в мой офисе его никто не реализовал. В Квике передача в Excel сделана еще в прошлом веке. ------------------
Serge123 написал: Случайно так получилось, что в начале торгов я быстро всё продал по хорошей цене, а она после этого быстро опустилась на 3 пункта и, похоже, на этом устаканилась. Хотя, вчера поздно вечером покупатели поддавливали. Да, не совсем оправдалось предположение автора канала "Профита нет"...
Для тех, кто не понял , поясняю. Пишите вместо драйвера ddе в мой офисе макрос (скрипт на луа), который получает данные из скрипта квика и помещает их в таблицы мой офис. Но можете взяться за написание драйвера DDE для мой офиса, если осилите.
Для справки. DDE это собственность майкрософ. ----------------------------- В Мой Оффисе для макросов используется Lua. Поэтому можно реализовать экспорт таблиц из QUIK через Lua вместо DDE
дополню ответ: Если процесс выполняется дольше, значение, возвращаемое функций clock, всегда равно (clock_t)(-1) в соответствии со стандартами ISO C99 (7.23.2.1) и ISO C11 (7.27.2.1).
По-поводу "дебильного" замечу: ---------------------------- Вообще-то опционов 26 тысяч штук и у каждого 52 параметра. Если фильтр не поставить то будете получать все 52 параметра по всем 26 тысячам .
--------------------------------- Зеркало не виновато.
VPM написал: nikolz, Ползает робот - пылесос и меня это совсем не смущает, стиральная машина стирает и меня это не смущает. В быту куда не ткнись наткнешься на Fuzzy Logic, и это ни кого не смущает. Срок говорит о проверке временем, и подтверждает тот факт, что решать задачи управления лучше простыми методами. Хотя при проектировании Fuzzy System легко наделать ошибок.
Вы ошибаетесь. В этих устройствах нет нечетких множеств. Но Вы можете верить, что там оно есть. Блажен, кто верует,...
Почему не дают доступ к папке arqatech.com/upload/Public/ ? Может быть, оттуда можно ещё что-то полезное накачать? Тут говорилось о примерах торговых программ "от арки", как их можно бесплатно скачать?
To All: и вообще, где можно надыбать нормальные примеры торговых программ, а не всякий хлам? На сайте брокера БКС я видел статьи о создании таких программ, но ссылки на тексты этих программ не работают. Может быть, кто-то скачивал эти тексты или знает, как их найти в архиве Интернета?
VPM написал: Kolossi, Прежде чем, что - то куда - то вставлять, неплохо бы вначале, разработать лингвистические переменные для входящих данных, для выхода, создать правила, разработать алгоритм использования ответов. И это задача далеко не простая. Ну прежде чем встраивать в реал, нужно от тестировать. (Алгоритм создания есть в примере).
А Вас не смущает, что теория нечетких множеств разработана 50 лет назад. И кроме пиара компаний продающих софт для принятия решений , вы никаких достижений в этой области не найдете. ---------------- Для полноты понимания вы еще посмотрите скрытую марковскую модель. Это уж точно применяется уже давно в подобных задачах.
Айдар написал: Где почитать подробое руководство по этой версии? Какие ошибки могут возникнуть, и особенно интересует поддерживает ли комментарии, имена переменных и т.д. на русском языке?
Виталий написал: Вопрос просто: как в индикаторе получить данные из таблицы обезличенных сделок? OnAllTrade, как я понимаю, в индикаторах недоступен. Переключить график на тики - НЕ подходит. Хочу именно программно в индикаторе получить доступ к данным.
надо читать из таблицы обезличенных сделок этим функциями:
Функции для обращения к строкам произвольных таблиц QUIK
Функции из этой группы предназначены для доступа к данным, содержащимся в таблицах Рабочего места QUIK.
funduk написал: if order_info.sec_code == Emit and order_info.account == MyAccount and CheckBit(order_info.flags, 0) == 1 and (order_info.brokerref == "LimitLevels") then
если в операторе if order_info.sec_code == Emit and order_info.account == MyAccount and CheckBit(order_info.flags, 0) == 1 and (order_info.brokerref == "LimitLevels") then то надо просто добавить первым в него order_info
Код
if order_info and ....
Про поток, если Вы про main, то это лишь гипотеза, т к функции QLua в общем стейте и потокобезопасные. А если про какой-то другой, то это глюк квика.
Генрих написал: Друзья, Мой брокер ссылается на какие-то рекомендации от квика по поводу «запуска серверов и технических окон». Суть в том, что я зачисляю деньги на свой счет, а в терминале они у меня появляются с лагом в несколько часов. Особенно ночью. Я мучал брокера, но он утверждает, что так и задумано. Есть ли какие-то рекомендации от АРКИ, по запускам систем? Можно ли где-то ознакомиться? Help деск брокера мне такого не даст. Спасибо
Прикольно, но у меня всегда деньги на счет зачисляются в течении нескольких минут иногда и быстрее. Вне зависимости какой брокер. -------------------- Меняйте брокера или банк откуда переводите. Кто-то из них пешком деньги Ваши относит.
1) В дельнейшем не копируйте из интернета, а дайте ссылку например, так: https://github.com/ajsher/luafuzzy ============================== 2) здесь можно сначала почитать, чтобы потом предметно обсуждать. https://habr.com/ru/articles/113020/ ================== 3) А Вы базу знаний откуда будете брать для DSS? ================== Метод нечетких множеств - это всего лишь инструмент. -------------- Подобно мясорубке. На выходе всегда фарш. А вот сможете его есть или нет, зависит от того, что на входе т е от базы знаний.
Ясно. А как сейчас торгуют крупные игроки, можно где-то почитать/послушать? Чтобы набраться опыта в торговле и попробовать что-то заработать программным путём...
В ту пору не было HFT роботов. Про сейчас можно почитать на анг язычных сайтах. Сравнительно давно читал рассказы трейдеров крупных игроков недружественных стран как им приходится подстраиваться под HFT роботов. Жаловались что трудно стало потому что быстро меняются позиции и заявок много но мелких. Поэтому когда крупный игрок приходит за товаром, то он не смотрит по сторонам. Кто сидит в "яме", тот это видит. А буратинам потом рассказывают как круто вчера рынок двигался и можно легко огребать бабло.
Сергей написал: Добрый день. Заметил странность в работе math.ceil(). Почему math.ceil(14.0)=14, а math.ceil(15.0)=16?
Для выставления цены с заданным количеством знаков после запятой, использую округление:
Код
function round_step_price (price, ty)
local x = 0
if (ty = = "sell" ) -- Продаем ->округлить в бОльшую сторону
x = math.ceil (price/options.price_step) * options.price_step
else -- Покупаем - округлим в меньшую сторону
x = math.floor (price/options.price_step) * options.price_step
end
return x * 1
end
Задача, при шаге цены 0.1, для продаж округлять так: 1.400 ->1.4, 1.4001 ->1.5, и так же 1.50->1.5, 1.50001->1.6. Но мой код, не работает, как ожидалось.
Как вы округляете в большую/меньшую сторону, с заданным количеством десятичных знаков?
Если правильно понят, то вот пример.
Код
local step=0.1;
local p=1.2; while 2>p do p=p+0.01;
local price=p-(p % step);
price1=price price2=price
if p-price>0 then p1=p+0.1; price1=p1-(p1%step); p1=p-0.1; price2=p1-(p1%step); end
print(p,price1, price2)
end
nikolz написал: Вы о каком типе крупного игрока рассуждаете? Они разные есть.
Я не знаком с ними, я смотрел видео от опытных трейдеров. Они говорят о 3-х фазах рынка - накоплении, движении цены и распределении. Если боковик идёт месяцами, то я не установлю, что это кто-то один что-то там копит. На графиках видно, что перед взлётом цены она какое-то время идёт в узком канале вбок. Возможно, что здесь кт-то что-то копит...
Это не они говорят, а пересказывают Вам своими словами Метод Ричарда Вайкоффа , который он написал в своей книге 100 лет назад ( в начале 20-го века) ,
Serge123 написал: Я в 9:50 при выставлении заявок несколько раз программно повторяю одну заявку, т.к. не сразу узнаЮ, выполнилась она или нет, и получаю такие ошибки (всего штук 14) trans_reply.result_msg:
1. ОШИБКА: (133) Торги по этому финансовому инструменту сейчас не проводятся. 2. Данный инструмент запрещен для операции шорт 3. Скорректированное значение НПР1 -1540915.18 (RUB) меньше 0
2-е и 3-е сообщения это явно не от биржи, скорее, от брокера. А может быть, это Квик на моём ПК сообщает? Он же может проверять такие ошибки?
Терминал проверяет правильность правильность строки запроса. ------------------- п3 Проверяет точно сервер брокера, так как на бирже все деньги клиентов - это деньги брокера. ----------------------- а вот п1 и 2 может проверять и КВИК и биржа, знают лишь те кто его делал - разработчики QUIK
nikolz написал: в таблице заявок+ число строк в таблице стоп заявок +число снятых заявок+число с
если вы отправляете некорректную заявку (цена выше установленного лимита) - она не фиксируется ни в какой таблице. Но считается транзакцией. Если робот будет в течении дня несколько раз в секунду отправлять подобную заявку - в конце дня будет огромное кол-во "пустых" транзакций. Но штраф за них будет
Она либо вообще не уходит из терминала (получаете ошибку транзакции) либо не уходит на биржу. Ну а если Ваш робот лишь такие заявки может посылать то сначала отлаживайте его на демо сервере. Например я отлаживал. более 200 тысяч транзакций на демо и ноль ошибок.
есть задача отслеживать кол-во транзакций. при приближении к 100000 остановить робота (чтобы не получить штраф от биржи)
не могу найти доступа к таблице транзакций через lua Можно было бы еще попробовать решить эту задачу через кол-во сообщений. Но тоже не нашел как можно подчситать
Можете помочь?
Посчитайте число заявок в таблице заявок. Если заявка снята, то считайте ее за две.
Serge123 написал: Кр. игроку иногда нужны месяцы, чтобы нарастить позицию/скинуть акции. Чтобы не обнаружить себя и не двинуть цену против себя, он долгле время продаёт/покупает небольшими частями. Вопрос в том, как обнаружить, что в этом инструменте действует кр. игрок, и что он делает, чтобы узнать, куда он резко двинет цену.
Вы о каком типе крупного игрока рассуждаете? Они разные есть.
Serge123 написал: Вопрос о том, как угадать, куда поведёт цену крупный игрок после периода накопления. В периоде накопления (боковике) рыночными или лимитными заявками крупный игрок накапливает позицию? Как ещё можно определить его действия?
Сомневаюсь что-то в такой гипотезе, Предположу, что в боковике он либо просто поддерживает позицию, либо вообще на другом рынке торгует.
Под утечкой памяти обычно понимают неконтролируемое ОС сокращения объема оперативной памяти. Т е приложение занимает память, а когда завершается, то возвращает меньше, чем занимало. В итоге память в системе безвозвратно сокращается.
В данном случае речь о стеке луа, а не о стеке функций С. Поэтому утечка памяти вообще не причем. Утечка памяти связана с функциями malloc calloc realloc.
Serge123 написал: 1. Будет ли утечка памяти, если C dll при работе со стеком Lua не будет вызывать lua_pop? Ведь сказано, что Lua при каждом вызове подпрограммы из C dll создаёт этот стек заново.
2. Решит ли проблему с возможной утечкой памяти, если не вызывать lua_pop, а в конце работы со стеком вызвать lua_settop(0)? Я думаю, что решит, т.к. lua_pop это макрос, который вызывает lua_settop.
3. Я попытался увидеть сборку мусора и написал такой код:
Код
function main ()
s = 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
local s1 = '' .. collectgarbage( "count" ) .. '\n'
s = nil
s1 = s1 .. collectgarbage( "count" ) .. '\n'
collectgarbage( "collect" )
sleep ( 10000 )
s1 = s1 .. collectgarbage( "count" ) .. '\n'
message (s1)
end
Получил такой вывод:
37.5439453125 37.619140625 36.046875
Видно, что памяти освободилось меньше, чем занимала строка s. Как это объяснить?
утечки памяти не будет, но возможно переполнение стека. pop возвращает стек на начало. Без него размер стека меньше на число параметров в нем.
Serge123 написал: Хм, а я как-то не обращал внимание на эти функции. Тогда выходит, что можно не загружать ЦП коллбэком OnAllTrade, если всё это можно брать напрямую из таблицы all_trades?
=== Набор битовых флагов Параметр Тип Описание бит 0 (0x1) - Сделка на продажу бит 1 (0x2) - Сделка на покупку ===
Такое чувство, что я всё время неправильно определяю направление (buy или sell). Я считал, что если младший бит = 0, то buy, а если младший бит = 1, то sell.
А из этого объяснения вроде бы следует, что если мл. бит = 1, то это sell, а если следующий за младшим битом бит = 1, то это buy, так? Вроде бы можно было обойтись одним мл. битом...
Так вроде все ясно из описания флагов: бит 0 (0x1) - продажа т е flags@1 ~=0 бит 1 (0x2) - покупка flags@2 ~=0
Serge123 написал: Я как-то заказал в Квике отчёт по всем заявкам или сделкам клиента за день, Квик задумался на 10 сек., а потом в файле, куда скрипт писал обезличенные сделки/содержимое стаканов за эти 10 сек. не было записей.
КВИК докачивает пропущенные значения. Но я не проверял попадают ли они в колбек. Их можно получить из таблицы обезличенных сделок.
Serge123 написал: Ксати, powershell это делает: start-process "C:\Program Files\Far Manager\Far.exe" -verb runas Причём, винда не спрашивает подтверждения разрешений для Фара, как она это делает при таком запуске с пом. иконки. Но неудобно запускать powershell и вводить команду...
Интересно, как Вы собираетесь изменять системные часы?
Serge123 написал: Если скрипт в коллбэке как-то притормаживает, то теряются эти сообщения. Неужели в Квике нет очереди, чтобы их не терять? Есть ли гарантированное время (скажем, 5 мс), что если коллбэк в него вписывается, то потерь данных гарантированно не будет? (Думаю, что его нет, т.к. интенсивность вызова коллбэка может быть высокой.) А если они были, можно ли как-то об этом узнать?