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

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

Страницы: 1 2 3 След.
Автоматизация авторизации через СМС, Автоматизация авторизации через СМС
 
Отключить у брокера двухфакторную авторизацию?
Еще один вопрос про потоки
 
Сожрались символы:
io.output('CONOUT$')
io.input('CONIN$')
Еще один вопрос про потоки
 
Кстати о консоли без dll:
Код
package.loadlib('kernel32.dll','AllocConsole')(true)
io.output('CONOUT$')
io.input('CONIN$')

теперь можно читать из io.input и писать в io.output
в конце надо закрыть потоки и аналогичным способом вызвать FreeConsole
Создать заявку с признаком - полностью или отклонить через формат .tri-файла
 
Цитата
Роман Н написал:
А если же такую же заявку я выставлю в ручном режиме в терминале с признаком "полностью или отклонить", то такая заявка будет ждать снижения цены и встречного предложения и не отменится.
Так не должно быть. Если вы выставляете заявку  с признаком "полностью или отклонить", а она ждет - это ошибка.
API: ордер - Book-or-Cancel, вопрос дублирует аналогичные, но задается касаемо API
 
1. Да
2. Нет

Обещанного, как известно, три года ждут. Но вот тут например https://forum.quik.ru/messages/forum8/message76866/topic95/#message76866 между "будет рассмотрено и, возможно, реализовано в одной из следующих версий" и "было реализовано в версии..." прошло 9 лет.
Как обрезать число типа float до 2х знаков после запятой
 
Код
(math.modf(num + (num >= 0 and 0.5 or -0.5)))
Как обрезать число типа float до 2х знаков после запятой
 
Цитата
VPM написал:
Да заметил не точность вот так будет работать  
Код
   -- Округление для любого числа 
     local  rounded  =   math.floor (num  *  mult  +   0.5   * (num  >  =   0   and   1   or   -  1 )) / mult  
round(-12.34, 2)) == -12.35
Работа терминала QUIK в Wine
 
Цитата

У меня тоже Linux и тоже проблема с некорреткным обновлением файла vcomp110.dll.
Обновляется всё, кроме него. Из-за чего,  каждый раз при загрузке крика всплывает сообщение о необходимости обновить квик.
Запустите winecfg и на вкладке libraries добавьте эту библиотеку.
Kaк убрать uid cверху окна?, Надпись сверху окна
 
Скачать надо w32.dll где-то там https://quik2dde.ru/viewtopic.php?id=78
А скрипт нужно написать. Примерно так:
Код
w32 = require("w32")
QuikMainWindowHandle = 0

function OnInit()
  QuikMainWindowHandle = GetMainWindowHandle()
end

function main()
  if QuikMainWindowHandle ~= 0 then
    -- тут можно писать, что вашей душе угодно
    w32.SetWindowText(QuikMainWindowHandle, "Testing....")
  end
end

function GetMainWindowHandle() -- Получить дескриптор главного окна QUIK
  local CurrentProcessId = w32.GetCurrentProcessId()
  local hWnd=0
  while true do
    hWnd = w32.FindWindowEx(0, hWnd, "InfoClass", "")
    if hWnd == 0 then break end -- Окно не найдено
    local ThreadId, ProcessId = w32.GetWindowThreadProcessId(hWnd)
    if ProcessId == CurrentProcessId then break end -- Окно найдено
  end
  return hWnd
end
Kaк убрать uid cверху окна?, Надпись сверху окна
 
Цитата
Kypat написал:
Да добавьте в настройках галочку убрать uid , и добавьте время или бегущую строку мировых индексов типа типа  hang seng nasdaq moex и ТД чтоб можно было видеть в % изменении и объем  
Можно lua скриптом писать в заголовок окна все, что вам хочется...
Стакан, кнопка max
 
Цитата
СергейК написал:
Цитата
Roman Koledin написал:
что то не понятно - причем тут винда
Я сейчас уже точно не помню, в Windows чтобы окно можно было перемещать у него должен быть специальный атрибут. Если его нет, то окно не двигается, как сейчас закреплённый стакан. Если этот атрибут вернуть, окно может выглядеть немного иначе, что впрочем не должно быть проблемой.  
В Windows, чтобы окно можно было перемещать, у него должен быть заголовок. Тот, который с кнопками.
Заявки в QUIK
 
Цитата
ДмитрийР написал:
а есть ли способ поставить лимитную заявку так, что бы если в этой цене окажется противоположная заявка, она не исполнилась как рыночная, а просто отменилась?
Условие исполнения: "Только пассивная"
Перенос заявки, не работает
 
Все поля надо писать кириллицей.  
текущий современный способ сделать робота без ежемесячных расходов?
 
