Использование мессенджера MAX для обмена данными в QUIK

Страницы: 1
RSS
Использование мессенджера MAX для обмена данными в QUIK, Использование мессенджер для обмена для отправки сообщений и управление торговым приводом в QUIK
 
Поскольку , эта тема вроде нигде не поднималась , опишу свой опыт , может быть будет кому то полезно.
Для информирования и  контроля за работой торгового привода у меня был поднят небольшой   саит на локальном компе с QUIK ,и меня все  устраивало,
Сейчас эта схема практически утратила смысл из за почти постоянного отключения мобильного интернета. Я решил  посмотреть  , что можно использовать взамен.  Нормально работали только саиты из белого списка и MAX.  Поскольку других вариантов  не было , выбор пал на MAX ,
И так , что же мог предложить MAX для решения этой задачи ?    В MAX можно создавать чат боты , но делать это могут только OOO ,ИП и самозанятые.
Я давно имею статус самозанятого , а для тех кто его не имеет , получить его можно онлаин за 5 минут и этот статус ни к чему не обязывает.
Для самозанятых MAx ставит ограничение в 2 чат бота. Мне хватило 1 бота, и 1  канала.
Я зашел в лк MAX (https://business.max.ru/self/services ) как самозанятый и зарегил бота , создал там же канал.  Далее чат бота я сделал администратором канала.
В чат чат- бота я направил информационные сообщения от робота а в  канале закрепил набор кнопок для  отправки управляющих команд для торгового привода.  Правда пришлось помучиться  с вычислением идентификаторов каналов chat_id. Проще всего это сделать запустив web версию  и взять эти id из URL   (у чат бота это положительное число в конце URL ,  а у канала отрицательное).

Привожу пример отправки сообщения в чат бот Max.
Для отправки HTTP сообщения я использовал c библиотеку  luacom.dll +WinHttp.WinHttpRequest.5.1, но есть и много других способов (напимер curl)
Код
-----------------------------------  
function send_max(msg,chat_id,access_token,nFormat)
   -----------------------------------
   ---грузим luacom
   luacom = require("luacom")
   
   --для формата markdown
   -- # Формат markdown \n **жирный**, _курсив_, ~~зачёркнутый~~, ++подчёркнутый++, `моноширинный`  ,   ^^Выделенный^^ , [Документация](https://dev.max.ru/) 
   local url,status,responseText,cUser,body,cFormat,http
   --chat_id =117.......474
    --access_token = "f9LHodD0cOIq...................0BhMw0gm_6f1-DBY" 
   if not nFormat then 
      nFormat=0
   end 
   ---выбор формата разметки 
   if nFormat==0 then 
      --без формата 
      cFormat=''
      elseif nFormat==1 then 
      --HTML
      cFormat=   ',"format": "html"'
      elseif nFormat==2 then 
      --markdown
      cFormat=   ',"format": "markdown"'
   end 
   
   -- URL   
   url = "https://platform-api2.max.ru/messages?" .. "chat_id=" .. chat_id
   
   --Тело запроса (JSON)
   body ='{"text":"' .. msg .. '"'..cFormat..'}'
   -- Создаём COM-объект
   http = luacom.CreateObject("WinHttp.WinHttpRequest.5.1")
   if  http then
      -- Открываем соединение (синхронно)
      http:Open("POST", url, false)
      -- Заголовки
      http:SetRequestHeader("Authorization", access_token)
      http:SetRequestHeader("Content-Type", "application/json")
      http:SetRequestHeader("Accept","application/json")
      --Отправляем
      http:Send(body)
      --Получаем ответ
      status = http.Status
      responseText = http.ResponseText
      if http.Status==200 then 
        ---ok
      else    
          message("Status: " ..  tostring(status), 3)
          message("Response: " ..  tostring(responseText), 3)
      end    
      -- Освобождаем объект
      http = nil
   else    
      message("Не удалось создать WinHttp.WinHttpRequest.5.1", 3)
   end
end 
 
Спасибо,Евгений, для тех кто не в теме и для меня лично, поясните, а зачем все эти премудрости? Что это дает? и А каком приводе идет речь, типа Бондаря для скальпинга?
 
Цитата
VPM написал:
Спасибо,Евгений, для тех кто не в теме и для меня лично, поясните, а зачем все эти премудрости? Что это дает? и А каком приводе идет речь, типа Бондаря для скальпинга?
Вы же не можете сидеть безвылазно перед компьютером с quik ом .Нужно отлучаться  по делам или на  работу или на отдых. И хочется контролировать работу робота , иногда  поменять стратегию  , или вообще остановить в случае форс мажора или поднастроить немного. Посмотреть  отчет по сделкам , по состоянию депо и.т.п.  Для таких же целей банки делают свои приложения на смартфоны  . А привод в данной теме речи не играет. У меня своя самомиска для торговли на спредах  на облигациях.
Цитата
 
То есть если я правильно понимаю, контроль за роботом (Вашей самопиской) в окне МАХ? А во сколько можно оценить потерю во времени прохождения команды? Ну хотя бы примерно ведь наверно задавались данным вопросом. Если можно продемонстрируйте картинкой.
 
Цитата
VPM написал:
То есть если я правильно понимаю, контроль за роботом (Вашей самопиской) в окне МАХ? А во сколько можно оценить потерю во времени прохождения команды? Ну хотя бы примерно ведь наверно задавались данным вопросом. Если можно продемонстрируйте картинкой.
У  ботов от макс  есть 2 варианта обмена   основной - через Webhook   и Long Polling .  Long Polling - это что то типа временной заглушки для тестирования.
Я использую  Long Polling . В цикле MAIN quik а раз в 5 секунд  выполняю опрос бота , разбираю ответ и выполняю принятые команды и отсылаю результат в чат  , если требуется. Получается на ответ от 6 до 7 секунд.Через Webhook можно сделать быстрее  , но там надо намного больше заморачиваться. Читайте   API max  , если есть желание разобраться подробнее.    
 
Еще раз благодарю Вас за пример и просвещение. Меня собственно заинтересовало, возможность получить дополнительный вывод.  Для не большого скрипта  - стохастический генератор Monte Carlo generator (WinRate + ProfitFactor  Lua 5.4). Используемый для проверки гипотезы.  Но мне нужен переход от генератора результатов к симулятору позиции.
Отличие принципиальное:
Mодель генератора:  Trade -> Result
Новая:  State(t) -> Price \ Path -> Position  -> Exit  -> Capital. То есть сделка становится процессом, а не точкой. Ну и соответственно вывод со сменой входящих параметров.
Надеюсь не запутал? Подходит под подобную задачу?
Страницы: 1
Читают тему
Наверх