Давайте посмотрим, как рассчитать этот мощный технический индикатор на Python.

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

Что такое ретрейсменты Фибоначчи?

Уровни восстановления Фибоначчи - это определенные ключевые уровни, рассчитываемые по двум колебаниям, то есть точкам инверсии. Идея коррекции Фибоначчи состоит в том, чтобы создать некоторые ключевые уровни в ценовом диапазоне между этими двумя колебаниями в соответствии с заранее определенными долями. Самая важная дробь - 0,618, что связано с золотым сечением (1,618…). Вот почему они называются ретрейсментами Фибоначчи. Другие соотношения: 0,5, 0,236, 0,382, 0,786.

Вот пример коррекции Фибоначчи:

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

Как они используются?

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

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

Давайте теперь посмотрим, как рассчитать уровни Фибоначчи с помощью Python. Следующий код можно найти в моем репозитории GitHub здесь: https://github.com/gianlucamalato/machinelearning/blob/master/Fibonacci_Retracements.ipynb

Пример на Python

Давайте сначала установим библиотеку yfinance.

!pip install yfinance

Затем давайте импортируем библиотеки, которые мы собираемся использовать.

import yfinance
import pandas as pd
import matplotlib.pyplot as plt

Теперь для этого примера давайте импортируем ежедневные данные по золоту (GLD) с 1 июля 2020 года по 1 марта 2021 года.

name = "GLD"
ticker = yfinance.Ticker(name)
df = ticker.history(interval="1d",start="2020-07-01",end="2021-03-01")

Теперь нам нужно рассчитать самый высокий и самый низкий колебания. Эти колебания будут идентифицироваться по индексу второй свечи.

highest_swing = -1
lowest_swing = -1
for i in range(1,df.shape[0]-1):
  if df['High'][i] > df['High'][i-1] and df['High'][i] > df['High'][i+1] and (highest_swing == -1 or df['High'][i] > df['High'][highest_swing]):
    highest_swing = i
if df['Low'][i] < df['Low'][i-1] and df['Low'][i] < df['Low'][i+1] and (lowest_swing == -1 or df['Low'][i] < df['Low'][lowest_swing]):
    lowest_swing = i

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

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

ratios = [0,0.236, 0.382, 0.5 , 0.618, 0.786,1]
colors = ["black","r","g","b","cyan","magenta","yellow"]
levels = []
max_level = df['High'][highest_swing]
min_level = df['Low'][lowest_swing]
for ratio in ratios:
  if highest_swing > lowest_swing: # Uptrend
    levels.append(max_level - (max_level-min_level)*ratio)
  else: # Downtrend
    levels.append(min_level + (max_level-min_level)*ratio)

Теперь у нас есть все элементы для построения линейного графика цены и уровней коррекции Фибоначчи.

plt.rcParams['figure.figsize'] = [12, 7]
plt.rc('font', size=14)
plt.plot(df['Close'])
start_date = df.index[min(highest_swing,lowest_swing)]
end_date = df.index[max(highest_swing,lowest_swing)]
for i in range(len(levels)):
plt.hlines(levels[i],start_date, end_date,label="{:.1f}%".format(ratios[i]*100),colors=colors[i], linestyles="dashed")
plt.legend()
plt.show()

Как мы видим, тренд медвежий (уровень 100% выше уровня 0%), а уровень 61,8% был затронут дважды, прежде чем цена отскочила.

Выводы

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

Джанлука Малато - итальянский специалист по анализу данных и автор художественной литературы. Он является основателем YourDataTeacher.com, онлайн-школы науки о данных, машинного обучения и анализа данных.

использованная литература

[1] Джанлука Малато. Соотношение риска и вознаграждения: правда вне мифа. https://medium.com/the-trading-scientist/risk-reward-ratio-the-truth-beyond-the-myth-22a00c258b83

Примечание редакторам Data Science. Хотя мы разрешаем независимым авторам публиковать статьи в соответствии с нашими правилами и рекомендациями, мы не поддерживаем вклад каждого автора. Не стоит полагаться на работы автора без консультации с профессионалами. См. Подробности в наших Условиях для читателей.