Цитата
funduk написал:
API брокеров бесплатны, как я понимаю. Есть у тинька и финама, но у финама альфа версия и можно забыть про миллисекунды.
У финама есть transaq connector https://www.finam.ru/howtotrade/soft/tconnector/
У алора есть Atentis https://www.alorbroker.ru/blog/atentis
сообщение в Telegram - это просто
 
Цитата
Андрей написал:
Цитата
paluke написал:
 
Цитата
Андрей  написал:
 
Цитата
  Благодарю за помощь!

Я бы хотел иметь возможность в LUA видеть статус отправки сообщений в Телегу и если сообщения перестали уходить, то получить какой-то message,
Версия с  io.popen  это позволяла бы сделать, как в приведённом выше примере, но он не работает :(.
Ваш вариант отличный, но он позволит только постфактум узнать о проблемах. Но все равно, Вам огромное спасибо за идею в принципе! Это просто прекрасное решение почти всех моих запросов!  
 Не знаю, что у вас не так, у меня io.popen работает, и ответ от curl я получаю. Может, дело в версии curl
у меня io.popen вообще ничего не возвращает и команду не выполняет. Я пробовал просто dir отправить. У вас windows какой версии?
У меня в win10 работает. И под wine в линуксе тоже работает.
Просто dir работать не будет, надо "cmd /c dir"
Можно попробовать добавить в начало "cmd /c 2>&1 " перед curl - получите вывод сообщений об ошибках.
Ну или в файл ошибки отправлять "cmd /c 2>errorfile.txt "
сообщение в Telegram - это просто
 
Цитата
Андрей написал:
Цитата
nikolz написал:
 
Цитата
Андрей  написал:
os.execute (curl .. mes .. '"');   --отправляем  
 Что именно хотите увидеть?
можете сделать так:  
Код
    file  =   "D:/bot.log" 
curl  =   "C:/Windows/System32/curl.exe  --silent --output "  .. file .. '"' .. "https://api.telegram.org/bot" .. token .. "/sendMessage?chat_id =  "..chat_id.."  & text = "     
 В file будет записан ответ робота.
Благодарю за помощь!

Я бы хотел иметь возможность в LUA видеть статус отправки сообщений в Телегу и если сообщения перестали уходить, то получить какой-то message,
Версия с  io.popen  это позволяла бы сделать, как в приведённом выше примере, но он не работает :(.
Ваш вариант отличный, но он позволит только постфактум узнать о проблемах. Но все равно, Вам огромное спасибо за идею в принципе! Это просто прекрасное решение почти всех моих запросов!  
Не знаю, что у вас не так, у меня io.popen работает, и ответ от curl я получаю. Может, дело в версии curl
Ошибка выставления ордера
 
Цитата
Михаил Филимонов написал:
   FmemoStr:= 'SendOrder: Ордер ' + ExpData.FutData.SecCode + ' отправлен.';
А в логе SetEnterOrder. Это другой код.
Ошибка: Значение "" превышает допустимый размер, постоянно пишется ошибка: Значение "" превышает допустимый размер
 
Цитата
Александр написал:
при обращении скриптом к его заявке постоянно пишется ошибка:
А что в скрипте то?
сообщение в Telegram - это просто
 
Потом подключаетесь к своему боту, пишите ему что-нибудь, дергаете api (можно прямо в браузере открыть) и ищите там chat id.
Изменено: Yaroslav Grebennikov - 24.07.2024 14:18:04
сообщение в Telegram - это просто
 
Пишите botFather /start
потом /newbot
придумываете имя, получаете токен
сообщение в Telegram - это просто
 
Открываете в телеграмм https://telegram.me/BotFather
сообщение в Telegram - это просто
 
Аккуратно обрабатываем спецсимволы:
Код
function tgmsg(text)
  local curl = 'curl.exe'
  local token = '.....'
  local chatid = '....'

  text = string.gsub(text, '[^0-9a-zA-Z\x80-\xff._~-]', function(chr) return string.format("%%%02x", string.byte(chr)) end)
  local h, e, c = io.popen(curl .. ' -X POST --data-raw text="' .. text .. '" https://api.telegram.org/bot' .. token .. '/sendMessage?chat_id=' .. chatid)
  if h then
      local a = h:read('a')
      return a, h:close()
  else
      return false, e, c
  end
end

Где скачать TRANS2QUIK.dll x64 ? есть пример использования на delphi выставления заявки?
 
Обработку внешних транзакций в  quik запустили? "Сервисы / Экспорт/импорт данных / Внешние транзакции"
Работающая библиотека LuaSec
 
К этой сборке надо libcrypto-1_1-x64.dll и libssl-1_1-x64.dll где-то еще взять.
Работающая библиотека LuaSec
 
Если доверяете бинарникам, скачанным и неизвестных источников - https://transfiles.ru/332ez
Работающая библиотека LuaSec
 
При наличии mingw64 можно собрать как-то так, в каталоге src:
Код
x86_64-w64-mingw32-gcc -O2 -fPIC  *.c luasocket/buffer.c luasocket/io.c luasocket/timeout.c luasocket/wsocket.c -shared -Wl,-s -o ssl.dll -I. -L. -lssl -llua -lcrypto -lws2_32
Ну только в -I надо путь к заголовкам, а в -L к библиотекам от openssl и нужной версии lua (я просто все накидал рядом с исходниками).
По хорошему конечно надо makefile подправить для mingw сборки, а не так вручную.
Стоп по исполнению
 
Цитата
Pride написал:
Стоп-заявка "по исполнению" вводится на основе заявки на покупку или продажу у которых срок действия ( в моем случае) несколько дней.
А где вы в quik нашли заявки, у которых срок несколько дней?
Где взять значения ACCOUNT, CLIENT_CODE для создания транзакции через QLua ?
 
Когда руками заявку выставляете, как заполняете поля "Торговый счет", "Код клиента"?
Условная заявка по исполнению в другом инструменте
 
В transaq можно выставлять стоп-заявки по исполнению в другом инструменте.
Из документации:
Цитата

При вводе связанного стопа его направление (покупка/продажа) устанавливается  противоположным направлению активной заявки, поля Инструмент,  Режим и Клиент также копируются из активной заявки, но при  необходимости могут быть изменены.

Связь по исполнению может быть использована как способ автоматизации торговых  операций в одном финансовом инструменте по условию цены в другом инструменте.  Выставляется «триггерная» заявка на минимальный объём в индикативном  инструменте, и к ней привязывается стоп по исполнению, открывающий или  закрывающий позицию в торговом инструменте. К этой же «триггерной» заявке можно  привязать стоп, который автоматически закроет позицию, возникшую при ее  исполнении

Условная заявка по исполнению в другом инструменте
 
Сейчас есть условные стоп-заявки по исполнению. Но там всегда один инструмент. А для арбитражных стратегий хочется иметь возможность при исполнении лимитной заявки в одном инструменте автоматически активировать лимитную/рыночную заявку в другом.
Как определить Код класса (CLASSCODE) по коду инструмента (SECCODE)?
 
Вопрос не почему такое значение, а как его получить в программе. Вручную я его по alt-I вижу.
Как определить Код класса (CLASSCODE) по коду инструмента (SECCODE)?
 
В securities есть и с TQTF, и с TQTF_F, и с EQRP_INFO...
Разница только в settle_date.  
Как определить Код класса (CLASSCODE) по коду инструмента (SECCODE)?
 
Повторю свой вопрос.  Я нажимаю alt-I в таблице "Состояние счёта" и вижу информацию об инструменте по конкретному классу. Как мне получить этот класс в lua? getSecurityInfo('', 'тикер') дает другой класс.
Вряд ли на этот вопрос может ответить брокер.
Как определить Код класса (CLASSCODE) по коду инструмента (SECCODE)?
 

ВТБ


Другой брокер - класс без 'F' в конце
Как определить Код класса (CLASSCODE) по коду инструмента (SECCODE)?
 
https://imgur.com/M6GbyLl.png
LUA: Узнать цену утреннего аукциона во время самого аукциона
 
Ну если вы видите нужные значения в таблице, то в чем проблема? Включаете в настройках "Формальное представление заголовков строк и столбцов", копируете всю таблицу, вставляете куда-нибудь и смотрите, как называется нужная колонка.
Как определить Код класса (CLASSCODE) по коду инструмента (SECCODE)?
 
Цитата
Andrey Bezrukov написал:
Здравствуйте, Василий.

Текущая цена инструмента таблицы "Состояние счёта" берётся из параметров таблицы текущих торгов для данного класса/инструмента. Для данного показателя позиции используются следующие параметры ТТТ:

1. Цена последней сделки по инструменту из таблицы «Текущие торги». Если такой цены нет, то цена закрытия.
2. Для срочного рынка – цена последней сделки. Если такой цены нет, то указывается расчетная цена.
3. Для облигаций значение указывается в % от номинала, для срочных контрактов – в пунктах.
4. Для клиентов типа «МП»: лучшая цена спроса / предложения из таблицы «Текущие торги»

То, из какого именно класса берутся данные параметры - настраивается на стороне сервера QUIK. Получить эту цену, Вы можете обратившись к таблице текущих торгов с указанием класса и инструмента при помощи функций getParamEx и getParamEx2.
Вопрос актуальный - как именно этот класс, настроенный на стороне сервера, получить? Я нажимаю alt-I (информация об инструменте) в таблице "Состояние счёта" и вижу один конкретный класс. Как его получить в lua?
Три дня назад у LQDT ETF был класс TQTF, а сегодня у ВТБ стал класс TQTF_F, а у другого брокера по прежнему TQTF. Поэтому вариант "зафиксировать класс где-то в настройках" не рабочий, класс может меняться.
Что будет, если внешняя dll изменит содержимое строки Lua?
 
Меняют конечно. Как минимум, туда добавлено несколько функций: os.sysdate(), table.sconcat(), table.sremove(), table.sinsert(), table.ssort().
А еще должна быть какая-то непустая реализация макросов lua_lock()/lua_unlock() в llimits.h
Ошибки использование функции 'unpack')
 
https://www.lua.org/manual/5.2/manual.html#8.2
Цитата
Function unpack was moved into the table library and therefore must be called as table.unpack.
Почему в этой программке утекает память??
 
Можно почитать про маркетмейкеров на московской бирже в первоисточнике: https://www.moex.com/msn/ru-securitiesmm
Что будет, если внешняя dll изменит содержимое строки Lua?
 
А профайлер показал, что изменение строки - узкое место, на которое тратится больше всего времени?
Или вы хотите разбираться с тем, как поменять значение в обход api, c рисками неопределенного поведения, ради ускорения в ноль целых хрен десятых процента?
Почему в этой программке утекает память??
 
Маркетмейкеры не выставляют заявок по одному лоту. Для них есть минимальный объем заявки, и это не один лот.
Почему в этой программке утекает память??
 
Цитата
Serge123 написал:
Сегодня на этом форуме читал старые споры и препирательства, в которых говорилось, что мьютексы работают медленно и подходят для синхронизации потоков из разных процессов. А в одном процессе надо использовать какую-то критическую секцию. Я пока не знаю, что это такое и как это сделать быстрее, чем с мьютексами...
Событие - это не мьютекс и не критическая секция.

Просто проверка концепции:
Код
w32 = require("w32")

run = true
evt = false

function OnInit()
  evt = w32.CreateEvent(nil, 0, 0, nil)
end

function OnStop()
 run = false
 w32.SetEvent(evt)
end

function main()
  while run do
     w32.WaitForSingleObject(evt, 1000000)
  end
  w32.CloseHandle(evt)
end
В колбеках вызываете SetEvent - main сразу просыпается.
Почему в этой программке утекает память??
 
А, да, еще надо чтобы брокер считал свою комиссию не с каждой сделки, а как процент от дневного оборота. Вроде есть такие. А биржевая комиссия с мейкера не берется.
Почему в этой программке утекает память??
 
Цитата
Serge123 написал:
Цитата
nikolz написал:
По одной заявке выставляют HFT роботы, скальперы и ММ.
А какой смысл это делать на дешёвом инструменте с шагом цены ноль целых шиш десятых копейки?
Тут дело в округлении... https://roem.ru/12-08-2021/286525/tinkoff-cents/
Вот продали вы один лот ценой 1.3862, а получили 1.39 из-за округления. А можно можно купить сразу два лота по той же цене за 2.77. То есть продали два раза по одному, купили сразу два - заработали копейку. Сумеете купить пятьсот заявок по два лота и потом продать тысячу по одному - плюс 5 рублей. С теми объемами торгов, которые там есть - можно и много больше. Вопрос только в том, когда брокер скажет "ай ай ай".
Почему в этой программке утекает память??
 
Цитата
Serge123 написал:
https://lua.org/manual/5.4/
Где тут wait и event? Я о таких тайных заклинаниях ничего не знаю...
Где-то пролетала ссылка на библиотечку w32 для lua. Там есть CreateEvent / WaitForSingleObject. Надо попробовать, должно работать...
Функция получения истории значений параметра
 
Последний параметр в CreateDataSource - не оно?
Алго-заявки в веб терминале Квик, и в приложении.
 
У ВТБ же бесплатный webQuik. Там что, тоже нет? https://www.vtb.ru/personal/investicii/quik/web-quik/
339 сделок по одному тикеру в течение 1 мкс
 
Цитата
nikolz написал:
маркет мейкер не выставляет  очень большие пакеты.
Это особый случай
Звук через mciSendString и MessageBeep
 
Цитата
Serge123 написал:
Вопрос, почему mciSendString в консольной программе не выдаёт звук, так и остался открытым...
Ну например, может оно как-то использует оконные сообщения.
Страницы: 1 2 3 След.
Наверх