Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # https://github.com/hroff-1902/freqtrade-strategies/blob/master/user_data/strategies/berlinguyinca/CombinedBinHAndCluc.py
- # --- Do not remove these libs ---
- import freqtrade.vendor.qtpylib.indicators as qtpylib
- import numpy as np
- # --------------------------------
- import talib.abstract as ta
- from freqtrade.strategy.interface import IStrategy
- from pandas import DataFrame
- def bollinger_bands(stock_price, window_size, num_of_std):
- rolling_mean = stock_price.rolling(window=window_size).mean()
- rolling_std = stock_price.rolling(window=window_size).std()
- lower_band = rolling_mean - (rolling_std * num_of_std)
- return np.nan_to_num(rolling_mean), np.nan_to_num(lower_band)
- class CombinedBinHAndCluc(IStrategy):
- minimal_roi = {
- "0": 0.05
- }
- stoploss = -0.05
- ticker_interval = '1m'
- use_sell_signal = True
- sell_profit_only = True
- ignore_roi_if_buy_signal = False
- def populate_indicators(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
- # strategy BinHV45
- mid, lower = bollinger_bands(dataframe['close'], window_size=40, num_of_std=2)
- dataframe['lower'] = lower
- dataframe['bbdelta'] = (mid - dataframe['lower']).abs()
- dataframe['closedelta'] = (dataframe['close'] - dataframe['close'].shift()).abs()
- dataframe['tail'] = (dataframe['close'] - dataframe['low']).abs()
- # strategy ClucMay72018
- bollinger = qtpylib.bollinger_bands(qtpylib.typical_price(dataframe), window=20, stds=2)
- dataframe['bb_lowerband'] = bollinger['lower']
- dataframe['bb_middleband'] = bollinger['mid']
- dataframe['ema_slow'] = ta.EMA(dataframe, timeperiod=50)
- dataframe['volume_mean_slow'] = dataframe['volume'].rolling(window=30).mean()
- return dataframe
- def populate_buy_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
- dataframe.loc[
- ( # strategy BinHV45
- dataframe['lower'].shift().gt(0) &
- dataframe['bbdelta'].gt(dataframe['close'] * 0.008) &
- dataframe['closedelta'].gt(dataframe['close'] * 0.0175) &
- dataframe['tail'].lt(dataframe['bbdelta'] * 0.25) &
- dataframe['close'].lt(dataframe['lower'].shift()) &
- dataframe['close'].le(dataframe['close'].shift())
- ) |
- ( # strategy ClucMay72018
- (dataframe['close'] < dataframe['ema_slow']) &
- (dataframe['close'] < 0.985 * dataframe['bb_lowerband']) &
- (dataframe['volume'] < (dataframe['volume_mean_slow'].shift(1) * 20))
- ),
- 'buy'
- ] = 1
- return dataframe
- def populate_sell_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
- dataframe.loc[
- (dataframe['close'] > dataframe['bb_middleband']),
- 'sell'
- ] = 1
- return dataframe
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement