diff --git a/user_data/hyperopts/HO-SwingHighToSky.py b/user_data/hyperopts/HO-SwingHighToSky.py index 3807ac9..b2a54bb 100644 --- a/user_data/hyperopts/HO-SwingHighToSky.py +++ b/user_data/hyperopts/HO-SwingHighToSky.py @@ -20,26 +20,32 @@ __email__ = "kevin.ossenbrueck@pm.de" __status__ = "Live" cciTimeMin = 10 -cciTimeMax = 100 -cciValueMin = -400 -cciValueMax = 400 +cciTimeMax = 80 +cciValueMin = -200 +cciValueMax = 200 cciTimeRange = range(cciTimeMin, cciTimeMax) -class_name = 'HOSwingHighToSky' +rsiTimeMin = 10 +rsiTimeMax = 80 +rsiValueMin = 10 +rsiValueMax = 90 +rsiTimeRange = range(rsiTimeMin, rsiTimeMax) + class HOSwingHighToSky(IHyperOpt): @staticmethod def populate_indicators(dataframe: DataFrame, metadata: dict) -> DataFrame: - - macd = ta.MACD(dataframe) - dataframe['macd'] = macd['macd'] - dataframe['macdsignal'] = macd['macdsignal'] for cciTime in cciTimeRange: cciName = "cci-" + str(cciTime) dataframe[cciName] = ta.CCI(dataframe, timeperiod = cciTime) + for rsiTime in rsiTimeRange: + + rsiName = "rsi-" + str(rsiTime) + dataframe[rsiName] = ta.RSI(dataframe, timeperiod = rsiTime) + return dataframe @staticmethod @@ -50,15 +56,24 @@ class HOSwingHighToSky(IHyperOpt): conditions = [] # TRIGGERS & GUARDS - if 'trigger' in params: + if 'cci-buy-trigger' in params: for cciTime in cciTimeRange: cciName = "cci-" + str(cciTime) - if params['trigger'] == cciName: - conditions.append(dataframe[cciName] < params["buy-cci-value"]) - conditions.append(dataframe['macd'] > dataframe['macdsignal']) + if params['cci-buy-trigger'] == cciName: + conditions.append(dataframe[cciName] < params["cci-buy-value"]) + conditions.append(dataframe['volume'] > 0) + + if 'rsi-buy-trigger' in params: + + for rsiTime in rsiTimeRange: + + rsiName = "rsi-" + str(rsiTime) + + if params['rsi-buy-trigger'] == rsiName: + conditions.append(dataframe[rsiName] < params["rsi-buy-value"]) conditions.append(dataframe['volume'] > 0) if conditions: @@ -71,16 +86,24 @@ class HOSwingHighToSky(IHyperOpt): @staticmethod def indicator_space() -> List[Dimension]: - buyTriggerList = [] + cciBuyTriggerList = [] + rsiBuyTriggerList = [] for cciTime in cciTimeRange: cciName = "cci-" + str(cciTime) - buyTriggerList.append(cciName) + cciBuyTriggerList.append(cciName) + + for rsiTime in rsiTimeRange: + + rsiName = "rsi-" + str(rsiTime) + rsiBuyTriggerList.append(rsiName) return [ - Integer(cciValueMin, cciValueMax, name='buy-cci-value'), - Categorical(buyTriggerList, name='trigger') + Integer(cciValueMin, cciValueMax, name='cci-buy-value'), + Integer(rsiValueMin, rsiValueMax, name='rsi-buy-value'), + Categorical(cciBuyTriggerList, name='cci-buy-trigger'), + Categorical(rsiBuyTriggerList, name='rsi-buy-trigger') ] @staticmethod @@ -91,15 +114,23 @@ class HOSwingHighToSky(IHyperOpt): conditions = [] # TRIGGERS & GUARDS - if 'sell-trigger' in params: + if 'cci-sell-trigger' in params: for cciTime in cciTimeRange: cciName = "cci-" + str(cciTime) - if params['sell-trigger'] == cciName: - conditions.append(dataframe[cciName] > params["sell-cci-value"]) - conditions.append(dataframe['macd'] < dataframe['macdsignal']) + if params['cci-sell-trigger'] == cciName: + conditions.append(dataframe[cciName] > params["cci-sell-value"]) + + if 'rsi-sell-trigger' in params: + + for rsiTime in rsiTimeRange: + + rsiName = "rsi-" + str(rsiTime) + + if params['rsi-sell-trigger'] == rsiName: + conditions.append(dataframe[rsiName] > params["rsi-sell-value"]) if conditions: dataframe.loc[reduce(lambda x, y: x & y, conditions), 'sell'] = 1 @@ -111,14 +142,22 @@ class HOSwingHighToSky(IHyperOpt): @staticmethod def sell_indicator_space() -> List[Dimension]: - sellTriggerList = [] + cciSellTriggerList = [] + rsiSellTriggerList = [] for cciTime in cciTimeRange: cciName = "cci-" + str(cciTime) - sellTriggerList.append(cciName) + cciSellTriggerList.append(cciName) + + for rsiTime in rsiTimeRange: + + rsiName = "rsi-" + str(rsiTime) + rsiSellTriggerList.append(rsiName) return [ - Integer(cciValueMin, cciValueMax, name='sell-cci-value'), - Categorical(sellTriggerList, name='sell-trigger') - ] \ No newline at end of file + Integer(cciValueMin, cciValueMax, name='cci-sell-value'), + Integer(rsiValueMin, rsiValueMax, name='rsi-sell-value'), + Categorical(cciSellTriggerList, name='cci-sell-trigger'), + Categorical(rsiSellTriggerList, name='rsi-sell-trigger') + ]