Как сверить количество лотов в Квике и в моем роботе .

Страницы: 1
RSS
Как сверить количество лотов в Квике и в моем роботе .
 
Подскажите кто и как  производит сверку по количеству лотов  в портфеле в своем Квике и в своем скрипте ? И через какие функции ЛУА вы вызываете данные из Квика о своем  состоянии портфеля  и количеству лотов в  своих торгуемых инструментах.?

  В моей предыдущей разработке  робота  программисты писали через  DDE и там эта функция прекрасно работала у них , и более того каждый час сохраняли данные в роботе по количеству  лотов и если после сверки данных  в случае выявления рассхождений  то мне восстанавливали  количество по данным брокера , для чего  брались данные всех моих сделок  за предыдущий час с первой его секунды и накатывались заново  на сохраненные данные .  Но в Луа ни как не получается даже запросить у брокера  сколько  точно лотов  и по каким инструментам  у  него по мне числится. Хотя  пару месяцев назад  это получалось  делать стандартной функцией.  
  Сотрудники Квика по какой то причине не могут  помочь  разобраться с этим ,  по крайней мере в одной из тем  на этом форуме  уже вопрос поднимался не однократно , но там  пользователь Владимир так  и не смог достучаться до разработчиков Квика.  
 
Цитата
БорисД написал:
Подскажите кто и как  производит сверку по количеству лотов  в портфеле в своем Квике и в своем скрипте ? И через какие функции ЛУА вы вызываете данные из Квика о своем  состоянии портфеля  и количеству лотов в  своих торгуемых инструментах.?

  В моей предыдущей разработке  робота  программисты писали через  DDE и там эта функция прекрасно работала у них , и более того каждый час сохраняли данные в роботе по количеству  лотов и если после сверки данных  в случае выявления рассхождений  то мне восстанавливали  количество по данным брокера , для чего  брались данные всех моих сделок  за предыдущий час с первой его секунды и накатывались заново  на сохраненные данные .  Но в Луа ни как не получается даже запросить у брокера  сколько  точно лотов  и по каким инструментам  у  него по мне числится. Хотя  пару месяцев назад  это получалось  делать стандартной функцией.  
  Сотрудники Квика по какой то причине не могут  помочь  разобраться с этим ,  по крайней мере в одной из тем  на этом форуме  уже вопрос поднимался не однократно , но там  пользователь Владимир так  и не смог достучаться до разработчиков Квика.  
самый простой вариант.
Пусть Ваши программисты сделают обертку на API C for Lua для "функции через DDE " и у  вас будет функция LUA через DDE.
-------------
Таким образом Вы можете ваших предыдущих роботов переделать на LUA.
 
и еще...
Полагаю, что ответ на ваш вопрос равносилен  написанию конкретного алгоритма и программы.
Сомневаюсь, что кто-то сможет доходчиво и подробно рассказать такой алгоритм словами на форуме.  
 
БорисД, Насколько я знаю, DDE - это протокол. Старый. Заменён на какое-то новое говно вроде OLE. Всё это поделия мелкомягких, так что говно просто по определению. А вот нужна именно функция. Такая функция, как оказалось, есть (хотя меня когда-то здесь уверяли, что это сделать невозможно вообще никак), зовут её getDepoEx, и она действительно работает. Точнее, работала несколько дней после того, как я написал программу сверки портфелей, а потом работать перестала. Почему - без понятия, ни единой запятой в коде я не менял. По моим представлениям, эта утилита должна входить в базовый набор обязательным элементом - как вообще можно работать без сверки портфелей? Неужели НИКТО до сих пор этим опросом не озаботился?!

nikolz,
Цитата
Сомневаюсь, что кто-то сможет доходчиво и подробно рассказать такой алгоритм словами на форуме.  
Как говорил Станиславский, НЕ ВЕРЮ! Должен же хоть один программист хоть изредка появляться на этом форуме!
 
Что-то не очень понятна проблема. Есть методы получения баланса по бумагам, контрактам. Причем для разных типов расчетов. Все что они делают - это передают выдают данные, которые транслирует брокер. Сам терминал ничего не знает про ваши активы. Чем они не угодили?

Правда, в большинстве случаев, скрипт ведет свою позицию, и общая позиция на балансе ему не интересна и даже вредна. Ведь разные скрипты и человек могут вести торговлю одновременно. Один в лонг, другой в шорт - баланс 0, а позиции есть.
 
Nikolay, Описываю проблему (как я её вижу). Нужен программный доступ к моему портфелю со стороны брокера - то, что видит именно он. Эти данные довольно часто различаются (по разным причинам). И у меня претензия именно к тем данным, которые транслирует брокер (точнее, что даёт мне терминал). Он ничего не знает про мои активы, но это же не значит, что он должен выдавать нули!

