LINUX.ORG.RU

Внутренности фондовых бирж: софт, который исполняет ордера.

 


0

4

Посоветуйте бложиков/статей по теме.

На биржу летят ордера разных типов, биржа их матчит/исполняет. Вот интересно как физически всё это работает. Например, сколько железных серваков на санкт-петербургской бирже - наверняка же одного однопоточного хватает (по моему опыту разработки игровых серваков). Какой софт это физически делает, как называется, на чём и кем написан. Сходу кажется, что это должен быть не сложный однопоточный сетевой демон на сишечке, который жрёт много оперативы, висит на epoll, умеет матчить ордера, умеет куда-то быстро писать логи/историю.

https://www.youtube.com/watch?v=gfdAfhSM724 - такое смотрел


Ответ на: комментарий от anonymous

Здесь у тебя так же проблема с логикой.

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

r_a_vic
()
Последнее исправление: r_a_vic (всего исправлений: 2)
Ответ на: комментарий от r_a_vic

Купили быстро за хорошие деньги.

Лох купит любое говно. Это не показатель.

Насчет делфи не знаю.

А я знаю. Автор сам рассказывал о том, что делфи - круто. Это уже клоун, повторюсь.

Но писали, что весь сетевой стек винды пришлось сделать свой.

Слово винда есть - это уже позор. К тому же - это сказки для бедных. Особенно смешно про «даже». Может для тебя будет откровением, но там где есть хоть минимальные требования - сетевой стек дефолтный с сокетами говна выкидывается тут же.

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

К тому же, там дефолтный транспорт - там udp, а для udp никакого стека вообще ненужно. Там ведь не tcp?

Вряд ли это можно на delphi реализовать.

Даже на пхп можно. Очевидно, что птушный колхозник ничего не реализует - всё реализует sdk. От того он и побежал на маздайку. Никто в здравом уме и могущий что-то написать не будет это делать под маздайской, ведь людям никто не платил за страдания.

Кроме того, надо было отреверсить протокол Plaza II с учетом его шифрования.

Это птушные проколы говна. Там нет ничего сложного. Даже я будучи школьником начинал с реверса всякого бинарного говна.

Не многие delphi-разработчики на такое способны.

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

В реальности любой студент берёт какой-нибудь dpdk и биндинг к пистону и «пишет» свой сетевой стек в обход базового.

Если мы говорим о маздае - основная причина почему он живёт и зачем он живёт - это та самая экосистема. Почти весь рынок там - это птушники, которые ничего не могут и другие птушники, которые им предлагают sdk.

Это не мир онтопика. Поэтому на будущие знай, что если кто-то что-то делает под маздайку - это колхозник, который сидит на каком-то sdk. Других причин нет.

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

anonymous
()
Ответ на: комментарий от r_a_vic

Нет у меня с логикой проблем.

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

К тому же, я тебе даже больше сказал. Поддержание порядка наоборот увеличивает и лентенси и трупут(очень сильно). И это дополнительное свойство системы. Т.е. оно не просто никак не зависит от летенси обработки пакета - оно ему мешает.

Я отвечаю именно на техническую часть вопроса. Обсуждать что-то иное нету смысла, потому как гарантий нету и ответственности нету. Как и открытости нету.

Именно поэтому мало того, что ничего не говорит в пользу версии «биржа блюдёт порядок». Очень многое говорит против. Именно поэтому нет смысла выдавать это за какой-то плюс или за то, что тебе что-то там гарантирует. Такого нет.

anonymous
()
Ответ на: комментарий от r_a_vic

В Plaza II Есть возможность видеть журнал всех ордеров. Поэтому по сути ты получаешь каждый ордер.

Нет, это не то. Журнал - это журнал. А я говорил о журнале, который обновляется каждый ордер. В тот же миг. В противном случае ты не сможешь узнать - приняла ли биржа твой ордер первым, либо нет. Если ты по всем остальным критериям победитель, то сможешь это отследить.

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

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

Чем больше я узнаю об этой области - тем больше меня удивляет вся нелепость происходящего. Это какая-то битва инвалидов. Хотя по рассказам это битва сверх-людей.

anonymous
()
Ответ на: комментарий от WitcherGeralt

Я думал, этого в дикой природе и не бывает. А вот оно как, оказывается.

Этого и не бывает. Просто колхозник решил показать свою осведомлённость.

В реальности бывает другое. Любая асинхронщина ущербна и не способна к производительности в принципе. Хотя везде и всюду колхозники уверяют друг друга в обратном.

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

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

Даже наоборот - время обработки может(и почти всегда уменьшается) уменьшится. Потому как в реальности никому ненужно чистое летенси. В связи с этим система обработки начнёт масштабироваться и потонет оверхеде. По этой причине даже самые помойные колхозники боятся многопоточности(потому как оверхед съедает весь профит). Но многопоточность самое дешевое, потому как условные исполнители находятся очень близко друг к другу.

anonymous
()
Ответ на: комментарий от anonymous

летенси

