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

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

Страницы: Пред. 1 2 3 4 5 6 7 8 9 10 11 ... 95 След.
Работа колбеков
 
можете сделать вывод времени входа и выхода для колбеков и для  main  c помощью точного счетчик Windows?
При размещении заявки на продажу ошибка "Вам запрещена работа по данному торговому счету"
 
Цитата
Цитата
Vitalii Savinov написал:
Добрый день,

Пытаюсь в скрипте создать заявку на продажу
Код
   local  transaction  =  {
        [ "TRANS_ID" ]     =   "1001" ,
        [ "CLIENT_CODE" ]  =   "XXXXXX" ,
        [ "ACCOUNT" ]      =   "B00BYYYYYYYYY" ,
        [ "CLASSCODE" ]    =   "TQBR" ,
        [ "SECCODE" ]      =   "ELMT" ,
        [ "ACTION" ]       =   "NEW_ORDER" ,
        [ "OPERATION" ]    =   "S" ,
        [ "PRICE" ]        =  tostring(price),
        [ "QUANTITY" ]     =  tostring(qty),
        [ "TYPE" ]         =   "M" 
    }

 local  res  =   sendTransaction (transaction)  

И получаю ошибку "Вам запрещена работа по данному торговому счету"

При этом если я делаю эту транзакцию в Квике руками - она выполняется.
Когда я запрашиваю в скрипте информацию по состоянию депо - информация выдается.

Вопрос: где ломается?

У брокера?
На сервере Квик
У меня? (не тот счёт указал)
Такое сообщение может появляться из-за ошибки в параметрах счета   т е вы пытаетесь сделать заявку по чужому счету Система вам об этом и говорит.  ищите ошибку  
Робот, торгующий опционами
 
Цитата
Сергей Че написал:
Переформулирую вопрос. Может ли вечный фьючерс быть базовым активом для опциона? Или только обычный фьючерс может быть таковым?
Думаю, что вечный фьючерс не может, потому что у него экспирация каждый день, а производный инструмент (опцион) не может жить дольше, чем базовый актив.
Алиса отвечает:
Нет, классических опционов (на право купить или продать вечный фьючерс) по вечным фьючерсам не существует.
Дело в самой природе этих инструментов.
Опцион — это контракт, который даёт право (но не обязательство) совершить сделку.
У него есть чётко определённый срок действия — дата экспирации.
А у вечного фьючерса этой даты просто нет: он ежедневно автоматически продлевается.
Из-за этого фундаментального различия — у вечного фьючерса нет срока жизни — и инструменты на его основе (включая опционы) не создаются. tbank.rusbersova.ru
При этом важно не запутаться: иногда в разговоре люди смешивают понятия.
На Московской бирже действительно торгуются вечные фьючерсы (например, USDRUBF, IMOEXF, GLDRUBF),
и для них есть опционы — но это опционы на обычные (срочные) фьючерсы, а не на сам вечный контракт.
То есть вы покупаете опцион на ближайший стандартный фьючерс с конкретной датой экспирации, а не на вечный.  
‘Вы уже работаете в системе’ + ‘Соединение установить не удалось’, Проблема с соединением
 
Цитата
Игорь С написал:
Брокер рекомендовал менять в настройках параметр check-tmo. При значениях 120 и 600 результат одинаковый. После разрыва соединения или вообще снятия Quik потом ситуация повторяется. Странно, что через некоторое время (несколько минут) эти сообщения пропадают.
Потому что, через несколько минут  сервер проверяет соединение реально
и  обнаруживает, что соединение разорвано.
И соединяется с Вами.
-----------------------------
Это такая фишка у разработчиков,
чтобы клиентам не было скучно.
‘Вы уже работаете в системе’ + ‘Соединение установить не удалось’, Проблема с соединением
 
Этот прикол легко тестируется.
Просто разорвите соединение и сразу попытайтесь его установить.
Получите такие сообщения, пока  не пройдет этот тайм аут.
‘Вы уже работаете в системе’ + ‘Соединение установить не удалось’, Проблема с соединением
 
Цитата
Игорь С написал:
Периодически возникает (и через несколько, иногда много, минут пропадает) следующая ситуация:     Каждые 10 сек выдается пара сообщений подряд:  Вы уже работаете в системе  Соединение установить не удалось     Сразу отмечу, это не тот случай, когда на двух компах запущен QUIK – только на одном.    
Это означает что соединение терминала QUIK с сервером QUIK потеряно,
но сервер QUIK это не замечает.
Очевидно у него какой-то тайм аут на обработку потери соединения.
---------------------------------
Терминал пытается восстановить автоматически соединение так как у него усатновлен режим восстановление соединения автоматически.
------------------------
Сервер посылает это сообщение о том, что уже работаете.
------------------------------
Через некоторое время сервер проверяет соединение и обнаруживает что Вас уже давно нет и восстанавливает соединение.
-----------------------
Полагаю, что это системная ошибка разработчиков,
так как это поведение сервера QUIK не зависит от брокера.
Фреймворк B_Q создания торговых роботов для QUIK (с возможностью использования AI-агентов биржевой торговли), в названии
 
Цитата
TGB написал:
Что касается галлюцинаций ИИ, то, наверное, у всех людей есть такая же особенность, особенно в сферах, далеких от практики их жизни. Все могут ошибаться, включая ИИ.
Первую свою прогу на основе нейросетей  для реальной задачи  диагностики написал еще в прошлом веке.
--------------------------
Работая сейчас с ИИ пришел к такому выводу.  
---------------------------
Уровень решения задачи ИИ соответствует уровню понимания задачи того, кто дает задание.
-------------------------  
Полагаю,  что те кто сейчас кодит, закончив ускоренные курсы, продолжат кодить,
но с помощью ИИ, в несколько раз быстрее, больше и возможно с лучшим качеством
Фреймворк B_Q создания торговых роботов для QUIK (с возможностью использования AI-агентов биржевой торговли), в названии
 

Современные исследования показывают, что эффективность AI-агентов в трейдинге — это сложный и неоднозначный вопрос.

У них есть значительный потенциал, особенно в аналитике,

но на данный момент они не являются "волшебной кнопкой" для гарантированной прибыли.

💡 Потенциал AI-агентов

Основная сила AI-агентов заключается не в предсказании будущего,

а в обработке и синтезе огромных массивов информации для принятия более взвешенных решений.

  • Анализ разнородных данных: AI способен одновременно анализировать новости, финансовые отчеты, настроения в соцсетях и технические индикаторы, что недоступно традиционным алгоритмам.

  • Улучшение управления рисками: Некоторые системы показывают улучшение коэффициентов Шарпа (показателя доходности с поправкой на риск), помогая принимать более эффективные решения.

📊 Объективная картина: что говорят исследования

Данные независимых бенчмарков дают более трезвую оценку текущих возможностей AI в трейдинге:

  • Сложность превзойти простые стратегии: Согласно бенчмарку StockBench, большинство AI-агентов не могут стабильно превзойти простую стратегию "купи и держи" (buy-and-hold). Это означает, что их способность генерировать "альфу" (прибыль выше рыночной) пока ограничена.

  • Проблема запоминания данных: Исследования показывают, что успех AI на исторических данных часто объясняется тем, что модель запомнила информацию о ценах из своего обучающего набора, а не проявила настоящие аналитические способности. На новых данных их эффективность падает.

  • Сложности в долгосрочной перспективе: Агенты часто ведут себя неоптимально в разных рыночных режимах: они могут быть излишне консервативны на "бычьих" рынках и слишком агрессивны на "медвежьих", что приводит к убыткам.

  • Отсутствие истинной адаптации: При столкновении с новыми или "враждебными" рыночными условиями многие AI-агенты демонстрируют негибкость и неспособность адаптироваться, следуя фиксированным шаблонам.

🚀 Ключевые архитектуры AI-агентов

Для решения этих задач разрабатываются различные архитектуры, которые можно разделить на несколько подходов:

ПодходОписаниеПримеры
Многолетние системы (Multi-Agent Systems)Имитируют работу трейдинговой фирмы: разные агенты выполняют роли аналитиков, трейдеров и риск-менеджеров, обмениваясь информацией для принятия решения.TradingAgents
Эмуляция стратегий экспертовМоделируется стиль известных инвесторов (например, Уоррена Баффета) с помощью специальных инструкций (промптов).GuruAgents
Агенты для криптовалютИспользуют уникальные данные, такие как on-chain метрики и настроения из Reddit, для торговли на волатильных рынках.—
💎 Итог

На сегодняшний день AI-агенты — это мощные помощники для аналитики и обработки информации, но не самостоятельные и надежные трейдеры, способные гарантировать прибыль.

Эксперты и регуляторы сходятся во мнении, что на данном этапе их использование требует осторожности и человеческого контроля.

Фреймворк B_Q создания торговых роботов для QUIK (с возможностью использования AI-агентов биржевой торговли), в названии
 
Цитата
TGB написал:
Цитата
У меня есть подозрение (которые не могу доказательно подтвердить), что ожидания высокой доходности AI-агентов могут оказаться завышенными. Поэтому нельзя списывать в "утиль" возможности разработки роботов в ручную, существующие в фреймворке.
Ваши подозрения верны.
И это уже доказано.
Фреймворк B_Q создания торговых роботов для QUIK (с возможностью использования AI-агентов биржевой торговли), в названии
 

Lumibot теперь включает в себя встроенную среду выполнения ИИ-агентов для финансовых исследований, рассуждений, дискуссий, анализа рисков и совершения сделок.
Агенты могут анализировать рыночные данные, читать биржевые сводки, запрашивать индикаторы, искать в памяти, сравнивать макроконтекст и отправлять ордера через тот же стратегический цикл Lumibot, который используется для обычного тестирования на исторических данных и реальной торговли.

Классические стратегии на Python по-прежнему на высоте. Lumibot позволяет выбрать подходящий уровень интеллекта: фиксированные правила, ИИ-агенты или гибридный подход, при котором Python отвечает за жесткие ограничения, а агенты анализируют доказательства.

Встроенные инструменты ИИ-агента включают в себя отслеживание состояния рынка/счета, проверку ордеров, запросы к DuckDB, поиск документации, новости Alpaca при наличии учетных данных, технические индикаторы, фундаментальные показатели и отчеты Комиссии по ценным бумагам и биржам США, макроданные FRED, локальную память и уведомления в Telegram.