Да, "скрипт ведет свою позицию", но данные портфелей должны совпадать! Иначе он ведёт торговлю по неверным данным, и самая безопасная ситуация в данном случае - "инструмент запрещён для операции шорт". То есть скрипт думает, что бумаги этого тикера у него есть и, соответственно, он может их продать, а брокер - что у него этих бумаг нет. Один из них неправ (причём ошибки встречаются и на той, и на другой стороне.
 
Цитата
Владимир написал:
БорисД, Насколько я знаю, DDE - это протокол. Старый. Заменён на какое-то новое говно вроде OLE. Всё это поделия мелкомягких, так что говно просто по определению. А вот нужна именно функция. Такая функция, как оказалось, есть (хотя меня когда-то здесь уверяли, что это сделать невозможно вообще никак), зовут её getDepoEx, и она действительно работает. Точнее, работала несколько дней после того, как я написал программу сверки портфелей, а потом работать перестала. Почему - без понятия, ни единой запятой в коде я не менял. По моим представлениям, эта утилита должна входить в базовый набор обязательным элементом - как вообще можно работать без сверки портфелей? Неужели НИКТО до сих пор этим опросом не озаботился?!

nikolz,  
Цитата
Сомневаюсь, что кто-то сможет доходчиво и подробно рассказать такой алгоритм словами на форуме.  
Как говорил Станиславский, НЕ ВЕРЮ! Должен же хоть один программист хоть изредка появляться на этом форуме!
Владимир, если Вы чего-то не знаете, то это не повод, чтобы писать херню с умным видом.
===============
Для дебилов поясняю:
DDE - это метод передачи данных между приложениями через RAM  -самый быстрый из всех существующих.
-----------------------
"DDE — это протокол, позволяющий приложениям обмениваться данными в различных форматах.
Приложения могут использовать DDE для одноразовых обменов данными или для текущих обменов,
в которых приложения обновляются по мере появления новых данных.
Обмен DDE может происходить между приложениями, запущенными на одном компьютере, или на разных компьютерах в сети."
-------------
В Lua у Вас есть лишь метод передачи через файлы.
---------
Но Вы очевидно знаете иной способ (для особо ...)
 
nikolz, О! Ещё один списилист вразнос пошёл... :smile:

Ну и хренли тут очередной "гуру" пояснил? Я сразу по памяти сказал, что DDE - это протокол! Ща глянул в Вики - и про мелкомягих я всё правильно сказал. Только вот вопрос остался: ЗА КАКИЕ ХЕРОМ "приложениям обмениваться данными в различных форматах", если вот оно ОДНО-ЕДИНСТВЕННОЕ приложение по кличке "скрипт", которому нужно получить данные от брокера СПЕЦИАЛЬНО ДЛЯ ЭТОГО НАПИСАННОЙ БИБЛИОТЕСЧНОЙ ФУНКЦИЕЙ? А Борька ещё спросил, и я присоединяюсь к вопросу: "ХОТЬ КТО-НИБУДЬ на этом форуме вообще сверяет свои портфели с брокером? Да или нет?

Естественно, я ЗНАЮ "иной способ" - передача через файлы есть очередной идиотизм, и я об этом способе тыщу раз писал. И что файлы у меня используются лишь для чтения данных при запуске, записи данных по выходу, ведения лога и сбрасывания дампа каждые 5 минут, поскольку Квик всё чаще начинает отвисать.
 
Цитата
Nikolay написал:
Что-то не очень понятна проблема. Есть методы получения баланса по бумагам, контрактам. Причем для разных типов расчетов. Все что они делают - это передают выдают данные, которые транслирует брокер. Сам терминал ничего не знает про ваши активы. Чем они не угодили?
функция getDepoEx перестала работать  поэтому я и спрашиваю есть ли у кого на примете другие функции или способы вытащить  из квика через ЛуаКвик  количество имеющихся  у меня в портфеле лотов  по каждому инструменту ?
 
есть таблица depo_limits
Вы можете простым перебором получить данные, можете отфильтровать SearchItems и уже их перебрать. И скажу, что это будет надежнее.
 
Цитата
nikolz написал:

Пусть Ваши программисты сделают обертку на API C for Lua для "функции через DDE " и у  вас будет функция LUA через DDE.
-------------
Таким образом Вы можете ваших предыдущих роботов переделать на LUA.
Дело в том что тот программист который писал мне на DDE сервере робота  натренировался на мне  и теперь уехал в США по контракту работать  а там им свободного времени совсем не оставляют , а кто то другой в его кодах вряд ли разберется чтобы по предложенному вами варианту  для меня  сотворить конфетку.  Конечно я могу подождать  когда  тот мой родненький а сейчас  новоиспеченный американский пронграммист освободится и сделает мне такую конфетку , но с другой стороны я понимаю что если можно  эти данные через DDE  вытягивать из квика то значит их можно как то и из ЛуаКвик вытащить ,  вопрос вот только как это сделать кроме функции getDepoEx  ?
 
Nikolay, спасибо за совет  , будем изучать этот способ.  
 
nikolz и Владимир,  ну не ругайтесь вы на пустом месте ведь истина достигается в споре а не в скандале .  
 
Цитата
Nikolay, спасибо за совет  , будем изучать этот способ.  
там вроде есть то что нам нужно  ( некое поле currentbal ) и  надо с этими данными поэксперементировать  , а пока не понятно какой именно функцией этот поле из таблицы забирать.

вопрос к Николаю :  -  а сам используешь такой способ ?  И  сверяешь ли  вообще наличие по лотам в своем скрипте у в данных у брокера ?  
 
Nikolay,
нашел в интернете вот такое
https://smart-lab.ru/blog/427295.php
Проблема такого варианта в том, что он показывает ненулевые значения в currentbal только для позиций, которые были открыты ранее (возможно, по которым прошло +2 дня). По позициям, которые были открыты сегодня, он точно показывает 0.  Тоесть получается что здесь используются данные  Т 0  ? а нам нужны данные по Т2
 
Да currentbal - это необходимо поле.

Т.к. мы работаем с деньгами, то, как и при проектировании авиалайнера, лучше использовать самый надежный способ как основной.
Понятие у брокера - очень размытое. Один брокер, например в клиринг снимает все лимиты и баланс, а другой нет. Это относится к срочной секции, но в данном случае показывает, что разные брокеры ведут себя по-разному.Поэтому сверять можно, но нельзя это делать вне торговой сессии. Плюс, нельзя исключать и ошибки, задержки передачи данных на стороне сервера брокера. Чаще всего через некоторое время все выравнивается. По крайней мере я не знаю случаев когда брокер "украл" позицию.

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


Поэтому если скрипт смотрит баланс, то он смотрит на него и контролирует сумму по всем сделкам, чтобы принимать решения только когда все сделки пройдут. Т.к. часто бывает так, что баланс позиции изменился, а сделок еще нет. Или наоборот.
Т.к. каждая новая сделка - это контроль лимитов, то необходимо ждать когда пройдут все операции связанные с любой сделкой. Но это не сверка баланса, а просто получение нового баланса, подтвержденного сделками.
 
Nikolay,
Цитата
есть таблица depo_limits
К таблицам (точнее, только к одной "orders") я обращаюсь в очень редких случаях, чтобы снять активные несработавшие заявки (чтобы не связываться с OnOrder). Это которые через getItem. А к ТТТ я обращаюсь очень часто, сотни раз в секунду, и для неё есть специальная функция getParamEx. Аналогичная функция есть и для сверки getDepoEx - что же ещё должно работать, если не она? Тем более, она реально работала, а потом вдруг перестала. И что, Вы предлагаете выбросить на помойку специализированную getDepoEx и заменить её на универсальную getItem?

У меня старая версия скрипта позволяла торговать в режиме кентавра, учитывая "левые" сделки, которые на поймала через OnTrade, но такая техника имеет некоторые неприятные следствия, и я её отменил. Но и без этого некоторые сделки пропадают, и это почти гарантированное рассогласование портфелей. И вообще меня уже очень заинтересовал вопрос: кто как сверяет портфели? И сверяет ли вообще - неужели только мы с Борисом?
 
Цитата
БорисД написал:
Цитата
nikolz написал:

Пусть Ваши программисты сделают обертку на API C for Lua для "функции через DDE " и у  вас будет функция LUA через DDE.
-------------
Таким образом Вы можете ваших предыдущих роботов переделать на LUA.
 Дело в том что тот программист который писал мне на DDE сервере робота  натренировался на мне  и теперь уехал в США по контракту работать  а там им свободного времени совсем не оставляют , а кто то другой в его кодах вряд ли разберется чтобы по предложенному вами варианту  для меня  сотворить конфетку.  Конечно я могу подождать  когда  тот мой родненький а сейчас  новоиспеченный американский пронграммист освободится и сделает мне такую конфетку , но с другой стороны я понимаю что если можно  эти данные через DDE  вытягивать из квика то значит их можно как то и из ЛуаКвик вытащить ,  вопрос вот только как это сделать кроме функции getDepoEx  ?
Я написал Вам ,
как сделать проще и перевести Вашего робота в луа.
--------------------------
Дело в том, что сделать обертку для работающей функции на СИ может программист самой низкой квалификации, который знает СИ.
Это может сделать студент.  Ему не надо даже знать QLUA и КВИК
----------------------
Написать заново, то, что у Вас делается в вашем старом роботе может программист уровня того, который уехал в штаты.
Ему надо знать гораздо больше, чем в первом случае.
-------------------------------  
Не в обиду будет сказано, но Вы задаете вопрос чисто технический. Для его решения надо просто изучить LUA  и библиотеку QLUA и КВИК.
------------
Предположу, что Вы знаете КВИК, но судя по вопросу, не знаете LUA и QLUA и не умеете разрабатывать методы,алгоритмы и программы.  
Но вопрос Ваш именно про это.
 
Что же касается вопроса "Как сверяется портфель", то он не конкретный.
С чем Вы его сверяете?
По какому параметру хотите сверить.
Что Вы используете в качестве критерия истинности.
Почему у Вас портфель нулевой?
-----------------------
Рассказываю обобщенный алгоритм робота
1) Момент первого подключения квика к брокеру или восстановления соединения:
Получаем:
  • getClassesList - функция для получения списка
    кодов классов, полученных с сервера в ходе сеанса связи
  • getClassInfo - функция для получения информации
    о классе
  • getClassSecurities - функция для получения
    списка кодов инструментов для списка классов, заданного списком кодов
  • getDepo - функция для получения позиций по инструментам
  • getDepoEx - функция для получения позиций по инструментам указанного типа
  • getMoney - функция для получения информации по денежным позициям
  • getMoneyEx - функция для получения информации по денежным позициям указанного типа
  • getFuturesLimit - функция для получения информации по фьючерсным лимитам
  • getFuturesHolding - функция для получения информации по фьючерсным позициям
На основе этих данных формируем списки доступных инструментов, списки и состояние счетов.
2) При дальнейшей работе обрабатываем информацию о параметрах счетов с помощью колбеков
  • OnAccountBalance - изменение позиции по счету
  • OnAccountPosition - изменение позиции по счету
  • OnDepoLimit - изменение позиции по инструментам
  • OnDepoLimitDelete - удаление позиции по инструментам
  • OnFirm - получение описания новой фирмы
  • OnFuturesClientHolding - изменение позиции по срочному рынку
  • OnFuturesLimitChange - изменение ограничений по срочному рынку
  • OnFuturesLimitDelete - удаление лимита по срочному рынку
  • OnMoneyLimit - изменение денежной позиции
  • OnMoneyLimitDelete - удаление денежной позиции
3) Ситуацию на рынке отслеживаем по TTT и стакану
  • OnParam - изменение текущих параметров
  • OnQuote - изменение стакана котировок
4) Торговлю реализуем с помощью функций работы с заявками
  • OnNegDeal - новая заявка на внебиржевую сделку или изменение параметров существующей заявки на внебиржевую сделку
  • OnNegTrade - новая сделка для исполнения или изменение существующей сделки для исполнения
  • OnOrder - новая заявка или изменение параметров существующей заявки
  • OnStop - остановка скрипта из диалога управления
  • OnStopOrder - новая стоп-заявка или изменение параметров существующей стоп-заявки
  • OnTrade - новая сделка или изменение параметров существующей сделки
  • OnTransReply - ответ на транзакцию