Летенси - это время нахождения объекта в ненаблюдаемом (неопределяемом, неопределенном, непонятном) состоянии. То есть для определения летенси нужны объект и наблюдатель. Если наблюдатель - пользователь (биржи), то скорость спама (ордеров) - это не про летенси. В /dev/null можно спамить с любой скоростью, с которой ты можешь спамить. Летенси - это когда твой запрос проявится в виде определенного ответа (например, пришлют ответ в виде журнала, где есть запись с твоим запросом). Летенси - это про диалог. Если нет диалога (осмысленного), то нет смысла говорить про летенси.

anonymous
()
Ответ на: комментарий от anonymous

Набор несвязной муры. К тому же зачем позориться рассказами по /dev/null, если уровень пациента околонулевой? Ты ведь ничего о нём не знаешь. К тому же - скорость спама это трупут, а не летенси. У тебя проблема даже с базовыми понятиями. Изучи их.

По поводу рассуждений. В контексте обсуждения под летенси понимается определённое свойство системы. Существует некий пайплайн обработки пакета/запроса. Дак вот летенси - это метрика определяющая, как очевидно, задержу между началом/окончанием стадии/всего пайплайна.

К тому же, я тебе открою тайну, но во всех(адекватных) системах диалога в принципе нет. Диалог - это удел убогих, птушных изваяний. Забудь об этой херне.

anonymous
()
Ответ на: комментарий от anonymous

Отвечу только на это

во всех(адекватных) системах диалога в принципе нет.

Диалог может (и должен) быть и с искусственным спутником на орбите Плутона. Иначе этого спутника нет - он как чайник Рассела после бритвы Оккама. А управлаящие команды можно отправлять целыми пакетами и с временным лагом наблюдать с как реагирует (летенси) на каждую команду в посланном ранее пакете из команд. Осмысленный диалог двух «тормозов», до которых долго доходит как в анекдоте про жирафа, хотя он бегло говорят. Но без диалога они не могут узнать, про речевые способности (летенси) собеседника-тормоза.

anonymous
()
Ответ на: комментарий от anonymous

Могут. Никакой ответственности за это нет

Есть, на нашей стороне все ходы записаны. Биржа должна прислать либо acknowledgement с orderId, либо ошибку. Ясен хрен это приходит не сразу, но потом при сверке всплывет.

Это ты узнал из историй в интернете?

Это похоже ты знаешь про HFT по историям в интернете.

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

Именно наносекундная задержка. С момента получения пакета с биржи до посылки ордера на биржу.

В пайплайне нету «не самых» мест. К тому же жава/дотнет - это про квалификацию разработчиков.

А кроме пайплайна у тебя компонент нет? Риск менджмент, аудит, расчет волатильности и прочих греков для опционов, автохеджирование.

Какой смысл её экономить, если у тебя уже есть те, кто может в fpga?

Ты тупой? Знаешь сколько цикл разработки на FPGA занимает? К тому же в трейдинге полно не критичных к задержке компонент.

С++ и быстро не совместимые вещи.

Ты и логика не совместимые вещи

cocucka ★★★★☆
()
Ответ на: комментарий от cocucka

Есть, на нашей стороне все ходы записаны. Биржа должна прислать либо acknowledgement с orderId, либо ошибку. Ясен хрен это приходит не сразу, но потом при сверке всплывет.

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

Хорошо, давай поиграем в игру. Вводные тебе даны. Тебе осталось описать механизм сверки. Действуй.

Это похоже ты знаешь про HFT по историям в интернете.

Как же я обожаю эти заявления от колхозников.

Именно наносекундная задержка. С момента получения пакета с биржи до посылки ордера на биржу.

Давай поиграем в ещё одну игру. У тебя есть 10нс(вроде о них ты болтал), у тебя есть пакет на проводе. Описывай пайплайн его обработки. Действуй.

А кроме пайплайна у тебя компонент нет? Риск менджмент, аудит, расчет волатильности и прочих греков для опционов, автохеджирование.

Это всё не имеет отношения к теме. Ты мне ещё про менеджмент уборщиц расскажи.

Ты тупой?

Насколько я понимаю ты с темы fpga слился? А чего же так?

Знаешь сколько цикл разработки на FPGA занимает?

Разработки чего? Подобной херни? Нисколько.

К тому же в трейдинге полно не критичных к задержке компонент.

fpga, C++ и прочие базворды имеют малое отношение к задержкам. У тебя проблемы не только с ними, ну судя по твоим рассказам.

Ты и логика не совместимые вещи

Очередной гений? Ты будешь со мною спорить на тему С++?

anonymous
()
Ответ на: комментарий от anonymous

Иначе этого спутника нет - он как чайник Рассела после бритвы Оккама.

Ты перепутал школу и реальность. Ты думаешь, что марья-ивановна тебе за партой рассказала про базворды, ты прочитал о них в википедии и они чего-то стоят? Нет. Ничего не стоят. Это херня для птушников.

Ещё раз, твоя проблема даже не в том, что ты нихрена не знаешь о теме. Ты в целом крайне слаб.

А управлаящие команды можно отправлять целыми пакетами и с временным лагом наблюдать с как реагирует (летенси) на каждую команду в посланном ранее пакете из команд.

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

К тому же, ты даже в базвордах запутался. Это не управляющие команды. Это реакция на среду, живую среду. Твоё птушное мышление в принципе не способно выйти за рамки достойного птушника подхода.

Все стратегии, которые в какой-то мере желают выдерживать реалтайм и низкие задержки не лочатся на обратной связи. Зачастую её вообще нет.

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

Поэтому, если я говорю «иди и выйди в окно» - мне ненужен от тебя ответ. Мне ненужно за тобою смотреть. По такому принципу всё и работает.

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

anonymous
()
Ответ на: комментарий от anonymous

Давай на доступно тебе примере.

Есть некие снимки среды.

Что между снимками? А между снимками - неопредленное состояние. Этот «промежуток» между снимками и есть летенси.

Не всех интересует целиком этот набор снимков. Неокторых интересует только некоторые снимки, некоторых интересует строго определенный порядок этих снимков, некоторых - другой порядок, некоторых - беспорядок. При преобразовании этих (бес)порядков снимков появляются другие снимки - порядок до преобразования и порядок после преобразования, а между этими преобразованиям - опять неопределенное состояние… Когда же все это закончится?!

anonymous
()
Ответ на: комментарий от anonymous

Царь, ты чтоль? Скока лет, скока зим!

anonymous
()
Ответ на: комментарий от anonymous

путём сравнения моего ожидания и реальности.

Как ты «видишь» реальность?

Видишь то, что ожидаешь увидеть и не видишь того, что не ожидаешь?

Если да, то как-то странно сравнивать свои ожидания со своими ожиданиями. :)

anonymous
()
Ответ на: комментарий от anonymous

Очередной гений? Ты будешь со мною спорить на тему С++?

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

alysnix ★★★
()
Последнее исправление: alysnix (всего исправлений: 1)
Ответ на: комментарий от alysnix

Я тебе открою тайну, но ты ошибся. Когда я говорю, что С++ и скорость не совместимы - я говорю о тех С++, о которых говорят и которые представляют птушники.

А то, о чём пытаешься говорить ты и тех крестах, что используя я - это совершенно не те кресты.

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

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

anonymous
()
Ответ на: комментарий от anonymous

У тебя потекла методичка. Зачем ты закапываешь себя ещё глубже?

Что между снимками? А между снимками - неопредленное состояние. Этот «промежуток» между снимками и есть летенси.

Нет, ты сел в лужу. Состояние вполне определено. Никакого летенси нет.

Если я предполагаю, что пять шагов вперёд в адрес тебя затриггерит «в окно» - твоё состояние после шагов определено.

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

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

Подумай, что такое вообще «научится ходить». И ты узнаешь, что научится ходит - это уметь определять то самое неопределённое состояние.

Ты не знаешь последствий своих движений, но ты можешь их предсказать. А раз можешь предсказать - можешь компенсировать. Благодаря этому ты и можешь ходить.

Как вы живёте в этом мире, если не осознаёте даже настолько очевидных вещей? Я уж тебя даже не прошу понимать матчасть. Просто осознай, что если бы мир работал по доступным твоему примитивному сознанию правилам - ты бы не то что с пальмы не слез - ты бы на неё не залез.

anonymous
()
Ответ на: комментарий от anonymous

Я тебе открою тайну, но ты ошибся. Когда я говорю, что С++ и скорость не совместимы - я говорю о тех С++, о которых говорят и которые представляют птушники.

причем тут петеушники. все мы когда-то писались под себя и ходили на горшок. и были студентами или петеушниками.

некоторый оверхед в плюсах дают такие фичи плюсов:

  • rtti - нужно для dynamic_cast<>, не применяйте dynamic_cast<>. конкретный тип можно устанавливать по собственным тегам. rtti отлючается опцией компилятора. в gcc - -fno_rtti.

  • множественное наследование - приводит к коду подмены this, при обращению к полям классов и их виртуальным методам, что не стоят первым в списке наследования.

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

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

  • локальные статические переменные в фунции A& ff(){ static A __; return __; } имеют доп. скрытое поле типа bool, показывающее запускался ли конструктор на это поле, а он запускается при первом вызове, а потом всегда при обращению к полю проверяется стоит ли поле в true.

  • линкеру можно подсунуть полностью свой рантайм C++. там надо определить с полдюжины мелких символов, и ваш код на с++ работает.

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

alysnix ★★★
()
Последнее исправление: alysnix (всего исправлений: 2)
Ответ на: комментарий от alysnix

причем тут петеушники. все мы когда-то писались под себя и ходили на горшок. и были студентами или петеушниками.

При том. К тому же ты перепутал. Проблема не в студентах и не в ПТУ. Проблема в другом. Это базовая классификация и она не основана на факте обучения в каком-либо особом заведении, либо обучении вообще.

некоторый оверхед в плюсах дают такие фичи плюсов:

Нет, это всё неверно.

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

Ну ты не далеко от птушников ушел. В целом это и не удивительно. На подобные тезисы в основном они и агрятся.

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