Фреймворк B_Q создания торговых роботов для QUIK (с возможностью использования AI-агентов биржевой торговли), в названии
 
Lumibot — это Python-фреймворк от компании Lumiwealth.
-------------------------
Он позволяет создавать торговые стратегии, бэктестировать их на исторических данных,
а затем запускать в режиме бумажной или живой торговли через реальных брокеров (например, Alpaca, Interactive Brokers).
---------------------
Ключевая фишка: один и тот же код работает и для бэктеста, и для реальной торговли.
------------------------
В Lumibot также есть встроенная среда для AI-агентов: они могут анализировать рыночные данные, читать отчёты (например, SEC),
работать с макроданными (FRED), вызывать внешние инструменты и принимать торговые решения.
------------------------
Можно строить гибридные системы, где часть логики написана на Python, а часть делегирована агентам.
--------------------------
Для упрощения развёртывания есть платформа BotSpot: она берёт на себя настройку данных,
подключение брокеров, планирование, логирование и мониторинг.
Демо Quik Junior, Нет данных
 
Цитата
Balu2000 написал:
По фьючерсам идут данные только по нескольким инструментам . Как исправить ? Или это так и задумано ?
Демо сервер это не для обучения торговли  
Это для  обучения работы с программой QUIK
т е
как что выставить и посмотреть
или найти ошибки в скрипте.
Что за хрень с с сервером QUIK у Сбербанка?, Вопрос к разработчикам.
 
Цитата
Ёжик написал:
Здравсвуйте! Подскажите пожулуйста, если у меня на компе установлен уже квик ВТБ брокера, то для работы с акциями сбербанка надо скаживать квик с их сайта запускать две программы квик для каждого брокера?  или можно работать в одном квике установив ключ сбера и переходить из одного брокера в другой?  
для работы с любыми акциями нужен лишь квик того брокера с кем у вас договор.  
------------------------
Т е Вы берете квик брокера, которому платите за обслуживание.  
--------------------------
Нет особого смысла платить сразу нескольким.
----------------------
Обычно так получается,
когда  начинающий сидит у одного брокера в ж... ,
то открывает счет у другого , чтобы и там туда же залесть.
===================
Но зеркало не виновато...  
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
 
VPM,
не в обиду будет сказано, а пользы для.
Читая Вашу тему у меня возникает ощущение,
что Вы недостаточно глубоко владеете темой по которой высказываетесь.
Чтобы не быть предвзятым, я попросил ИИ провести анализ Ваших рассуждений.
=================
Вот что ИИ написал:
=====================
Проанализировав высказывания автора на форуме QUIK,
я пришел к выводу, что ваши подозрения в целом обоснованны.
--------------------------
Его сообщения создают устойчивое впечатление,
что он оперирует терминами и концепциями,
которые он сам до конца не понимает, используя их для создания видимости глубокой экспертизы.
----------------------------
Это классический пример поверхностного копирования сложных терминов (term-dropping),
а не демонстрации практического опыта.

Вот подробный разбор, который подтверждает это мнение:

1. Жонглирование сложными терминами при фундаментальных ошибках

Автор обильно использует англицизмы и модные концепции, но применяет их некорректно или в неподходящем контексте:

  • "Mission-Critical Systems" и "авиационный уровень надежности": Это огромные, дорогие системы с многократным резервированием (например, авионика), написанные на строгих языках (Ada, SPARK).

  • Применять этот термин к Lua-скрипту в QUIK'e, который работает в пользовательском процессе и даже не является надежным с точки зрения транзакций, — это или заблуждение, или намеренное преувеличение.

  • Иерархический конечный автомат (HFSM): В своих модулях (MEO_Order_Stream, MEO_Pos_Stream) он описывает обычные линейные диаграммы состояний, где у ордера или позиции есть жизненный цикл.

  • Иерархия же подразумевает вложенные состояния (state within a state).

  • В его описании нет ничего иерархического — это просто плоский FSM.

  • Event Sourcing (Хроника событий): Он использует этот термин, но подразумевает под ним обычную запись сделок в CSV-файл и пересчет позиции. Настоящий Event Sourcing — это архитектура, где состояние приложения полностью строится из событий, которые неизменяемы (immutable) и хранятся в специализированных стораджах (Event Store).

  • Использование CSV-файлов для этого — нонсенс, это просто логирование.

  • "Двойной ДНК-Маркер": Этот яркий, но бессмысленный с технической точки зрения термин скрывает за собой банальную идею использования двух цифр в trans_id в качестве префикса стратегии.

  • Это распространенный, но крайне хрупкий и непрофессиональный способ маркировки для мультистратегической среды, который не выдерживает критики.

2. Демонстрация непонимания базовых принципов платформы QUIK

