shprots
shprots личный блог
14 марта 2016, 18:43

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

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

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

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

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

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

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

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

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

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


Как учиться?

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

Гнутые пальцы и кривые руки несовместны. Но гнутые руки и кривые пальцы?
80 Комментариев
  • sortarray sortarray
    14 марта 2016, 19:04
    Ну, а что мешает создать подраздел для программирования на этом сайте? Проблема в том, что мало пишут на эту тему, видимо уже создали бы давно, если бы было востребовано.

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

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

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

                в прошлом веке, когда в отрасли не было такого количества мартышек, львиная доля сложного софта писалась индивидуалами и небольшими командами на лиспе и смоллтоке.
                • Ivor
                  15 марта 2016, 23:38
                  sortarray sortarray,  ну а что хорошего в том,  что технология доступна лишь узкому кругу фанатиков?  
                  • sortarray sortarray
                    15 марта 2016, 23:53
                    Ivor, она доступна всем, просто не распространена. Ну, и собственно, маргинальность технологии сама по себе, не гарантирует качество. Это не хорошо и не плохо, это просто объективные законы рынка. Производителям ПО не выгодно зависеть от высококвалифицированных спецов, которых нельзя быстро заменить, они жертвуют производительностью ради универсальности. Это, в том числе и использование единой инфраструктуры, паттернов и тп, отсюда и это зомбирование насчет велосипедов. А преимущества использования я указал выше.
    • owner
      14 марта 2016, 20:25
      sortarray sortarray, нет, надо совмещать, если только практиковаться можно начать изобретать велосипеды, в то время как есть более простое решение, читать только официальную спецификацию языка для новичка не вариант — а)он сойдет с ума б)ничего при этом не поймет. Вход должен быть мягче, в книжке «добрый дядя» человеческим языком расскажет про перегрузку операторов, рекурсии, каррирование  и много других увлекательных вещей)
      • sortarray sortarray
        14 марта 2016, 20:34
        owner, проблема в том, что зачастую, добрые дяди сами не понимают того, о чем они пишут. Это само по себе закладывает порочный фундамент, от которого избавится потом очень тяжело. Инерция мышления. Уж если что-то читать, то читать годами проверенную, и подтвержденную практикой литературу. Можно начать с SICP, например, чтобы иметь общее представление хотя бы. Хотя SICP тоже не идеальна, вопреки всеобщему убеждению. Там слишком мало внимания уделено теме ООП.
  • Translator
    14 марта 2016, 19:18
    Для начала надо тупо вызубрить команды.
    И только так учится любой язык, в том числе иностранный.
    • sortarray sortarray
      14 марта 2016, 19:21
      Translator, бред. К тому же, в современных языках столько шлака, что знание 1% «команд» может покрыть все мыслимые задачи.И иностранный язык так не учится. слова запоминаются в процессе использования языка.
      • Translator
        14 марта 2016, 19:26
        shprots, Не верю. За рубежом бываю часто. Живу месяцами, а жил — годами. Ежедневно день начинаю с тупой зубрежки вокабуляра.
          • Translator
            14 марта 2016, 19:41
            shprots, Тогда вы гений!
            И английским, и немецким владею где-то на уровне B1. Видел очень много людей, которые упорно учили языки и здесь, и за рубежом. Это процесс пожизненный! Понимание разговорного языка — это вообще особая тема, а проработка произношения — полный ад, когда каждая фраза прокрикивается сотнями раз и заканчивается все уже когда язык не ворочается от усталости.
            • SergeyEgorov
              14 марта 2016, 20:03
              Translator, Воистину! Учу английский всю жизнь. Могу более-менее читать и понимать художественную и техническую литературу в знакомых предметных областях (программирование, торговля). Говорить по прежнему могу не более чем на бытовом уровне (рынок-магазин, отель, аэропорт). Каждый день, по дороге из офиса в офис не меньше часа слушаю аудиокурс и повторяю за ним.

              Раз тридцать пытался проходить интервью в попытках трудоустроиться. Из них лишь пару раз было более-менее комфортно общаться. Один раз с голландцами, другой с киприотами. Речь британских или американских коллег просто не понимаю (не слышу), хотя переписываться в скайпах и вайберах более-менее удается.
        • baron_samedi
          14 марта 2016, 20:10
          Translator, 
          влюбись в иностранку — сразу  прогресс. Сможешь о театре рассуждать и лекции о космосе читать на языке.
      • Евгений Черных
        14 марта 2016, 21:19
        shprots, Бесплатный видеокурс? А кому это надо?
  • ves2010
    14 марта 2016, 19:35
    пустая трата времени ибо никакое программирование не научит торговать в профит
  • Karim
    14 марта 2016, 19:48
    Зачем вам программирование? Если есть прибыльные стратегии, наймите программера для автоматизации. Ну а если нет стратегий, то программирование не поможет.
  • Русский
    14 марта 2016, 20:02
    Чего все прицепились к программированию?

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

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

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

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

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

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

    PS
    Вы не сможете придумать то, что нельзя сделать. Так что, не стесняйтесь, пишите про «яйца», а не «лобзик+сварку».
    • Alexand77
      14 марта 2016, 20:24
      Алексей Иванов, золотые слова. Я предлагал бесплатно закодить, если будет полностью формализованная стратегия, очередь что-то не выстроилась, а точнее откликнулось два человека, один из которых не понимал, что такое формализованная стратегия.
      • Евгений
        14 марта 2016, 20:54
        Alexand77, потому что дешевле работать с программистом за деньги, чем с бесплатным энтузиастом. Кто плавал, тот знает. А кто не плавал, тот вам и написал в личку.
        • Alexand77
          14 марта 2016, 20:59
          Евгений, у меня и диплом программистский есть, если «шашечки» нужны, и библиотеку свою я написал под SmartCom 3.0. 
          • Евгений
            14 марта 2016, 21:04
            Alexand77, хорошие программисты на этом сайте не пишут. Они заняты делами ;-)
            • Alexand77
              14 марта 2016, 21:07
              Евгений, как и хорошие трейдеры.
              В основном фантазеры и околорыночники. 
  • baron_samedi
    14 марта 2016, 20:13
     да — нужны стратегии. А как их обсчитать без программирования? за велслаб заплатить для начала???
    Можно нанять трейдера и прогера. Дешево? Отобьет расходы?
    • Alexand77
      14 марта 2016, 20:29
      vladimir doigt, я как-то вначале экселем обходился, чтобы обсчитать и ничего. 
      Какую такую задачу в стратегиях нужно обсчитывать именно с помощью C#? Я вот что-то не соображу.
        • Alexand77
          14 марта 2016, 20:50
          shprots, это все вторично. Хорошие идеи просты, миллионы строк для них не нужно перебирать.
          Или вы считаете, чем больше миллионов строк вы через свой код пропустите — тем прибыльнее будете торговать?
          • baron_samedi
            14 марта 2016, 20:51
            Alexand77, 
            завидую. у меня пока не ахти. Есть конечно пару недограалей, но все сыро.
            • Alexand77
              14 марта 2016, 20:54
              shprots, о том и речь. 
      • baron_samedi
        14 марта 2016, 20:50
        Alexand77, 
        да я тоже могу экселем по 2000 свеч, убыточную стратегию целый день разбирать.
        А вот прогой на джаве своей — я за 5 мин пучок. И стату собрать для идей -главное: напр сколько на каком тайме было бычьих поглощений, гэпов и пр....
        осталось тестер доделать.
        А в тслабе чтобы свечные паттерны проверить — уже надо кодить, в кубиках я не могу (да и другие....)
        • Alexand77
          14 марта 2016, 20:53
          vladimir doigt, я пользуюсь AmiBroker. Есть по нему нормальный форум на русском — amisite.ru — много примеров разобрано, синтаксис очень простой, типа бейсика.
  • KNK
    14 марта 2016, 20:25
    Велс на месяц дают вполне легально. Если стратегии описаны, можно поискать похожие среди реализованных коих там сотни.  
  • Cheshirscy
    14 марта 2016, 21:40
    Хочешь курсов по программированию для трейдинга? забесплатно?
    Можно хоть сайт делать и рубить капусту на лохах рекламке?
    Их есть у меня, но только начальный этап (Программирование стратегий в AMIBroker) — 3 месяца и 300 000 рублей. (чем я хуже Герчика-то?). Если интересно — пиши в личку
      • Cheshirscy
        14 марта 2016, 22:18
        shprots, да я и не предлагал никому :) да и конкурентов чего-то не особо наблюдается :) Если вон только StockSharp, ну так пускай процветают на здоровье :) 
          • Cheshirscy
            14 марта 2016, 22:50
            shprots, не согласен, но спорить не буду
  • sortarray sortarray
    14 марта 2016, 21:42


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

    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)})


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

     

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

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

      var x = doSomeThing

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

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

      • sortarray sortarray
        14 марта 2016, 21:55
        Cheshirscy, ух ты, спасибо. А что тогда там понимать то:)
        • Cheshirscy
          14 марта 2016, 22:12
          shprots, ну а какая дискуссия? Сайт «там с рекламкой для лохов». это не вариант. Все-таки тема очччень специфическая. Нету столько лохов, что бы отбилось. Поэтому смысл это начинать тому, кто «с другой стороны»?
  • b@e
    14 марта 2016, 21:50
    Без рабочей стратегии, программируй, не программируй, финансовой отдачи будет ноль. Время, которое вы могли-бы потратить на рынок, будет убито на попытки что-то сваять (надежда на грааль). Я не плохо знаю С, С++, различные клоны С (MetaTrader привет), похуже, но могу писать на Lisp, Prolog, Erlang. Поверьте, если умеете программить на одном языке, то другие очень похожи, почти у все языков программирования, одни и те-же семантические конструкции.
    Я полностью согласен с выше сказанным, не нужно пытаться охватить в самом начале, необъятное, когда не понятно, насколько ваша идея будет работать. Поэтому, самой простой способ, это сначала разработать и оттестировать, именно стратегию. Данные в этот модуль, стратегии, можно передавать через массивы, через текстовые файлы и другими легкими методами, не нужно кодить протокол обменна данными с биржей, если нет рабочей стратегии, только время зря убъете.
    Вот если стратегия рабочая, то можно и обвес писать.
    • Cheshirscy
      14 марта 2016, 21:53
      b@e, Полностью согласен, но есть поправка.
      Процесс тестирования стратегий, и процесс непосредственной торговли уже ОТТЕСТИРОВАНЫМ стратегиям. Это ДВА РАЗНЫХ процесса. Для тестирования есть прекрасные программы, и не надо изобретать свой велосипед.  
      • b@e
        14 марта 2016, 21:56
        Cheshirscy, под тестированием, я подразумевал отладку кода.
      • Cheshirscy
        14 марта 2016, 22:17
        shprots, ну если есть стратегия, в которой уверен, тогда в чем проблема? ее в квике закодить? или стратегия hft?
          • Cheshirscy
            14 марта 2016, 22:29
            shprots, к чему этот ответ?  у меня и так все хорошо, а топик написал от не чего делать?
              • Cheshirscy
                14 марта 2016, 22:49
                shprots, что значит, дальнейшее развитие? По развернутей пожалуйста
      • b@e
        14 марта 2016, 22:24
        shprots, сначала запрограммируйте стратегию, как можно проще, без всякого синтаксического сахара, и добейтесь ее работоспособности, чтобы результаты работы программы совпадали с вашими результатами торговли по запрограммированной стратегии. После, как программа будет рабочая, запускайте ее, пускай для вас делает деньги, а вы начнете писать ее вторую версию, улучшая ее, добавляя функционал и удобство пользования. И так до бесконечности, так у вас в итоге получиться нормальная рабочая программа. MicroSoft тоже ведь, не сразу Windows 10 выпустила, они начали с Windows 1.0.
  • Cheshirscy
    14 марта 2016, 22:25
    Да и мне не понятно, чего вы в этот c# уперлись? язык хороший, но больно уж универсальный, т.е. многие вещи, которые в других языках и средах программирования поставляются из коробки, в до диезе надо будет самому выпиливать. Ну вот если автор знаком с VBA, чего ему не посмотреть в сторону VB6 (по-моему 6 там последний, который не #). Все будет знакомо
  • Ivor
    15 марта 2016, 22:37
  • Ivor
    15 марта 2016, 22:38
     кроме русалго все бесплатно. 
    а за курсы русалго действительно стоить заплатить, ибо стоящие. 
  • Ivor
    15 марта 2016, 22:45
    и вот вы тут спорите какой язык лучше, какой хуже. поймите одну вещь наконец-то, все современные языки примерно похожи и различаются только в нюансах, которые при программировании роботов вас даже не коснутся. Везде одни и те же циклы, условные операторы, переключатели и т.д. Если вы знаете с#, то вы будете знать 90% питона, явы, php и прочее. 
    Выучите один любой язык. Выучите ООП. Все. Все двери для вас открыты. 
    • Alexand77
      17 марта 2016, 10:43
      Ivor, все верно.
      Но и это не гарантирует стабильного заработка с рынка :) Не надо думать, что если освоишь С#, то сразу начнешь писать прибыльных роботов. 
      Вообще я заметил такое романтическое настроение у многих, что типа робот = прибыль. В смысле у тех, кто ни строчки кода не написал в жизни и ни одной стратегии не формализовал даже на словах.

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн