Блог им. Replikant_mih
Для одной из стратегий понадобилось рисовать прямые линии на графике. Вспомнил формулу прямой, а вот над тем, как по координатам двух точек эту формулу воссоздать – пришлось основательно повозиться. Сначала гуглил – но там как-то всё сложно – слишком много формул для простой задачи)), пришлось самому на листке в клетку рисовать и выводить формулу. Как вы поняли – я не на «ты» с математикой. После этой части текста какая-то часть алго-трейдеров подумает «чувак, даже не пытайся зарабатывать в алго-трейдинге, даже нам зубрам математики, статистики, теории вероятностей, машинного обучения это делать не легко» (интересно, какова доля алго-трейдеров, которые так подумали?).
На самом деле мне самому интересно, насколько далеко я смогу зайти по результатам с таким знания в математике. Есть мысли проапгрейдить знания, но это не приоритетная задача, тем более очень далеко в этой области я зайти не смогу. А пока пользуюсь универсальным аппаратом логического мышления. Как это ни странно, этого вполне хватает в той профессиональной области, в которой я на данном этапе работаю full-time и которая по уровню дохода для меня пока является основной, и которая так же связана в т.ч. с анализом данных и прочей аналитикой.
И хотя я практически стабильно испытываю той или иной степени тяжести ощущение неполноценности, читая написанные математическим языком посты и комментарии, тем не менее имеющийся опыт решения различного рода аналитических задач имеющимся инструментарием говорит о том, что и с данной предметной областью всё будет ок. тем более у меня повышенная мотивация на результат имеется, а она делает из меня буквально другого человека. Ну и кстати в ряде ситуаций когда ты как ребёнок слушаешь с открытым ртом кажущиеся умными рассуждения с использованием сложных непонятных терминов, когда ты открываешь рот с непроизвольным «вау!» — в ряде таких ситуаций, когда ты начинаешь вникать, начинаешь спрашивать а что тот или иной термин значит — практически всегда ты понимаешь, что эффект «вау!» был в большей степени из-за непонятного языка, и когда ты врубился в терминологию — ты понимаешь, что тут нет ничего сложного, более того часто ты сразу же можешь поддержать беседу и даже аргументированно поспорить по теме.
В общем это дополнительный челлендж для меня, а подобные вызовы меня только раззадривают).
И да, это очередной «теоретический» пост, сорри, чем богаты на данном этапе).
Да и вообще, основная сложность в программировании обычно проявляется в вопросах проектирования, вопросах преодоления растущей сложности системы, и ее дальнейшей поддержки и расширяемости, вот тут наступает реальный абзац:) А «формулы» нахер никому не вперлись, они в книжках есть, всегда можно посмотреть:)
sortarray sortarray, По поводу прямой: ну формула вида y = kx + b. Ну вот по двум точкам эти k и b и нужно вывести, чтобы иметь возможность и третью точку и десятую нарисовать и определить конкретная точка она выше или ниже этой линии и т.д.
По поводу математики — нужность математики в алго-трейдинге больше ценится не в привязке к кодингу, а в привязке к рисёчу, к выявлению законмоерностей, построению моделей и т.д.
Возможно там что-то у вас специфическое, но подозреваю, что Вам надо отделить данные от графического представления этих данных. Местоположение точки должно определяться по данным, а отрисовкой должен заниматься объект, который ответственен за отрисовку. Вы должны выбрать такое представление данных, такие структуры, по которым Вам удобно будет это все вычислять(независимо от графического представления). Как то так.
При любом изменении матрицы график перерисовывать, считать и изменять отдельно,
Возможно, но на практике этой пользы не видно. Например, вероятности я всегда вычисляю программно, никогда не заглянул в теорвер. Это проще и надежней, как минимум.
Понятие «алгоритмический», то есть, от слова алгоритм, это понятие общее для математики и программирования, но есть одна тонкость, которая часто упускается из виду: программист занимается не изучением алгоритмов, а их реализацией.
И второе, не менее важное: программирование не сводится к построению и реализации алгоритмов. В сущности, программирование — это построение систем, которые, в том числе(но не только) реализуют какие-то алгоритмы.
Можно выразить через систему уравнений k и b легко, это делали еще в школе сто раз!
Я думал что один такой
Однако, а зачем уравнение кривой? Вероятно, провести трендовую линию и купить на откате? ага, щас. Благодаря математической точности вычислений, отличной от проведенной на глаз линии, вариантов получается великое множество.
Нормальный алкотрейдер сделает иначе. Он построит мувинги по лоям и хаям (в функцию расчета вместо С надо поставить Х или Л)
А потом легко посчитает уравнение касательной к функции в точке
www.berdov.com/docs/fluxion/tangent/
ну эта касательная в моменте как бы и будет поддержкой или сопротивлением. Помоему так. правда, проверить сил не хватило пока еще. В приведенной ссылке вероятно важен последний абзац
silentbob, Если честно, мой список идей к проработке не настолько скуден, чтоб я кидался на посторонние идеи. Нет, это я конечно не против, но вот напрочь не помню физический смысл производной.
Мой класс идей в связи с рисованием линий (пока прямых) завязан на классические определения тренда, на линии тренда, всякие каналы, треугольники. По крайней мере как одно из применений. Эти штуку, чё уж там, работают. Другое дело, что не с проста кто-то считает, что они работают, а кто-то нет (видимо, кто-то знает какие-то доп. детали, а кто-то нет) — в этом и есть фишка алго-трединга — формализовал рисование, не понравилось как оно рисует — переформализовал. А дальше смотришь какие факторы влияют на то, что какие-то фигуры в одних случаях работают, в других — нет, в одном случае идёт пробой, в другом ложный — ты все эти факторы можешь проверить. Пока для чего-то подобного планирую рисовать.
Можно попробовать перейти на формат данных ХО
крестики нолики. там попроще будет, так как описать паттерн из 3-5 свечей подряд проще. но свои нюансы тоже есть
silentbob, У меня небольшая аллергия на индикаторы, крестики-нолики и всякое прочее предустановленное, что не является объемом или OHLC)). Рисовать на графике алгоритмически да, не так просто, но я познал основы ООП)), так что, думаю, веселей пойдёт. Уже были наработки, показавшие, что рисовать в принципе возможно, даже какие-то простенькие стратежки строил, но тогда не было у меня в арсенале ООП и тонул в сложности кода при наворачивании более сложных стратегий на основе рисования.
Я через один пост назад вроде упоминал про то, что фигуру можно найти на 5 свечах или на 100 свечах меньшего ТФ, из которых состоят эти 5 свечей и что на 100 свечах всё намного интересней, но что-то поддержки эта идея не нашла))
проходит через точки (x1, y1) и (x2, y2).
Cristopher Robin, я уверенно применяю пропорции, дроби, уравнение не сложные, и аналогичное, а вот производные, первообразные, логарифмы и синусы напрочь забыл).
Проблем может не испытывают, просто когда читаешь пост в котором мегаматематичекая терминология уровня такого, что ты не то что щас не там, а даже на пике там не был)) — и при этом человек не утверждает, что это грааль, а только что-то ну как-то там средненько работающее — ты сразу думаешь, ну куда мне с моими дробями и пропорциями))))
Если речь идет про Велс-лаб, то нарисовать линию можно используя встроенный метод:
// рисуем линию для двух известных нам точек на барах №1 и №2
DrawLine(pane, bar1, val1, bar2, val2, Color.Blue, WealthLab.LineStyle.Solid, 2);
Достаточно задать координаты точек.
Велс будет рисовать правее, а может левее, или только «от и до».
Изучайте мат.часть.
:)
Аналогично и в других программах алгоритмической торговли (например, Тслаб).
Как: нарисовать линию тренда и продлить ее вправо по шкале времени.
Чтобы нарисовать расширяющуюся линию тренда нужно проделать следующие шаги:
Первым делом нарисуйте линию между двумя известными точками, использовав для этого метод
DrawLine().
Следующим шагом найдите значение координаты Y на том баре, до которого Вы хотите расширить линию
тренда.
Используйте найденную точку, подставив ее в качестве второго аргумента в метод DrawLine().
(из инструкции к Велсу)