Если вам кто нибудь скажет, что на случайном блуждании (СБ) нельзя зарабатывать, бросьте в него камень. Как говорил Паниковский — это жалкие ничтожные люди. На СБ можно зарабатывать с результатами не хуже, чем на реальном рынке. У СБ, по сравнению с реальным рынком, только один недостаток — за игры с СБ никто деньги платить не будет.
А если бы платили? Никто бы ничего не заметил. По прежнему 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
Сегодня хочу порассуждать о том, случайно ли поведение цены и можно ли его предсказать?
Для начала скажу, что это сугубо мое мнение, которое возможно натолкнет вас на интересные мысли. Я не какой-то гуру, просто делюсь мыслями и хочу получить в ответ здравую реакцию согласия/не согласия со мной и полезные для всех нас комментарии :)
И так: недавно я начал познавать алготрейдинг, присоединился к разным чатам, пообщался с людьми, почитал умные книги и заметил одну закономерность. Достаточное количество алготрейдеров относятся к цене как к случайному процессу и строят роботов отталкиваясь от этого. В пример часто приводятся графики цены и случайно сгенерированные графики, а главный аргумент состоит в том, что они похожи (график похож на график действительно). Меня немного поразил и натолкнул на написание этого поста момент, когда один алготрейдер мне начал яро доказывать, что цена случайна.
Моя позиция по этому вопросу такая: случайных процессов не бывает. Все имеет причину и следствие. Процессы, которые кажутся случайными на деле имеют либо много элементов, которые оказывают на них влияние, что осложняет прогнозирование, либо мы просто не понимаем всех элементов и из-за этого думаем, что процесс случаен.
Очень и очень часто приходится слышать жалобы со стороны трейдеров на нелогичное поведение цен на торгуемые инструменты. Некоторые возражают, что ничего нелогичного нет, некоторые настаивают на своем, приводя массу примеров и, наконец, аппелируя к теории случайных блужданий, как последней инстанции в поддержку нелогичности и непредсказуемости рынка. В лучшем случае, рассказывают о ценовом шуме младших тайм-фреймов.
Томас Гоббс, английский философ, политолог, написал в середине 17 в. работу под названием «Левиафан или Материя, форма и власть государства церковного и гражданского». В этом труде осмыслены причины возникновения и функции государства, как орудия урегулирования отношений между людьми с изначально антагонистическими по своей природе интересами в условиях их объединения.
Идею природной враждебности людей друг к другу описал в своей комедии «Ослы» римский комедиограф Тит Макций Плавт. Оттуда пошло известное выражение:
Эффективность математики только в поиске закономерности рыночного движения — паттернов которые способны реально материализовать вашу прибыль.
Тем, кто не читал предыдущий топик этой темы, рекомендую для начала ознакомиться с ним [1].
В комментариях к предыдущему топику меня критиковали за неоптимальность кода Python. Однако, текст читают люди с совершенно разной подготовкой — от почти не знающих Python или знающих другие языки программирования, до продвинутых пользователей. Последние легко могут обнаружить неоптимальность кода и заменить его своим. Тем не менее, код должен быть доступен и новичкам, возможно не обладающим знанием пакетов и продвинутых методов. Поэтому, в коде я буду, по возможности, использовать только базовые конструкции Python, не требующие глубоких знаний, и которые могут легко читаться людьми, программирующими на других языках. Вместе с тем, по мере изложения, без фанатизма, буду вводить и новые элементы Python.
Если вы хотите как-то улучшить или оптимизировать код, приводите его в комментариях — это только расширит и улучшит изложенный материал.
Ну, а сейчас мы займемся разработкой и тестированием индикаторов. Для начала нам нужна простейшая стратегия с использованием МА — его и построим. Самой лучшей по характеристикам МА является ЕМА. Формула ЕМА:
Для моделирование ТС на Python, прежде всего нужен сам Python. Pythonы бывают очень разные.
Самый большой и длинный Python — Anaconda (https://anaconda.org/). Скачать дистрибутив Anaconda можно здесь — Индивидуальное издание -https://www.anaconda.com/products/individual.
Я работаю именно с Anaconda. Установив Anaconda мы получаем сам Python, уже установленные значительную часть нужных и ненужных пакетов с библиотеками Python, и несколько сред разработки. И все это сразу готово к работе, и нам, по большей части, уже не придется дополнительно устанавливать пакеты и среды.
Самый маленький Python последней версии 3.8.2. скачивается с сайта самого Python — https://www.python.org/. Это, практически, только сам язык, компилятор и минимальный набор пакетов. Сделать с ним практически ничего невозможно, и для работы придется постоянно устанавливать нужные пакеты. Среду разработки придется также устанавливать самостоятельно.
Этот Python больше подходит для запуска и работы с уже отлаженными законченными программами.
Доброго времени суток, господа!
М-да… Вся лента забита новостями: коронавирус, нефть-матушка, кризис...
А где же будоражащие душу исследования, напрямую ведущие к Граалю? Нетути… Нетути Грааля аль, все ж таки, есть?
Продолжим путешествие в мир случайности/закономерности рыночных временных рядов с целью узреть Свет и Счастие для всех страждущих.
В предыдущих частях проекта:
https://smart-lab.ru/blog/579572.php
https://smart-lab.ru/blog/580961.php
https://smart-lab.ru/blog/582407.php
мы убедились, что заработать на теоретических случайных процессах («монетка», Laplace motion, ...) довольно просто. Пользуемся тем фактом, что сумма независимых или слабозависимых случайных величин (приращений) дает число, принадлежащее нормальному распределению Гаусса и при выходе текущей кумулятивной суммы за пределы диапазона +-Delta*1.96, где Delta = sqrt(2*(b^2)*t), заключаем сделки, а при возврате в 0 — закрываем их. Дело сделано...