import logging from numpy.lib import math from freqtrade.strategy.interface import IStrategy from pandas import DataFrame import pandas as pd from ta import add_all_ta_features from ta.utils import dropna import freqtrade.vendor.qtpylib.indicators as qtpylib from functools import reduce import numpy as np class GodStra_402(IStrategy): buy_params = { 'buy-cross-0': 'volatility_kcc', 'buy-indicator-0': 'trend_ichimoku_base', 'buy-int-0': 42, 'buy-oper-0': ' DataFrame: dataframe = dropna(dataframe) dataframe = add_all_ta_features( dataframe, open="open", high="high", low="low", close="close", volume="volume", fillna=True) return dataframe def populate_buy_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame: conditions = list() for i in range(int(len(self.buy_params)/5)): OPR = self.buy_params[f'buy-oper-{i}'] IND = self.buy_params[f'buy-indicator-{i}'] CRS = self.buy_params[f'buy-cross-{i}'] INT = self.buy_params[f'buy-int-{i}'] REAL = self.buy_params[f'buy-real-{i}'] DFIND = dataframe[IND] DFCRS = dataframe[CRS] if OPR == ">": conditions.append(DFIND > DFCRS) elif OPR == "=": conditions.append(np.isclose(DFIND, DFCRS)) elif OPR == "<": conditions.append(DFIND < DFCRS) elif OPR == "CA": conditions.append(qtpylib.crossed_above(DFIND, DFCRS)) elif OPR == "CB": conditions.append(qtpylib.crossed_below(DFIND, DFCRS)) elif OPR == ">I": conditions.append(DFIND > INT) elif OPR == "=I": conditions.append(DFIND == INT) elif OPR == "R": conditions.append(DFIND > REAL) elif OPR == "=R": conditions.append(np.isclose(DFIND, REAL)) elif OPR == " DataFrame: conditions = list() for i in range(int(len(self.sell_params)/5)): OPR = self.sell_params[f'sell-oper-{i}'] IND = self.sell_params[f'sell-indicator-{i}'] CRS = self.sell_params[f'sell-cross-{i}'] INT = self.sell_params[f'sell-int-{i}'] REAL = self.sell_params[f'sell-real-{i}'] DFIND = dataframe[IND] DFCRS = dataframe[CRS] if OPR == ">": conditions.append(DFIND > DFCRS) elif OPR == "=": conditions.append(np.isclose(DFIND, DFCRS)) elif OPR == "<": conditions.append(DFIND < DFCRS) elif OPR == "CA": conditions.append(qtpylib.crossed_above(DFIND, DFCRS)) elif OPR == "CB": conditions.append(qtpylib.crossed_below(DFIND, DFCRS)) elif OPR == ">I": conditions.append(DFIND > INT) elif OPR == "=I": conditions.append(DFIND == INT) elif OPR == "R": conditions.append(DFIND > REAL) elif OPR == "=R": conditions.append(np.isclose(DFIND, REAL)) elif OPR == "