Блог им. shprots

Программирование, боль, отчаяние. И мы - Смарт Лаб.

Недавние посты о программировании, а также собственное увлечение сабжем (что презабавно, — популярным у трейдеров подвидом C#), сподвигли творческую мысль на рождение; вследствие зачатия весьма порочного, к слову.

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

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

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

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

Скажете, садись за учебники сам и учи. Мы же учили, ночами не спали — кодили, кодили, кодили… Не рискну спрашивать, стоило ли оно того. И не буду. Но это видится мне крайне неэффективным. 
Не знаю у кого как со временем, но у большинства людей такой возможности нет. А неистово TRUE Трейдер всегда стремится к эффективности в лабутеновой степени.

Сам неплохо программирую на VBA. Немного кодю на всякой всячине типа SQL, HTML, CSS и тп.VBA — язык процедурный, достаточно простой для большинства задач, решаемых в EXCEl. Написал код, и он идёт построчно — вроде просто. Если что-то непонятно — смотришь справку. Там всё подробно и ясно. Даже по русски есть. Любая книга, справочник проясняют большинство непонятных моментов.И по EXCEL есть макрорекордер. Да, он глупый. Но есть.Программирование, боль, отчаяние. И мы - Смарт Лаб.

Что для вдохновения? Ну в частности:

В C# какие-то делегаты, куча всяких using'ов и прочих бебеней. Когда пытаешься в своём честно краденном (у меня нет!) Studio проделать операцию Step Into, то зачасутю код выполняется в непредсказуемом порядке. Что такое делегаты я не понял и на 3-ий раз.


Как учиться?

 Сам я занимаюсь на бесплатных он-лайн ресурсах. Есть куча бесплатных, кто хочет — пишите, кину ссылки… Для меня там всё достаточно понятно и просто. Но опять же — нужна практика и еще раз практика. Кроме этого есть куча бесплатных курсов. Очень часто слышу про решение практических задач как наиболее  эффективный способ обучению программированию. Согласен с данным утверждением. Но при самостоятельном изучение возникают проблемы: какие именно практические задачи решать, что это даёт, и самое главное — как их решать. Задача должна соответствовать либо немного превышать текущий уровень навыков. Либо нужен наставник, который поможет в решении задачи.
Наличие наставника всегда желательно.
Если задача не соответствует уровню программиста — задача решается чересчур долго, либо вовсе не решается по причине трудности.Как ещё учиться? Смотреть готовый код — тоже вариант, но он слабоэффективный. Нужно делать самому и доходить до многих вещей своим умом. Но опять же проблема — зачастую такая пропасть между навыками и задачей, что непонятно как решать задачу впринципе.
Да и готовый код зачастую тоже непонятен, потому как использует неизвестные способы решения проблемы.

Гнутые пальцы и кривые руки несовместны. Но гнутые руки и кривые пальцы?
★9
80 комментариев
Ну, а что мешает создать подраздел для программирования на этом сайте? Проблема в том, что мало пишут на эту тему, видимо уже создали бы давно, если бы было востребовано.

А по теме обучения, ИМХО, всякие учебники  и курсы — это шлак, не стоит эту макулатуру читать. Лучший учитель — практика. Для справочной информации есть доки.
avatar
sortarray sortarray, «Лучший учитель — практика. Для справочной информации есть доки» — в случае С# — это человеко/килочасы будут потрачены на изобретение велосипедов
avatar
Alpinist573, я на С# смотрю как на говно. Но в изобретении велосипедов ничего плохого не вижу. Если хочешь сделать что-то хорошо, сделай это сам. 
avatar
sortarray sortarray, говно не говно, а совсем без си шарпа далеко уехать трудно, WealthLab и TSLab на нем ну и тд и тп.

А писать все самому — это полный пинцет,  для людей с безграничным свободным временем и согласных отложить получение результата на неопределенное время
avatar
sortarray sortarray, на брейнфаке видимо кодишь? 
avatar
Ivor, причем тут брейнфак? Я предпочитаю динамические ООП-языки.
avatar
Ivor, Хотя минимализм языка, это безусловное преимущество, да, при хорошем дизайне, где упор делается на концептуальную чистоту. Взгляните, например, на Io

iolanguage.org/about.html
avatar
sortarray sortarray, Да я так понял,  Для вас важна идеология,  красота,  философия. И в этом нет ничего плохого конечно.  Для меня в первую очередь важна практичность.
avatar
Ivor, это взаимозависимые вещи. простой и мощный язык практичен, так как его выразительность и мощность экономит человекочасы. Сделать простое простым, а сложное — возможным. Философия проектирования систем vs философия тупого коллективного кодинга.

в прошлом веке, когда в отрасли не было такого количества мартышек, львиная доля сложного софта писалась индивидуалами и небольшими командами на лиспе и смоллтоке.
avatar
sortarray sortarray,  ну а что хорошего в том,  что технология доступна лишь узкому кругу фанатиков?  
avatar
Ivor, она доступна всем, просто не распространена. Ну, и собственно, маргинальность технологии сама по себе, не гарантирует качество. Это не хорошо и не плохо, это просто объективные законы рынка. Производителям ПО не выгодно зависеть от высококвалифицированных спецов, которых нельзя быстро заменить, они жертвуют производительностью ради универсальности. Это, в том числе и использование единой инфраструктуры, паттернов и тп, отсюда и это зомбирование насчет велосипедов. А преимущества использования я указал выше.
avatar
sortarray sortarray, нет, надо совмещать, если только практиковаться можно начать изобретать велосипеды, в то время как есть более простое решение, читать только официальную спецификацию языка для новичка не вариант — а)он сойдет с ума б)ничего при этом не поймет. Вход должен быть мягче, в книжке «добрый дядя» человеческим языком расскажет про перегрузку операторов, рекурсии, каррирование  и много других увлекательных вещей)
avatar
owner, проблема в том, что зачастую, добрые дяди сами не понимают того, о чем они пишут. Это само по себе закладывает порочный фундамент, от которого избавится потом очень тяжело. Инерция мышления. Уж если что-то читать, то читать годами проверенную, и подтвержденную практикой литературу. Можно начать с SICP, например, чтобы иметь общее представление хотя бы. Хотя SICP тоже не идеальна, вопреки всеобщему убеждению. Там слишком мало внимания уделено теме ООП.
avatar
Для начала надо тупо вызубрить команды.
И только так учится любой язык, в том числе иностранный.
avatar
Translator, бред. К тому же, в современных языках столько шлака, что знание 1% «команд» может покрыть все мыслимые задачи.И иностранный язык так не учится. слова запоминаются в процессе использования языка.
avatar
Translator, английский разговорный, к примеру, выучился за пару месяцев в Англии на неплохом уровне — общением. Словарный запас пополнялся книгами на родном английском.
Все учится быстро, если вызывает эмоции.
avatar
shprots, Не верю. За рубежом бываю часто. Живу месяцами, а жил — годами. Ежедневно день начинаю с тупой зубрежки вокабуляра.
avatar
Translator, Была минимальная база — полгода учил в РФ. Язык в Лондоне учил целенаправленно в местной школе. Первые две недели стоили полгода в РФ.
avatar
shprots, Тогда вы гений!
И английским, и немецким владею где-то на уровне B1. Видел очень много людей, которые упорно учили языки и здесь, и за рубежом. Это процесс пожизненный! Понимание разговорного языка — это вообще особая тема, а проработка произношения — полный ад, когда каждая фраза прокрикивается сотнями раз и заканчивается все уже когда язык не ворочается от усталости.
avatar
Translator, Воистину! Учу английский всю жизнь. Могу более-менее читать и понимать художественную и техническую литературу в знакомых предметных областях (программирование, торговля). Говорить по прежнему могу не более чем на бытовом уровне (рынок-магазин, отель, аэропорт). Каждый день, по дороге из офиса в офис не меньше часа слушаю аудиокурс и повторяю за ним.

Раз тридцать пытался проходить интервью в попытках трудоустроиться. Из них лишь пару раз было более-менее комфортно общаться. Один раз с голландцами, другой с киприотами. Речь британских или американских коллег просто не понимаю (не слышу), хотя переписываться в скайпах и вайберах более-менее удается.
avatar
Translator, Да я полнейший балбес, какой гений. Я же не писал — свободный уровень. Написал — неплохой. Я понимал смысл почти всего, что мне говорят, мог объяснить таксисту куда ехать, мог поговорить о еде, об экономике, мог сделать быстрый рендеринг статьи статьи средней сложности.
И опять же — я учился в английской школе для иностранцев, мной занимались преподаватели англичане, я общался каждый вечер в семье, в которой жил. Почти весь день — английский. С русскими вечером, на обеде. И весь день — английский. Прогресс колоссальный, с полугодом в РФ — та самая зубрёжка pronunciation, когда говоришь, как в школе коррекции, пока зубы язык не сточат — не сравнить.
avatar
Translator, ну и добавлю — да, зубрежка нужна и важна. Но это лишь один аспект обучения. Далее — понимание, практика, визуализация, техника recall, интервальные повторения и тд.
Ну и учтите, что неплохой уровень каждый понимает по-своему :)
avatar
Translator, 
влюбись в иностранку — сразу  прогресс. Сможешь о театре рассуждать и лекции о космосе читать на языке.
avatar
shprots, Бесплатный видеокурс? А кому это надо?
пустая трата времени ибо никакое программирование не научит торговать в профит
avatar
Зачем вам программирование? Если есть прибыльные стратегии, наймите программера для автоматизации. Ну а если нет стратегий, то программирование не поможет.
avatar
Чего все прицепились к программированию?

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

