Избранное трейдера Старик Рамуальдыч
Простите за банальность, работа с данными начинается с их получения из внешнего источника. Мы будем получать их из CSV-файла архива котировок, скачанного с сайта Финам. Для работы с другими источниками вам надо будет немного изменить программу.
Я уже давно не работаю непосредственно с CSV, и храню все данные в БД SQLite. Поначалу я хотел написать программу чтения CSV с нуля, но выяснилось, что я уже подзабыл как это делается, однако нашелся рояль в кустах — моя старая библиотека читающая данные из CSV-файла непосредственно в программу. Ее мы и будем использовать.
Собственно, Python и ориентирован на работу с библиотеками, и не нужно знать что там внутри, важно только уметь с ними работать, а сами программы с использованием библиотек станут очень простыми.
Для начала качаем с Финам историю в формате CSV-файла следующего вида:
<TICKER>,<PER>,<DATE>,<TIME>,<OPEN>,<HIGH>,<LOW>,<CLOSE>,<VOL> SPFB.Si-12.20,1,04/05/20,10:00:00,76900.0000000,76990.0000000,76900.0000000,76990.0000000,3 SPFB.Si-12.20,1,04/05/20,10:06:00,77695.0000000,77695.0000000,77400.0000000,77400.0000000,8 SPFB.Si-12.20,1,04/05/20,10:08:00,77781.0000000,77781.0000000,77700.0000000,77750.0000000,30 SPFB.Si-12.20,1,04/05/20,10:13:00,78088.0000000,78098.0000000,78088.0000000,78098.0000000,6 SPFB.Si-12.20,1,04/05/20,10:14:00,78100.0000000,78100.0000000,78100.0000000,78100.0000000,1
Если вам кто нибудь скажет, что на случайном блуждании (СБ) нельзя зарабатывать, бросьте в него камень. Как говорил Паниковский — это жалкие ничтожные люди. На СБ можно зарабатывать с результатами не хуже, чем на реальном рынке. У СБ, по сравнению с реальным рынком, только один недостаток — за игры с СБ никто деньги платить не будет.
А если бы платили? Никто бы ничего не заметил. По прежнему 95% СБ-трейдеров сливало бы депозиты, а 5% регулярно выигрывало и считало бы себя Гуру. По прежнему на графики наносились бы каббалистические знаки и индикаторы, угадывались бы направления движения, каналы, и линии поддержки/сопротивления. Все так же начинающие трейдеры искали Учителя для обучения, а аналитики предсказывали будущее. И, ровным счетом, абсолютно ничего бы не поменялось. Может только АГ заметил бы подвох, но тоже не сразу, а только через несколько месяцев, а, может, и через год-другой. Но, легко сделать, чтобы и АГ остался в неведении.)
Однако, прежде чем играть на СБ, нам необходима стратегия и тестер. Ими мы и займемся.
Для начала стратегия: нам нужны три функции
— одна для пошагового слежения за рыночными котировками и определения момента входа в сделку — DealEntryAnalysis(i) и пусть на ее выходе будет: 0-если сделки нет, 1 — необходим вход в лонг, и -1 — необходим вход в шорт. i — номер отсчета массива котировок.
— вторая для сопровождения сделки лонг — DealControlL(i), отвечающая за контроль и закрытие сделки.
— и третья, для сопровождения сделки шорт — DealControlS(i).
Теперь у нас все готово для разработки тестера стратегий, а это всего лишь цикл while() последовательно перебирающий котировки.
Вот наша стратегия уже в тестере:
while i < Ie: deal_type = DealEntryAnalysis(i) if deal_type == 1: j, rep = DealControlL(i) deals_report.append(rep) i = j+1 continue elif deal_type == -1: j, rep = DealControlS(i) deals_report.append(rep) i = j+1 continue i = i+1
Зацените. Как вам кондор? Есть, конечно, художественные допущения. Но, в целом выглядит вполне прилично. Во всяком случае, я его так вижу.
Да, дошло и до кондоров. Стрэнглы о которых раньше говорилось для опционов с экспирацией 18.06.20 уже не катят. Сейчас вполне можно взять стрэнгл утром и продать его ближе к 19:00, но на ночь его оставлять уже не рекомендуется. Ближе к экспирации временной распад ускоряется и вся заработанная днем прибыль может испарится.
Рассмотрим стрэнгл в опционах на фьючерс RTS-6.20 c экспирацией 18.06.20, С-135000 — 620 п., Р-105000, 630 п. Общаая стоимость позиции 1250 п. Тета С -39 п, Тета P — 37 п. Итого, для стрэнгла за ночь сожрется 76 п — это 6.4% цены стрэнгла! За одну ночь! Чтоб я так жил.
Давайте посмотрим график суточного распада по страйкам в %:
Тем, кто не читал предыдущий топик этой темы, рекомендую для начала ознакомиться с ним [1].
В комментариях к предыдущему топику меня критиковали за неоптимальность кода Python. Однако, текст читают люди с совершенно разной подготовкой — от почти не знающих Python или знающих другие языки программирования, до продвинутых пользователей. Последние легко могут обнаружить неоптимальность кода и заменить его своим. Тем не менее, код должен быть доступен и новичкам, возможно не обладающим знанием пакетов и продвинутых методов. Поэтому, в коде я буду, по возможности, использовать только базовые конструкции Python, не требующие глубоких знаний, и которые могут легко читаться людьми, программирующими на других языках. Вместе с тем, по мере изложения, без фанатизма, буду вводить и новые элементы Python.
Если вы хотите как-то улучшить или оптимизировать код, приводите его в комментариях — это только расширит и улучшит изложенный материал.
Ну, а сейчас мы займемся разработкой и тестированием индикаторов. Для начала нам нужна простейшая стратегия с использованием МА — его и построим. Самой лучшей по характеристикам МА является ЕМА. Формула ЕМА:
Это рассказ о том как я прогрессировал в качестве трейдера. Анализ полученного опыта, результатов и моментов давших однозначный положительный эффект. Статья будет полезна как для трейдеров так и для инвесторов. Прошу поддержать пост ++++++++++++++++
За 7 лет увлекательного путешествия в мире электронных торгов я:
1) учился у 3-х гуру трейдинга;
2) прошел отбор в проп TopStepTrader;
3) управлял в общей сложности инвесторским капиталом $285 000 (из них публично $120 000);
4) более 5 лет торговал с публичного счета Volfix;
5) научил торговать 28 трейдеров;
6) за 5 лет торговли руками ни разу не слился, наторговав 324% на начальный капитал;
7) уже построил 2 эффективных торговых робота для своего алгоритмического фонда;
8) обрел свободу выбора места жительства и переехал в уютную квартирку с видом на море в Сочи… откуда засматриваюсь на страны загнивающего запада ;)
Занявшись трейдингом Вы непременно ступаете на путь трансформации игрока в профессионального участника. Абсолютно все в трейдинге имеют стартовую позицию «гэмблер». Психотип и главные движущие принципы гэмблера великолепно описал Ф.М. Достоевский в произведении «Игрок», так как сам он был известным мотом и завсегдатаем казино.
Продолжительность пребывания в статусе «гэмблера» зависит во-первых от того как быстро человек поймет основу процесса перестройки сиюминутных целей в трейдинге на долгосрочные, а также правильно их визуализирует. Вторым важным фактором является правильное нивелирование самих причин изначального фокуса человека на сиюминутных целях. Описать суть этих причин я попытался в представленном ниже интервью, ознакомьтесь на досуге.