Python для алготрейдинга - страница 17

 

Стратегия BackTest прорыва ценового канала в Python



Стратегия BackTest прорыва ценового канала в Python

Привет и добро пожаловать обратно на мой канал. В сегодняшнем видео мы сосредоточимся на разработке и тестировании стратегии, основанной на прорывах ценового канала. Если вы новичок, я рекомендую посмотреть наш предыдущий эпизод, в котором я представил и объяснил код нашего пользовательского индикатора ценового канала на основе Python. Ссылку оставлю в описании ниже. Теперь давайте углубимся в сегодняшнюю тему и проведем часть тестирования на исторических данных.

В предыдущем видео мы представили код для обнаружения ценовых каналов. Подводя итог, мы обнаруживаем фракталы, которые являются точками максимума и минимума свечей. Фрактал – это точка на свече, которая выше или ниже всех соседних свечей одновременно. Мы обнаруживаем разные фракталы, как максимумы, так и минимумы, и помещаем их в наклоны с помощью регрессии. Эти наклоны представляют собой канал, определяющий ценовой канал. Затем мы пытаемся обнаружить прорывы, когда цена выходит из этого канала, предполагая, что цена продолжит двигаться в том же направлении.

Визуально индикатор работает нормально, но нам любопытно посмотреть, как он поведет себя в долгосрочной стратегии. Поэтому сегодня мы проводим полное ретроспективное тестирование. Мы будем использовать Python для тестирования на истории, и вы можете скачать код по ссылке в описании.

Для начала мы загружаем наши данные, взяв данные за 10-20 лет с 2003 по 2023 год, что мы и использовали в последнем видео. Мы устанавливаем количество обратных свечей равным 45, что является окном, в котором мы будем обнаруживать фракталы (максимумы и минимумы) и определять наш канал.

У нас есть функция is_pivot, которая определяет, является ли свеча точкой разворота или фрактальной точкой. Он принимает два параметра: индекс свечи и размер окна. Он проверяет, является ли свеча выше или ниже всех максимумов или минимумов соседних свечей в указанном окне. Он возвращает значение в зависимости от типа разворота: 1 для максимума разворота, 2 для минимума разворота, 3 для обоих и 0 для других случаев. Мы применяем эту функцию к каждой свече в нашем фрейме данных и сохраняем результаты в новом столбце с именем «is_pivot».

Далее нам нужно собрать каналы или обнаружить каналы. Мы смотрим на 45 свечей до текущей свечи и проверяем наличие высоких и низких фракталов. Если у нас есть как минимум три максимума и три минимума, мы подгоняем их с помощью линейной регрессии и возвращаем параметры наклонов. В противном случае возвращаем нули. Мы применяем эту функцию к фрейму данных, используя указанный размер окна, и результаты сохраняются в новом столбце под названием «канал».

У нас также есть функция is_breakout, которая обнаруживает прорывы за пределами ценового канала. Для каждой свечи мы проверяем, находится ли максимум предыдущей свечи в пределах канала и находится ли цена закрытия предыдущей свечи ниже минимума канала. Если оба условия выполнены, а цены открытия и закрытия текущей свечи также находятся вне канала, мы возвращаем сигнал: 1 для сигнала нисходящего тренда, 2 для сигнала восходящего тренда и 0 для остальных случаев. Мы запускаем эту функцию для всех свечей и сохраняем результаты в новом столбце с именем «is_breakout».

Теперь, когда у нас есть сигналы прорыва, мы можем приступить к тестированию на исторических данных. Мы используем библиотеку тестирования на истории, как обычно, с начальным размером лота 10% от капитала. Мы определяем отношение тейк-профита к стоп-лоссу и устанавливаем уровни стоп-лосса и тейк-профита на основе сигнала. Например, если сигнал равен 2 (восходящий тренд), а открытых сделок нет, мы устанавливаем стоп-лосс на минимуме предыдущей свечи и тейк-профит на уровне, кратном среднему истинному диапазону (ATR).

Мы перебираем каждую свечу во фрейме данных и проверяем, есть ли сигнал прорыва. Если есть сигнал и в данный момент нет открытых сделок, мы входим в новую сделку на основе сигнала. Мы рассчитываем размер сделки на основе размера лота и доступного капитала.

Как только сделка открыта, мы отслеживаем ее ход. Мы обновляем уровни стоп-лосса и тейк-профита по мере движения цены в нашу пользу. Если цена достигает уровня стоп-лосс или тейк-профит, мы закрываем сделку и фиксируем результат.

Наконец, мы рассчитываем и распечатываем общие показатели производительности, включая общее количество сделок, процент выигрышных сделок, среднюю прибыль на сделку и общую рентабельность собственного капитала.

Вот пошаговое объяснение стратегии пробоя ценового канала без кода:

  1. Загрузите исторические данные о ценах.
  2. Задайте параметры стратегии, такие как период расчета среднего истинного диапазона (ATR) и мультипликатор для установки уровня тейк-профита.
  3. Переберите каждую свечу во фрейме данных.
  4. Проверьте, есть ли сигнал пробоя. Прорыв происходит, когда цена превышает верхнюю или нижнюю границу канала.
  5. Если есть сигнал прорыва и в настоящее время нет открытых сделок, откройте новую сделку на основе сигнала. При бычьем прорыве покупайте актив, а при медвежьем — продавайте.
  6. Рассчитайте размер сделки на основе доступного капитала. Например, вы можете установить размер сделки в процентах от капитала, например, 10%.
  7. Установите уровень стоп-лосса на основе предыдущей границы канала. При бычьем прорыве стоп-лосс устанавливается ниже нижней границы канала, а при медвежьем прорыве стоп-лосс устанавливается выше верхней границы канала.
  8. Установите уровень тейк-профита на основе текущей цены и ATR. Умножьте ATR на множитель, например 2, и добавьте его к текущей цене для бычьего прорыва или вычтите его из текущей цены для медвежьего прорыва.
  9. Отслеживайте ход сделки. Обновляйте уровни стоп-лосса и тейк-профита по мере движения цены в вашу пользу. Это может включать корректировку стоп-лосса для фиксации прибыли или отслеживание стоп-лосса за ценой.
  10. Если цена достигает уровня стоп-лосс или тейк-профит, закройте сделку и запишите результат (прибыль или убыток).
  11. Повторите шаги с 5 по 10 для каждого сигнала прорыва и соответствующим образом обновите размер сделки, уровни стоп-лосса и тейк-профита.
  12. Рассчитайте и распечатайте общие показатели производительности, такие как общее количество сделок, процент выигрышных сделок, средний доход на сделку и общий доход на капитал.

Реализация этой стратегии в коде позволит вам протестировать ее на исторических данных и проанализировать ее эффективность. Предоставленный ранее код демонстрирует реализацию стратегии с использованием библиотеки Backtesting в Python.

Strategy BackTest Of Price Channel Break Out In Python
Strategy BackTest Of Price Channel Break Out In Python
  • 2023.03.10
  • www.youtube.com