Чуете разницу между «яйцами» и «лобзиком+сварка»?

Хоть бы кто-то написал «есть 10 стратегий, надо их просчитать, и если предположение верно, то будет вагоны денег».

А то в фигню всякую, типа потоки и протоколы, народ лезет...

Напишите детально, как должно выглядеть ваше «яйцо фаберже», слабо?

А сделать его, это тупо «лобзик+сварка» (кодинг).

PS
Вы не сможете придумать то, что нельзя сделать. Так что, не стесняйтесь, пишите про «яйца», а не «лобзик+сварку».
avatar
Алексей Иванов, золотые слова. Я предлагал бесплатно закодить, если будет полностью формализованная стратегия, очередь что-то не выстроилась, а точнее откликнулось два человека, один из которых не понимал, что такое формализованная стратегия.
avatar
Alexand77, потому что дешевле работать с программистом за деньги, чем с бесплатным энтузиастом. Кто плавал, тот знает. А кто не плавал, тот вам и написал в личку.
avatar
Евгений, у меня и диплом программистский есть, если «шашечки» нужны, и библиотеку свою я написал под SmartCom 3.0. 
avatar
Alexand77, хорошие программисты на этом сайте не пишут. Они заняты делами ;-)
avatar
Евгений, как и хорошие трейдеры.
В основном фантазеры и околорыночники. 
avatar
Алексей Иванов, Чего прицепились? а потому что интересен лобзик и сварка, а не яйцо.
avatar
 да — нужны стратегии. А как их обсчитать без программирования? за велслаб заплатить для начала???
