Избранное трейдера _xXx_
-- -- Выполнение действий с массивами. -- local pairs = pairs local type = type module(...) --- Создать копию массива (таблицы) -- @return копию массива (таблицы) function copy(array) local copy_array = {} if type(array) ~= "table" then return array end for k, v in pairs(array) do if type(v) == "table" then copy_array[k] = copy(v) else copy_array[k] = v end end return copy_array end --- Узнать, начинается ли индексация в массиве с нуля или с единицы. -- @return 0 или 1 function base(array) if array[0] ~= nil then return 0 else return 1 end end --- Вычислить число элементов в массиве. -- @return число элементов в массиве function size(array) local n = 0 for _, _ in pairs(array) do n = n + 1 end return n end --- Проверить пустой или нет массив. -- @return true/false function isEmpty(array) for _, _ in pairs(array) do return false end return true end --- Получить первый индекс массива, где ничего не записано. Поиск начинается с 1. -- @return первый индекс массива, где ничего не записано function firstEmptyIndex(array) local i = 1 while array[i] ~= nil do i = i + 1 end return i end
Тем, кто не читал предыдущий топик этой темы, рекомендую для начала ознакомиться с ним [1].
В комментариях к предыдущему топику меня критиковали за неоптимальность кода Python. Однако, текст читают люди с совершенно разной подготовкой — от почти не знающих Python или знающих другие языки программирования, до продвинутых пользователей. Последние легко могут обнаружить неоптимальность кода и заменить его своим. Тем не менее, код должен быть доступен и новичкам, возможно не обладающим знанием пакетов и продвинутых методов. Поэтому, в коде я буду, по возможности, использовать только базовые конструкции Python, не требующие глубоких знаний, и которые могут легко читаться людьми, программирующими на других языках. Вместе с тем, по мере изложения, без фанатизма, буду вводить и новые элементы Python.
Если вы хотите как-то улучшить или оптимизировать код, приводите его в комментариях — это только расширит и улучшит изложенный материал.
Ну, а сейчас мы займемся разработкой и тестированием индикаторов. Для начала нам нужна простейшая стратегия с использованием МА — его и построим. Самой лучшей по характеристикам МА является ЕМА. Формула ЕМА:
Жизнь быстро несётся вперёд, а в повседневных заботах легко забыть о важном. Поэтому так ценно общаться с людьми, которые старше нас. Они уже пережили свои взлёты и падения и теперь могут сделать выводы о том, что на самом деле имеет значение, а что нет.
В 2017 году 94‑летняя шотландка Джин Миллер (Jean Miller) в интервью The Guardian отметила, что получать новые знания важно независимо от того, сколько тебе лет — 9 или 90. «Жизнь — это образование, и, если не учишься в процессе, это плохо, — сказала она. — Я со временем научилась по‑другому смотреть на вещи».
Джин рассказала, что ходит на занятия спортом, записалась на курсы немецкого, а также стала участницей программы «Университет третьего возраста». Это международное движение для пожилых людей, которое помогает им вместе учиться и заниматься чем‑то интересным. Например, Джин участвует в драмкружке. Она говорит, что именно постоянные поиски новых знаний и впечатлений делают жизнь насыщенной и помогают по‑прежнему чувствовать себя молодой.
Юрий Иванович (JC_trader) у себя в LJ один очень хороший пост написал, который мог бы дать ответ на множество вопросов начинающих инвесторов. Я же хочу добавить немного огранки для этого алмаза, превратив его в бриллиант.
Суть в следующем. Возьмем простую трендследящую систему:
И попробуем ее протестировать на разных временных периодах.
Сама система, кстати, по своему гениальна. Во-первых, в ней нет оптимизируемых параметров (sic!) и она либо работает на истории — либо нет. Во-вторых, мы совершаем сделки на закрытии сессии. А открыть/закрыть сделку на закрытии намного легче, чем на открытии. Те, кто профессионально занимался тестированием торговых алгоритмов могут многое об этом рассказать 🙂
Теперь к полученным результатам. Система работает, но только на старшем временном периоде (месячные бары). Почему? Переходим к главному…
Для моделирование ТС на 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 больше подходит для запуска и работы с уже отлаженными законченными программами.