Правильный С++ - это мета-си. По-сути всё программирование на С++ - это генерация кода на си.

В любом случае, повторю. Ты просто, как и любой другой птушник, пытается примазаться к С++. Ты хочешь всех убедить в том, что С++ - круто. А раз круто - значит моё говно, которое на С++ - круто потому, что оно на С++.

Любимая песня колхозников. Но это полная чушь. Это не С++ и никакого С++ как чего-то обладающего свойством «быстрый» не существует.

anonymous
()
Ответ на: комментарий от anonymous

определять то самое неопределённое состояние

Определять неопределенное. Объять необъятное. Менять неизменяемые (правила и законы).

anonymous
()
Ответ на: комментарий от anonymous

Нет, это всё неверно.

ты гонишь какую-то пафосную пургу. си++ это средство для перевоза мыслищ в машинный код. его нельзя любить или примазаться к нему. это всего лишь средство, как грузовик. человек, что говорит - ты не понимаешь, что такое - ГРУЗОВИК(тут поднимается палец к нему и закатываются глаза) и пытаешься примазаться к ГРУЗОВИКУ! - такой чел болен на на голову. имхо

и вообще, задолбал своими петеушниками. можно подумать тут все петеушники, а ты один - слесарь пятого разряда.

alysnix ★★★
()
Последнее исправление: alysnix (всего исправлений: 1)
Ответ на: комментарий от anonymous

Хорошо, давай поиграем в игру. Вводные тебе даны. Тебе осталось описать механизм сверки. Действуй.

Ты совсем там убогий? Самому недотумкать механизм сверки? Во первых ордера в биржу идут по TCP и ты получишь ACK из протокола. Во вторых биржа пришлет тебе конфирмейшн с твоим orderId и таймстемпом. И все пакеты записываются со стороны брокера/трейдера.

Давай поиграем в ещё одну игру. У тебя есть 10нс(вроде о них ты болтал), у тебя есть пакет на проводе. Описывай пайплайн его обработки. Действуй.

Не 10 нс, а десятки. Пайплайн я тебе описывать не буду. Ты все равно будешь свой тупняк гнуть. Я тебе говорю реальные цифры, которые наши ребята достигают на FPGA.

Очередной гений? Ты будешь со мною спорить на тему С++?

Я про С++ и не заикался особо, это у тебя бомбит почему-то.

Разработки чего? Подобной херни? Нисколько.

Понятно, ты херов теоретик. У тебя никакой практики в разработке ПО вообще нет.

Это всё не имеет отношения к теме. Ты мне ещё про менеджмент уборщиц расскажи.

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

cocucka ★★★★☆
()
Ответ на: комментарий от leave

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

pon4ik ★★★★★
()
Ответ на: комментарий от pon4ik

В те тёмные годы и квант цпу был 20мс

Никакого кванта цпу нету и никак и ни на что он не влияет.

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

С того времени ничего не поменялось. И поменяться не могло.

anonymous
()
Ответ на: комментарий от anonymous

Это тот анон который философ, или тот который шизофрения?

pon4ik ★★★★★
()
Ответ на: комментарий от cocucka

Ты совсем там убогий? Самому недотумкать механизм сверки? Во первых ордера в биржу идут по TCP и ты получишь ACK из протокола.

У нас тут мамкин лоулетенси-балабол на tcp. Я понимаю, что ты очередной эникей прибежавший сюда, но зачем же так позориться?

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

Во вторых биржа пришлет тебе конфирмейшн с твоим orderId и таймстемпом.

Наносекундным? Сходи в школу. Но хорошо, маня. Что мне помешает написать там любой таймпстамп? Действуй.

И все пакеты записываются со стороны брокера/трейдера.

Твои пакеты никому не интересны. Ты - огрызок, пыль в трафике. Никакого сетевого дампа тебе никакая биржа не предоставляет. И опять же, ты никогда не докажешь его подлинность.

Не 10 нс, а десятки.

Уже обделался? Даю тебе 20-30 - пыхти.

Пайплайн я тебе описывать не буду. Ты все равно будешь свой тупняк гнуть.

Опять сел в лужу? Т.е. ты можешь нести всякую чушь, а когда тебя спросили за конкретики - ты убежал? Нелпость.

Я тебе говорю реальные цифры, которые наши ребята достигают на FPGA.

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

Я про С++ и не заикался особо, это у тебя бомбит почему-то.

Обделался по всем фронтам и пошел попросту врать? Это что:

самые критические компоненты сделаны на FPGA, остальное что должно быть быстрым на C++, в основном на шаблонах.

Ты этого не говорил?

Понятно, ты херов теоретик.

Подожди, маня. Ты решил нырять по-крупному? Ты же сам выше балбаолил, что ты всего лишь полы мыл и имеют отношения какие-то ребята?

Но вот три строчки и наш поломой уже рассказывает про теоретик и «ты ничего ничего не знаешь»? Позорище нелепое.

У тебя никакой практики в разработке ПО вообще нет.

Предположим, побежал доказываю свою. Бегом.

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

