Empty5m.py Hyperopt
┏━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━┓ ┃ Strategy ┃ Trades ┃ Avg Profit % ┃ Tot Profit USDC ┃ Tot Profit % ┃ Avg Duration ┃ Win Draw Loss Win% ┃ Drawdown ┃ ┡━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━┩ │ Empty5m │ 13 │ 0.36 │ 44.066 │ 4.41 │ 5:58:00 │ 12 0 1 92.3 │ 36.632 USDC 3.39% │ └──────────┴────────┴──────────────┴─────────────────┴──────────────┴──────────────┴────────────────────────┴────────────────────┘
This commit is contained in:
32
Empty5m.json
32
Empty5m.json
@@ -14,33 +14,19 @@
|
|||||||
"trailing_only_offset_is_reached": false
|
"trailing_only_offset_is_reached": false
|
||||||
},
|
},
|
||||||
"max_open_trades": {
|
"max_open_trades": {
|
||||||
"max_open_trades": 1
|
"max_open_trades": 20
|
||||||
},
|
|
||||||
"buy": {
|
|
||||||
"buy_longue_derive": "sma60_deriv1_1h",
|
|
||||||
"buy_deriv1_sma12d": 0.0002,
|
|
||||||
"buy_deriv1_sma5d": -0.0006,
|
|
||||||
"buy_deriv1_sma60": -0.0003,
|
|
||||||
"buy_longue": 180,
|
|
||||||
"start_bear_deriv1": 0.005,
|
|
||||||
"start_bear_deriv2": -0.003,
|
|
||||||
"start_bear_indicator": "sma60",
|
|
||||||
"start_bull_deriv1": -0.001,
|
|
||||||
"start_bull_deriv2": 0.0,
|
|
||||||
"start_bull_indicator": "sma12"
|
|
||||||
},
|
|
||||||
"protection": {
|
|
||||||
"drop_from_last_entry": -0.03,
|
|
||||||
"mises_bear": 5,
|
|
||||||
"mises_bull": 1
|
|
||||||
},
|
},
|
||||||
"sell": {
|
"sell": {
|
||||||
"b30_indicateur": "sma24",
|
"b30_indicateur": "sma24",
|
||||||
"baisse": 0.14,
|
"baisse": 0.2,
|
||||||
"sell_force_sell": -0.135,
|
"sell_force_sell": -0.121,
|
||||||
"sell_indicator": "sma12"
|
"sell_indicator": "sma36"
|
||||||
|
},
|
||||||
|
"protection": {
|
||||||
|
"drop_from_last_entry": 0.0,
|
||||||
|
"mises_bull": 4
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"ft_stratparam_v": 1,
|
"ft_stratparam_v": 1,
|
||||||
"export_time": "2026-03-07 14:31:15.874478+00:00"
|
"export_time": "2026-03-07 20:20:17.895644+00:00"
|
||||||
}
|
}
|
||||||
165
Empty5m.py
165
Empty5m.py
@@ -187,24 +187,24 @@ class Empty5m(IStrategy):
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
start_bull_indicator = CategoricalParameter(sma_indicators_d, default='sma100', space='buy', optimize=True, load=True)
|
# start_bull_indicator = CategoricalParameter(sma_indicators_d, default='sma100', space='buy', optimize=True, load=True)
|
||||||
start_bull_deriv1 = DecimalParameter(-0.0005, 0.0005, decimals=3, default=0, space='buy', optimize=True, load=True)
|
# start_bull_deriv1 = DecimalParameter(-0.005, 0.005, decimals=4, default=0, space='buy', optimize=True, load=True)
|
||||||
start_bull_deriv2 = DecimalParameter(-0.0005, 0.0005, decimals=3, default=0, space='buy', optimize=True, load=True)
|
# start_bull_deriv2 = DecimalParameter(-0.005, 0.005, decimals=4, default=0, space='buy', optimize=True, load=True)
|
||||||
|
|
||||||
start_bear_indicator = CategoricalParameter(sma_indicators_d, default='sma100', space='buy', optimize=True, load=True)
|
# start_bear_indicator = CategoricalParameter(sma_indicators_d, default='sma100', space='buy', optimize=True, load=True)
|
||||||
start_bear_deriv1 = DecimalParameter(-0.005, 0.005, decimals=3, default=0, space='buy', optimize=True, load=True)
|
# start_bear_deriv1 = DecimalParameter(-0.005, 0.005, decimals=4, default=0, space='buy', optimize=True, load=True)
|
||||||
start_bear_deriv2 = DecimalParameter(-0.005, 0.005, decimals=3, default=0, space='buy', optimize=True, load=True)
|
# start_bear_deriv2 = DecimalParameter(-0.005, 0.005, decimals=4, default=0, space='buy', optimize=True, load=True)
|
||||||
|
|
||||||
buy_deriv1_sma60 = DecimalParameter(-0.0005, 0.0005, decimals=4, default=0, space='buy', optimize=True, load=True)
|
# buy_deriv1_sma60 = DecimalParameter(-0.005, 0.005, decimals=4, default=0, space='buy', optimize=True, load=True)
|
||||||
buy_deriv1_sma5d = DecimalParameter(-0.0007, 0.0007, decimals=4, default=0, space='buy', optimize=True, load=True)
|
# buy_deriv1_sma5d = DecimalParameter(-0.007, 0.007, decimals=4, default=0, space='buy', optimize=True, load=True)
|
||||||
buy_deriv1_sma12d = DecimalParameter(-0.0007, 0.0007, decimals=4, default=0, space='buy', optimize=True, load=True)
|
# buy_deriv1_sma12d = DecimalParameter(-0.007, 0.007, decimals=4, default=0, space='buy', optimize=True, load=True)
|
||||||
|
|
||||||
# buy_deriv2_sma60 = DecimalParameter(-0.0005, 0.0005, decimals=4, default=0, space='buy', optimize=True, load=True)
|
# buy_deriv2_sma60 = DecimalParameter(-0.0005, 0.0005, decimals=4, default=0, space='buy', optimize=True, load=True)
|
||||||
# buy_deriv2_sma5d = DecimalParameter(-0.0007, 0.0007, decimals=4, default=0, space='buy', optimize=True, load=True)
|
# buy_deriv2_sma5d = DecimalParameter(-0.0007, 0.0007, decimals=4, default=0, space='buy', optimize=True, load=True)
|
||||||
# buy_deriv2_sma12d = DecimalParameter(-0.0007, 0.0007, decimals=4, default=0, space='buy', optimize=True, load=True)
|
# buy_deriv2_sma12d = DecimalParameter(-0.0007, 0.0007, decimals=4, default=0, space='buy', optimize=True, load=True)
|
||||||
|
|
||||||
buy_longue = CategoricalParameter(long_timeperiods, default=120, space='buy', optimize=True, load=True)
|
# buy_longue = CategoricalParameter(long_timeperiods, default=120, space='buy', optimize=True, load=True)
|
||||||
buy_longue_derive = CategoricalParameter(sma_deriv1_indicators, default="sma60_deriv1_1h", space='buy', optimize=False, load=True)
|
# buy_longue_derive = CategoricalParameter(sma_deriv1_indicators, default="sma60_deriv1_1h", space='buy', optimize=False, load=True)
|
||||||
|
|
||||||
# sell_score_indicator = CategoricalParameter(score_indicators, default="sma24_score", space='sell')
|
# sell_score_indicator = CategoricalParameter(score_indicators, default="sma24_score", space='sell')
|
||||||
|
|
||||||
@@ -216,16 +216,14 @@ class Empty5m(IStrategy):
|
|||||||
# baisses = list()
|
# baisses = list()
|
||||||
# for i in range(0, 0.5, 0.05):
|
# for i in range(0, 0.5, 0.05):
|
||||||
# baisses.append(i)
|
# baisses.append(i)
|
||||||
mises_bear = IntParameter(1, 10, default=1, space='protection')
|
# mises_bear = IntParameter(1, 10, default=1, space='protection')
|
||||||
mises_bull = IntParameter(1, 10, default=1, space='protection')
|
mises_bull = IntParameter(1, 10, default=1, space='protection')
|
||||||
baisse = DecimalParameter(0.1, 0.5, decimals=2, default=0.3, space='protection', optimize=True, load=True)
|
|
||||||
b30_indicateur = CategoricalParameter(sma_indicators, default="sma36", space='protection', optimize=True, load=True)
|
|
||||||
|
|
||||||
sell_force_sell = DecimalParameter(-0.2, 0, decimals=3, default=-0.02, space='sell')
|
sell_force_sell = DecimalParameter(-0.2, 0, decimals=3, default=-0.02, space='sell')
|
||||||
sell_indicator = CategoricalParameter(sma_indicators, default="sma36", space='sell', optimize=True, load=True)
|
sell_indicator = CategoricalParameter(sma_indicators, default="sma36", space='sell', optimize=True, load=True)
|
||||||
|
|
||||||
baisse = DecimalParameter(0.1, 0.5, decimals=2, default=0.3, space='sell', optimize=True, load=True)
|
baisse = DecimalParameter(0.1, 0.5, decimals=2, default=0.3, space='sell', optimize=True, load=True)
|
||||||
b30_indicateur = CategoricalParameter(sma_indicators_h, default="sma36", space='sell', optimize=True, load=True)
|
b30_indicateur = CategoricalParameter(sma_indicators, default="sma36", space='sell', optimize=True, load=True)
|
||||||
|
|
||||||
# lost_indicator = CategoricalParameter(sma_deriv1_indicators, default="sma5_deriv1", space='protection')
|
# lost_indicator = CategoricalParameter(sma_deriv1_indicators, default="sma5_deriv1", space='protection')
|
||||||
|
|
||||||
@@ -258,9 +256,9 @@ class Empty5m(IStrategy):
|
|||||||
# sl_max = self.wallets.get_available_stake_amount() / 2
|
# sl_max = self.wallets.get_available_stake_amount() / 2
|
||||||
#
|
#
|
||||||
# amount = sl_min + (1 - range_pos) * (sl_max - sl_min)
|
# amount = sl_min + (1 - range_pos) * (sl_max - sl_min)
|
||||||
if last_candle['enter_tag'] in ['fall', 'bear', 'Force', 'Range-']:
|
# if last_candle['enter_tag'] in ['fall', 'bear', 'Force', 'Range-']:
|
||||||
amount = self.wallets.get_available_stake_amount() / self.mises_bear.value
|
# amount = self.wallets.get_available_stake_amount() / self.mises_bear.value
|
||||||
else:
|
# else:
|
||||||
amount = self.wallets.get_available_stake_amount() / self.mises_bull.value # / (2 * self.pairs[pair]['count_of_lost'] + 1)
|
amount = self.wallets.get_available_stake_amount() / self.mises_bull.value # / (2 * self.pairs[pair]['count_of_lost'] + 1)
|
||||||
|
|
||||||
# factor = 1
|
# factor = 1
|
||||||
@@ -334,7 +332,7 @@ class Empty5m(IStrategy):
|
|||||||
# stake_amount = trade.stake_amount
|
# stake_amount = trade.stake_amount
|
||||||
self.pairs[trade.pair]['last_buy'] = current_rate
|
self.pairs[trade.pair]['last_buy'] = current_rate
|
||||||
self.pairs[trade.pair]['total_amount'] += stake_amount
|
self.pairs[trade.pair]['total_amount'] += stake_amount
|
||||||
print(f"adjust {pair} drop={drop_from_last_entry} {current_time} dispo={dispo} amount={stake_amount} rate={current_rate}")
|
# print(f"adjust {pair} drop={drop_from_last_entry} {current_time} dispo={dispo} amount={stake_amount} rate={current_rate}")
|
||||||
# print(f"adjust {pair} {current_time} dispo={dispo} amount={stake_amount} rate={current_rate}")
|
# print(f"adjust {pair} {current_time} dispo={dispo} amount={stake_amount} rate={current_rate}")
|
||||||
|
|
||||||
trade_type = last_candle['enter_tag'] if last_candle['enter_long'] == 1 else 'pct48'
|
trade_type = last_candle['enter_tag'] if last_candle['enter_long'] == 1 else 'pct48'
|
||||||
@@ -566,12 +564,16 @@ class Empty5m(IStrategy):
|
|||||||
self.pairs[pair]['force_sell'] = True
|
self.pairs[pair]['force_sell'] = True
|
||||||
return 'sma'
|
return 'sma'
|
||||||
|
|
||||||
if profit > max(5, expected_profit) and \
|
if profit > 0 and \
|
||||||
(baisse > self.baisse.value and last_candle[f"close"] <= last_candle[self.b30_indicateur.value]) \
|
(baisse > self.baisse.value and last_candle[f"close"] <= last_candle[self.b30_indicateur.value]) \
|
||||||
and last_candle['hapercent'] <0 :
|
and last_candle['hapercent'] <0 :
|
||||||
self.pairs[pair]['force_sell'] = True
|
self.pairs[pair]['force_sell'] = True
|
||||||
return 'B30'
|
return 'B30'
|
||||||
|
|
||||||
|
# if profit > 0 and baisse > 0.5 and last_candle['hapercent'] <0 and last_candle[f"close"] <= last_candle['sma12']:
|
||||||
|
# self.pairs[pair]['force_sell'] = True
|
||||||
|
# return 'B50'
|
||||||
|
|
||||||
if current_profit > - self.sell_force_sell.value and last_candle['has_cross_sma3_1h'] == 1:
|
if current_profit > - self.sell_force_sell.value and last_candle['has_cross_sma3_1h'] == 1:
|
||||||
self.pairs[pair]['force_sell'] = True
|
self.pairs[pair]['force_sell'] = True
|
||||||
return 'Cross'
|
return 'Cross'
|
||||||
@@ -676,9 +678,28 @@ class Empty5m(IStrategy):
|
|||||||
dataframe[f'min{timeperiod}'] = talib.MIN(dataframe['close'], timeperiod=timeperiod)
|
dataframe[f'min{timeperiod}'] = talib.MIN(dataframe['close'], timeperiod=timeperiod)
|
||||||
dataframe[f"percent{timeperiod}"] = dataframe['close'].pct_change(timeperiod)
|
dataframe[f"percent{timeperiod}"] = dataframe['close'].pct_change(timeperiod)
|
||||||
dataframe[f"sma{timeperiod}"] = dataframe['mid'].ewm(span=timeperiod, adjust=False).mean()
|
dataframe[f"sma{timeperiod}"] = dataframe['mid'].ewm(span=timeperiod, adjust=False).mean()
|
||||||
|
# dataframe[f"high{timeperiod}"] = dataframe['high'].ewm(span=timeperiod, adjust=False).mean()
|
||||||
|
# dataframe[f"low{timeperiod}"] = dataframe['low'].ewm(span=timeperiod, adjust=False).mean()
|
||||||
|
# dataframe = self.calculateRegression(dataframe, column=f"high{timeperiod}", window=10, degree=1, future_offset=12)
|
||||||
|
# dataframe = self.calculateRegression(dataframe, column=f"low{timeperiod}", window=10, degree=1, future_offset=12)
|
||||||
|
|
||||||
self.calculeDerivees(dataframe, f"sma{timeperiod}", timeframe=self.timeframe, ema_period=timeperiod)
|
self.calculeDerivees(dataframe, f"sma{timeperiod}", timeframe=self.timeframe, ema_period=timeperiod)
|
||||||
|
|
||||||
dataframe = self.calculateRegression(dataframe, column='mid', window=30, degree=1, future_offset=12)
|
dataframe = self.calculateRegression(dataframe, column='mid', window=30, degree=1, future_offset=12)
|
||||||
|
dataframe = self.calculateRegression(dataframe, column='sma24', window=30, degree=1, future_offset=12)
|
||||||
|
|
||||||
|
dataframe["percent"] = dataframe["mid"].pct_change(1)
|
||||||
|
dataframe["percent3"] = dataframe["mid"].pct_change(3)
|
||||||
|
|
||||||
|
dataframe["volume_mean"] = dataframe["volume"].rolling(20).mean()
|
||||||
|
dataframe["volume_ratio"] = dataframe["volume"] / dataframe["volume_mean"]
|
||||||
|
|
||||||
|
dataframe["market_state"] = 0
|
||||||
|
|
||||||
|
dataframe.loc[dataframe["percent"] < -0.005, "market_state"] = -1
|
||||||
|
dataframe.loc[(dataframe["percent3"] < -0.015) & (dataframe["volume_ratio"] > 2), "market_state"] = -2
|
||||||
|
dataframe.loc[(dataframe["percent"] > 0.003) & (dataframe["volume_ratio"] > 1.5), "market_state"] = 1
|
||||||
|
dataframe["velocity"] = dataframe["percent"] - dataframe["percent3"]
|
||||||
|
|
||||||
# ######################################################################################################
|
# ######################################################################################################
|
||||||
################### INFORMATIVE 1h
|
################### INFORMATIVE 1h
|
||||||
@@ -698,6 +719,7 @@ class Empty5m(IStrategy):
|
|||||||
self.calculeDerivees(informative, f"sma{timeperiod}", timeframe=self.timeframe, ema_period=timeperiod)
|
self.calculeDerivees(informative, f"sma{timeperiod}", timeframe=self.timeframe, ema_period=timeperiod)
|
||||||
|
|
||||||
informative = self.calculateRegression(informative, column='sma3', window=10, degree=1, future_offset=12)
|
informative = self.calculateRegression(informative, column='sma3', window=10, degree=1, future_offset=12)
|
||||||
|
informative = self.calculateRegression(informative, column='low', window=10, degree=1, future_offset=12)
|
||||||
|
|
||||||
for timeperiod in long_timeperiods:
|
for timeperiod in long_timeperiods:
|
||||||
informative[f"sma{timeperiod}"] = informative['mid'].ewm(span=timeperiod, adjust=False).mean()
|
informative[f"sma{timeperiod}"] = informative['mid'].ewm(span=timeperiod, adjust=False).mean()
|
||||||
@@ -733,8 +755,8 @@ class Empty5m(IStrategy):
|
|||||||
# dataframe['cross_sma60'] = qtpylib.crossed_below(dataframe[self.sell_sma_indicators.value], dataframe[self.sell_crossed_sma_indicators.value])
|
# dataframe['cross_sma60'] = qtpylib.crossed_below(dataframe[self.sell_sma_indicators.value], dataframe[self.sell_crossed_sma_indicators.value])
|
||||||
|
|
||||||
dataframe[f'has_cross_sma3_1h'] = qtpylib.crossed_above(dataframe[f"sma60"], dataframe['sma3_regression_1h'])
|
dataframe[f'has_cross_sma3_1h'] = qtpylib.crossed_above(dataframe[f"sma60"], dataframe['sma3_regression_1h'])
|
||||||
dataframe[f'has_cross_min'] = qtpylib.crossed_above(dataframe[f"close"], dataframe['min60_1h'])
|
dataframe[f'has_cross_min'] = qtpylib.crossed_above(dataframe[f"close"], dataframe['min60'])
|
||||||
dataframe[f'has_cross_min_6'] = (dataframe['has_cross_min'].rolling(6).max() == 1)
|
dataframe[f'has_cross_min_6'] = (dataframe['has_cross_min'].rolling(15).max() == 1)
|
||||||
|
|
||||||
dataframe['atr'] = talib.ATR(dataframe)
|
dataframe['atr'] = talib.ATR(dataframe)
|
||||||
dataframe['rsi'] = talib.RSI(dataframe['close'], timeperiod=14)
|
dataframe['rsi'] = talib.RSI(dataframe['close'], timeperiod=14)
|
||||||
@@ -762,11 +784,11 @@ class Empty5m(IStrategy):
|
|||||||
# #####################################################################################
|
# #####################################################################################
|
||||||
# CA MONTE !!
|
# CA MONTE !!
|
||||||
# #####################################################################################
|
# #####################################################################################
|
||||||
conditions.append(dataframe[f"{self.start_bull_indicator.value}_deriv1_1h" ] > self.start_bull_deriv1.value)
|
# conditions.append(dataframe[f"{self.start_bull_indicator.value}_deriv1_1h" ] > self.start_bull_deriv1.value)
|
||||||
conditions.append(dataframe[f"{self.start_bull_indicator.value}_deriv2_1h"] > self.start_bull_deriv2.value)
|
# conditions.append(dataframe[f"{self.start_bull_indicator.value}_deriv2_1h"] > self.start_bull_deriv2.value)
|
||||||
conditions.append(dataframe['sma12_deriv1'] > self.buy_deriv1_sma60.value)
|
# conditions.append(dataframe['sma12_deriv1'] > self.buy_deriv1_sma60.value)
|
||||||
conditions.append(dataframe['sma5_deriv1_1h'] > self.buy_deriv1_sma5d.value)
|
# conditions.append(dataframe['sma5_deriv1_1h'] > self.buy_deriv1_sma5d.value)
|
||||||
conditions.append(dataframe['sma12_deriv1_1h'] > self.buy_deriv1_sma12d.value)
|
# conditions.append(dataframe['sma12_deriv1_1h'] > self.buy_deriv1_sma12d.value)
|
||||||
|
|
||||||
# conditions.append(dataframe['sma36_deriv2'] > self.buy_deriv2_sma60.value)
|
# conditions.append(dataframe['sma36_deriv2'] > self.buy_deriv2_sma60.value)
|
||||||
# conditions.append(dataframe['sma5_deriv2_1h'] > self.buy_deriv2_sma5d.value)
|
# conditions.append(dataframe['sma5_deriv2_1h'] > self.buy_deriv2_sma5d.value)
|
||||||
@@ -787,11 +809,11 @@ class Empty5m(IStrategy):
|
|||||||
# | (dataframe['sma60_inv_1h'] == -1)
|
# | (dataframe['sma60_inv_1h'] == -1)
|
||||||
# )
|
# )
|
||||||
|
|
||||||
if conditions:
|
# if conditions:
|
||||||
dataframe.loc[
|
# dataframe.loc[
|
||||||
reduce(lambda x, y: x & y, conditions),
|
# reduce(lambda x, y: x & y, conditions),
|
||||||
['enter_long', 'enter_tag']
|
# ['enter_long', 'enter_tag']
|
||||||
] = (1, 'bull')
|
# ] = (1, 'bull')
|
||||||
|
|
||||||
# #####################################################################################
|
# #####################################################################################
|
||||||
# conditions = list()
|
# conditions = list()
|
||||||
@@ -835,39 +857,39 @@ class Empty5m(IStrategy):
|
|||||||
# },
|
# },
|
||||||
# #####################################################################################
|
# #####################################################################################
|
||||||
conditions = list()
|
conditions = list()
|
||||||
conditions.append(dataframe[f"{self.start_bull_indicator.value}_deriv1_1h" ] < self.start_bull_deriv1.value)
|
# conditions.append(dataframe[f"{self.start_bull_indicator.value}_deriv1_1h" ] < self.start_bull_deriv1.value)
|
||||||
conditions.append(dataframe[f"{self.start_bull_indicator.value}_deriv2_1h"] < self.start_bull_deriv2.value)
|
# conditions.append(dataframe[f"{self.start_bull_indicator.value}_deriv2_1h"] < self.start_bull_deriv2.value)
|
||||||
conditions.append(dataframe[f"{self.start_bear_indicator.value}_deriv1_1h" ] > self.start_bear_deriv1.value)
|
# conditions.append(dataframe[f"{self.start_bear_indicator.value}_deriv1_1h" ] > self.start_bear_deriv1.value)
|
||||||
conditions.append(dataframe[f"{self.start_bear_indicator.value}_deriv2_1h"] > self.start_bear_deriv2.value)
|
# conditions.append(dataframe[f"{self.start_bear_indicator.value}_deriv2_1h"] > self.start_bear_deriv2.value)
|
||||||
|
|
||||||
conditions.append(dataframe['sma12_deriv1'] > self.buy_deriv1_sma60.value)
|
# conditions.append(dataframe['sma12_deriv1'] > self.buy_deriv1_sma60.value)
|
||||||
conditions.append(dataframe['sma5_deriv1_1h'] > self.buy_deriv1_sma5d.value)
|
# conditions.append(dataframe['sma5_deriv1_1h'] > self.buy_deriv1_sma5d.value)
|
||||||
conditions.append(dataframe['sma12_deriv1_1h'] > self.buy_deriv1_sma12d.value)
|
# conditions.append(dataframe['sma12_deriv1_1h'] > self.buy_deriv1_sma12d.value)
|
||||||
|
#
|
||||||
|
# # conditions.append(dataframe['sma12_deriv2'] > -0.002)
|
||||||
|
# # conditions.append(dataframe['sma5_deriv2_1h'] > 0)
|
||||||
|
# # conditions.append(dataframe['sma12_deriv2_1h'] > -0.03)
|
||||||
|
#
|
||||||
|
# conditions.append(dataframe['hapercent'] > 0)
|
||||||
|
# # conditions.append(dataframe['percent12'] < 0.01)
|
||||||
|
# # conditions.append(dataframe['percent5'] < 0.01)
|
||||||
|
# conditions.append(dataframe['max_rsi_24'] < 80)
|
||||||
|
#
|
||||||
|
# dynamic_rsi_threshold = 70 + 15 * np.tanh(dataframe["dist_sma200_1h"] * 5)
|
||||||
|
# conditions.append((dataframe['max_rsi_12_1h'] < dynamic_rsi_threshold))
|
||||||
|
# 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_1h'] > dataframe[f'sma{self.buy_longue.value}_1h'])
|
||||||
|
# | (dataframe['sma60_inv_1h'] == -1)
|
||||||
|
# )
|
||||||
|
|
||||||
# conditions.append(dataframe['sma12_deriv2'] > -0.002)
|
# if conditions:
|
||||||
# conditions.append(dataframe['sma5_deriv2_1h'] > 0)
|
# dataframe.loc[
|
||||||
# conditions.append(dataframe['sma12_deriv2_1h'] > -0.03)
|
# reduce(lambda x, y: x & y, conditions),
|
||||||
|
# ['enter_long', 'enter_tag']
|
||||||
conditions.append(dataframe['hapercent'] > 0)
|
# ] = (1, 'bear')
|
||||||
# conditions.append(dataframe['percent12'] < 0.01)
|
|
||||||
# conditions.append(dataframe['percent5'] < 0.01)
|
|
||||||
conditions.append(dataframe['max_rsi_24'] < 80)
|
|
||||||
|
|
||||||
dynamic_rsi_threshold = 70 + 15 * np.tanh(dataframe["dist_sma200_1h"] * 5)
|
|
||||||
conditions.append((dataframe['max_rsi_12_1h'] < dynamic_rsi_threshold))
|
|
||||||
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_1h'] > dataframe[f'sma{self.buy_longue.value}_1h'])
|
|
||||||
| (dataframe['sma60_inv_1h'] == -1)
|
|
||||||
)
|
|
||||||
|
|
||||||
if conditions:
|
|
||||||
dataframe.loc[
|
|
||||||
reduce(lambda x, y: x & y, conditions),
|
|
||||||
['enter_long', 'enter_tag']
|
|
||||||
] = (1, 'bear')
|
|
||||||
|
|
||||||
# conditions = list()
|
# conditions = list()
|
||||||
# conditions.append(dataframe['close_1h'] < dataframe[f'sma{self.buy_longue.value}_1h'])
|
# conditions.append(dataframe['close_1h'] < dataframe[f'sma{self.buy_longue.value}_1h'])
|
||||||
@@ -907,15 +929,18 @@ class Empty5m(IStrategy):
|
|||||||
# ['enter_long', 'enter_tag']
|
# ['enter_long', 'enter_tag']
|
||||||
# ] = (1, 'Force')
|
# ] = (1, 'Force')
|
||||||
|
|
||||||
# conditions = list()
|
conditions = list()
|
||||||
# conditions.append(dataframe['mid_regression'].shift(2) > dataframe['mid_regression'].shift(1))
|
# conditions.append(dataframe['mid_regression'].shift(2) > dataframe['mid_regression'].shift(1))
|
||||||
# conditions.append(dataframe['mid_regression'].shift(1) < dataframe['mid_regression'])
|
# conditions.append(dataframe['mid_regression'].shift(1) < dataframe['mid_regression'])
|
||||||
# conditions.append(dataframe['has_cross_min_6'] == 1)
|
conditions.append(dataframe['close'] <= dataframe['min12_1h'])
|
||||||
# # conditions.append(dataframe['sma12_deriv1'] >= 0)
|
conditions.append(dataframe['min60'] == dataframe['min60'].shift(5))
|
||||||
# dataframe.loc[
|
conditions.append(dataframe['has_cross_min_6'] == 1)
|
||||||
# reduce(lambda x, y: x & y, conditions),
|
# conditions.append(dataframe['min5_1h'] / dataframe['min12_1h'] < 0.03)
|
||||||
# ['enter_long', 'enter_tag']
|
# conditions.append(dataframe['sma12_deriv1'] >= 0)
|
||||||
# ] = (1, 'Mid')
|
dataframe.loc[
|
||||||
|
reduce(lambda x, y: x & y, conditions),
|
||||||
|
['enter_long', 'enter_tag']
|
||||||
|
] = (1, 'Mid')
|
||||||
|
|
||||||
return dataframe
|
return dataframe
|
||||||
|
|
||||||
|
|||||||
1218
EmptyAI.py
Normal file
1218
EmptyAI.py
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user