This is a continuation of the previously released video (https://youtu.be/Bnv7euL-FxM) on price channels break out. This is a full strategy backtest sample s...
 

Индикатор прорыва канала в Python



Индикатор прорыва канала в Python

Привет! Сегодня мы собираемся глубоко погрузиться в примеры прорыва ценового канала, сгенерированные алгоритмом. Позже я покажу вам код, который вы можете скачать бесплатно по ссылке в описании ниже. Давайте начнем с понимания того, что такое прорыв ценового канала.

Прорыв ценового канала — это инструмент технического анализа, используемый трейдерами для выявления потенциальных прорывов цены. Он работает путем построения канала вокруг ценового действия, представляющего максимальную и минимальную точки цены за определенный период. Когда цена выходит за пределы этого канала, это может указывать на потенциальное изменение тренда или рыночную возможность.

Интересно то, что мы можем автоматизировать процесс определения каналов и потенциальных прорывов с помощью Python. В этом видео я покажу вам этапы алгоритма и предоставлю код, который позволит вам изменить и настроить его в соответствии с вашими торговыми предпочтениями и активом, на котором вы будете его использовать.

Проанализируем примеры, представленные на графике. Черные звезды представляют прорывы, обнаруженные алгоритмом. Звезды под свечами сигнализируют о будущем восходящем тренде, а звезды над свечами указывают на будущий нисходящий тренд. Эти прорывы основаны на каналах, определенных алгоритмом.

Для пояснения алгоритма рассмотрим первый пример. У нас есть нисходящий тренд, за которым следует прорыв ниже определенного канала. Звезда под свечой указывает на будущий нисходящий тренд. Важно отметить, что этот конкретный канал отличается от показанного на графике. Алгоритм определяет каналы на основе предыдущих свечей.

Другой пример — прорыв выше канала, сигнализирующий о будущем восходящем тренде. Мы можем наблюдать эти прорывы и их связь с каналами, обнаруженными алгоритмом. Алгоритм использует три точки обнаружения: опорные точки, обнаружение канала и обнаружение прорыва.

Во-первых, он обнаруживает опорные точки, которые представляют собой свечи с высокими значениями по сравнению с соседними свечами или с низкими значениями по сравнению с соседними свечами. Алгоритм проверяет две свечи с каждой стороны как опорные максимумы или минимумы. Эти опорные точки служат опорными точками для подгонки линий для определения каналов.

Затем алгоритм подгоняет линии к опорным максимумам и минимумам, создавая канал. На этом шаге определяются верхняя и нижняя границы канала. Канал представляет потенциальный диапазон движения цены.

Третий этап – обнаружение прорыва. Алгоритм определяет, произошел ли прорыв, сравнивая текущую свечу с каналом. Условие пробоя определяется на основе положения цен открытия и закрытия относительно канала. В этом видео мы рассматриваем пробои выше и ниже канала.

В Python у вас есть возможность изменить условия прорыва и определить свои собственные модели на основе ваших торговых предпочтений и актива, которым вы торгуете. Код, указанный в ссылке, послужит отправной точкой для ваших экспериментов.

Алгоритм работает хорошо, основываясь на примерах, показанных с использованием дневного графика и цен евро/доллар США. Однако необходимы дальнейшие испытания и анализ. Теперь давайте углубимся в код.

В файл Jupyter Notebook импортируем необходимые библиотеки: pandas, numpy, plotly и scipy.stats. Мы также импортируем файл данных CSV, содержащий ежедневные свечные цены в евро/долларах США с 2003 по 2023 год.

Код начинается с определения функции для определения того, является ли свеча точкой разворота. Он принимает два аргумента: индекс тестируемой свечи и параметр окна, определяющий количество рассматриваемых соседних свечей. Функция проверяет, выше или ниже максимум и минимум текущей свечи максимума и минимума соседних свечей. Он присваивает метки (0, 1, 2 или 3) в зависимости от типа поворота (высокий, низкий или оба).

Чтобы обнаружить прорывы ценового канала на графике свечей, вы можете выполнить следующие действия:

  1. Определите количество обратных свечей, которые вы хотите учитывать для обнаружения канала. Это определяет длину каналов.
  2. Перебираем свечи на графике.
  3. Для каждой свечи соберите минимальные и максимальные значения предыдущих задних свечей.
  4. Используйте линейную регрессию для расчета наклона и точки пересечения линий, соединяющих минимумы и максимумы разворота.
  5. Проверьте, не являются ли значения наклона NaN (не числом), что указывает на то, что допустимый канал может быть сформирован.
  6. Если действующий канал обнаружен, нанесите линии канала (пунктирные линии) и опорные точки (синие точки для минимумов, красные точки для максимумов) на графике свечей.

Общая идея состоит в том, чтобы идентифицировать линии тренда, которые охватывают движение цены в пределах указанного количества обратных свечей. Обнаружив прорывы этих каналов, вы потенциально можете определить значительные ценовые движения и принять обоснованные торговые решения.

Важно отметить, что представленный ранее код является упрощенным примером, и в зависимости от ваших конкретных торговых требований вам может потребоваться изменить и настроить код в соответствии с вашими потребностями. Кроме того, рассмотрите возможность включения стратегий управления рисками, других индикаторов и факторов, имеющих отношение к вашему торговому подходу, при использовании методов прорыва канала для реальных торговых целей.

Channel Break Out Indicator In Python
Channel Break Out Indicator In Python
  • 2023.02.23
  • www.youtube.com
In this video, you'll learn how to use Python to implement the Price Channel Breakout Indicator and how it can be used to identify profitable trading opportu...
 

Разработка торговой стратегии с помощью ChatGPT



Разработка торговой стратегии с помощью ChatGPT

Привет и добро пожаловать в наш последний эксперимент. В этом видео я продемонстрирую мощь ИИ, сравнивая его с опытом реального трейдера-человека. Мы углубимся в стратегию прорыва ценового канала и бросим вызов нашей модели искусственного интеллекта ChatGPT, чтобы увидеть, как она работает. Если обнаружим что-то интересное, в следующем видео напишу свой алгоритм и сравню результаты производительности. Позже я также поделюсь кодом Python, который буду использовать в этом видео. Вы можете скачать его по ссылке в описании ниже, если вам интересно и вы хотите поэкспериментировать и расширить нашу стратегию. Итак, расслабьтесь, расслабьтесь и давайте наслаждаться этим.

Когда мы говорим об индикаторах пробоя канала, мы обычно рассматриваем модели свечных графиков и фрактальные точки. Прорыв обычно происходит, когда цена выходит за пределы канала, и после прорыва мы ожидаем, что тренд продолжится в том же направлении, по крайней мере, некоторое время. Сегодня мы попробуем заставить ChatGPT сгенерировать код именно для стратегии пробоя ценового канала.

Прежде чем мы углубимся в наш эксперимент с ChatGPT, я собираюсь запрограммировать ту же стратегию, прорыв ценового канала, мой путь в следующем видео. Это позволит нам сравнить результаты и выделить контроль над каждой деталью нашей программы. Итак, следите за обновлениями и давайте начнем.

Теперь давайте начнем с определения стратегии ценового пробоя. Этот торговый подход включает в себя определение ключевых уровней поддержки и сопротивления с использованием инструментов технического анализа, таких как линии тренда и графические модели. Обратите пристальное внимание на уровни, которые были протестированы несколько раз в прошлом, и наблюдайте за поведением цены на этих уровнях. Как только мы определили ключевые уровни, мы можем установить правила входа и выхода.

Настройка правил входа и выхода — самая сложная часть стратегии. Это включает в себя решение, на каком уровне цены вы войдете в сделку и когда вы выйдете, чтобы зафиксировать прибыль или ограничить потенциальные убытки. Мониторинг движения цены актива имеет решающее значение, когда мы открываем позицию. Мы должны использовать ордера стоп-лосс, чтобы ограничить потенциальные потери в случае, если сделка пойдет против нас.

После настройки правил входа и управления сделкой нам необходимо отслеживать открытые сделки. Если цена продолжает двигаться в ожидаемом направлении, мы можем скорректировать нашу стратегию выхода, чтобы получить дополнительную прибыль. Это требует постоянного мониторинга и адаптации с учетом меняющихся рыночных условий.

Вот разбивка стратегии:

  1. Определите ключевые уровни поддержки и сопротивления: используйте инструменты технического анализа, такие как линии тренда и графические модели, чтобы определить уровни, которые неоднократно тестировались в прошлом. Эти уровни действуют как поддержка или сопротивление и формируют каналы.

  2. Определите уровень прорыва: после того, как вы определили каналы, определите уровень прорыва. Это ценовой уровень, при котором цена выходит за границы канала. Указывает на возможное продолжение тренда.

  3. Установите правила входа и выхода: определите критерии входа в сделку при прорыве. Это может быть, когда цена закрывается выше верхней границы канала для бычьего прорыва или ниже нижней границы канала для медвежьего прорыва. Кроме того, установите критерии для выхода из сделки, такие как фиксация прибыли на определенном целевом уровне или использование скользящего стоп-лосса для защиты от неблагоприятных движений цены.

  4. Следите за открытыми сделками: после входа в сделку внимательно следите за движением цены. Скорректируйте стратегию выхода, если цена продолжает двигаться в благоприятном направлении. Это может включать отслеживание стоп-лосса для защиты прибыли или установку нового целевого уровня для получения дополнительной прибыли.

  5. Управляйте рисками: внедряйте методы управления рисками, чтобы ограничить потенциальные потери. Это может включать в себя установку ордера стоп-лосс на заранее определенном уровне для выхода из сделки, если цена движется против ожидаемого тренда.

  6. Непрерывная адаптация: адаптируйте стратегию к изменяющимся рыночным условиям. Стратегия прорыва ценового канала требует постоянного мониторинга и корректировки, чтобы использовать лучшие торговые возможности.

Следуя этим шагам и применяя их к конкретному рынку и таймфрейму, на котором вы торгуете, вы можете реализовать стратегию прорыва ценового канала. Помните, что эффективность стратегии может варьироваться в зависимости от различных факторов, и важно протестировать и проверить стратегию, прежде чем применять ее в торговле в реальном времени.

ChatGPT Trading Strategy Challenge
ChatGPT Trading Strategy Challenge
  • 2023.02.03
  • www.youtube.com
In this video, we will be exploring the use of ChatGPT in generating a profitable trading strategy. The goal of this strategy is to beat the performance of a...
 

Освойте торговлю сеткой FOREX с помощью автоматизированной стратегии хеджирования с использованием Python


Освойте торговлю сеткой FOREX с помощью автоматизированной стратегии хеджирования с использованием Python

В предыдущем видео мы протестировали торговую систему сетки на рынке Форекс и обнаружили, что она дает хорошие результаты с высокой доходностью и выдающимся коэффициентом резкости. Однако, основываясь на ваших комментариях, мы поняли, что некоторые детали необходимо исправить, чтобы провести более точное бэктестирование. В результате мы внесли предложенные изменения в наш алгоритм.

Если вы не смотрели предыдущее видео, в котором мы подробно описали сеточную стратегию, я рекомендую сначала просмотреть его, так как оно обеспечивает более глубокое понимание стратегии. Ссылку на это видео вы найдете в описании ниже. Кроме того, вы можете загрузить обновленную версию кода Python по предоставленной ссылке.

После внесения изменений в код у нас остается потенциально предпочтительная система, в зависимости от набора используемых параметров. Обратите внимание, что я не тратил много времени на оптимизацию параметров, так что вы можете скачать код и поэкспериментировать с его настройкой по своему вкусу. Это позволит вам настроить уровень риска в соответствии с вашими предпочтениями. Вы можете либо включить больше риска за счет уменьшения коэффициента резкости, либо уменьшить риск и доходность при увеличении коэффициента резкости.

Теперь давайте обсудим конкретные изменения, внесенные в предыдущую версию кода. Во-первых, мы убрали один из параметров, связанных с соотношением тейк-профит/стоп-лосс. Мы поняли, что это соотношение должно быть изменено в самой стратегии, поэтому его не нужно задавать на данный момент. Функции, использовавшиеся в предыдущей версии, остались прежними.

Первая существенная модификация была связана с размером партии. В предыдущей версии размер лота был меньше единицы, что указывало на процент от текущего капитала. Однако это нарушало правила сеточной стратегии, поскольку мы торговали в обоих направлениях с разными размерами лотов. Чтобы исправить это, мы установили размер лота как фиксированное значение (50 в этом примере).

Вторая важная модификация связана с функцией тестирования на исторических данных. Раньше, когда мы открывали сделку, а затем пытались открыть противоположную сделку или сделку в противоположном направлении, функция тестирования на исторических данных закрывала предыдущую сделку. Это означало, что если мы сначала продали, а затем купили ту же сумму, функция тестирования на исторических данных закроет нашу позицию на продажу. Чтобы при тестировании на исторических данных можно было открывать две сделки независимо друг от друга в противоположных направлениях, мы использовали параметр хеджирования со значением true. Это позволяет открывать позиции в противоположном направлении по одному и тому же активу одновременно. Кроме того, мы устанавливаем для параметра эксклюзивных ордеров значение false, что означает, что один ордер не отменит предыдущий ордер.

Для значений стоп-лосса мы устанавливаем их в 1,5 раза больше расстояния сетки, а тейк-профит устанавливаем в 0,5 раза больше расстояния сетки. Соотношение тейк-профит/стоп-лосс установлено равным 0,5. Обратите внимание, что это случайные параметры, используемые для примера. В реальной системе важно убедиться, что стоп-лосс находится дальше, чем тейк-профит, поскольку стратегия основана на колебаниях рынка для получения прибыли.

Используя эти параметры, денежный счет в размере 500 долларов США и маржу от 1 до 10, мы получили следующие результаты за два месяца данных: процент возврата 13,49, коэффициент резкости 3,8 и коэффициент выигрыша 72%. Кривая капитала показывает возрастающий наклон с некоторыми областями просадок.

Чтобы снизить риск и увеличить коэффициент резкости, вы можете начать с дополнительных денежных средств или скорректировать маржу. Например, если начать с 1000 долларов и сохранить маржу от 1 до 10, доходность за два месяца снизилась до 1,7%, но резкое соотношение увеличилось до 4,9. Это указывает на то, что риск уменьшился при изменении этого параметра.

Имейте в виду, что в этой системе нужно работать со многими параметрами, и поиск правильного баланса имеет решающее значение. Вы также можете поэкспериментировать с изменением коэффициентов стоп-лосса и тейк-профита.

Важно отметить, что не все брокеры разрешают хеджирование сделок, то есть они могут не позволить вам одновременно открывать противоположные позиции по одному и тому же активу. Это может зависеть от брокера и вашего местоположения. Некоторые зрители из США упомянули в комментариях, что в их регионе это запрещено. Поэтому рекомендуется обсудить эту стратегию со своим брокером, прежде чем внедрять эту стратегию, чтобы убедиться, что она соответствует их политике.

Наконец, помните, что тестирование на истории — это первый шаг в изучении системы, но этого недостаточно. Крайне важно протестировать стратегию в реальном времени на рынке, используя бумажный счет, поскольку это будет включать спред торгуемой валюты и может повлиять на ожидаемые результаты.

Master FOREX Grid Trading with Automated Hedging Strategy using Python
Master FOREX Grid Trading with Automated Hedging Strategy using Python
  • 2023.01.19
  • www.youtube.com
Learn how to enhance your FOREX grid trading with an Automated Hedging Strategy using Python!📈💻 In this video, we'll delve into the concept of grid trading...
 

Стратегия хеджирования для торговли на Python



Стратегия хеджирования для торговли на Python

Всем привет, сегодня мы будем тестировать стратегию торговли по сетке. Эта стратегия известна своей простотой и не требует никаких технических индикаторов для определения тренда. Это означает, что нам не нужно заранее угадывать тренд. Сеточная торговля предполагает одновременную торговлю как в длинных, так и в коротких направлениях, что делает ее пригодной для алгоритмической торговли.

Чтобы оценить эту стратегию, мы проведем бэктест с использованием языка Python. Мы будем использовать исторические данные за два месяца с пятиминутным таймфреймом. Результаты тестирования на исторических данных показывают устойчивый рост капитала в течение периода тестирования, а стратегия демонстрирует впечатляющие показатели производительности. Коэффициент Шарпа, который измеряет доходность с поправкой на риск, составляет около 5,7.

Если вас интересует часть кодирования, вы можете скачать файл Jupyter Notebook по ссылке, указанной в описании ниже. Стратегия имеет личное значение для автора, так как они вспоминают, как превратили небольшой счет в значительную сумму, используя эту систему, когда они впервые начали торговать в качестве хобби.

Концепция стратегии торговли по сетке заключается в создании сетки ценовых уровней на графике. Всякий раз, когда цена пересекает эти линии сетки, мы открываем как длинные, так и короткие позиции. Уровень тейк-профита устанавливается на следующей линии сетки для каждой позиции. Как показано на примерном графике, стратегия включает в себя открытие начальных длинных и коротких позиций с последующим закрытием выигрышной позиции на следующем уровне сетки. Затем открываются две дополнительные позиции, одна длинная и одна короткая, каждый раз, когда пересекается линия сетки.

Одной из проблем этой стратегии является управление убыточными сделками, которые остаются открытыми на краях сетки. Некоторые позиции могут никогда не достичь своих значений тейк-профита, что создает трудности в системе. Для решения этой ситуации могут быть использованы различные подходы. Некоторые трейдеры могут решить закрыть оставшиеся сделки в конце торгового дня, в то время как другие могут каждые несколько часов рассчитывать, находятся ли они в общей ситуации с прибылью, и закрывать все, чтобы начать заново с новой сеткой. Решение будет зависеть от дополнительных параметров, таких как таймфрейм, максимально допустимое количество параллельных сделок и расстояние сетки.

В части кодирования автор применяет значение стоп-лосса для каждой сделки, используя средний истинный диапазон (ATR). Это значение стоп-лосса изначально рассчитывается на основе расстояния сетки, но затем для его уточнения используется ATR. ATR учитывает волатильность рынка во время размещения сделок. Автор отмечает, что это может быть не лучший подход, и призывает экспериментировать с различными параметрами, чтобы найти оптимальный сценарий для стратегии.

Причина, по которой эта система может работать во многих случаях, заключается в том, что она использует рыночный шум. Пока рынок колеблется вокруг сетки, стратегия извлекает выгоду из колебаний цен и открывает позиции как в длинных, так и в коротких направлениях. Ожидается, что система будет работать лучше на меньших таймфреймах, где больше колебания цен и, следовательно, потенциально более высокая прибыль.

Стратегия предлагает два преимущества. Во-первых, он избавляет от необходимости угадывать тренд, поскольку он не следует какому-то определенному тренду. Во-вторых, он упрощает торговый процесс, сосредоточив внимание на управлении открытыми убыточными сделками. В этой стратегии есть только один настраиваемый параметр — расстояние по сетке. Тем не менее, выбор подходящего таймфрейма и расстояния сетки для конкретного торгуемого актива имеет решающее значение.

Предоставленный файл Jupyter Notebook демонстрирует реализацию стратегии в Python. Код импортирует различные библиотеки, в том числе yfinance для поиска данных, pandas и numpy для обработки данных и pandas_ta для функций технического анализа, таких как вычисление ATR. Данные по паре EUR/USD загружаются с использованием определенного таймфрейма.

Расстояние сетки, соотношение тейк-профит/стоп-лосс и средняя цена сетки определяются как переменные. Средняя цена служит средней ценой, вокруг которой строится сетка. Функция generate_grid() предназначена для генерации уровней сетки на основе средней цены и расстояния сетки. Функция вычисляет верхний и нижний уровни сетки с помощью цикла.

Далее реализуется логика стратегии. Тестирование на исторических данных начинается с инициализации таких переменных, как начальный баланс, размер позиции и уровень стоп-лосса. Цикл for используется для перебора каждого бара в исторических данных.

Внутри цикла текущая цена проверяется, чтобы определить, пересекает ли она какой-либо из уровней сетки. При пересечении открываются новые позиции как в длинном, так и в коротком направлении. Уровни тейк-профита и стоп-лосса устанавливаются на основе уровней сетки и расстояния до стоп-лосса.

Цикл также проверяет, достигли ли какие-либо открытые позиции своих уровней тейк-профита или стоп-лосса. Если позиция достигает любого уровня, она закрывается, и фиксируется соответствующая прибыль или убыток.

В конце бэктеста строится кривая капитала, показывающая рост баланса счета с течением времени. Показатели производительности, включая общую прибыль, количество сделок, процент выигрышей и коэффициент Шарпа, рассчитываются и отображаются.

Важно отметить, что, хотя стратегия торговли по сетке может показать многообещающие результаты при тестировании на исторических данных, важно тщательно оценить и проверить любую торговую стратегию, прежде чем применять ее в реальной торговле. Тестирование на исторических данных помогает оценить историческую производительность, но не гарантирует прибыльности в будущем.

Чтобы полностью понять детали реализации и изучить код, я рекомендую вам загрузить файл Jupyter Notebook, указанный в описании. Записная книжка содержит полный код с подробными комментариями, которые помогут вам в этом процессе.

Помните, что торговля сопряжена с риском, и всегда рекомендуется проконсультироваться с профессиональным финансовым консультантом, прежде чем принимать какие-либо инвестиционные решения.

Hedging Strategy For Trading In Python
Hedging Strategy For Trading In Python
  • 2023.01.12
  • www.youtube.com
Welcome ! In this video we test the grid trading strategy, a simple approach that doesn't require any technical indicators. We use python to test and trade, ...
 

Как создать торгового бота на Python



Как создать торгового бота на Python

Привет, в этом видео я покажу вам, как вы можете автоматизировать свою торговую стратегию с помощью Python. Другими словами, я проведу вас через процесс создания собственного бесплатного торгового бота, который может автоматически совершать сделки от вашего имени, следуя определенной стратегии. Код, который я буду использовать, доступен для скачивания по ссылке в описании ниже, поэтому вы можете просмотреть видео, а затем загрузить файл, чтобы использовать его по своему усмотрению.

То, что я собираюсь продемонстрировать в этом видео, может работать для любой торговой стратегии, которую можно реализовать в виде функции Python. Это может быть отличным способом протестировать вашу стратегию на реальных рыночных данных, а не просто тестировать ее на прошлых данных. Если вы хотите проверить свою стратегию на будущих или текущих данных, вы можете использовать методы, представленные в этом видео.

Давайте начнем с открытия нашего файла Jupyter Notebook. Сначала я загружу некоторые исторические данные для целей тестирования. Важно отметить, что мы не будем использовать эти данные для реальной торговли; это в основном для тестирования наших сигнальных функций. Чтобы загрузить данные, я использую модуль YFinance и получаю данные об обмене евро на доллар США между двумя конкретными датами с 15-минутным периодом времени.

Следует иметь в виду, что при загрузке данных для небольших таймфреймов, таких как 15-минутный интервал, Yahoo Finance позволяет загружать данные только за последние 60 дней. Таким образом, мы не можем загрузить более 60 дней одновременно, и это должны быть последние 60 дней с текущей даты. Если у вас возникнут какие-либо проблемы с загруженным файлом, дважды проверьте указанные даты начала и окончания.

После того, как мы загрузили данные, мы можем проверить их, проверив загруженные строки. Удалив «-1» в коде, мы можем просмотреть весь фрейм данных, который состоит примерно из 3973 строк. Фрейм данных включает столбцы для даты, времени, открытия, максимума, минимума, закрытия и скорректированных цен закрытия. В этом видео мы не будем использовать объемные данные, но при необходимости вы можете включить их в свою стратегию.

Следующим шагом является определение нашего генератора сигналов, функции, отвечающей за генерацию торговых сигналов. Эта функция принимает фрейм данных в качестве входных данных, потому что, когда мы передаем данные в реальном времени для нашего торгового бота, мы получаем фрейм данных и передаем его в эту функцию. Затем функция определит, присутствует ли сигнал, например, сигнал на покупку, сигнал на продажу или отсутствие четкого паттерна. В этом примере мы сосредоточимся на обнаружении паттернов свечей поглощения, но обратите внимание, что это не полная торговая стратегия. Это служит цели этого видео, и вы можете вставить свою собственную стратегию генератора сигналов в эту функцию.

Функция генератора сигналов считывает цены открытия и закрытия текущей и предыдущей свечи, используя индексы -1 и -2 соответственно. На основе условий, определенных в функции, таких как обнаружение медвежьего паттерна поглощения или бычьего паттерна поглощения, она возвращает значение сигнала 1 для продажи, 2 для покупки или 0 при отсутствии сигнала. Чтобы убедиться, что функция работает правильно, мы можем протестировать ее, используя несколько строк кода. Перебирая строки фрейма данных и проверяя каждую строку на наличие паттернов поглощения с помощью функции генератора сигналов, мы можем сохранить сгенерированные сигналы в списке. Затем мы можем добавить этот список в качестве дополнительного столбца во фрейм данных тестирования. При печати фрейма данных отображается добавленный столбец, и, выполнив подсчет значений, мы можем увидеть количество каждого типа сигнала, присутствующего в наборе данных.

Обратите внимание, что это упрощенный пример для целей данного видео, и важно разработать комплексную торговую стратегию, основанную на ваших конкретных потребностях.

Теперь, когда у нас есть функция генератора сигналов, следующим шагом будет определение торгового бота. Торговый бот отвечает за выполнение сделок на основе сгенерированных сигналов. В этом примере мы создадим простого торгового бота, который покупает, когда получает значение сигнала, равное 2 (указывающее сигнал на покупку), и продает, когда получает значение сигнала, равное 1 (указывающее на сигнал продажи). Опять же, это всего лишь базовый пример, и вы можете изменить торгового бота в соответствии со своей конкретной торговой стратегией.

Функция торгового бота принимает фрейм данных и сгенерированные сигналы в качестве входных данных. Он инициализирует баланс портфеля и содержит флаг позиции, чтобы отслеживать, есть ли у нас в настоящее время открытая позиция или нет. Затем он перебирает каждую строку фрейма данных, проверяет значение сигнала и выполняет соответствующее действие покупки или продажи.

Когда получен сигнал на покупку, а у нас нет открытой позиции, торговый бот покупает указанное количество актива и вычитает стоимость из баланса портфеля. Он также устанавливает флаг позиции, чтобы указать, что теперь у нас есть открытая позиция. Когда получен сигнал на продажу и у нас есть открытая позиция, торговый бот продает всю позицию и добавляет сумму продажи к балансу портфеля. Затем он сбрасывает флаг позиции, чтобы указать, что у нас нет открытых позиций.

Чтобы протестировать торгового бота, мы можем вызвать функцию с тестовым фреймом данных и сгенерированными сигналами. Мы также можем указать начальный баланс портфеля и сумму актива для покупки или продажи. После запуска функции торгового бота мы можем распечатать окончательный баланс портфеля, чтобы увидеть результат.

В этом примере мы не учитываем транзакционные издержки, проскальзывания или другие факторы, которые могут повлиять на реальные торговые сценарии. Важно учитывать эти факторы при разработке собственного торгового бота и стратегии.

Наконец, давайте обсудим, как вы можете реализовать этот код для реальной торговли. Код, который мы разработали, подходит для ретроспективного тестирования и тестирования вашей стратегии на исторических данных. Чтобы реализовать его для реальной торговли, вам необходимо подключить его к потоку данных в реальном времени и торговому API, предоставленному вашим брокером или биржей. Это включает в себя обработку потоковой передачи данных и создание торговых ордеров в реальном времени на основе сигналов, генерируемых торговым ботом.

Доступны различные библиотеки и пакеты Python, которые могут помочь вам подключиться к потокам данных в реальном времени и торговым API, таким как Alpaca, Binance или Interactive Brokers API. Вам нужно будет изучить и выбрать тот, который лучше всего соответствует вашим требованиям и хорошо интегрируется с выбранной вами биржей или брокером.

Помните, что в реальной торговле участвуют реальные деньги, поэтому очень важно тщательно протестировать свой код и стратегию в смоделированной среде, прежде чем развертывать их для реальной торговли. Начните с небольших позиций и постепенно увеличивайте свою экспозицию по мере того, как вы обретете уверенность в производительности своего торгового бота.

Это все для этого видео! Надеюсь, вы нашли его полезным для понимания того, как автоматизировать свою торговую стратегию с помощью Python. Не забудьте загрузить код по ссылке в описании и изменить его в соответствии с вашими конкретными потребностями и стратегией. Если у вас есть какие-либо вопросы, не стесняйтесь оставлять их в комментариях ниже. Спасибо за просмотр и удачной торговли!

How To Build A Trading Bot In Python
How To Build A Trading Bot In Python
  • 2022.12.08
  • www.youtube.com
This video shows how to use APIs in python to build a live trading bot. The market is scanned by the bot and the prices are downloaded for analysis. A simple...
 

Python Backtest: прибыльная стратегия скальпинга с индикаторами VWAP, Bollinger Bands и RSI



Python Backtest: прибыльная стратегия скальпинга с индикаторами VWAP, Bollinger Bands и RSI

Всем привет! Сегодня я рад сообщить, что у нас есть победитель. В этом видео я поделюсь стратегией скальпинга с использованием V-WAP (средневзвешенная цена по объему), полос Боллинджера и RSI (индекс относительной силы) для подтверждения. Прежде чем поделиться этой стратегией, я тщательно протестировал ее, чтобы убедиться в ее эффективности.

Во-первых, я хочу отметить, что это первая скальперская стратегия, которую мы демонстрируем на этом канале. Скальпинг может быть сложным для алгоритмов из-за зашумленных данных на более низких таймфреймах. Тем не менее, я считаю, что эта стратегия преодолевает эти проблемы.

Если вы новичок на этом канале, вы можете скачать код Python по ссылке в описании. Не забудьте поддержать нас, подписавшись и оставив комментарий с вашими идеями, чтобы поделиться. Ваш отзыв ценен.

После трех лет тестирования общая прибыль по этой стратегии составляет примерно 300 процентов. Что мне особенно нравится в этой стратегии, так это ее средняя продолжительность сделки, которая составляет около 51 минуты. Это делает ее самой быстрой стратегией закрытия сделок, которую мы продемонстрировали до сих пор. Преимущество быстрого закрытия сделок заключается в снижении комиссий за ночь и меньшем стрессе, поскольку вы можете сразу увидеть результаты своих исполненных сделок.

В разделе комментариев кто-то спросил о коэффициенте Шарпа. Я включил его в эту стратегию, и он составляет примерно 1,65. Однако обратите внимание, что это значение может измениться при изменении параметров в коде Python. Вы можете максимизировать коэффициент Шарпа, экспериментируя с различными значениями параметров.

Давайте углубимся в детали стратегии. Я использую 5-минутный таймфрейм и кривую V-WAP. Чтобы определить тренд, я смотрю, чтобы 15 свечей постоянно находились выше или ниже кривой V-WAP, представленной синей линией. Если 15 свечей выше кривой V-WAP, это указывает на восходящий тренд. Если мы находимся ниже кривой V-WAP, я считаю это нисходящим трендом.

Для позиций входа я использую полосы Боллинджера с длиной 14 и стандартным отклонением 2. В восходящем тренде выше кривой V-WAP я ищу позиции для покупки, когда свеча закрывается ниже нижней полосы Боллинджера. При нисходящем тренде ниже кривой V-WAP я жду закрытия свечи выше верхней полосы Боллинджера в качестве сигнала продажи.

Для подтверждения сигналов я использую RSI. Если RSI ниже 45, это подтверждает сигнал на покупку. Если RSI выше 55, это подтверждает сигнал на продажу.

Для установки уровней тейк-профита и стоп-лосса я использую ATR (средний истинный диапазон). Я смотрю на последние семь свечей, рассчитываю значение ATR и умножаю его на коэффициент, чтобы определить расстояние до стоп-лосса. Тейк-профит рассчитывается путем умножения расстояния стоп-лосс на коэффициент тейк-профит-стоп-лосс, который представляет собой соотношение риска и вознаграждения.

Как видите, есть несколько параметров, которые можно настроить в коде Python. Вы можете изменить длину ATR, коэффициент, соотношение тейк-профит-стоп-лосс и другие параметры индикатора, чтобы увидеть, как они влияют на эффективность стратегии в течение трехлетнего периода тестирования. Не стесняйтесь загружать код и экспериментировать самостоятельно.

В коде Python я предусмотрел все необходимые шаги для загрузки данных, очистки, добавления технических индикаторов (V-WAP, RSI, полос Боллинджера), расчета общего сигнала и визуализации сигналов на ценовом графике. Код также включает в себя часть тестирования на истории, где я вычисляю ATR, устанавливаю уровни стоп-лосса и тейк-профита и выполняю сделки.

По результатам обратного тестирования я получил доход в 197 процентов и максимальный капитал в 313 долларов. Начиная с начального капитала в размере 10 000 долларов США, стратегия принесла прибыль в размере 19 700 долларов США, достигнув окончательного капитала в размере 29 700 долларов США.

Теперь давайте обсудим ключевые показатели эффективности этой стратегии. Коэффициент выигрыша, который представляет собой процент прибыльных сделок, составляет примерно 56%. Это означает, что из всех совершенных сделок 56% завершились прибылью. Средняя прибыль за сделку составляет около 33,10 доллара, а средний убыток за сделку — около 23,45 доллара.

Чтобы оценить риск, связанный с этой стратегией, мы можем посмотреть на максимальную просадку, которая измеряет самое большое падение капитала от пика до минимума в течение периода тестирования на исторических данных. Максимальная просадка по этой стратегии составляет примерно 9%, что свидетельствует об умеренном уровне риска.

Важно отметить, что эти показатели производительности основаны на исторических данных, и прошлые показатели не гарантируют будущих результатов. Рыночные условия могут меняться, и крайне важно постоянно отслеживать и адаптировать стратегию к текущей динамике рынка.

Таким образом, эта скальперская стратегия с использованием V-WAP, полос Боллинджера и RSI показала многообещающие результаты в период тестирования на истории с общей доходностью 300% и средней продолжительностью сделки 51 минута. Однако важно тщательно протестировать и проверить любую стратегию, прежде чем применять ее в реальной торговле, и учитывать такие факторы, как транзакционные издержки, проскальзывание и рыночные условия.

Помните, что торговля сопряжена с неотъемлемыми рисками, и всегда рекомендуется обучаться, практиковаться в управлении рисками и подумать о том, чтобы обратиться за профессиональным советом, прежде чем приступать к реальной торговле. Я надеюсь, что вы найдете эту стратегию полезной и не стесняйтесь загружать код Python, представленный в описании, для дальнейшего изучения и настройки по своему вкусу.

Если у вас есть какие-либо вопросы или вам нужны дополнительные разъяснения, пожалуйста, не стесняйтесь спрашивать. Удачной торговли!

Python Backtest: Profitable Scalping Strategy with VWAP, Bollinger Bands and RSI Indicators
Python Backtest: Profitable Scalping Strategy with VWAP, Bollinger Bands and RSI Indicators
  • 2022.10.13
  • www.youtube.com
This video shows a profitable scalping strategy fully backtested in python, this strategy uses the VWAP, Bollinger Bands and the RSI indicators for confirmat...
 

Свечи Heiken Ashi на Python для торговых систем


Свечи Heiken Ashi на Python для торговых систем

Сегодня мы углубимся в процесс добавления свечей Hiken Ashi в Python и рассмотрим две связанные стратегии с использованием этих свечей. Свечи Hiken Ashi созданы на основе обычных свечей, обычно используемых в торговле. Каждая свеча Hiken Ashi рассчитывается по определенным формулам. Цена закрытия Heiken Ashi получается путем усреднения цены открытия, максимума, минимума и цены закрытия текущей свечи. Цена открытия Heiken Ashi получается из значения закрытия ранее рассчитанной свечи Heiken Ashi. Максимальное значение Heiken Ashi является максимальным среди максимумов обычной свечи, открытия свечи Heiken Ashi или значения закрытия свечи Heiken Ashi. Точно так же минимальное значение Heiken Ashi является минимумом между самой низкой ценой текущей свечи, ценой открытия текущей свечи Heiken Ashi или ценой закрытия текущей свечи Heiken Ashi.

Таким образом, помимо высоких и низких значений, свеча Heiken Ashi состоит из усредненных значений, что придает диаграмме Hiken Ashi более плавный вид по сравнению с обычными свечами, которые некоторые трейдеры могут найти менее шумными. Однако важно отметить, что свечи Heiken Ashi не являются реальными рыночными значениями и не должны использоваться для торговли или тестирования стратегий, основанных на фактических рыночных значениях.

Цель этого руководства не в том, чтобы представить выигрышную систему Heiken Ashi, а в том, чтобы продемонстрировать, как построить эти свечи в Python и разработать алгоритмическую стратегию для тестирования результатов на исторических данных. Мы рассмотрим две стратегии с использованием свечей Heiken Ashi.

Первая стратегия использует две скользящие средние: быструю скользящую среднюю и медленную скользящую среднюю. Тренд определяется на основе относительных положений этих скользящих средних. Если быстрая скользящая средняя выше медленной скользящей средней, это указывает на восходящий тренд, а если быстрая скользящая средняя ниже медленной скользящей средней, это указывает на нисходящий тренд. Стратегия генерирует торговый сигнал, когда свеча Heiken Ashi пересекает быструю скользящую среднюю в направлении тренда. Например, если быстрая скользящая средняя находится ниже медленной скользящей средней, а свеча Heiken Ashi пересекает быструю скользящую среднюю сверху вниз, это вызывает сигнал на продажу. И наоборот, при восходящем тренде зеленая свеча Heiken Ashi, пересекающая быструю скользящую среднюю снизу вверх, вызывает сигнал на покупку.

Второй вариант этой стратегии добавляет дополнительное условие. Он ищет свечу доджи, за которой следует свеча с коротким хвостом в направлении тренда. Например, при нисходящем тренде, если за свечой доджи следует свеча с коротким хвостом, открывающаяся выше быстрой скользящей средней и закрывающаяся ниже нее, срабатывает сигнал продажи. Отсутствие длинных фитилей или хвостов у этих свечей указывает на сильный нисходящий или восходящий импульс, в зависимости от анализируемого тренда.

Обе стратегии имеют свои собственные проблемы, такие как определение оптимального периода времени, определение соответствующих позиций стоп-лосс и разработка эффективных стратегий выхода. Эти аспекты могут существенно повлиять на прибыльность и успех стратегий.

Для реализации этих стратегий на Python мы будем использовать Jupyter Notebook. Мы начнем с импорта необходимых библиотек и загрузки данных об акциях для индекса Russell 1000 с 2012 по 2022 год. После удаления ненужных столбцов мы вычисляем цены закрытия и открытия Hiken Ashi, а также максимальные и минимальные значения Heiken Ashi на основе формулы, описанные ранее. Мы добавляем эти столбцы в наш фрейм данных.

Затем мы можем добавить дополнительные технические индикаторы, такие как скользящие средние и индекс относительной силы (RSI), используя пакет технического анализа pandas. Это позволяет нам визуализировать свечи Heiken Ashi и связанные с ними индикаторы на графике. Теперь, когда у нас определены торговые сигналы и уровни стоп-лосса, мы можем приступить к процессу тестирования на исторических данных. Следующим шагом является расчет доходности каждой сделки на основе точек входа и выхода.

Чтобы рассчитать прибыль, нам сначала нужно определить цены входа и выхода для каждой сделки. Для позиции на покупку цена входа — это цена закрытия свечи, когда срабатывает сигнал на покупку. Цена выхода — это самая низкая цена между текущей свечой и двумя предыдущими свечами, определяемая уровнем стоп-лосса.

Точно так же для позиции на продажу цена входа — это цена закрытия свечи, когда срабатывает сигнал продажи, а цена выхода — это самая высокая цена между текущей свечой и двумя предыдущими свечами.

Получив цены входа и выхода, мы можем рассчитать доходность по формуле:

Возврат = (Цена выхода - Цена входа) / Цена входа

Мы будем хранить доходы в списке под названием «trade_returns» для дальнейшего анализа. Затем нам нужно рассчитать совокупную доходность, чтобы отслеживать общую эффективность стратегии с течением времени. Это делается путем умножения дохода каждой сделки на предыдущий совокупный доход и добавления 1. Формула для расчета совокупного дохода:

Совокупный доход = Совокупный доход * (1 + Возврат)

Мы будем хранить совокупные доходы в списке под названием «cumulative_returns». Наконец, мы можем построить кумулятивную доходность, чтобы визуализировать эффективность стратегии за период тестирования на истории.

После выполнения процесса тестирования на исторических данных и расчета доходов от сделок и совокупных доходов мы можем проанализировать результаты, чтобы оценить эффективность торговой стратегии. Одним из важных показателей, который следует учитывать, является общая прибыльность стратегии. Вы можете рассчитать общий доход, вычитая 1 из окончательного совокупного значения дохода. Например, если совокупный доход равен 1,2, это означает 20-процентную прибыль от первоначальных инвестиций.

Кроме того, вы можете рассчитать другие показатели производительности, такие как средний доход на сделку, количество выигрышных сделок, количество убыточных сделок, процент выигрышных сделок и максимальную просадку. Средняя доходность на сделку может быть получена путем деления суммы всех торговых доходностей на общее количество сделок. Этот показатель показывает среднюю прибыльность каждой сделки.

Чтобы рассчитать количество выигрышных и проигрышных сделок, вы можете подсчитать количество возвратов по сделкам, которые больше или равны 0 (выигрышные сделки), и количество возвратов по сделкам меньше 0 (убыточные сделки). Процент выигрышных сделок можно рассчитать, разделив количество выигрышных сделок на общее количество сделок и умножив на 100.

Максимальная просадка измеряет самое большое снижение совокупной доходности от пика до минимума в течение периода тестирования на исторических данных. Он дает представление о потенциальном риске и волатильности стратегии. Анализируя эти показатели производительности, вы можете получить ценную информацию об эффективности торговой стратегии и принять обоснованные решения относительно ее будущего использования или возможных модификаций.

Помните, что тестирование на исторических данных — это историческая симуляция, которая не гарантирует будущих результатов. Прежде чем применять торговую стратегию в реальных сценариях, важно учитывать различные факторы и проводить тщательный анализ.

Heiken Ashi Candles In Python For Trading Systems
Heiken Ashi Candles In Python For Trading Systems
  • 2022.09.24
  • www.youtube.com
Heiken Ashi candlesticks are popular candlestick in technical analysis. In this video, I will show you how to use Heiken Ashi candles for trading systems in ...
 

Измените свою стратегию торговли акциями с помощью автоматизированной торговли на Python



Измените свою стратегию торговли акциями с помощью автоматизированной торговли на Python

Сегодня мы рассмотрим торговую стратегию, специально разработанную для длинных позиций с использованием индекса относительной силы (RSI) и индекса среднего направления (ADX). Несмотря на свою простоту, эта стратегия показала многообещающие результаты. Идея была предложена кем-то в разделе комментариев, и параметры показались и знакомыми, и убедительными. Итак, я решил протестировать его и поделиться результатами, которые оказались весьма удовлетворительными.

Кривая капитала, полученная в ходе тестирования на истории, демонстрировала почти постоянный рост на протяжении всего периода тестирования, достигнув пиковой доходности в 360. Если вы новичок в этом канале, вы можете найти код, доступный для загрузки, в описании. Не забудьте поддержать нас, подписавшись и оставив комментарий. Мы ценим новые идеи, как и в этом видео.

Теперь давайте углубимся в саму стратегию. Мы будем использовать дневной таймфрейм и входить в длинную позицию, когда выполняются два условия: во-первых, когда двухдневный RSI ниже 25, что указывает на состояние перепроданности, и во-вторых, когда ADX (14) выше 20, что предполагает трендовый рынок. Мы выходим из длинной позиции, когда RSI пересекает отметку 75.

Чтобы избежать ложных сигналов и не допустить, чтобы сделки оставались открытыми слишком долго, когда RSI пытается опуститься ниже порога 75, я добавил два дополнительных условия. Первое условие включает проверку того, торгуются ли свечи выше кривой простой скользящей средней, что указывает на восходящий тренд. Только в этом случае нам разрешено открывать длинные позиции. Второе условие предполагает установку значения стоп-лосса, за которое берется наименьшая цена среди двух последних свечей минус определенный процент. В этом тесте на исторических данных я установил процент стоп-лосса на два процента. Вы можете настроить это значение в зависимости от ваших предпочтений или при тестировании с другими данными.

Для реализации этих условий в Python я написал необходимый код и провел бэктест. В коде мы загружаем данные, очищаем их, удаляя дни без движений, и печатаем фрейм данных для проверки его содержимого. Затем мы вычисляем экспоненциальную скользящую среднюю (EMA) длиной 200 для обнаружения тренда, а также RSI длиной 2 и ADX длиной 14. Мы снова очищаем фрейм данных и печатаем срез в проверьте столбцы, которые мы будем использовать.

Затем я реализовал функцию add_ema_signal, которая определяет тренд на основе количества свечей, торгующихся выше или ниже кривой скользящей средней. Я установил это число равным шести, так как оно хорошо работало в предыдущих видео. Затем я создал функцию total_signal, в которой мы вычисляем сигнал для входа в длинную позицию. Мы перебираем каждую строку кадра данных и проверяем, является ли RSI ниже или равным 25, ADX выше 20 и сигнал EMA равен двум (указывает на восходящий тренд). Когда эти условия выполняются, мы сохраняем значение сигнала, равное двум, во фрейме данных.

Распечатав фрейм данных, мы можем визуализировать сигналы на гистограмме. Фиолетовые точки представляют собой сигналы покупки. Хотя я не буду вдаваться в подробности каждой строки кода, вы можете найти исчерпывающие объяснения в предыдущих видеороликах на этом канале, в частности в плейлисте Python для алгоритмической торговли.

Переходя к части бэктестинга, я использовал пакет backtesting.py. Не вдаваясь в подробности, я установил процент стоп-лосса в 2% и включил дополнительные условия для закрытия сделок, которые были открыты в течение определенного количества дней или если RSI превышает 75. Стоит отметить, что код все еще содержит строки, связанные на короткие позиции, хотя эта стратегия фокусируется исключительно на длинных позициях. Эти линии можно изменить или удалить, если вы решите расширить стратегию, включив в нее короткие позиции.

Если сигнал равен двум и открытых сделок нет, входим в рынок длинной по величине стоп-лосса. Размер сделки установлен на уровне 99% от текущего капитала. Тестирование на истории начинается с 1000 долларов наличными и кредитным плечом 1: 5 (маржа 1/5). Комиссии не учитывались для сравнения с предыдущими стратегиями.

Результаты ретроспективного тестирования показывают доход в размере 200 долларов США и максимальный капитал в размере 3595 долларов США. Процент выигрышей составляет 73%, а всего за десятилетний период тестирования было совершено 102 сделки. Это соответствует в среднем 10 сделкам в год на дневном таймфрейме. График кривой капитала показывает постоянное увеличение стоимости с небольшими просадками в определенные периоды.

Важно отметить, что я не изменил ни один из предложенных параметров в разделе комментариев. Длина RSI остается на уровне 2, длина ADX на уровне 14 и длина EMA на уровне 200. Тем не менее, вы все еще можете точно настроить эти значения и поэкспериментировать с различными акциями или рынками, чтобы потенциально улучшить результаты и найти более подходящую конфигурацию.

Эта стратегия предлагает простой, но эффективный подход к длинным позициям. Я рекомендую вам скачать код по ссылке в описании и поэкспериментировать с ним. Код относительно короткий и удобный для начинающих. Наслаждайтесь изучением этой стратегии и следите за нашим следующим видео. Торгуйте безопасно и до встречи в следующий раз!

Revolutionize Your Stock Trading Strategy with Automated Trading in Python
Revolutionize Your Stock Trading Strategy with Automated Trading in Python
  • 2022.09.08
  • www.youtube.com
This video tests an automated trading strategy backtest for long positions on stocks, the rules are simple using RSI and the ADX indicators on stock market v...
 

Автоматизированная стратегия Rayner Teo Bollinger Bands, оптимизированная для высокой доходности



Автоматизированная стратегия Rayner Teo Bollinger Bands, оптимизированная для высокой доходности

Всем привет! В этом видео мы рады представить экстремальный подход к оптимизации, демонстрирующий влияние определенных параметров на нашу торговую систему. Мы считаем, что это лучшая оптимизация, которую мы достигли до сих пор. Как видите, мы добились впечатляющей прибыли в размере около трех тысяч процентов при постоянно растущей кривой капитала. Детали сделок также отображаются на графике, и мы объясним их в этом видео. Мы нанесли все сделки на ценовые графики и пройдемся по ним. Итак, следите за обновлениями!

Прежде чем мы продолжим, мы хотим подчеркнуть, что способ, которым мы добились 30 000-процентной прибыли с помощью этой стратегии, не является самым безопасным подходом для реальной торговли. Мы не рекомендуем использовать эти параметры в реальном торговом сценарии. Однако мы считаем, что сама стратегия надежна и имеет большой потенциал. Если вы новичок, эта стратегия основана на стратегии Rhino Theo Bollinger Band для трендовых рынков. Ранее мы протестировали его на видео с отличными результатами и минимальным риском. Если вы его еще не видели, вы можете найти ссылку на первое видео тестирования в описании вместе с кодом Python, если это необходимо.

В этом видео мы попытаемся применить экстремальные параметры для получения относительно большой прибыли. Мы делаем это в основном для удовольствия от тестирования и игры с кодом Python. Кроме того, мы надеемся получить ценную информацию в ходе этого процесса и, возможно, обнаружить установку, которая может привести к реалистичной высокой отдаче.

Теперь давайте перейдем к коду и посмотрим, как все это разворачивается. Первая ячейка нашего файла блокнота Jupyter предназначена для загрузки данных. Мы используем модуль «yfinance», который является удобным способом загрузки ежедневных исторических данных из баз данных. С помощью всего одной строки кода мы можем загрузить данные для конкретной акции, например, для индекса Russell 1000 между 2011 и 2021 годами. Мы очищаем данные, удаляя дни без движения цены, например выходные и праздничные дни. Затем мы сбрасываем индекс и печатаем заголовок фрейма данных, чтобы убедиться, что данные правильно отформатированы.

Затем мы используем модуль «pandas_ta» (технический анализ панд) для расчета различных технических индикаторов. В этом случае мы рассчитываем две скользящие средние: 200-дневную экспоненциальную скользящую среднюю (EMA) и 150-дневную простую скользящую среднюю (SMA). Сравнивая быструю скользящую среднюю (EMA2) с более медленной скользящей средней (EMA), мы можем определить, находится ли рынок в восходящем или нисходящем тренде. Мы также рассчитываем 12-дневный индекс относительной силы (RSI), используя тот же модуль. Кроме того, мы изменяем параметры полос Боллинджера, установив длину 14 (вместо 20) и стандартное отклонение 2,0 (вместо 2,5). Эти модификации направлены на то, чтобы сделать систему менее избирательной, что приводит к более частым торговым сигналам и большему количеству сделок во время тестирования на исторических данных.

Вместо использования сигнала RDMI или сигнала экспоненциального скользящего среднего, обсуждавшегося в предыдущих видеороликах, мы используем сигнал двух EMA. Это означает, что мы рассматриваем две скользящие средние, одну более быструю и одну более медленную. Если быстрая скользящая средняя выше медленной скользящей средней, мы идентифицируем восходящий тренд. И наоборот, если быстрая скользящая средняя ниже медленной скользящей средней, мы признаем нисходящий тренд. Мы добавляем этот сигнал, называемый сигналом EMA, в качестве нового столбца в нашем фрейме данных.

Функция генерации торговых сигналов аналогична предыдущим видео. Мы проверяем, находится ли цена закрытия ниже нижней полосы Боллинджера и указывает ли сигнал EMA на восходящий тренд (равный 2), который вызывает сигнал покупки.

В этом видео ведущий демонстрирует экстремальный подход к оптимизации, чтобы продемонстрировать влияние различных параметров на торговую систему. Цель состоит в том, чтобы добиться высокой доходности за счет применения экстремальных параметров, хотя важно отметить, что эти параметры не рекомендуются для реальной торговли из-за связанных с ними рисков. Однако ведущий считает, что сама стратегия имеет большой потенциал, если использовать ее с осторожностью.

Используемая стратегия основана на стратегии Rhino Theo Bollinger Band для трендовых рынков. Ведущий ссылается на предыдущее видео, где они протестировали эту стратегию с отличными результатами и относительно низким риском. Первым шагом в процессе оптимизации является загрузка необходимых данных с помощью модуля Y Finance. Ведущий загружает данные индекса Russell 1000 с 2011 по 2021 год, охватывающие период в 10 лет.

После загрузки данных ведущий очищает их, удаляя дни без движения цен, например выходные и праздничные дни. Затем данные подготавливаются путем расчета технических индикаторов с использованием модуля pandas_ta (технический анализ pandas). Рассчитываются две скользящие средние: 200-дневная экспоненциальная скользящая средняя (EMA) и 150-дневная простая скользящая средняя (SMA). Эти скользящие средние помогают определить тренд: если более быстрая EMA выше более медленной SMA, это указывает на восходящий тренд, и наоборот.

Ведущий также рассчитывает 12-дневный индекс относительной силы (RSI) с помощью модуля pandas_ta. Кроме того, изменены параметры длины и стандартного отклонения полос Боллинджера. Вместо длины 20 и стандартного отклонения 2,5, как в предыдущих видео, ведущий использует длину 14 и стандартное отклонение 2,0. Эта модификация направлена на то, чтобы сделать систему менее избирательной, что приведет к более частым торговым сигналам.

Вместо использования сигналов RSI или EMA, как в предыдущих видео, ведущий вводит новый сигнал, называемый сигналом EMA. Он основан на соотношении между двумя скользящими средними: если более быстрая EMA выше более медленной SMA, сигнал EMA устанавливается равным 2, что указывает на восходящий тренд. Если более быстрая EMA находится ниже более медленной SMA, сигнал EMA устанавливается равным 1, что указывает на нисходящий тренд.

Стратегия входа аналогична предыдущим видео. Ведущий проверяет, находится ли цена закрытия ниже нижней полосы Боллинджера и указывает ли сигнал EMA на восходящий тренд (сигнал EMA = 2). В этом случае сигнал на покупку формируется по цене закрытия текущей свечи. Если цена закрытия находится выше верхней полосы Боллинджера, а сигнал EMA указывает на нисходящий тренд (сигнал EMA = 1), генерируется сигнал продажи по цене закрытия текущей свечи.

Для выхода из сделок ведущий вводит дополнительные критерии. Сделка закрывается, если она была открыта более 10 дней, так как долгосрочные сделки нежелательны. Кроме того, сделка закрывается, если это длинная сделка, а RSI превышает 75, или если это короткая сделка, а RSI опускается ниже 25. Если одного условия RSI недостаточно для выхода, стоп-лосс реализован механизм.

Стоп-лосс рассчитывается как минимальное значение между минимумом текущей свечи и минимумом предыдущей свечи, умноженное на (1 - определенный процент). Процент определяется пользователем и представляет собой допустимый убыток до срабатывания стоп-лосса. Например, процент 2 означает, что стоп-лосс устанавливается на 2% ниже минимальной точки между двумя последними свечами. Кроме того, уровень тейк-профита устанавливается на удвоенном расстоянии от стоп-лосса.

Докладчик оценивает стратегию, запуская ретроспективное тестирование с использованием оптимизированных параметров. Они отображают сделки на ценовом графике и дают подробные пояснения по каждой сделке. Результаты ретроспективного тестирования показывают впечатляющую доходность около трех тысяч процентов при постоянно растущей кривой капитала.

Наконец, докладчик подчеркивает, что, хотя этот экстремальный подход к оптимизации дает высокую доходность при тестировании на исторических данных, он не рекомендуется для реальной торговли из-за связанных с ним рисков. Цель этого упражнения — изучить влияние различных параметров и получить представление о поведении стратегии.

Automated Rayner Teo Bollinger Bands Strategy Optimized For High Return
Automated Rayner Teo Bollinger Bands Strategy Optimized For High Return
  • 2022.07.22
  • www.youtube.com
This video is a continuation of the previous 2 videos describing the Rayner Teo Bollinger Bands Strategy. Here we present an optimized version leading to hig...