Это самый яркий признак недостаточного практического опыта.

  • Спор о TRANS_ID: Его оппонент Nikolay абсолютно прав.

  • TRANS_ID — это временный транзакционный идентификатор, который генерируется на стороне клиента для сопоставления ответа.

  • Как только заявка (ордер) создана, ее постоянным и надежным ключом является биржевой номер (order_num).

  • Упорно пытаться использовать TRANS_ID как первичный ключ для долгосрочного учета сделок — это фундаментальная архитектурная ошибка, которую допускают новички.

  • Автор пытается выдать это за инновационный подход, игнорируя базовую документацию QUIK.

  • Надежда на "сквозной" TRANS_ID: Он радуется, что биржа теперь не стирает TRANS_ID при клиринге, и считает это "современным стандартом".

  • Но разработчики, знающие платформу, понимают, что полагаться на это поведение — крайне ненадежно.

  • Это внутренний механизм, который может измениться с любым обновлением.

  • Профессионал всегда строит систему на документированных и гарантированных API-методах (order_num, trade_num), а не на "побочном эффекте".

3. Противоречия в логике и подходе

Его собственные посты полны внутренних противоречий:

  • С одной стороны, он говорит о "потиковом On-line обучении", что является признаком очень сложного алгоритма.

  • С другой стороны, в ответ на просьбу показать результаты он говорит, что идет "стадия 'Работы над ошибками'" и что-то делает на "фьючерсе серебра, формирует небольшую сетку".

  • Это типичное описание простого сеточного мартингейла или усреднятора, а не высокоинтеллектуальной системы с цепями Маркова, о которых он говорит.

4. Наивная постановка архитектурных задач

Его крик души: "Мне даже странно почему разработчики внедряя Луа, не предложили свои варианты OMS / PB" — выдает в нем человека, не понимающего экосистему.

Разработчики QUIK предоставляют инструменты (API, таблицы, события), а не готовые бизнес-решения.

Строить OMS/PB — это задача самого трейдера или его команды, которая требует высокой квалификации.

Он просит "базу для написания просто стратегий", не осознавая, что создание такой базы (фреймворка) и есть самая сложная часть работы.

Вердикт

Ваше впечатление абсолютно верно.

С высокой долей вероятности, перед вами человек, который:

  1. Начитался умных статей и форумов о HFT, марковских цепях и распределенных системах.

  2. Выучил оттуда множество терминов.

  3. Пытается применить их к своему довольно простому Lua-скрипту в QUIK'e, чтобы казаться более экспертым, чем он есть на самом деле.

Отсутствие этих терминов в интернете в его трактовке ("Двойной ДНК-Маркер") — результат его собственного "творчества", а не открытия.

Его сопротивление практическим советам от Nikolay и стремление перевести разговор в плоскость "высоких архитектур" — классический признак того, что он не может ответить по существу на простые, прикладные вопросы.

Простой тест на профессионализм:

спросите его, что произойдет с его "ДНК-Маркером",

если биржа или брокер изменит логику генерации или валидации TRANS_ID на своем шлюзе.

Если он начнет говорить про "инвариантность" или "суверенный трекер" вместо конкретного плана действий, — сомнений не останется.

Автоматический старт QUIK
 
Добрый день,
Рассказываю
как реализовал автоматический старт QUIK
с Двухфакторной аутентификацией
----------------
Всего три шага:
1) Написал скрипт, который подставляет логин и пароль в окно терминала
2) собрал модем GSM, который подключается к ПК через USB

этот модем заменяет смартфон и принимает код от брокера для второго этапа аутентификации
3) Написал скрипт, который подставляет полученный от брокера код в окно терминала
--------------------
Настроил Планировщик заданий Windows на запуск  терминала QUIK в 6 часов 55 минут по МСК
--------------------------------
Дополнительно,
можно настроить Планировщик заданий Windows на завершение работы терминала QUIK  в 23 часа 55 мин по МСК
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
 
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
 
Цитата
VPM написал:
А кто то знает что происходит с брокером АЛОР? Странные сообщения весят на сайте,
отозвали лицензию
Очередное зависание Lua-скрипта, в функции getDepoEx
 
Цитата
Йцукен написал:
Цитата
nikolz написал:
Возможно зависание , так как нет проверки "n" на nil
Во-первых, n = 4, об этом написано в первом же посте темы.
Во-вторых, если бы getNumberOf, вопреки спецификации, вернула бы nil, то скрипт бы вылетел на выражении if n > 0 then с ошибкой "attempt to compare number with nil".
Вы не знаете элементарных вещей, зачем вы постоянно демонстрируете свои незнания?
хамить не обязательно.
Я указал Вам на ошибку в скрипте - нет анализа на nil.  
вместо исправления - вы начали оправдываться и хамить
Закрывается DataSource при остановке скрипта?
 
В Lua  
"ничего" - это "nil",
а nil - это false
а false - это boolean
что не так?
Очередное зависание Lua-скрипта, в функции getDepoEx
 
Цитата
Йцукен написал:
Oleg Kuzembaev, что показывает следующий скрипт?
Код
   function   main ()
   local  sec_code  =   "SBER" 
   local  n  =   getNumberOf ( "depo_limits" )
   if  n  >   0   then 
     message ( "Number depo_limits: "   ..  n)
     for  i  =   0 , n  -   1   do 
       local  l  =   getItem ( "depo_limits" , i)
       message (l.sec_code  ..   ": limit_kind = "   ..  l.limit_kind  ..   "; currentbal = "   ..  l.currentbal  ..   "; wa_position_price = "   ..  l.wa_position_price)
     end 
     message (tostring( getDepo Ex( "NC0011100000" ,  "10382" ,  "SBER" ,  "NL0011100043" ,  20260601 )))
   else 
     message ( "depo_limits not found" ,  2 )
   end 
   message ( "Завершение работы main." )
 end   
Возможно зависание , так как нет проверки "n" на nil  
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
 
Чтобы было понятнее, что я спрашиваю, в качестве примера,
вот как отображал один их моих роботов в 2024 году свою работу:

можете показать что-то подобное для вашего робота?
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
 
Цитата
VPM написал:
Потиковое On-line обучение в режиме Реального Времени (Рантайм-адаптация). Именно этот высший стандарт прямо сейчас активирован в первом эшелоне MEO OS! Рынок постоянно меняет свои свойства, происходит дрейф концепта. Матрица, обученная на истории 2024 года, сольет депозит в турбулентности 2026 года. Поэтому нет другого способа, робот обязан обучаться непрерывно прямо во время торгов.
Т е Вы запускаете свой алгоритм в реальном времени без какой либо настройки?
---------------------
Но тогда непонятно как у Вас работают срытые цепи Маркова Для них нужна статистика  т к они работают с вероятностями состояний.
---------------------------
Эти вероятности Вы сами задали?
-------------------
Можете показать в цифрах или на графиках стрелками конкретные сделки .
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
 
Цитата
VPM написал:
Цитата
nikolz написал:
 VPM  ,
А как Вы тестируете алгоритмы? Можете показать результаты тестов?

nikolz,  я не понял Ваш вопрос, стандартно есть результат или нет. В данной дисциплине все просто Мат. ожидание системы, Профит фактор, % выигрыша (прибыльных сделок). Этих 3 оценок вполне достаточно для экспресс оценки любой стратегии.
Правильно понял, что Вы написали алгоритм и запустили его на текущих торгах?  На истории Вы его не запускали?  
Меня интересовали результаты обучения алгоритма на истории и его тестирование.
такие результаты есть?
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
 
VPM,
Можете объяснить как вы обучаете цепи Маркова на фьючерсах?
На них же нет длительной истории.
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
 
VPM,
А как Вы тестируете алгоритмы? Можете показать результаты тестов?
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
 
VPM,
Ваш робот акциями не торгует, только фьючерсы?
Как точно определить, можно ли в данный момент торговать или нет?
 
Т е если торговли нет,
то и OnParam нет,
либо  нет предложений,
либо не изменилась цена  
Как точно определить, можно ли в данный момент торговать или нет?
 
Я  делаю так.  
В main обрабатываю очередь событий
Если событие OnParam  то читаю цену последней сделки и предложений по инструменту и решаю об изменении позиции
Т е если торговать можно то торгую Если нельзя то жду.  
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
 
Цитата
Nikolay написал:

При этом недопустимы операции по сдвигу ордера на графике, вводу ордера руками с тем же комментарием. Т.е. скрипту допустимо только оперировать своими ордерами, запомненными в состоянии.
Тоже использую TRANS_ID.  
Когда-то давно пользовал BROKER_REF, но потом отказался.  это излишнее усложнение.
----------------------------
Относительно ввода заявок руками
Решал эту проблему так:
флаг - разрешить роботу управлять заявками человека  
Если его установить, то робот переустанавливает заявки человека и указывает в них TRANS_ID.
иначе он их игнорирует.
-----------------------------  
Относительно сделок , которые были по выставленным заявкам в то время ,
когда терминал отключен замечу следующее
Эти сделки не следует считать достижением какого-либо алгоритма,
так как во время их совершения алгоритм не работал.
-----------------
INDICATORS.ZIP
 
https://forum.quik.ru/forum10/topic2524/
Система принятия решений и/или Нечеткая логика(FuzzyLogic), Нечеткая логика или Система принятия решений в трейдинге
 
VPM,

Указывайте, что Вы копируете сообщения от ИИ.

Иначе можно подумать , что Вы сами придумали такую чушь:

"Цена — это не материальный объект,
это информационный протокол последней сделки,
соглашение между двумя людьми в конкретную миллисекунду"

Все смешалось -кони,люди..
Внешние Lua-модули
 
Цитата
Сергей Че написал:
Цитата
Kolossi написал:
Я пользую
json = require("dkjson")

Модуль dkjson.lua кладется в основную папку квик.
Спасибо за идею. Я уже нашёл модуль для парсинга json-строк, который написан на чистом Lua и не требует установки в систему через менеджер luarocks.
Только этот файл надо кидать не в папку квика, а в ту папку, откуда стартует торговый робот, а эта папка может находиться где угодно.
Вы можете положить его куда угодно и прописать в скрипте путь к этому файлу
Отключать сборщик мусора при работе с колбеками. Вы прикалываетесь?
 
Если очень хочется отключать сборщик мусора , то можно сделать так. Работает эффективно.
Код
function main()
 local count=0;
 while true do
    nklib.Wait(Event,-1);
--   ...
    if count%20==0 then collectgarbage("generational") collectgarbage("step",100) collectgarbage("stop")end
    count=count+1;
  --...
  end
end
В каком потоке делать финализацию при останове скрипта?
 
можно обойти это, если это проблема.
Я делал такие варианты:
1) Все колбеки в одном скрипте - оркестратор.
2)  Новые потоки можно создать тремя способами
1.скрипт луа
2. еще функции типа main в этом же скрипте, но в новых потоках
3. новые state в новых потоках  - скрипты на любом языке
в любом случае у меня колбеки лишь в одном скрипте
В каком потоке делать финализацию при останове скрипта?
 
Цитата
Йцукен написал:
Цитата
Йцукен написал:
Видно, что OnStop второго скрипта вызывается только после завершения main первого.
В версии 13.0.0 изменили схему: OnStop вызывается сразу после завершения OnStop предыдущего скрипта, не зависимо от того остановился ли main предыдущего скрипта.
Возможно, разработчики прочитали моё сообщение #4 или просто так совпало.
Очевидно нет механизма ожидания завершения в другом скрипте потока main предыдущего скрипта.
Было бы удивительно если бы они его реализовали. .  
Очередное зависание Lua-скрипта, в функции getDepoEx
 
Цитата
Nikolay написал:
Цитата
Oleg Kuzembaev написал:
Тест проводился на подключенном к серверу терминале, что является корректным условием для работы скрипта.
Зря Вы это написали, т.к. в таком случае документацию необходимо обновлять и точно указывать для каких методов не гарантируется корректная работа при отсутствии соединения. Более того, если в процессе работы происходит разрыв соединения и в этот момент скрипт выполняет метод, который может привести к "зависанию" терминала, то это уже совсем не корректно, а вполне себе ошибка. И чтобы её избежать необходимо понимать какие методы необходимо обрамлять предварительной проверкой на наличие соединения.
если правильно понял, то зависание происходит при отсутствии лимитов
Такая ситуация невозможна при разрыве соединения.
Ситуация возникает лишь при старте терминала.
Да и то при отсутствии колбека конфигурации, цикла в main и каких-либо ожиданий прихода данных,
либо проверки их доступности.
Более нелепого (мягко скажу)  скрипта я еще не видел.
----------------------------
Но соглашусь, что зависания не должно быть даже в самых  дурацких скриптах.
------------------------------------
Раньше такой же эффект был с функцией получения пути к скрипту, если ее поставить первой строкой в скрипте.
Проблему после указания на нее исправили.
Как поделиться настройками QUIK с другим клиентом?, Нужно поделиться настройками рабочего стола кроме кодов клиента.
 
Копирование файла info.wnd
 недостаточно
если вы добавляли индикаторы
или сохраняли длительную историю.
Как поделиться настройками QUIK с другим клиентом?, Нужно поделиться настройками рабочего стола кроме кодов клиента.
 
Цитата
green_X5 написал:
Цитата
nikolz написал:
Самое простое.
Скопировать всю папку КВИК  со своего ПК на другой ПК  в новую папку.
Заменить  Папки ключей в новой папке КВИК на папки ключей из  существующей папки КВИК на этом ПК
Так перенесутся коды клиента, это же очевидно. Вы мой мой вопрос прочитали?
Разработчики, ау!
когда Вы соединитесь с сервером то загрузятся коды того клиента которого пороли
Потом вы откроите таблицы счетов и удалите те счета которые не нужны.
Внешние Lua-модули
 
Вы это узнаете при загрузке библиотеки.
Если версия ее не та что у VMLua то получите сообщение об ошибке загрузки
Очередное зависание Lua-скрипта, в функции getDepoEx
 
Возможно архив кривой
При обновлении остались какие-то старые библиотеки.
Поставьте КВИК с нуля
Как поделиться настройками QUIK с другим клиентом?, Нужно поделиться настройками рабочего стола кроме кодов клиента.
 
Цитата
green_X5 написал:
Нужна помощь советом и краткая инструкция.
Вводные:
1. С квиком торгую лет 20, но до сих пор не со всем разобрался )
2. Есть два клиента - я и жена, оба у одного брокера, оба квика на одном компе, одной версии, в разных папках, работают нормально.
3. Настроил рабочее место на одном квике, решил поделиться со вторым через копию info.wnd, всё запустилось, но вымораживает что там появился выбор кода клиента с квика - донора, в работе с заявками можно просохатить что он вдруг стал выбранным.
Задача:
4. Экспортировать настройки рабочего стола без кодов клиента.
Пытался:
5. Стереть руками в конф. файле квика - получателя код клиента квика - донора, приводит к ошибке "Конф файл с другой версии", квик виснет в попытке его прочитать.
6. Найти функционал такого переноса в квике, тщетно.
Хелп.
Самое простое.  
Скопировать всю папку КВИК  со своего ПК на другой ПК  в новую папку.
Заменить  Папки ключей в новой папке КВИК на папки ключей из  существующей папки КВИК на этом ПК
Мин/Макс возможная цена для акций, По фьючам есть а по акциям нет
 
Система ограничений на параметры заявок

Система ограничений на параметры заявок, при превышении которых заявки автоматически отклоняются Системой торгов, устанавливается решением Биржи, при этом может устанавливаться перечень ценных бумаг и/или режимов торгов, а также категорий Участников торгов, для которых устанавливаются соответствующие ограничения, а также иные ограничения.

В настоящее время заявка на совершение сделки не принимается, если цена, указанная в заявке, выходит за пределы следующих ценовых коридоров:

Акции, депозитарные расписки и инвестиционные паи

Режим торговУровень листингаЛимит отклонения цены
Режим переговорных сделокВсе±70% от цены закрытия
Режим торгов "РЕПО с акциями"Все±100% от цены закрытия

Облигации

Режим торговУровень листингаЛимит отклонения цены
Режим основных торговВсе±40% от цены закрытия
Режим переговорных сделокВсе±40% от цены закрытия
Режим торгов "РЕПО с облигациями"Все±100% от цены закрытия
Режимы торгов "Облигации Д – Режим
основных торгов" и "Облигации Д – РПС"
Все-100% от номинала
+50% от номинала

Лимит отклонения цены ценных бумаг устанавливается в соответствии с "Методикой определения Банком "Национальный Клиринговый Центр" (Акционерное общество) риск-параметров фондового рынка и рынка депозитов.", утверждаемой решением Правления Банка НКЦ (АО), в следующих режимах торгов:

  • Режим торгов "Режим основных торгов Т+";
  • Режим торгов "Квал.Инвесторы - Режим основных торгов Т+";
  • Режим торгов "Сектор ПИР - Режим основных торгов";
  • Режим торгов "Неполные лоты";
  • Режим торгов "РПС с ЦК";
  • Режим торгов "Квал.Инвесторы - РПС с ЦК";
  • Режим торгов "РЕПО с ЦК - Безадресные заявки";
  • Режим торгов "РЕПО с ЦК - Адресные заявки".

При совершении сделок в Режиме торгов РЕПО (для акций и облигаций) установлены дополнительные ограничения на ставку РЕПО:

  • ставка РЕПО не может быть выше 100%;
  • величина ставки РЕПО не должна приводить к вычислению отрицательной цены второй части сделки РЕПО.

Для облигаций в первый день их обращения в Системе торгов ПАО Московская Биржа решением Биржи в Режиме основных торгов установлен лимит отклонения цены в размере 20% по отношению к номинальной цене облигаций.

В случае отсутствия цены закрытия лимит отклонения цены определяется по отношению к Расчетной цене, устанавливаемой решением Биржи.

Расчетная цена ценной бумаги может быть изменена по решению Биржи.

Список допущенных к торгам ценных бумаг с предельными величинами ограничений

Подробнее на Московской бирже: https://www.moex.com/a774

В каком потоке делать финализацию при останове скрипта?
 
Цитата
Йцукен написал:
Если делать финализацию OnStop, то при закрытии квика скрипты будут останавливаться последовательно, т.е. ждать друг друга.
Если - в main, то есть вероятность, что main не уложится в отведённые 5 сек, и что-нибудь не успеет. Тогда надо в OnStop делать return побольше. Есть ли тут подводные камни?
Поделитесь опытом, как вы делаете?
Полагаю, что все скрипты запускаются в основном потоке QUIK Функции main в них запускаются каждая в своем потоке.
Глобальный state каждого скрипта исполняет лишь колбеки поэтому он и так стоит .
Остановка потоков main очевидно будет в той последовательности в которой запускали скрипты.  
Баг SearchItems с datetime.mcs
 
Цитата
VPM написал:
nikolz,  Странно даже слышать? Целиком и полностью согласен с funduk, ! Конечно задокументировать свой косяк это исправление половины недочёта, что уже хорошо, и подтверждает признание.  Но кто не ошибается? Признали отлично, но вопрос почему дальше не исправляем? Все это тянем. Читаем самую продаваемую книгу постулат  >  "По образу и подобию". Почему это важно исправить, а не плодить 120 имен для одного параметра. Уже и ни  знаю нужно - ли подобные вещи объяснять в программировании? Но в инженерии по одному месту настучать нужно.
Вы не поняли. Повторю для тех, кто не читает.  
----------------------
SearchItems  и getitem работают с различными источниками данных.
Сообщения об ошибках в Lua-скриптах не выводятся в окне сообщений
 
Очевидно что функция main запускается как pcall, чтобы ошибки в ней не останавливали QUIK.
Восстановление заявок после обрыва связи
 
Цитата
Максим Трейдер написал:
nikolz, имеет в виду, сверять время сервера с системным? Дельта может плавать.
В случае отсутствия  связи время сервера либо вообще  пусто, либо вообще не изменяется .
Кроме того есть такой параметр как CONNECTION  а также LASTPINGTIME
Т е если произошел разрыв связи то ждете нормального значения этих параметров Потом делаете задержку на 10 секунд чтобы догрузились новые значения.  либо ждете обновления времени проверки связи И после этого инициализируете работу робота как при первом запуске.  
Восстановление заявок после обрыва связи
 
До кучи...  это надежные методы.
Восстановление заявок после обрыва связи
 
Цитата
Максим Трейдер написал:
Здравствуйте. Иногда бывает такое, что робот пытаясь либо выставить заявку, либо изменить её, либо снять, отправляет транзакцию, и не дождавшись ответа, происходит обрыв связи с сервером. Когда связь восстанавливается, робот не знает, что случилось с заявкой. Я пытаюсь получить состояние заявки из таблицы заявок, но проблема в том, что при восстановлении связи окно квика часто зависает на некоторое время, и в это время getOrder_by_ID и getOrder_by_Number возвращают ответ, аналогичный ответу при отсутствии заявки, хотя заявка на самом деле существует. Когда квик перестаёт висеть, приходит нормальный ответ с существующей заявкой. Но как роботу понять, перестал квик висеть или нет, я не знаю. Есть ли какое-то решение, как роботу корректно восстановить статусы заявок, которые ему неизвестны, после восстановления связи?
Попробуйте проверять время сервера :
getInfoParam