Посмотрим, когда баба-нюра обоссыт твою(фентезийную правда) стойку. Или сойдёт с ума и выкинет в окно.

Это нелепые дошколятские потуги.

anonymous
()
Ответ на: комментарий от annulen

Зачем ты болтаешь что-то, если знаешь что убогий и тебя ждут лишь слёзы?

Чего болтал, а теперь нелепо мямлишь оправдания дошколятские?

anonymous
()
Ответ на: комментарий от cocucka

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

И что мы видим? Как только разговор зашел о нелепости происходящего - прибежал какой-то поломой(по его же словам. Он где-то видел каких-то ребят. Ни про fpga, ни про C++ - которые обязательно нужны и юзаются - он ничего не знает) и начал рассказывать куллстори.

Негоже, что-бы хозяин узнал о том, что поломой ему уже 10 лет впаривает хелоуворлд.

anonymous
()
Ответ на: комментарий от annulen

Ты к врачу ходить не пробовал?

Ты уже сходил? Про свой опыт рассказываешь? Чего с темы слился, маня?

Напомню, ты болтал про С++, а после рассказывал о том как будешь рыдать и как боишься меня. Тебя спросили за то, что зачем болтаешь, если боишься и рыдаешь? Отвечай.

anonymous
()
Ответ на: комментарий от anonymous

Прикол не в том что бы пакет за десятки нс отправить, а в том, что бы отправить его на десятки нс быстрее тех кто сидит на той же линии. А задача площадки выдать гарантию, что всем на этой линии пакет на шину упадёт не позже и не раньше чем у конкурентов в рамках погрешности. Да есть определённая рулетка, что тебе выпадет «плохая сторона погрешности».

Данные в виде по-сути rpc вызовов по перерисовке картинки рынка или нужного тебе его участка приходят к тебе по udp или через rdma (хотя я не видел на практике именно rdma каналов даже для брокеров), в любом случае разница между udp и rdma для того же железа отличается максимум на порядок и на некоторых площадках величина почти сравнима с копированием памяти между разными numa нодами. Поэтому, те кто ловит эти наносекунды в сетевой стек пакеты особо не пускают а смотрят чего раньше придёт ack от канала по которому ты отправил заявку или udp пакет в котором произошло ожидаемое тобой событие. Делают они как минимум первый уровень логики сразу на fpga сетевух аля 10g и круче где udp пакет по прямому волокну летит порядка 4us.

P.S.: Я ничего про машинные коды не знаю, и вообще заранее обделался.

pon4ik ★★★★★
()
Последнее исправление: pon4ik (всего исправлений: 1)
Ответ на: комментарий от alysnix

ты гонишь какую-то пафосную пургу. си++ это средство для перевоза мыслищ в машинный код.

Нет, маня. Ты обделался. Ты ничего про машинные коды не знаешь.

его нельзя любить или примазаться к нему. это всего лишь средство

У тебя потекла методичка. Как так нельзя? Что это помешает? Всё лишь средство - это ничего не значит.

Механизм я уже описал. Маня-эксперт рассказывает всем о том, что C++ - это быстро и круто. Далее определяет свою причастность к нему, т.е. наделяет свои убогие поделки свойствами приписанными С++.

как грузовик. человек, что говорит - ты не понимаешь, что такое - ГРУЗОВИК(тут поднимается палец к нему и закатываются глаза) и пытаешься примазаться к ГРУЗОВИКУ! - такой чел болен на на голову. имхо

Ты даже тут обделался. Всё просто. Грузовик наделяется какими-либо свойствами, вернее тут ты обделался и ты не являешься продуктом грузовика, а вот твои потуги являются продуктом С++.

Но в любом случае, ты похоронил себя клоун. Грузовик не является статусной вещью как С++, поэтому говорить о статусе тут не выйдет. Поэтому мы возьмём другой класс автомобилей - суперкар. И о чудо, история 1в1.

Хомячки берут на прокат сии девайсы и пытаются их отождествить с собою, собою как их владельцем. Почему? Зачем им подмазываться к железяке?

Правильно, потому что железяка обладает каким-либо свойствами, которыми её наделяет общество. Владелец железяки - богат, а значит у него есть статус.

Точно так же и тут. С++ быстр. Код на С++ быстр. Что значит примазаться тут очевидно.

И риторика клоуна с фотки и твоя - одна. Защищать «я рядом - я обладаю свойствами того, что рядом. Вернее следствием из этих свойств».

anonymous
()
Ответ на: комментарий от pon4ik

Прикол не в том что бы пакет за десятки нс отправить, а в том, что бы отправить его на десятки нс быстрее тех кто сидит на той же линии. А задача площадки выдать гарантию, что всем на этой линии пакет на шину упадёт не позже и не раньше чем у конкурентов в рамках погрешности. Да есть определённая рулетка, что тебе выпадет «плохая сторона погрешности».

Это не имеющая к теме отношения мура. Ещё раз, я уже говорил выше - порядок никак не зависит от летенси. Если площадка читает данные из сетевухи, то пусть она хоть 10 часов парсит пакеты - поддержка порядка это отдельная задача.

