Files
freqtrade-strategies/user_data/indicators/indicators.py
T

80 lines
1.9 KiB
Python

import freqtrade.vendor.qtpylib.indicators as qtpylib
import pandas as pd
"""
Indicators for Freqtrade
author@: Gerald Lonlas
github@: https://github.com/glonlas/freqtrade-strategies
"""
def pivots_points(dataframe: pd.DataFrame, timeperiod=30, levels=3) -> pd.DataFrame:
"""
Pivots Points
Formula:
Pivot = (Previous High + Previous Low + Previous Close)/3
Resistance #1 = (2 x Pivot) - Previous Low
Support #1 = (2 x Pivot) - Previous High
Resistance #2 = (Pivot - Support #1) + Resistance #1
Support #2 = Pivot - (Resistance #1 - Support #1)
Resistance #3 = (Pivot - Support #2) + Resistance #2
Support #3 = Pivot - (Resistance #2 - Support #2)
...
:param dataframe:
:param timeperiod: Period to compare (in ticker)
:param levels: Num of support/resistance desired
:return: dataframe
"""
data = {}
low = qtpylib.rolling_mean(
series=pd.Series(
index=dataframe.index,
data=dataframe['low']
),
window=timeperiod
)
high = qtpylib.rolling_mean(
series=pd.Series(
index=dataframe.index,
data=dataframe['high']
),
window=timeperiod
)
# Pivot
data['pivot'] = qtpylib.rolling_mean(
series=qtpylib.typical_price(dataframe),
window=timeperiod
)
# Resistance #1
data['r1'] = (2 * data['pivot']) - low
# Resistance #2
data['s1'] = (2 * data['pivot']) - high
# Calculate Resistances and Supports >1
for i in range(2, levels+1):
prev_support = data['s' + str(i - 1)]
prev_resistance = data['r' + str(i - 1)]
# Resitance
data['r'+ str(i)] = (data['pivot'] - prev_support) + prev_resistance
# Support
data['s' + str(i)] = data['pivot'] - (prev_resistance - prev_support)
return pd.DataFrame(
index=dataframe.index,
data=data
)