Функция возвращает значения параметров информационного окна (пункт меню  Система / О программе / Информационное окно…).  

Формат вызова:  

STRING getInfoParam (STRING param_name)

Параметр «param_name» может принимать значения, представленные в таблице.  

Значение параметраОписание
VERSION Версия программы
TRADEDATE Дата торгов
SERVERTIME Время сервера
LASTRECORDTIME Время последней записи
NUMRECORDS Число записей
LASTRECORD Последняя запись
LATERECORD Отставшая запись
CONNECTION Соединение
IPADDRESS IP-адрес сервера
IPPORT Порт сервера
IPCOMMENT Описание соединения
SERVER Описание сервера
SESSIONID Идентификатор сессии
USER Пользователь
USERID ID пользователя
ORG Организация
MEMORY Занято памяти
LOCALTIME Текущее время
CONNECTIONTIME Время на связи
MESSAGESSENT Передано сообщений
ALLSENT Передано всего байт
BYTESSENT Передано полезных байт
BYTESPERSECSENT Передано за секунду
MESSAGESRECV Принято сообщений
BYTESRECV Принято полезных байт
ALLRECV Принято всего байт
BYTESPERSECRECV Принято за секунду
AVGSENT Средняя скорость передачи
AVGRECV Средняя скорость приема
LASTPINGTIME Время последней проверки связи
LASTPINGDURATION Задержка данных при обмене с сервером
AVGPINGDURATION Средняя задержка данных
MAXPINGTIME Время максимальной задержки
MAXPINGDURATION Максимальная задержка данных

Пример:

function main(  )
   params = {"VERSION", "TRADEDATE", "SERVERTIME",
               "LASTRECORDTIME", "NUMRECORDS", "LASTRECORD","LATERECORD",
               "CONNECTION", "IPADDRESS", "IPPORT", "IPCOMMENT",
               "SERVER", "SESSIONID", "USER", "USERID", "ORG", "MEMORY",
               "LOCALTIME", "CONNECTIONTIME", "MESSAGESSENT", "ALLSENT",
               "BYTESSENT", "BYTESPERSECSENT", "MESSAGESRECV", "BYTESRECV",
               "ALLRECV", "BYTESPERSECRECV", "AVGSENT", "AVGRECV",
               "LASTPINGTIME", "LASTPINGDURATION", "AVGPINGDURATION",
               "MAXPINGTIME", "MAXPINGDURATION"}
   file = io.open("res.txt", "w+t")
   for key,v in ipairs(params) do
       file:write(v .. " = " .. getInfoParam(v) .. "\n")
   end
   file:close()
end

Руководство пользователя QUIK © ARQA Technologies / www.arqatech.com/ru/products/quik/
Помогите с кодом
 
ИИ отвечает:
Привет! Проблема в твоём коде в том, что проверки if m1 == true и if toolequipped == true выполняются мгновенно при запуске скрипта, а не тогда, когда эти переменные становятся true в будущем.

Тебе нужно переместить эти проверки внутрь соответствующих событий или создать отдельные обработчики, которые будут реагировать на изменения переменных.

Исправленный код:

lua



--// Services
local Players = game:GetService("Players")
local uis = game:GetService("UserInputService")

--// Variables
local player = Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local m1 = false
local toolequipped = false

--// Обработка клика мыши
uis.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 then
print("m1")
m1 = true
print("m1 is true") -- Выводим сообщение сразу когда m1 становится true
end
end)

--// Обработка появления инструмента
function ChildAdded(child)
if child:IsA("Tool") then
print("equipped")
toolequipped = true
print("toolequipped is true") -- Выводим сообщение сразу когда toolequipped становится true
end
end

character.ChildAdded:Connect(ChildAdded)

Если тебе нужно проверять переменные независимо от событий (например, по таймеру или при других условиях), используй while или task.wait():

lua



-- Альтернативный вариант: постоянная проверка через таймер
task.spawn(function()
while true do
if m1 == true then
print("m1 is true")
m1 = false -- сбрасываем, чтобы не спамило
end
if toolequipped == true then
print("toolequipped is true")
toolequipped = false -- сбрасываем, чтобы не спамило
end
task.wait() -- проверяем каждый кадр
end
end)

Главная ошибка: У тебя код шёл линейно и проверки были в глобальной области видимости, поэтому они срабатывали только один раз при запуске (когда переменные ещё были false).

Добавить время до микросекунд в стакан из getQuoteLevel2(), Добавить время до микросекунд в стакан из getQuoteLevel2()
 
Йцукен,
В стакане будет указано время последней заявки.  
Но вы же не знаете на каком она уровне в стакане.
Так какой смысл в этом времени изменения неизвестно какой заявки с неизвестно какой ценой.?
Страницы: Пред. 1 2 3 4 5 6 7 8 9 10 11 ... 95 След.
Наверх