Далее песня про гарантии. Сообщаю новость - никакая площадка никакие гарантии не даёт. И ты никак не докажешь их наличие. Так же как никак не узнаешь о том, что тебя обманули.

Данные в виде по-сути rpc вызовов по перерисовке картинки рынка или нужного тебе его участка приходят к тебе по udp или через rdma (хотя я не видел на практике именно rdma каналов даже для брокеров), в любом случае разница между udp и rdma для того же железа отличается максимум на порядок и на некоторых площадках величина почти сравнима с копированием памяти между разными numa нодами.

У тебя фундаментальная дуры в понимании. Скорость копирования не имеет никакого отношения к обсуждаемой теме. Там может скорость копирования быть хоть терабайт, а летенси два дня. Камаз хардов обладает между тачка обладает трупутом в терабайт/с, но едет к тебе час. Такие дела.

Поэтому, те кто ловит эти наносекунды в сетевой стек пакеты особо не пускают а смотрят чего раньше придёт ack от канала по которому ты отправил заявку или udp пакет в котором произошло ожидаемое тобой событие.

Ещё раз, никаких наносекунд нет. Забудь об этой чуши. К тому же ack ничего не значит.

Делают они как минимум первый уровень логики сразу на fpga сетевух аля 10g и круче где udp пакет по прямому волокну летит порядка 4us.

Это полная чушь. Абсолютно неважно сколько g у тебя сеть. Множишь 4us на длину пакета и получаешь диалап.

К тому же, как-то быстро ты потерял три порядка. И это только на полёт, в реальности ты потерял 6 порядков. Ну бывает.

anonymous
()
Ответ на: комментарий от pon4ik

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

Для тех кто не понимаю - объясняю. Почему на железяке в принципе невозможно получить какие-либо наносекунды. Предположим, что колхозник реализовал самый быстрый(с тз летенси) механизм обработки пакетов.

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

Далее каким-то образом нужно дать доступ к этим данным процессору. Самый базовый/быстрый способ - записать их в память и как-то образом сообщить о записи процессоре(по средством того же прерывания).

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

Таким образом чисто физически невозможно получить значения меньшие, чем летенси памяти. Для обычно дерьмо-рам чтение/запись ничего не отличаются и висят на одном, условно, канале. Поэтому нужно брать х2. Минимальная летенси память достижимая в реальности - пол сотни наносекунд.

Если интерфейс висит сразу на плис существует возможность выкинуть из обработки память и обрабатывать пакеты сразу. Это база для всех куллстори. Правда никаких наносекунд тут опять не будет. Причина банальна - никакующие частоты.

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

Вот данные клоуны так и разводят дядей на бабки. Берут плисину с интерфейсом, берут готовое говно. Запускают екзампл и показывают дяде «посомтри как быстро». Эту херню студентота на лабах делает, дефолтная задача для любой плисины с интерфейсом. Хотя эта студентота и разводит дядей лабой.

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

anonymous
()
Ответ на: комментарий от anonymous

летенси… наносекунды… летенси… наносекунды…

Контрольный вопрос для недоптушника: ты различаешь понятия «летенси» и «лаг»?

Или так же как «дяди» разводишь других «дядь» на разном (не)понимании этих слов?

anonymous
()
Ответ на: комментарий от anonymous

Ты какой-то зацикленный на свою чушь в голове.

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

Кто тебе сказал, что алгоритм ждет ack от протокола? Это совершенно отдельный мониторинг.

Ты - огрызок, пыль в трафике.

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

Опять сел в лужу? Т.е. ты можешь нести всякую чушь, а когда тебя спросили за конкретики - ты убежал? Нелпость.

В луже сидишь ты и давно. Хорошо, вот тебе пайплайн: борда получает UDP пакет с биржи, парсит его на предмет тикера, цены и объема; затем идет в Lookup RAM, находит цену для этого тикера; формирует пакет с ордером и шлет его по TCP на биржу. Это все прямо заиплеменчено в FPGA и сетевой стек, и остальная логика. Будешь верещать, что это не уложится в десятки нс? Верещи. Чувак в 2014 году получал 700нс задержки, через шесть лет они уже давно до десятков сократились.

Ты этого не говорил?

Говорил, но это ты начал верещать что C++ говно. Я лишь сказал, как это делают в индустрии.

Но вот три строчки и наш поломой уже рассказывает про теоретик и «ты ничего ничего не знаешь»? Позорище нелепое.

Я про то, что ты к трейдингу отношения не имеешь от слова вообще. Даже не понимаешь принципов. Твой удел учить студентов в УрФУ (или где ты там доцентом чалишься).

Предположим, побежал доказываю свою. Бегом.

Чувак, я не буду ничего доказывать анониму. Можешь считать, что я мою полы в датацентре.

Это нелепые дошколятские потуги.

Ну хоть признался наконец.

cocucka ★★★★☆
()
Ответ на: комментарий от anonymous

Если интерфейс висит сразу на плис существует возможность выкинуть из обработки память и обрабатывать пакеты сразу. Это база для всех куллстори. Правда никаких наносекунд тут опять не будет. Причина банальна - никакующие частоты.

https://www.linkedin.com/pulse/hft-complete-tick-trade-system-using-fpgas-riyas-nr/

никакущие частоты

Там много и не надо. ( Above system is based on 10G Ethernet, data rate is 10.3125 Gbps which translate to 10.3125/66 = 156.25MHz clock frequency)

cocucka ★★★★☆
()
Ответ на: комментарий от anonymous

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

Можно поэквилибрировать тем, что «лаг» это более общее понятие, но если я правильно понял контекст, то «лаг» это недетерменированные помехи на линии привносящие случайную задержку(учитывая специфику, сюда же можно внести инвалидации кэша и вообще состояние памяти конечной токи), тогда как «лэйтенси» это условно константная верхняя граница задержки которую привносит линия с известным распределением. Когда говорят про задержки в области торговли и её линий, подразумевают задержку пакета со стандартным mtu. Важно понимать, что в такой пакет лезет сильно больше одного события, до сотни примерно. Так вот площадка гарантирует только очень и очень хорошее распределение для «лэйтенси», например 99.99% пакетов будут в рамках какой то величины вне пиковых нагрузок, притом уточняет, что граница не только верхняя но и нижняя. Если событий больше чем лезет в пакет, то задержка для события конечно будет выше чем задержка для пакета, но как правильно ты заметил - это не важно, важно то что всем кто сидит на одной линии пакет прилетит «одновременно». Понятно, что физика не даёт этому «одновременно» быть по настоящему одновременным, ну по крайней мере пока сети не квантовые, однако на практике это достаточно «одновременно» для того, что бы если ты ускорил свой алго на сотню наносекунд, ты начал ощутимо чаще успевать среагировать на событие раньше конкурентов.

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

pon4ik ★★★★★
()
Ответ на: комментарий от pon4ik

Лаг - это полное время прохождения сигнала, точнее, конкретный сигнал и конкретный ответа именно на это сигнал. Подумал двинуть мизинцем - увидел движение - осознал, что двинул именно мизинцем. Говорят, что у человека этот лаг около 200-300 миллисекунд. (Или это только часть времени проходения сигнала в одном направлении, так как этот лаг замерял третий участник эксперимента (диалог 3 людей - это уже базар, а физики говорят, что движение 3 тел недетерминировано))

Летенси - это, как уже сказал, промежуток между определенными состояниями. По понятиям недоптушника это больше похоже не его «трупут».

Например, ты подумал подвигать мизинцем и большим (именно в этой последовательности). Теперь определим состояния: «подумал двинуть мизинцем», «подмал двинуть большим пальцем», «увидел движение мизинцем», «увидел движение большим пальцем». Какие определишь - такие и будут состояния. Порядок которых зависит от нервных расстройств, когнитивных расстройств, (не)умыленного (само)обмана и тд и тп. Что между этими состояниями?

Как пример. «Нормальный» человек не различает состояния «подумать» и «увидеть», хотя между этими состояния есть научно подтвержденный лаг - около 200 мс (вроде). Человек привык (привыкаетает) к такому лагу. Вполне нормально может играть в динамичный шутер с таким лагом. При этом ему подавай монитор на 140 кадров секунду - это меньше 10 мс между кадрами - между «определенными состояниям». 200 против 10! Вот такие лаги и такое летенси.

PS. Это моя терминология, не претендую общезначимость. Каждый «дядя» разводит других «дядь»: у игроделов - своя терминология, у сетевиков - своя, у финансистов - своя. Главное - чтоб была непротиворечивая, а то начнут определять неопределяемое :)

anonymous
()
Ответ на: комментарий от cocucka

Там много и не надо. ( Above system is based on 10G Ethernet, data rate is 10.3125 Gbps which translate to 10.3125/66 = 156.25MHz clock frequency)

В общем. Мне надело уже спорить с дошколятам. После этого тебя можно сразу можно определять за клоуна, хотя ты уже ловился на этом. Фиксируем - клоун не понимает разницы между летенси и трупутом. В контексте летенси он несёт херню и ссылается на какой-то 10gbps.

Очевидно, что при обработки каждого пакета за такт(чего не будет никогда, очевидно). Но даже если это так - это 156.25 лямов пакетов в секунду. Очевидно, что они не влезают в этот канал дерьма. (10^10 / (156.25 * 10^6)) бит на пакет.

Если мы берём udp - там только пара сотен бить оверхед. Ну возьмёт даже пакет в тысячу бит. Хотя судя по протоколам говна - там сотней байт не обойтись. Но предположим.

Таким образом линк может принять 10^(10 - 3) пакетов. Я думаю в школе обучен и далее сообразишь, что никакими наносекундами и десятками тут не пахнет. Да и никаких пакетов в 1к бит у тебя нет.

anonymous
()
Ответ на: комментарий от cocucka

Кто тебе сказал, что алгоритм ждет ack от протокола? Это совершенно отдельный мониторинг.

Если не ждёт - нахрен балаболил? Загуглил, понял что обделался и начал мазаться? В школу.

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