При этом можно вести журнал регистрации совершенных сделок и текущей прибыли/убытков.
======================
Для торговли одним инструментом есть более легкий вариант ,
без каких либо журналов и пунктов 1,2,3  
-робот на основе индикатора и функции CalcBuySell - функция для расчета максимально возможного количества лотов в заявке
---------------------
Успехов в изучении LUA И QLUA
 
 
Цитата
БорисД написал:
Nikolay,
нашел в интернете вот такое
https://smart-lab.ru/blog/427295.php  
Проблема такого варианта в том, что он показывает ненулевые значения в currentbal только для позиций, которые были открыты ранее (возможно, по которым прошло +2 дня). По позициям, которые были открыты сегодня, он точно показывает 0.  Тоесть получается что здесь используются данные  Т 0  ? а нам нужны данные по Т2
Хотел бы обратить Ваше внимание на тот факт, что DDE позволяет Вам получать  данные из любых таблиц терминала КВИК универсальным способом, чего Вы не сможете сделать на QLUA.
Например при работе с опционами DDE даст Вам все, а QLUA - нет.
Вот и думаете что и как делать.
 
nikolz, Лапуль, ну что Вы корчите из себя профи, ну что Вы постоянно лезете с голой жопой против танка? Вы для меня перестали существовать как программист ещё со времён Вашей истерики по поводу VM, то бишь... ага, вот она, истерика образца 30.10.2020 13:39:44
Не знаю, что за книгу вы написали и здесь пиарите, но в языках и виртуальных машинах вы ноль без палочки. Где Вы увидели интерпретатор в реализации луа в квике? Это VM а не интерпретатор. И там не куски текста а байт код - т е это машинный язык именно VMLua.

Лапуль, я не только описал свой алгоритм сверки портфелей, но и привёл его полный код. Не Вам, лапуль, а сотрудникам техподдержки - Вы меня не интересуете вообще никак. Вот ссылка - Вам для общего развития и чтобы идиотских вопросов поменьше задавали:
https://forum.quik.ru/messages/forum10/message61995/topic6503/#message61995

А свой "обобщенный алгоритм робота" можете смело засунуть себе в задницу. :wink:  
 
Цитата
Владимир написал:
nikolz, Лапуль, ну что Вы корчите из себя профи, ну что Вы постоянно лезете с голой жопой против танка? Вы для меня перестали существовать как программист ещё со времён Вашей истерики по поводу VM, то бишь... ага, вот она, истерика образца 30.10.2020 13:39:44
Не знаю, что за книгу вы написали и здесь пиарите, но в языках и виртуальных машинах вы ноль без палочки. Где Вы увидели интерпретатор в реализации луа в квике? Это VM а не интерпретатор. И там не куски текста а байт код - т е это машинный язык именно VMLua.

Лапуль, я не только описал свой алгоритм сверки портфелей, но и привёл его полный код. Не Вам, лапуль, а сотрудникам техподдержки - Вы меня не интересуете вообще никак. Вот ссылка - Вам для общего развития и чтобы идиотских вопросов поменьше задавали:
https://forum.quik.ru/messages/forum10/message61995/topic6503/#message61995

А свой "обобщенный алгоритм робота" можете смело засунуть себе в задницу.  
То, что ты мудак, давно понятно, мог бы и не подтверждать .
 
Цитата
nikolz написал:
Дело в том, что сделать обертку для работающей функции на СИ может программист самой низкой квалификации, который знает СИ.
Это может сделать студент.  Ему не надо даже знать QLUA и КВИК
----------------------
Написать заново, то, что у Вас делается в вашем старом роботе может программист уровня того, который уехал в штаты.
Ему надо знать гораздо больше, чем в первом случае.
-------------------------------  
Не в обиду будет сказано, но Вы задаете вопрос чисто технический. Для его решения надо просто изучить LUA  и библиотеку QLUA и КВИК.
------------
Предположу, что Вы знаете КВИК, но судя по вопросу, не знаете LUA и QLUA и не умеете разрабатывать методы,алгоритмы и программы.  
Но вопрос Ваш именно про это.
Да , вы  в чем то правы про меня  .  Ведь я так и не изучил  и не научился самостоятельно программировать  на Луа или каком то другом языке  , когда мой программист уехал в штаты то я здесь на форуме создал тему с попыткой найти  опятного программиста  и с опытом  биржевой торговли  для исполнения моих алгоритмов в кодах и  именно  на ЛуаКвике  . Искать очередного студента или программиста желающего на мне поучиться или потренироваться  я уже устал  их натаскивать .  В данный момент  сотрудничаем с Владимиром и дорабатываем скрипт  так чтобы  скрипт был максимально кратким по количеству строк кода  и не имел излишиств которые приводят к ошибкам и остановкам  работы скрипта ,  Но для принятия  своих решений  скрипт  однозначно должен иметь нужный  нам набор данных и сведений  от Квика , и желательно без лишних файлов  и много ступенчатых  наворотов  типа через DDE , и в этом моё и его мнение совпадает что желательно обойтись малой кровью и только имеющимися функциями в ЛуаКвике , а DDE пусть останется на крайний и не самый желательный вариант для получения  нужных  нам данных от Квика.
 Кстати : его первый скрипт который он имел еще до нашего с ним знакомства у меня  на компе работал безостановочно месяцами , при рассоединении интернета  или после остановки  и повторного запуска серверов брокера скрипт подтягивался самостоятельно как только мой Квик начинал принимать данные от брокера.  Если я  обновлял свой Квик на новую версию  то это  его  старый скрипт  ни разу не потребовал доработок и продолжал и дальше устойчиво торговать .  Фактически его старому скрипту не требуется сопровождение программистом .   И этим не мог похвастаться  не один из моих программистов с кем я раньше сотрудничал при любой их крутизне и программистком опыте  , ведь помимо ошибок в наших кодах есть еще много ошибок и глюков  и в самом Квике.  Кстати здесь на форуме  тоже    никто  не  заявлял про своих роботов  что их скрипты могут торговать безостановочно месяцами или годами.   Конечно и у Владимира новый скрипт не достиг такой бузупречной надежности какая была в  его старом скрипте , но от релиза к релизу  надежность  повышается а мы с Владимиром  своими идеями и новыми алгоритмами его снова и снова усложняем  и курочим , но оновная цель : надежность скрипта остается прежней  и этой надежностью не хочется как то уж сильно рисковать.
Вот поэтому я в процессе своего изучения QLUA и КВИК и задаю чисто технический вопрос :   Кто нибудь  и только при помощи имеющихся функций в ЛуаКвик  научился сверять :           количество  своих лотов в своем скрипте с  количеством в Квике этих же данных от брокера ?    
 
nikolz,
и
Владимир,

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

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

