Что являет собой обычный трейдинг? Формально его можно преставить как нахождение закономерности в графике цены, используя индукцию.
Т.е. предполагая, что поведение фукции будет повторятся.
Простейшим примером является функция «купил и держу». Предполагается, что функция цены индекса восходящая.
Т.е. делается предположение что f'(X) > 0 (производная больше нуля)
Из теории алгоритмов известно, что любой алгоритм можно реализовать на машине тьюрина.
Фактически, можно любого робота представить как функцию преобразования цены в график доходности.
Т.е. любой владелец робота торгует не график цены, а перобразованный с помощью своей функции.
Но мы же прекрасно знаем, что любые закономерности на рынке работают относительно не долго. А если робот — это всего лишь алгебраическая функция преобразования одного графика в другой — то она долго работать не будет!!
Разница тут состоит в том, что наблюдая графики самой цены мы интуитивно (неформализованно) можем предчувствовать ее движения исходя из опыта, то втыкая на преобразованный роботом график цены вы станете на уровень новичка, который в плену стереотипов и не понимает что может случится все что угодно.
Например, многие новички заходят в рынок на освновании того, что рынок последние 10 лет рос. Но даже если рынок жутко пилило, а вы написали функцию, который преобразует предыдущий график в строго поступательное движение, реальный шанс у вас заработать не выше
Так же является иллюзией то, что написание робота избавит вас от эмоций.
С какого хрена? Если вы втыкали днями и ночами на график цены, скрестив пальцы, что бы тренд не прекратился, вы будете делать тоже самое, глядя на синтетическую функцию, которую рисует робот.
Я программирую практически с детства… т.е. уже скоро как 20 лет. И мне даже в голову не приходило начинать торговать роботами, т.к. выше изложенные соображения мне казались самоочевидными.
Поэтому я с улыбкой наблюдаю все это повальное увлечение роботами. Спекулянты (уже часто взрослые дядьки) сметают с полок «основы программирования на бейсике» в надежде обыграть рынок. Я чуть со стула не упал, когда прочитал недавнюю тему «а нужно ли рисовать блок-схему при создании робота». Если вы рисуете блок схемы — вам в программировании делать не-че-го. (С).
Я не очень представляю, что творится в голове у человека, который надеется написать универсальный алгоритм для любого таймфрейма. Наверное, это тоже самое, как если бы современный человек попытался вырастить гомунклуса в трехлитровой банке на кухне, используя стиральный порошок, уксус, растворитель и аспирин.
Тем не менее такие уникумы существуют. Даже на смартлабе помню один пытался продать подобную программу. И ведь покупают же!
* * *
Предвижу комментарии дескать как же так, люди стабильно зарабатывают, в ЛЧИ в топе роботы и пр.
Ну во-первых эта тема не для профи, которым не нужно расжевывать что есть алгоритм и что написать универсальный невозможно.
Во вторых, IT использовать в торговле можно и нужно. Но вы не сделаете робота, который будет торговать за вас. Это по сути все те же обычные спекуляции, и робота так же нужно перенастраивать фактически каждый день, анализируя текущую ситуцию на рынке.
Просто алготрейдеры ипользуют свой опыт и интуцию для перенастройки этих параметров, а не следя за изменениями тренда, только и всего
****
Написал тезисно:
smart-lab.ru/blog/88093.php
ТФ не существует это все происки жидомасонов.
+5
PS заметка сделана на большой выборке, более 3х сигм.
АААААААААААААААААААААААААААААААААААААААААААААААААААА!!! (бьется головой об стол)
это да — смешно. как и повальное увлечения всякими курсами по программированию )) и главное сразу сколько нашлось тех, кто на этом решил заработать.
В поддержку инфрастуктуры и разарботку таких роботов потрачено больше, чем они зарабаьывают
Кстати, многие роботы из ЛЧИ из первой десятки просто перекачивают бабло со счета на счет (информация достоверная)
В программировании само кодирование — 5-10% всей работы. Остальное — проектирование, отладка, протоколирование, тестирование, верификация, валидация, документирование и сопровождение. Поэтому составление алгоритма на этапе проектирования — дело обязательное (не важно, в виде блок-схемы, текстового пошагового описания, эпюр сигналов или еще как-то), которое нужно не для того, чтобы 5% времени, потраченное на кодирование превратились в 4.5%, а для того, чтобы 80% уходящие на отладку, тестирование, документирование и пр. не превратились в 360%.
Существует круг программистов-кодеров, которые по сути никогда программистами не были, а 10-20-30 (или сколько там еще) лет занимались только кодированием, т. е. выполняли только 1/10 часть работы программиста. Отладка и тестирование (а уж тем более сопровождение и документирование) их никогда не заботила, потому что они особо не заинтересованы в нормальной работоспособности программы. Пашет — и ладно. З/п таких программистов несоизмеримо мала с з/п программиста-архитектора, а шансы на карьерный рост вообще отсутствуют. Но, тем не менее, именно они являются основными участниками всех прогро-срачей, навроде Си vs Pascal, Windows vs Linux, RTOS vs ООП, роботы vs люди.
Программирование в нашей стране — отдельная тема, поскольку на программиста сваливаются не только перечисленные задачи (к слову, в цивилизованных странах алгоритмом, кодированием, тестированием и пр. занимаются разные люди, но между ними есть регламент сдачи/приемки), но зачастую еще и постановка начальной задачи, согласование ТЗ, а в особо запущенных случаях еще маркетинг и даже распространение. Но это уже нац. особенности развития ИТ.
Собственно, мой стаж программиста равен Вашему, но к моменту ухода из этой деятельности я получал з/п в разы больше обычных программистов, занимаясь исправлением их ошибок и косяков, львиная доля которых — следствие недоработки на этапе проектирования.
реализация которой в коде вопрос сугубо техниццкий)
Вообще-то в реальных коммерческих проектах собственно алгоритм это даже не 1%, а скорее 0.01%
Основная сложность как тут правильно заметили — архитектура, что бы не рухнуло все под своей же тяжестью. Легко поддерживалось и развивалось и пр.
Реализация мат.модели в коде — вопрос технический. Реализация кода без мат.модели — вопрос творческий, ведущий, как правило, к дальнейшему «творчеству» в виде усложненной отладки, внесения изменений в код на лету, а по прошествии определенного времени к постановке, типа «проще с самого начала все переписать, чем разбираться в уже написанном». Как-то так.
«мат. меделирование, являясь одним из этапов проектирования (хоть и не всегда обязательным, но в конкретном случае в отношении роботов — неотъемлимым), делается после составления алгоритма» — разгавор закончин)))
первый курс..)
на что-то сложнее простого цикла в таком виде все равно лучше смотреть — ничерта ж непонятно — проще код прочесть — компактней и ясней)
Я не буду с Вами спорить, я на работе уже набодался с программистами. Но там мне деньги платили за то, чтобы я им объяснял, что они неправы, что такое алгоритм и почему с ним лучше, чем без него.
Я вообще-то на разных этапах работал — и тестирование и проектировани и отладка и прочее.
Или вы каждый раз, когда пишите алгоритм сортировки на листике его рисуете?
Зачем? Детализация каждого блока (или каждой строки в текстовом описании, не важно) — вопрос отдельный и в каждой задаче может рассматриваться по-разному. Где-то можно просто в квадратике написать «сортировка по фамилли», где-то написать «ускоренная сортировка выборок», где используется уникальный алгоритм, и поставить пометку, что детально он расписан на таком-то листе.
Важно то, чтобы квадратик «сортировка» в алгоритме стоял на своем месте. Чтобы не возникало коллизий обработки данных.
Иногда в виде UML описывают основную структуру проекта, но это скорее для общего понимания для начальства, уж никак не для практики.
Да и для программиста куда привычней и проще читать код непосредственно чем разбирать блок-схему
Насчет для начальства: алгоритм пишется для себя, в первую очередь. Во вторую, когда его форма предусмотренна регламентом фирмы, — для разработчика, который займет место ушедшего на пенсию/покой/в монастырь предшественника.
>> Да и для программиста куда привычней и проще читать код непосредственно чем разбирать блок-схему
Это для кодера, а не для программиста. Ладно, не буду спорить, я знаю, что это бесполезно.
Я в частности проектировал видео кодеки — где уж алгоритмов -то одним местом жуй.
Представляю цирк, если бы у нас программисты перед тем как закодировать рисовали все это дело в виде блок-схем
Никто не рисует блок схемы алгоритмов перед реализацией!
Только в 10 классе школы
Плюсанул бы в профиль, но уже плюсил, больше не дают.
представляете на что похожа блок-схема более менее сложной системы? ))) да там сам черт не разберется — нахуй не нужны они и ни один практический программер никогда эту хуйню ни для чего не делает — МАКСИМУМ — лишь на самом высоком уровне абстракции — на этапе размышлений (а не _проектирования_. потому что _проектирование_ — суть построение матмодели через которую (и только так) возможно доказать правильность алгоритма и что еще важнее — оценить его _сложность_).
Правда не соглашусь что проект есть мат модель.
Проект это скорее управление людьми и процессами
Проектирование — это какие инструменты будут использованы, модули, их взаимодействие и расширение и т.п.
А сам алгоритм в виде блок-схемы никому не нужен, т.к. никто не будет влазить в его реализацию, будет только проведено тестирование — и если найдены ошибки будут переправлены назад кодировщику на исправление/доработку
Так занимались доказательным программированием или нет? Надеюсь, знаете, что записи:
A = B + C — D
и
A = B — D + C
нетождественны?
Доказательное программирование — использовавшаяся в 1980-х годах в академических кругах технология разработки программ для ЭВМ с доказательствами правильности — доказательствами отсутствия ошибок в программах (понимая, в рамках данной теории, ошибки как несоответствия между программой и реализуемым ею алгоритмом).
В 80-х(!)
В Академических кругах(!)
На самом деле делать проект «по науке» дороже на порядок, да и не всегда эффективней
Да я, собственно, прицепился к фразе karapuz'а «доказательство правильности».
«но к моменту ухода из этой деятельности я получал з/п в разы больше обычных программистов, занимаясь исправлением их ошибок и косяков»
если не секрет, как вам удалось монетизировать этот скилл?))) я на работе занимался тем же самым, но за это вместо увеличения з/п получал только новые требования от начальства — кто везет, на том и везут.
На самом деле реальная з.п. у проджект менеджера максимум 150-180… И то! Очень редко
(Автор вопроса о составлении блок-схем и алгоритма:)
RuTicker в мае 209 счет вырос с 250 000 до 1.5 млн за полгода. «Можете считать меня профи». Уж я-то понимаю рынок.
Аргументы те же самые.
Без разницы сколько вы заработали. Да и умейте читать в конце концов. Я не отрицаю пользы автоматической торговли. Ингода.
HFT роботы работать могут — но предвижу что их борьба довольно быстро закончится — алгоритмы примитивны, главное — скорость обработки заявок.
>А если робот — это всего лишь алгебраическая функция преобразования одного графика в другой — то она долго работать не будет!!!
Не ожидал от вас таких противоречащих утверждений. «Алгебраические функции» уже лет 50 как научились адаптироваться и самообучаться.
«блок-схемы рисуют автосредствами по уже годовому коду — когда клиент требования такие предъявляет»
Какой адский кошмар ))) Вспоминаю, что мой начальник тоже так делал )))
Тогда становится понятно, откуда взялась пословица «если строители будут строить дома так же как программисты пишут программы, то первый же залетевший дятел разрушит цивилизацию» :)
Если бы архитектору давали задание спроектировать 4 района «вчера», а осмотр (тестирование) происходил за 2 ночи до сдачи… Цивилизация не выстояла бы
1. Роботы не избавляют от эмоциональной составляющей.
Это справедливо лишь в случаях, когда нет чёткого алгоритма торговли, а есть лишь эмоции. Правда в этом случае и создать робота невозможно.
2. Предчувствовать движение цены.
Это лучший способ слить счёт. Нет алгоритма поведения в тех или иных случаях, а значит на рынке делать нечего.
3. Универсальных алгоритмов нет.
Согласен, однако, есть высокоэффективные алгоритмы.
Теперь о пропущенных случаях использования роботов:
1. Когда руками делать сделки и контролировать позу не представляется возможным. Например скальпинг и арбитраж.
2. Для диверсификации портфеля или хэджироания. Если нужно разложить крупный портфель по заранее заданным инструментам и динамически балансировать его по специальным правилам. В опционной тематике для дельта хеджирования.
3. Когда понимаешь, что ты человек и должен оставаться таковым.
Т.е. использовать время для семьи, здоровья и создания новых алгоритмов.
P/S/ Пишу роботов на заказ более 3х лет, и всё вышесказанное — результат личного опыта. Универсальных автономных алгоритмов не встречал, но знаком с рядом систем, которые очень неплохо зарабатывают и требуют минимального человеческого вмешательства.
Как можно запрограммировать дивергенцию MACD H4 в MT4? Есть у кого нить эта реализация?
Есть такое слово — ЭКСТРАПОЛЯЦИЯ. Зачем-то же его придумали ;)
— у кого-то есть инсайд по этому событию
— кто-то предполагает это событие
— кто-то моментально реагирует на это событие
— остальные реагируют с некоторым запаздыванием.
Во всех пунктах в наличии как институционалы, так и мелкие трейдеры. Одни набирают позицию об других.
Всё это рождает определённые формации на графике, которые могут подчиняться некоторым закономерностям.
Отдельно взятая цена не предсказывает будущую цену. Прошлая динамика изменения цены может с некоторой вероятностью предсказать будущую динамику изменения цены.