┏━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━┓
┃ Strategy ┃ Trades ┃ Avg Profit % ┃ Tot Profit USDT ┃ Tot Profit % ┃ Avg Duration ┃ Win Draw Loss Win% ┃ Drawdown ┃ ┡━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━┩ │ Empty │ 92 │ 1.62 │ 2474.507 │ 247.45 │ 3 days, 23:07:00 │ 45 0 47 48.9 │ 359.078 USDT 10.66% │ └──────────┴────────┴──────────────┴─────────────────┴──────────────┴──────────────────┴────────────────────────┴──────────────────────┘
This commit is contained in:
35
Empty.py
35
Empty.py
@@ -36,6 +36,7 @@ CYAN = "\033[36m"
|
||||
RESET = "\033[0m"
|
||||
|
||||
timeperiods = [3, 5, 12, 24, 36, 48, 60]
|
||||
long_timeperiods = [80, 100, 120, 140, 160, 180, 200]
|
||||
|
||||
sma_indicators = list()
|
||||
score_indicators = list()
|
||||
@@ -256,9 +257,6 @@ def condition_generator(dataframe, operator, indicator, crossed_indicator, real_
|
||||
return condition, dataframe
|
||||
# #########################################################################################################################
|
||||
|
||||
|
||||
|
||||
|
||||
# This class is a sample. Feel free to customize it.
|
||||
class Empty(IStrategy):
|
||||
|
||||
@@ -366,13 +364,15 @@ class Empty(IStrategy):
|
||||
}
|
||||
}
|
||||
|
||||
buy_deriv1_sma60 = DecimalParameter(-0.005, 0.005, decimals=3, default=0, space='buy')
|
||||
buy_deriv1_sma5d = DecimalParameter(-0.07, 0.07, decimals=2, default=0, space='buy')
|
||||
buy_deriv1_sma12d = DecimalParameter(-0.07, 0.07, decimals=2, default=0, space='buy')
|
||||
buy_deriv1_sma60 = DecimalParameter(-0.005, 0.005, decimals=3, default=0, space='buy', optimize=False, load=True)
|
||||
buy_deriv1_sma5d = DecimalParameter(-0.07, 0.07, decimals=2, default=0, space='buy', optimize=False, load=True)
|
||||
buy_deriv1_sma12d = DecimalParameter(-0.07, 0.07, decimals=2, default=0, space='buy', optimize=False, load=True)
|
||||
|
||||
buy_deriv2_sma60 = DecimalParameter(-0.005, 0.005, decimals=3, default=0, space='buy')
|
||||
buy_deriv2_sma5d = DecimalParameter(-0.07, 0.07, decimals=2, default=0, space='buy')
|
||||
buy_deriv2_sma12d = DecimalParameter(-0.07, 0.07, decimals=2, default=0, space='buy')
|
||||
buy_deriv2_sma60 = DecimalParameter(-0.005, 0.005, decimals=3, default=0, space='buy', optimize=False, load=True)
|
||||
buy_deriv2_sma5d = DecimalParameter(-0.07, 0.07, decimals=2, default=0, space='buy', optimize=False, load=True)
|
||||
buy_deriv2_sma12d = DecimalParameter(-0.07, 0.07, decimals=2, default=0, space='buy', optimize=False, load=True)
|
||||
|
||||
buy_longue = CategoricalParameter(long_timeperiods, default=120, space='buy')
|
||||
|
||||
# Buy Hyperoptable Parameters/Spaces.
|
||||
# buy_crossed_indicator0 = CategoricalParameter(god_genes_with_timeperiod, default="ADD-20", space='buy')
|
||||
@@ -851,7 +851,8 @@ class Empty(IStrategy):
|
||||
informative[f"sma{timeperiod}"] = informative['mid'].ewm(span=timeperiod, adjust=False).mean()
|
||||
self.calculeDerivees(informative, f"sma{timeperiod}", timeframe=self.timeframe, ema_period=timeperiod)
|
||||
|
||||
informative[f"sma200"] = informative['mid'].ewm(span=200, adjust=False).mean()
|
||||
for timeperiod in long_timeperiods:
|
||||
informative[f"sma{timeperiod}"] = informative['mid'].ewm(span=timeperiod, adjust=False).mean()
|
||||
informative['rsi'] = talib.RSI(informative['close'], timeperiod=14)
|
||||
self.calculeDerivees(informative, f"rsi", timeframe=self.timeframe, ema_period=14)
|
||||
informative['max_rsi_12'] = talib.MAX(informative['rsi'], timeperiod=12)
|
||||
@@ -874,6 +875,11 @@ class Empty(IStrategy):
|
||||
dataframe['max_rsi_12'] = talib.MAX(dataframe['rsi'], timeperiod=12)
|
||||
dataframe['max_rsi_24'] = talib.MAX(dataframe['rsi'], timeperiod=24)
|
||||
|
||||
dataframe["dist_sma200_1d"] = (
|
||||
(dataframe["close_1d"] - dataframe["sma200_1d"])
|
||||
/ dataframe["sma200_1d"]
|
||||
)
|
||||
|
||||
# récupérer le dernier trade fermé
|
||||
trades = Trade.get_trades_proxy(pair=pair,is_open=False)
|
||||
if trades:
|
||||
@@ -953,7 +959,9 @@ class Empty(IStrategy):
|
||||
# conditions.append(dataframe['percent12'] < 0.01)
|
||||
# conditions.append(dataframe['percent5'] < 0.01)
|
||||
conditions.append(dataframe['max_rsi_24'] < 80)
|
||||
conditions.append((dataframe['max_rsi_12_1d'] < 65))\
|
||||
|
||||
dynamic_rsi_threshold = 70 + 15 * np.tanh(dataframe["dist_sma200_1d"] * 5)
|
||||
conditions.append((dataframe['max_rsi_12_1d'] < dynamic_rsi_threshold))
|
||||
# | (
|
||||
# (dataframe['sma5_deriv1'] > 0) & (dataframe['sma12_deriv1'] > 0) & (dataframe['sma24_deriv1'] > 0) & (
|
||||
# dataframe['sma48_deriv1'] > 0) & (dataframe['sma60_deriv1'] > 0) & (dataframe['sma5_deriv1_1d'] > 0))
|
||||
@@ -962,7 +970,10 @@ class Empty(IStrategy):
|
||||
conditions.append(dataframe[f"close"] > dataframe['sma60'])
|
||||
conditions.append(((dataframe[f"range_pos"] < 0.05) ) | ((dataframe['sma12_deriv1'] > 0) & (dataframe['sma12_deriv2'] > 0)))
|
||||
|
||||
conditions.append(dataframe['close_1d'] > dataframe['sma200_1d'])
|
||||
conditions.append(
|
||||
(dataframe['close_1d'] > dataframe[f'sma{self.buy_longue.value}_1d'])
|
||||
| (dataframe['sma60_inv_1d'] == -1)
|
||||
)
|
||||
|
||||
# print(f"BUY indicators tested \n"
|
||||
# f"{self.buy_indicator0.value} {self.buy_crossed_indicator0.value} {self.buy_operator0.value} {self.buy_real_num0.value} \n"
|
||||
|
||||
Reference in New Issue
Block a user