Про баланс, опять, вопрос очень размытый. Баланс брокера - это единая, общая картина. А скрипту же чаще всего необходимо видеть только свое. В этом случае этот баланс что даст?
Вот сделки необходимо считать, да. Надо контролировать лимиты денежных средств, перед подачей транзакции. Иногда, чтобы развернуть позицию необходимо сначала закрыть прошлую, а потом уже открывать новую.
Такие технические моменты необходимы.

Баланс брокера контролируется в тех алгоритмах, которые учитывают сторонние операции. Т.е. реагируют на внешние изменения. И в них это действительно важно. Но баланс должен быть подкреплен сделками. И, наверно, это и есть проверка. Потому что если получили баланс 0, а сделок нет, то лучше не принимать решения. Или наоборот - сделки есть, а баланс старый. И получаешь ошибку транзакции - в шорт нельзя.
 
БорисД, Борь, ну какие "взаимные антипатии", какой "взаимный игнор"? Ты же помнишь, как лично твою ветку (очень популярную, кстати) просто уничтожило стадо распальцованных бездарей, с визгами и улюлюканьем. Ты же не хуже меня знаешь, что без сопротивления говно, как и газ, заполняет любой объём! Да, "ты так и не изучил  и не научился самостоятельно программировать  на Луа или каком то другом языке", и вряд ли когда-либо научишься, но с мозгами у тебя всегда было в полном порядке, мне с тобой всегда было интересно (думаю, и тебе со мной тоже), некоторые твои идеи уже воплотились в код, мною написанный, некоторые ещё нет, некоторые вообще вряд ли туда войдут, ибо неизвестно ещё, чьи идеи победят - мои или твои, некоторые мои ты уже принял... у нас с тобой именно СОТРУДНИЧЕСТВО, а не отношения "заказчик-исполнитель": ьв профессионал а торговле я - в программировании. И в наших с тобой разговорах мы тоже выражений не выбираем - половина местной публики давно бы соплями изошла, если на неё вывалить половину наших с тобой "текстов". Борь, но у нас с тобой всегда были, есть и будут разговоры ПО ДЕЛУ! А здесь что? Очередной долбаный "гуру", которого уже тыщу раз возили носом по его говну, в очередной раз всплывает и начинает засирать ветку очередной клинической хернёй с вумным видом. DDE - это ПРОТОКОЛ, БЛИН, и потому он В ПРИНЦИПЕ не может ничего обеспечивать - это могут только утилиты, поддерживающие этот протокол. В нашем же случае не работает специально для этого разработанная функция! Техподдержка опять молчит. И кивать после этого в сторону DDE... я просто не знаю, с чем это можно сравнить по уровню идиотизма. Кстати, я никогда не набрасывался на новичков, и здесь гонял именно "тех кто себя уже считает гуру как программист".
 
Nikolay,
Цитата
Зачем рассказывать про то как скрипты работают месяцами - это само собой разумеется, а как иначе.
Это вовсе не "само собой разумеется" - это подразумевает наличие механизма восстановления после сбоев, который как раз у всех (включая меня, Бориса и Вас) пркактически отсутствует.

Про баланс вопрос совершенно конкретный: торгует именно скрипт, ведёт бухгалтерию именно скрипт (даже если имеются "левые" сделки - ручные или другими скриптами сделанные), скрипт отслеживает состояние своего портфеля и своих средств - в тех пределах, которые для него определил юзер, и ему совершенно необходимо знать, что по поводу его личного портфеля думает брокер. Ещё конкретнее: почему не работает getDepoEx?

А контролировать лимиты денежных средств, перед подачей транзакции - это простая задача: транзакций много хороших и разных, а сверка производится очень редко. Но если производится, то должна же работать, чёрт побери!  
 
Цитата
Владимир написал:
Это вовсе не "само собой разумеется" - это подразумевает наличие механизма восстановления после сбоев, который как раз у всех (включая меня, Бориса и Вас) пркактически отсутствует.
Что значит отсутствует. Я Ваш код не видел, а свой вижу. И у меня, ленивого, нет никакого желания сидеть за монитором и контролировать. Зачем тогда автоматизация торговли, если все равно сидишь за терминалом. Много других полезных занятий есть. Поэтому скрипт должен все помнить, считать, проверять, корректировать. А если что-то не так, то пришлет оповещение на почту.
 
Nikolay, Свой код сверки портфелей я выкладывал, и даже в этой ветке ссылку на него давал. И у меня, ленивого, тоже нет никакого желания сидеть за монитором и контролировать. Сверять портфели и вообще вести торговлю должен именно скрипт. Моя задача - запустить его утром и остановить вечером. Борис ещё ленивее - он его вообще выключать не хочет. Поэтому скрипт именно "всё помнит, считает, проверяет, корректирует". Но он В ПРИНЦИПЕ не может знать, что у него совершена сделка, если квитанция о ней к нему не пришла. А потому, чтобы просто УЗНАТЬ о том, что не так и прислать оповещение на почту, он должен периодически проводить сверку портфелей. А сверка не работает.
 
