From 375370b1eba82bb6ac4795c5990c458bc29164ff Mon Sep 17 00:00:00 2001 From: Felipe Fernandes Date: Wed, 10 Mar 2021 20:55:12 -0300 Subject: [PATCH 1/2] fix hyperopting multi-value categories on AverageHyperopt --- user_data/hyperopts/AverageHyperopt.py | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/user_data/hyperopts/AverageHyperopt.py b/user_data/hyperopts/AverageHyperopt.py index 75b5f95..2a37995 100644 --- a/user_data/hyperopts/AverageHyperopt.py +++ b/user_data/hyperopts/AverageHyperopt.py @@ -43,9 +43,11 @@ class AverageHyperopt(IHyperOpt): conditions = [] # TRIGGERS if 'trigger' in params: + trigger = [int(item) for item in params['trigger'].split('-')] + conditions.append(qtpylib.crossed_above( - dataframe[f"maShort({params['trigger'][0]})"], - dataframe[f"maMedium({params['trigger'][1]})"]) + dataframe[f"maShort({trigger[0]})"], + dataframe[f"maMedium({trigger[1]})"]) ) # Check that volume is not 0 @@ -70,7 +72,7 @@ class AverageHyperopt(IHyperOpt): for medium in range(mediumRangeBegin, mediumRangeEnd): # The output will be (short, long) buyTriggerList.append( - (short, medium) + '{}-{}'.format(short, medium) ) return [ Categorical(buyTriggerList, name='trigger') @@ -90,10 +92,12 @@ class AverageHyperopt(IHyperOpt): # TRIGGERS if 'sell-trigger' in params: + trigger = [int(item) for item in params['sell-trigger'].split('-')] + conditions.append(qtpylib.crossed_above( - dataframe[f"maMedium({params['sell-trigger'][1]})"], - dataframe[f"maShort({params['sell-trigger'][0]})"]) - ) + dataframe[f"maMedium({trigger[1]})"], + dataframe[f"maShort({trigger[0]})"]) + ) if conditions: dataframe.loc[ @@ -114,7 +118,7 @@ class AverageHyperopt(IHyperOpt): for medium in range(mediumRangeBegin, mediumRangeEnd): # The output will be (short, long) sellTriggerList.append( - (short, medium) + '{}-{}'.format(short, medium) ) return [ @@ -151,4 +155,4 @@ class AverageHyperopt(IHyperOpt): ), 'sell'] = 1 - return dataframe + return dataframe \ No newline at end of file From a6b5ab31913dcf8186abfe3bb64130e79069f7ed Mon Sep 17 00:00:00 2001 From: Felipe Fernandes Date: Thu, 11 Mar 2021 19:33:37 -0300 Subject: [PATCH 2/2] fix and update the doc comment --- user_data/hyperopts/AverageHyperopt.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/user_data/hyperopts/AverageHyperopt.py b/user_data/hyperopts/AverageHyperopt.py index 2a37995..1c4fb23 100644 --- a/user_data/hyperopts/AverageHyperopt.py +++ b/user_data/hyperopts/AverageHyperopt.py @@ -70,7 +70,11 @@ class AverageHyperopt(IHyperOpt): buyTriggerList = [] for short in range(shortRangeBegin, shortRangeEnd): for medium in range(mediumRangeBegin, mediumRangeEnd): - # The output will be (short, long) + """ + The output will be '{short}-{long}' so we can split it on the trigger + this will prevent an error on scikit-optimize not accepting tuples as + first argument to Categorical + """ buyTriggerList.append( '{}-{}'.format(short, medium) ) @@ -116,7 +120,11 @@ class AverageHyperopt(IHyperOpt): sellTriggerList = [] for short in range(shortRangeBegin, shortRangeEnd): for medium in range(mediumRangeBegin, mediumRangeEnd): - # The output will be (short, long) + """ + The output will be '{short}-{long}' so we can split it on the trigger + this will prevent an error on scikit-optimize not accepting tuples as + first argument to Categorical + """ sellTriggerList.append( '{}-{}'.format(short, medium) )