Replikant_mih
Replikant_mih личный блог
29 апреля 2017, 16:44

Математические способности и алгоритмическая торговля.

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

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

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

В общем это дополнительный челлендж для меня, а подобные вызовы меня только раззадривают).

И да, это очередной «теоретический» пост, сорри, чем богаты на данном этапе).

40 Комментариев
  • Sergey Pavlov
    29 апреля 2017, 17:20
    Вполне практический пост:)
    • vito2000
      29 апреля 2017, 17:27
      Sergey Pavlov, сорри, от поста пользы ноль.
      • Sergey Pavlov
        29 апреля 2017, 17:37
        vito2000, для читателя ноль, да, но тут на смартлабе  99% постов приносят пользу лишь их авторам:) так что это из другой оперы немного:)
          • Sergey Pavlov
            29 апреля 2017, 18:32
            Replikant_mih, смысл для читателя это дело читателя) а пост вполне практичный, хоть и не по трейдингу. Правда тут по трейдингу постов днем с огнем…
  • sortarray sortarray
    29 апреля 2017, 17:35
    Я не понял, что у Вас там за формула прямой, по идее, прямую можно представлять как линию, проведенную через две точки, больше ничего не надо, что же касается Ваших шансов, то, думаю, что они более чем реальны. Вопреки распространенному стереотипу, математика программисту нужна только в чисто прикладном аспекте, математика к программированию(к умению программировать) имеет отношение не больше чем лингвистика. Программирование — это инженерная отрасль.
    Да и вообще, основная сложность в программировании обычно проявляется в вопросах проектирования, вопросах преодоления растущей сложности системы, и ее дальнейшей поддержки и расширяемости, вот тут наступает реальный абзац:) А «формулы» нахер никому не вперлись, они в книжках есть, всегда можно посмотреть:) 
      • sortarray sortarray
        29 апреля 2017, 17:53
        Replikant_mih, 
        По поводу прямой: ну формула вида y = kx + b. Ну вот по двум точкам эти k и b и нужно вывести, чтобы иметь возможность и третью точку и десятую нарисовать и определить конкретная точка она выше или ниже этой линии и т.д.

        Возможно там что-то у вас специфическое, но подозреваю, что Вам надо отделить данные от графического представления этих данных. Местоположение точки должно определяться по данным, а отрисовкой должен заниматься объект, который ответственен за отрисовку. Вы должны выбрать такое представление данных, такие структуры, по которым Вам удобно будет это все вычислять(независимо от графического представления). Как то так.
          • sortarray sortarray
            29 апреля 2017, 18:34
            Replikant_mih, В общем, я бы на Вашем месте сделал матрицу, где каждая координата вида [x y] является точкой, как бы ссылкой на абстрактный объект точки, и набор операций над этой матрицей, вида: get/setSomeProperty([10, 20], [30, 40]), где числа — координаты x и y. В данном случае, каждый из аргументов представляет точку на плоскости.
            При любом изменении матрицы график перерисовывать, считать и изменять отдельно,
      • sortarray sortarray
        29 апреля 2017, 17:57
        Replikant_mih, 
        По поводу математики — нужность математики в алго-трейдинге больше ценится не в привязке к кодингу, а в привязке к рисёчу, к выявлению законмоерностей, построению моделей и т.д.

        Возможно, но на практике этой пользы не видно. Например, вероятности я всегда вычисляю программно, никогда не заглянул в теорвер. Это проще и надежней, как минимум.
  • sortarray sortarray
    29 апреля 2017, 17:46
    Вот что еще тут стоит заметить.

    Понятие «алгоритмический», то есть, от слова алгоритм, это понятие общее для математики и программирования, но есть одна тонкость, которая часто упускается из виду: программист занимается не изучением алгоритмов, а их реализацией.

    И второе, не менее важное: программирование не сводится к построению и реализации алгоритмов. В сущности, программирование — это построение систем, которые, в том числе(но не только) реализуют какие-то алгоритмы.
  • Ярик
    29 апреля 2017, 18:23
    параметры k и b формулы y = kx+b вычисляются через систему из двух уравнений (из двух точек).
    Можно выразить через систему уравнений k и b легко, это делали еще в школе сто раз!
  • facevalue
    29 апреля 2017, 19:21
    По опыту, чем «математичнее» человек, тем меньше у него вероятность зарабатывать деньги. Почему так — объяснить никто не может, или по крайней мере, я не встречал достойные публикации на эту тему. Нужна золотая середина, когда ты понимаешь 2+2 и логарифмы, но при этом не понимаешь что такое машинное обучение и ИИ.
  • silentbob
    29 апреля 2017, 20:52
    билят
    Я думал что один такой
      • silentbob
        29 апреля 2017, 22:58
        Replikant_mih, да, ниша малограмотных троечников по жизни уже все. заполнена.
        Однако, а зачем уравнение кривой? Вероятно, провести трендовую линию и купить на откате? ага, щас. Благодаря математической точности вычислений, отличной от проведенной на глаз линии, вариантов получается великое множество.
        Нормальный алкотрейдер сделает иначе. Он построит мувинги по лоям и хаям (в функцию расчета вместо С надо поставить Х или Л)
        А потом легко посчитает уравнение касательной к функции в точке
        www.berdov.com/docs/fluxion/tangent/
        ну эта касательная в моменте как бы и будет поддержкой или сопротивлением. Помоему так. правда, проверить сил не хватило пока еще. В приведенной ссылке вероятно важен последний абзац
          • silentbob
            29 апреля 2017, 23:26
            Replikant_mih, каналы-треугольники сильно трудоемко описывать.
            Можно попробовать перейти на формат данных ХО
            крестики нолики. там попроще будет, так как описать паттерн из 3-5 свечей подряд проще. но свои нюансы тоже есть
  • MS
    29 апреля 2017, 22:20
    (y-y1)/(x-x1) = (y2-y1)/(x2-x1) 

    проходит через точки (x1, y1) и (x2, y2).
      • MS
        29 апреля 2017, 22:37
        Replikant_mih, (y-y1) = (y2-y1)/(x2-x1)*(x-x1) когда-то вывел в уме. Прямая — значит пропорция должна быть. Подставив по очереди точки, видим 0=0 и y2-y1 = y2-y1. То есть вывод простой.
  • Cristopher Robin
    29 апреля 2017, 23:04
    Забавно, под математикой люди как правило понимают школьную программу и, приложив некоторые усилия, уверенно решают любые «математические» задачи. При этом с тем, чего они не знают, вообще никаких проблем не испытывают. 
      • Knoons
        02 мая 2017, 02:36
        Replikant_mih, Та же фигня, нужно объединяться)
          • Knoons
            03 мая 2017, 00:08
            Replikant_mih, собственно, с самой алготорговлей-никак)с программированием еще хуже чем у тебя. Но что касается количественных методов, я считаю можно развиваться, если подойти серьезно и основательно.
  • IgorMushtriev
    02 мая 2017, 15:50

    Если речь идет про Велс-лаб, то нарисовать линию можно используя встроенный метод:

    // рисуем линию для двух известных нам точек на барах №1 и №2
    DrawLine(pane, bar1, val1, bar2, val2, Color.Blue, WealthLab.LineStyle.Solid, 2);

    Достаточно задать координаты точек.

    Велс будет рисовать правее, а может левее, или только «от и до».

    Изучайте мат.часть.

    :)

     

    Аналогично и в других программах алгоритмической торговли (например, Тслаб).

  • IgorMushtriev
    02 мая 2017, 15:53
     

    Как: нарисовать линию тренда и продлить ее вправо по шкале времени.
    Чтобы нарисовать расширяющуюся линию тренда нужно проделать следующие шаги:
    Первым делом нарисуйте линию между двумя известными точками, использовав для этого метод
    DrawLine().
    Следующим шагом найдите значение координаты Y на том баре, до которого Вы хотите расширить линию
    тренда.
    Используйте найденную точку, подставив ее в качестве второго аргумента в метод DrawLine().

     

    (из инструкции к Велсу)

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

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