Если Вы используете колбеки, то да. Но если скрипт не работал в момент совершения сделки (пропустили колбек), то это не должно приводить к проблемам в работе скрипта.
 
Nikolay, Коллбеки как раз приходят пачками, вычищать дубли затрахаешься. Но приходят они иногда через несколько минут, когда заявка скриптом уже снята. Возможно, они приходят неправильно заполненными, и мой скрипт их не опознаёт - НУ НЕ ВЕРЮ я, что столько времени требуется на приход квитанций! Свет за секунду 7 раз вокруг Земли успевает облететь! А что Вы предлагаете в качестве альтернативы OnTrade? Рыться по таблице сделок, выкинув нафиг ПОСЛЕДНИЙ из коллбеков, который я использую? Так ведь всё равно не поможет! И скажите это Борису - моё скрипт делал десятки сделок в день (теперь, после Его Пришествия - сотни), но он-то хочет тысячи, если не десятки тысяч!
 
Как я сказал, проблема не в том, что он пришел поздно (хотя даже этого достаточно, чтобы уже задуматься), а в том, что он может быть пропущен (не работал скрипт). И тогда алгоритм скрипта что, пропустил сделку? Это слишком опасно.
И не надо говорить, что такого не будет. Иногда достаточно одного раза. Поэтому в такой важно части необходимо самое надежное решение как базовое. И это не колбек терминала.

Если бы в Квике была гарантированная доставка сообщений, как в RabbitMQ, то да. Но раз нет гарантий, то я не очень понимаю, как можно выбирать это для такого рода решений.
 
Nikolay, Скрипт-то с какой радости "не работал"? А, ну да - если он не работает, никаких заявок быть не должно. Да он и так всё снимает через 3 минуты. Я потому и снимаю заявки по таймеру, что наивно предполагаю, что за это время сигнал гарантированно успеет придти, даже если сервер будет расположен на Луне (а начал я с 15 секунд). Вот именно, что торговля по неверным данным слишком опасна - для того-то и нужна сверка. Вы, лично Вы - сверяете свой портфель с брокером? Или хотя бы знаете того, кто сверяет? Как Вы умудряетесь получать "самое надежное решение как базовое"?
 
Скрипт-то с какой радости "не работал"?

Да много причин. Упал Квик, при перезапуске придут все пропущенные колбеки, но не факт, что скрипт еще будет в рабочем состоянии в этом момент. Пользователь остановил скрипт для изменения настроек. Пользователь запустил скрипт не в начале торговой сессии. Если скрипт для себя, то можно говорить себе - у меня так не будет никогда. Но когда это решение для других, то я не могу знать как оно будет использовано. Поэтому и должно работать в таких ситуациях.

А если скрипт временно не работает, то  это не значит, что заявки снимаются (а значит могут быть исполнены). Или Вы предлагаете при каждой остановке скрипта снимать все?

Что же касается учета сделок, то я использую свои колбеки, организованные на выявлении новых записей в таблице сделок. Т.е. я прямо смотрю в таблицы терминала. Да. Можно говорить, что такое решение странное, не красивое и т.д. Но колбек не дает гарантий и на этом разговор заканчивается.
 
Nikolay, Квик падает примерно раз в неделю, и я на этот случай каждые 5 минут сбрасываю дамп на диск. За приход при перезапуске всех пропущенных колбеков я бы разработчикам яйца пообрывал, как и за любые другие проявления этого долбаного "антиллехта", пользователю не нужно останавливать скрипт для изменения настроек - для этого есть система меню. Пользователь может запускать и останавливать скрипт в начале, в конце торговой сессии и в любое другое удобное время.

Что значит "когда это решение для других, то я не могу знать как оно будет использовано"? На это есть ТЗ, инструкция пользователя и прочие "атрибуты удовольствия". И он должен работать в ОПИСАННЫХ ситуациях и не обязан работать в любых других.

Да, я предлагаю при каждой остановке скрипта снимать все заявки. Вернее, это предлагает Борис, у меня заявок мало, и подавляющее большинство из них срабатывает в течение 1-2 секунд. А вот "каждая остановка скрипта" у меня происходит примерно полтора раза в день: один раз "плановая", а остальные при разных сбоях. А у Бориса и того реже.

Ясно, Вы смотрите в таблицы терминала. Да, "можно говорить, что такое решение странное, не красивое и т.д", и оно ТОЖЕ не дает никаких гарантий. А в КАКИЕ ИМЕННО "таблицы терминала" Вы смотрите, КАК ЧАСТО и, главное, КАКИМ ОБРАЗОМ выявляете рассогласования? Я знаю лишь один способ для этого, и он называется getDepoEx. Да и тот не работает.
 