Можно нанять трейдера и прогера. Дешево? Отобьет расходы?
avatar
vladimir doigt, я как-то вначале экселем обходился, чтобы обсчитать и ничего. 
Какую такую задачу в стратегиях нужно обсчитывать именно с помощью C#? Я вот что-то не соображу.
avatar
Alexand77, в EXCEL можно впринципе. Но уж 1 млн строк — уж больно мало. И долго.
avatar
shprots, это все вторично. Хорошие идеи просты, миллионы строк для них не нужно перебирать.
Или вы считаете, чем больше миллионов строк вы через свой код пропустите — тем прибыльнее будете торговать?
avatar
Alexand77, 
завидую. у меня пока не ахти. Есть конечно пару недограалей, но все сыро.
avatar
Alexand77, ну для этого и EXCEL не нужен.
avatar
shprots, о том и речь. 
avatar
Alexand77, 
да я тоже могу экселем по 2000 свеч, убыточную стратегию целый день разбирать.
А вот прогой на джаве своей — я за 5 мин пучок. И стату собрать для идей -главное: напр сколько на каком тайме было бычьих поглощений, гэпов и пр....
осталось тестер доделать.
А в тслабе чтобы свечные паттерны проверить — уже надо кодить, в кубиках я не могу (да и другие....)
avatar
vladimir doigt, я пользуюсь AmiBroker. Есть по нему нормальный форум на русском — amisite.ru — много примеров разобрано, синтаксис очень простой, типа бейсика.
avatar
Велс на месяц дают вполне легально. Если стратегии описаны, можно поискать похожие среди реализованных коих там сотни.  
avatar
Хочешь курсов по программированию для трейдинга? забесплатно?
Можно хоть сайт делать и рубить капусту на лохах рекламке?
Их есть у меня, но только начальный этап (Программирование стратегий в AMIBroker) — 3 месяца и 300 000 рублей. (чем я хуже Герчика-то?). Если интересно — пиши в личку
avatar
Cheshirscy, неконкурентоспособно :) а есть кто ведётся? :)
avatar
shprots, да я и не предлагал никому :) да и конкурентов чего-то не особо наблюдается :) Если вон только StockSharp, ну так пускай процветают на здоровье :) 
avatar
Cheshirscy, StockSharp — вероятно лучшее что есть в РФ.
avatar
shprots, не согласен, но спорить не буду
avatar
Cheshirscy, зачем спорить? расскажите просто о российских альтернативах.
Мне о них мало известно, ибо тусуюсь в англоязычном инете.
avatar


Да, автор сказал, что он не понимает делегаты. Я хоть и не пишу на статически типизированных языках, надеюсь, что правильно понимаю их суть. Попробую на пальцах. Представьте, что у Вас есть функция, которая содержит в себе некоторые операции(псевдокод)

sum = defineFunction(x, y){
   if( x kindOf(string ) and ( y kindOf(string)) ) { concat(x, y) }
   if( x kindOf(number ) and ( y kindOf(number)) ) { x + y }
   default generate error(wrong type bla-bla-bla)
}

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

sum = defineFunction(x, y){
   if(x type == y type) {
     if(type in myObject) {
        myObject getSlot(x type) applyArguments(x, y)
      }
   }
  default generate error(wrong type bla-bla-bla)
}

myObject = defineNewObject
myObject setSlot(string, defineFunction(x, y){concat(x, y)})
myObject setSlot(number, defineFunction(x, y){x + y)})
myObject setSlot(list, defineFunction(x, y){union(x, y)})


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

 

avatar
sortarray sortarray, да хорошь уже, делегат это ссылка на функцию. 
Например можно написать 
var x = 100;
X будет хранить число 100.
Можно написать 
var x = new MyObject;
X будет хранить ссылку на «какой-то объект».

А можно вот так:
function doSomeThing(){
  bla… bla… bla...
}

var x = doSomeThing

X будет хранить саму эту функцию,
и потом можно будет ее вызывать
x();

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

avatar
Cheshirscy, ух ты, спасибо. А что тогда там понимать то:)
avatar
Cheshirscy, Спасибо, здоровой дискуссии я и ждал.
avatar
shprots, ну а какая дискуссия? Сайт «там с рекламкой для лохов». это не вариант. Все-таки тема очччень специфическая. Нету столько лохов, что бы отбилось. Поэтому смысл это начинать тому, кто «с другой стороны»?
avatar
Cheshirscy, зы: сайт с рекламкой для лохов — это шутка.
avatar
sortarray sortarray, благодарю :)
avatar
Без рабочей стратегии, программируй, не программируй, финансовой отдачи будет ноль. Время, которое вы могли-бы потратить на рынок, будет убито на попытки что-то сваять (надежда на грааль). Я не плохо знаю С, С++, различные клоны С (MetaTrader привет), похуже, но могу писать на Lisp, Prolog, Erlang. Поверьте, если умеете программить на одном языке, то другие очень похожи, почти у все языков программирования, одни и те-же семантические конструкции.
Я полностью согласен с выше сказанным, не нужно пытаться охватить в самом начале, необъятное, когда не понятно, насколько ваша идея будет работать. Поэтому, самой простой способ, это сначала разработать и оттестировать, именно стратегию. Данные в этот модуль, стратегии, можно передавать через массивы, через текстовые файлы и другими легкими методами, не нужно кодить протокол обменна данными с биржей, если нет рабочей стратегии, только время зря убъете.
Вот если стратегия рабочая, то можно и обвес писать.
avatar
b@e, Полностью согласен, но есть поправка.
Процесс тестирования стратегий, и процесс непосредственной торговли уже ОТТЕСТИРОВАНЫМ стратегиям. Это ДВА РАЗНЫХ процесса. Для тестирования есть прекрасные программы, и не надо изобретать свой велосипед.  
avatar
Cheshirscy, под тестированием, я подразумевал отладку кода.
avatar
b@e, разработка прибыльной стратегии и прочее — это уже пройденный этап. Цели куда выше.
avatar
shprots, ну если есть стратегия, в которой уверен, тогда в чем проблема? ее в квике закодить? или стратегия hft?
avatar
Cheshirscy, У меня впринципе нет проблем. Я делаю то, что мне интересно. Сейчас я готовлюсь, к примеру, к марафону. У меня нет с этим проблем. Но я также хочу чтобы был фан от процесса.
avatar
shprots, к чему этот ответ?  у меня и так все хорошо, а топик написал от не чего делать?
avatar
Cheshirscy, стратегия HFT. И много, она не одна. Мне нужно дальнейшее развитие. И сроки сжатые. Я не успеваю делать всё один. Большую часть я бы и вовсе делегировал. Мне лишь интересно, кто хотел и дальше бы в этом развиваться. Отдавать на фриланс — вариант. Но временный, не очень серьёзный.
avatar
shprots, что значит, дальнейшее развитие? По развернутей пожалуйста
avatar
shprots, сначала запрограммируйте стратегию, как можно проще, без всякого синтаксического сахара, и добейтесь ее работоспособности, чтобы результаты работы программы совпадали с вашими результатами торговли по запрограммированной стратегии. После, как программа будет рабочая, запускайте ее, пускай для вас делает деньги, а вы начнете писать ее вторую версию, улучшая ее, добавляя функционал и удобство пользования. И так до бесконечности, так у вас в итоге получиться нормальная рабочая программа. MicroSoft тоже ведь, не сразу Windows 10 выпустила, они начали с Windows 1.0.
avatar
Да и мне не понятно, чего вы в этот c# уперлись? язык хороший, но больно уж универсальный, т.е. многие вещи, которые в других языках и средах программирования поставляются из коробки, в до диезе надо будет самому выпиливать. Ну вот если автор знаком с VBA, чего ему не посмотреть в сторону VB6 (по-моему 6 там последний, который не #). Все будет знакомо
avatar
Cheshirscy, я привёл C# как пример. Можно питон, VB и что угодно. Но C# популярен в РФ.
avatar
 кроме русалго все бесплатно. 
а за курсы русалго действительно стоить заплатить, ибо стоящие. 
avatar
и вот вы тут спорите какой язык лучше, какой хуже. поймите одну вещь наконец-то, все современные языки примерно похожи и различаются только в нюансах, которые при программировании роботов вас даже не коснутся. Везде одни и те же циклы, условные операторы, переключатели и т.д. Если вы знаете с#, то вы будете знать 90% питона, явы, php и прочее. 
Выучите один любой язык. Выучите ООП. Все. Все двери для вас открыты. 
avatar
Ivor, все верно.
Но и это не гарантирует стабильного заработка с рынка :) Не надо думать, что если освоишь С#, то сразу начнешь писать прибыльных роботов. 
Вообще я заметил такое романтическое настроение у многих, что типа робот = прибыль. В смысле у тех, кто ни строчки кода не написал в жизни и ни одной стратегии не формализовал даже на словах.
avatar

теги блога shprots

....все тэги



UPDONW
Новый дизайн