Блог им. Therollingstones

Первая конкретика по финансовому программированию!!! читать,обсуждать, проникаться!!!

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

Я напомню, по тегам start, rolling, можно найти все предыдущие топики. Но если этот топик для Вас первый, Вам очень повезло. Так как мне он стоил очень многих головных болей)) Итак, почему очень ценно то, что будет ниже. Очень сложно найти хороший материал. Потом, когда ты понимаешь, что нужно пользоваться оригиналами, а это справочник Microsoft, ты понимаешь, что там есть в общем — то все, но машинный перевод + данные разбиты по секциям, короче сложно сложно. Я нашел хорошую книгу, которую скоро добавлю, 

ЯЗЫК ПРОГРАММИРОВАНИЯ
C#5.0
И ПЛАТФОРМА .NET 4.5
б-е издание
Эндрю Троелсен

После нескольких месяцев довольно туманных исследований справочника Microsoft, я нашел это! Очень, очень, очень плавное введение в .NET, 
вот прям взяли и собрали все что нужно. В первой главе, введение в NET так и говорится, дословно, в первой главе "мы собрали информацию, которая вас научит думать как NET"

Ну а я, че я, я составил схему этого введения. 

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

1drv.ms/i/s!Aik_YYEGJIBwhGxgtKVyvlLxciqK

Очень хорошо, что попалась эта книга.

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



★6
Программирование программированию рознь.

У нас работают два типа кодеров: 1) кто очень хорошо знает C# и читал подобную книгу, и делает платформу 2) кто плохо знает C#, но умеет кодировать алгортмы и формулы.

Для каждых задач свои потребности. Например, в подобных книгах делается сильный упор на GC + алгоритмы коллекций. В принципе, это бесполезные знания для разработки стратегий. И крайней важные, если делаются системные вещи, вроде коннекторов.
avatar

Mikhail Sukhov

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

therollingstones

Mikhail Sukhov, те, кто плохо знают, как работают структуры данных и GC, могут запросто в своем алгоритме написать какую-нибудь мега-лямбду с LINQ, которая вместо O(1) или O(log(n)) будет O(n^2), и/ли new() во внутреннем цикле и мусорить так, что старания первой категории писателей платформы становятся напрасны при многомерной оптимизации на коротких таймфреймах и длинных данных. Сам грешил и видел такое, что специально не придумать. Как пример, буквально вчера бродил по ГитХабу в поисках новых репо на тему торговли, обратил внимание на этот метод  — вычисляют сумму полностью каждый раз (это O(n)) да еще и через Range (sic!), хотя могли бы добавлять новое значение и вычитать выбывающее значение (это O(1)), у вас в S# как бы почти так и сделано, но безобидный и удобный метод Sum() пересчитывает сумму каждый раз заново. Также вы или копите все значения инпута в буфере, или строчкой выше удаляете первый элемент, что для List тоже строго O(n) и много мусора — я с первого взгляда не понял, что значит isFinal. В Lean тоже используют List как буффер, но только как внутренний контейнер для circular buffer, который гарантирует смещение за O(1). Затем для рассчета суммы они вычитают выбывающую точку и добавляют новую точку, что также O(1). И это только для одного простейшего индикатора — а если их много вложенных, и надо прооптимизировать минутки честно walk-forward на большой решетке параметров, такие мелочи приводят к тому, что кто-то делает рассчет за пару минут, а кто-то — полчаса. Первые за час могут подкрутить стратегию много раз, пока вторые греют чай на процессоре :) На тему «бесполезности таких знаний» и premature optimization — мой любимый пост от гуру производительности, в котором есть еще примеры.

(не шума ради дублирую, случайно удалил оригинальный коммент, но он сохранился в другом месте)

avatar

buybackoff

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

buybackoff

VladMih, тупо как то.
avatar

therollingstones

buybackoff, четко))
avatar

therollingstones

VladMih, схему то смотрел? Схема все 150% этого поста.
avatar

therollingstones

buybackoff, это то, что в книжках называется Преждевременная оптимизация.

Но не суть. Я описал процесс работы в нашей компании. Как мы делаем роботы. Вот например есть человек, который не знает ничего об алгоритме сборки мусора. Он написал 2.5 года назад стратегию, которая до сих пор зарабатывает на рынке (с дркрутками). И было очень много людей, которые себя считали гурами, знали очень много умных слов и технологий, но не выдали ни одной зарабатывающей строчки кода. Как я устал лично их всех собеседовать, вводить в курс дела, вести за собой, обучать и затем увольнять =)

Как в вашей компании устроен процесс получения прибыльных стратегий?
avatar

Mikhail Sukhov

Mikhail Sukhov, намекаете, что «если я такой умный, почему такой бедный»!? :) Преждевременная оптимизация — это то, что Джо Даффи в посте по ссылке как раз называет мифом, когда речь идет не о процентах, а о порядках. Имплементаций Deque готовых полно, заменить List на Deque занимает не больше пяти минут, и List.Remove(0) не будет так сильно пугать… В некотором смысле это вопрос гигиены. Я даже в философию не уходил, показал четкий конкретный пример как вкусные плюшки типа LINQ незаметно для незнающего пользователя могут замедлить код в разы.

Один из ключевых моментов в процессе — пересчитать максимальное количество идей/вариантов/параметров за единицу времени, так как 99% — это мусор.
avatar

buybackoff

buybackoff, пул реквесты принимаем.

Никаких намеков. Я лишь попытался показать, что акцент должен быть на прибыльности, а не на кодировании. Кодирование ради кодирования — лишено смысла. Мы же не в чисто ИТ бизнесе. Мы больше к финансовым рынкам.
avatar

Mikhail Sukhov

Mikhail Sukhov, вы пулл реквесты принимаете!? :)
avatar

buybackoff


надо заполнять))
avatar

therollingstones

buybackoff, а всё почему — потому что нету гребаных исходников для всего того что microsoft понапилила в C# поэтому понять чего и почему тормозит точно нельзя, можно только догадываться...
Вот за что люблю Борландовские Дельфи, так это за то что есть исходники почти от всего, и при желании всегда можно залезть и посмотреть что там и как происходит… и поправить если очень уж хотелка зачесалась… С++ конечно в этом смысле тоже хорош, но… дебажить чужие темплейты это удовольствие то еще.
avatar

Бабёр-Енот

Бабёр-Енот, Картинки по запросу инопланетянин не понимает
avatar

therollingstones


Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.

Залогиниться

Зарегистрироваться
....все тэги
Регистрация
UPDONW