Система меню, конечно, позволяет изменять настройки, но есть настройки, которые не изменяются при активном алгоритме. Например ТФ баров. Да, Вы опять скажете, что это никому не надо, мне тоже не надо, но кому-то надо. И не мне указывать что и как делать. Поэтому в такой момент скрипт не совершает торговые операции, но при этом ведет контроль позиции и сделок. Поэтому снимать ордера - это не вариант. Судя по всему, у Вас все ордера "рыночные", но вернемся к другим пользователям и окажется, что видов ордеров может быть много. И есть те, кому это надо. И по наблюдениям, рыночные ордера - это не самое распространенное явление.

Что касается обсуждаемой "проблемы", то просмотр прямых таблиц дает гарантию, что если там есть запись, то она не будет пропущена. Если же Вы про гарантии, что запись есть у брокера, но нет в терминале, то это находится в области ошибок работы клиент-серверной архитектуры, рассогласование данных. И это Вы никак не проконтролируете, т.к. у Вас нет методов прямого обращения к данным сервера. Но даже исключение проблемы работы колбеков уже повышает стабильность решений.

Как часто смотреть - постоянно. Если это сделано корректно, то это не вызывает существенных накладных расходов. И смотреть во все необходимые таблицы.
Необходимы сделки - таблица сделок. Необходимы ордера - таблица ордеров. Необходимы данные лимитов по бумагам - таблица depo_limits, куда, собственно, метод getDepoEx и смотрит.
Вы же смотрите в таблицу текущих торгов, и, наверно, постоянно.
 
Nikolay, Да можно менять и ТФ баров, если надо - мне лично нафиг не надо. Диалог здесь, конечно, более, чем убогий, но кое-что позволяет даже он. У нас с Борисом, кстати, разные ТФ и разное количество свечей в них. Но ни у меня, ни у него нет ни одного ордера рыночного. Мне всё равно, что кому надо - это ИХ проблемы. Я же делаю только то, что надо мне (теперь, со значительным сопротивлением, и Борису), но и у нас это постепенно перетекает в то, что надо нам обоим.

Просмотр прямых таблиц НЕ даёт гарантию, что там ЕСТЬ запись, которая там ДОЛЖНА БЫ быть. Я говорю про то, что ЕСЛИ запись есть у брокера, ТО я должен иметь возможность программного доступа к ней. Мне НЕ НУЖНЫ обращения к данным сервера - мне нужны данные моего брокера, касающиеся моего портфеля. Коллбек же (я использую только OnTrade) даёт информацию О СДЕЛКАХ, а не о содержимом портфеля, и в подавляющем большинстве случаев даёт её правильно.

НЕ БЫВАЕТ такого "постоянно". И это ВЫЗЫВАЕТ существенные накладные расходы. У нас с Борисом СОТНИ (если не тысячи) тикеров под контролем, и по любому из них могут быть СОТНИ (если не тысячи) сделок. И с этим со всем прекрасно справляется именно OnTrade, и почти 146% гарантии, что беготня по таблице сделок с этим НЕ справится. Здесь же нам нужна РЕДКАЯ (примерно раз в час) сверка с брокером имеющихся текущих остатков (currentbal) - и только!

Да, я смотрю в таблицу текущих торгов, но тоже не "постоянно", а раз в полсекунды, "зато" по всем тикерам и у каждого из них смотрю LAST, BID и OFFER. Ну так getParamEx работает, а getDepoEx - нет.
 
Цитата
Мне НЕ НУЖНЫ обращения к данным сервера - мне нужны данные моего брокера, касающиеся моего портфеля

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

Цитата
и почти 146% гарантии, что беготня по таблице сделок с этим НЕ справится
А по таблице сделок не надо бегать, тогда и проблемы не будет. Колбек же, в свою очередь, в ряде случаев требует решения синхронизации данных.
Впрочем, решение на колбеках тоже рабочее. И часто используется. Здесь вопрос предпочтений для конкретного алгоритмического решения.
 
Nikolay, Мне плевать, где они находятся - мой скрипт обращается к утилитам Квика, а всё остальное не мои проблемы.

А разве не Вы сегодня говорили, про "выявление новых записей в таблице сделок"? Что же это, если не "беготня по таблице"? К тому же, информация о сделках ничего не говорит о рассогласовании портфелей. И для этой проверки не нужно никаких колбеков - нужно лишь чтобы getDepoEx РАБОТАЛА!
 
https://github.com/Roffild/qlua/blob/ea90a32b40530cfa5081973b954f90655dc391­1d/roffild.lua#L193-L255 - мой вариант getFuturesHoldingPrice()

В Квике НЕТ синхрона таблиц, поэтому приходится самому костыль синхрона делать...
Страницы: 1
Читают тему
Наверх