Python: Как посчитать количество пересечений скользящих средних + наивысшую точку между каждым пересечением? - PullRequest
0 голосов
/ 09 ноября 2018

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

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

Пожалуйста, посмотрите на эту картинку, чтобы уточнить, что я имею в виду:

enter image description here

Я был бы признателен за любую помощь, которая может указать мне правильное направление в том, как кодировать это в Python: -)

1 Ответ

0 голосов
/ 09 ноября 2018

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

# MA: list containing the values of the moving average for each time period
# High: list containing the highs of each bar 
# Low: list containing the lows of each bar
MA = [...]
High = [...]
Low = [...]
count = 0  # the number of crosses
index_cross = []  # the indices where crosses occur
for i in range(len(MA)):
    if Low[i] < MA[i] and High[i] > MA[i]:
        index_cross.append(i)
        count += 1 

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

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

...