Опять клоун опозорился. Никому твоё дамп ненужен. Всех интересует дамп со стороны получателя, а не отправителя. Что и когда ты там отправил - никого не интересует.

К тому же, маня. Что-бы получить дамп сети тебе нужно слить все дампы маня-трейдеров. Хотя в школе ты не обучен, но в любом случае побежал мне показывать наносекундные таймстампы и синхронизацию часов с наносекундной точностью. Ты тут мамкин гений - всё уже решил там, где полы моешь. Зови пацанов - пусть расскажут. А то пацаны тут уже десятки лет спутники пускают и синхронизацию такую не получают. Научишь.

Ну и да маня. Побежал показывать место, куда все трейдеры сливают свои дампы. Раз на них ссылаешься.

В луже сидишь ты и давно. Хорошо, вот тебе пайплайн: борда получает UDP пакет с биржи, парсит его на предмет тикера, цены и объема; затем идет в Lookup RAM, находит цену для этого тикера; формирует пакет с ордером и шлет его по TCP на биржу.

Маня, да ты что-ли решил в игры со мною игрыть? Погуглил, перепастил мне строку из ссылки и убежал? В школу.

Летенси рамы 50 нас в одну сторону. Побежал оправдываться.

Это все прямо заиплеменчено в FPGA и сетевой стек, и остальная логика. Будешь верещать, что это не уложится в десятки нс?

Позорище нелепое.

Верещи. Чувак в 2014 году получал 700нс задержки, через шесть лет они уже давно до десятков сократились.

О боже, какой же нелепый клоун. Маня, с 14 года ничего не поменялось. Частоты не увеличились, летенси рамы та же. К тому же, с каким пор ссылка на потуги нонейма в интернете эквивалентно «получал»? Получал и балаболил - это разные вещи.

Трепло птушное. Побежал рассказывать за счёт чего задержки уменьшились в 10раз по сравнению с 14 годом. Бегом.

Говорил, но это ты начал верещать что C++ говно. Я лишь сказал, как это делают в индустрии.

Т.е. ты балаболил, а потом балаболил что не балаболил, а после уже согласился с тем, что балаболил? Ты совсем поехавший? В школу срочно.

Дак вот, раз болтал про С++ - тебе задали вопрос. Будешь со мною спорить на тему С++, трепло? Валяй.

Я про то, что ты к трейдингу отношения не имеешь от слова вообще. Даже не понимаешь принципов. Твой удел учить студентов в УрФУ (или где ты там доцентом чалишься).

Маня, ты зачем пытаешься что-то из себя строить, клоун? Ты уже сам спалился, что какие-то пацаны делали, а ты полы рядом мыл. А теперь ты прибежал сюда рассказывать про отношение?

Мне ненужно иметь отношения к потугам инвалидов, что-бы умножать их балабольство на ноль.

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

Чувак, я не буду ничего доказывать анониму. Можешь считать, что я мою полы в датацентре.

Ты должен не анониму доказывать. К тому же аноним тут ты. Ты должен отвечать за балабольство. Раз ты позволяешь себе, птушнику, ссылаться на отношение - ты должен доказать своё отношение. Побежал доказывать. Рыдания и оправдания клоуном меня волнуют мало.

Ну хоть признался наконец.

Я никогда и не скрывал отношения к потугам подобных тебе клоунов.

anonymous
()
Ответ на: комментарий от anonymous

Контрольный вопрос для недоптушника: ты различаешь понятия «летенси» и «лаг»?

Ты уже был мною утоплен в дерьме? Побежал отвечать за предыдущее балабольство.

Бегом, маня, побежал так же показывать откуда ты высрал свои базворды, на каком основании ты блеешь мне эту херню. Из чего она следует. Что следует из неё. Пыхтеть.

anonymous
()
Ответ на: комментарий от anonymous

С тобой говорить — как с обезьяной, кидающейся говном, пытаться объясниться.

Ты точно так же балаболишь не приводя ничего в доказательства. Ты говоришь, что латенси у памяти 50нс, ну докажи, хуле. Скинь ссылку на спеку. Я тут что один должен «бегать оправдываться»?

К тому же аноним тут ты.

Ну да, ты-то личность известная.

Мне ненужно ничего понимать - я нахожусь попросту в другой весовой категории.

Ну-ка, клоун, поясни за заимствования в твоем диссере: http://wiki.dissernet.org/wsave/TsarevRJu2003.html

cocucka ★★★★☆
()
Ответ на: комментарий от anonymous

Качество модели определяется успешностью реальных опытов в частной системе на основе наблюдений над её моделью.

pon4ik ★★★★★
()
Ответ на: комментарий от cocucka

Ты говоришь, что латенси у памяти 50нс, ну докажи, хуле.

Посмотри видос, там тебе объяснит устройство памяти. Про CAS и RAS и про то что нужно обновлять заряд в оперативной памяти, и как вообще всё это работает. Тогда у тебя уменьшится число вопросов:

https://youtu.be/vDns3Um39l0

Matt Godbolt крутой чувак!

fsb4000 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.