Calcul 20240101-20250514 2635.892 199.501$ => 13,21 max 11 mises BTC / 14 mises DOGE
This commit is contained in:
@@ -42,6 +42,7 @@ def normalize(df):
|
||||
df = (df - df.min()) / (df.max() - df.min())
|
||||
return df
|
||||
|
||||
|
||||
class Zeus_8_3_2_B_4_2(IStrategy):
|
||||
levels = [1, 2, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
|
||||
startup_candle_count = 12 * 24 * 2
|
||||
@@ -156,15 +157,19 @@ class Zeus_8_3_2_B_4_2(IStrategy):
|
||||
pair: {
|
||||
"first_buy": 0,
|
||||
"last_max": 0,
|
||||
"trade_info": {},
|
||||
"max_touch": 0.0,
|
||||
"last_min": 0.0,
|
||||
"last_sell": 0.0,
|
||||
"last_buy": 0.0,
|
||||
'total_amount': 0.0,
|
||||
'count_of_buys': 0,
|
||||
'current_profit': 0,
|
||||
'expected_profit': 0,
|
||||
"last_candle": {},
|
||||
"last_trade": None,
|
||||
"last_count_of_buys": 0,
|
||||
'base_stake_amount': 0,
|
||||
'stop_buy': False,
|
||||
'last_date': 0,
|
||||
'stop': False,
|
||||
'max_profit': 0,
|
||||
@@ -201,27 +206,28 @@ class Zeus_8_3_2_B_4_2(IStrategy):
|
||||
# =========================================================================
|
||||
# variables pour probabilité
|
||||
# Bornes des quantiles pour
|
||||
sma5_deriv1_1h = [-2.2582, -0.2665, -0.1475, -0.0860, -0.0428, -0.0084, 0.0244, 0.0592, 0.1038, 0.1656, 0.2766, 1.8331]
|
||||
ema_volume = [-8.9178, -0.0196, -0.0096, -0.0053, -0.0026, -0.0007, 0.0009, 0.0029, 0.0056, 0.0101, 0.0200, 3.8009]
|
||||
# Bornes des quantiles pour
|
||||
mid_smooth_3_deriv1 = [-1.5837, -0.0765, -0.0451, -0.0280, -0.0155, -0.0046, 0.0058, 0.0167, 0.0298, 0.0472, 0.0785, 1.1362]
|
||||
mid_smooth_1h_deriv1 = [-1.0482, -0.0571, -0.0336, -0.0206, -0.0113, -0.0033, 0.0044, 0.0127, 0.0225, 0.0356, 0.0591, 0.8335]
|
||||
|
||||
ema_volume_mid_smooth_1h_deriv1_matrice = {
|
||||
'B5': [28.0, 32.8, 33.6, 36.4, 35.5, 35.6, 40.1, 40.9, 45.9, 49.7, 52.2],
|
||||
'B4': [33.9, 37.2, 38.6, 40.7, 39.7, 43.0, 46.2, 47.1, 51.9, 55.9, 61.1],
|
||||
'B3': [36.4, 41.3, 39.1, 41.8, 44.6, 46.1, 50.3, 47.9, 47.6, 57.0, 58.5],
|
||||
'B2': [40.7, 40.6, 40.9, 44.6, 48.0, 48.4, 48.5, 53.5, 53.0, 54.8, 53.3],
|
||||
'B1': [37.5, 41.4, 48.0, 46.3, 48.5, 49.1, 53.7, 53.4, 56.4, 56.7, 62.8],
|
||||
'N0': [47.0, 44.3, 45.6, 47.0, 52.9, 52.2, 55.7, 53.0, 57.6, 58.1, 63.4],
|
||||
'H1': [44.1, 46.2, 49.4, 49.3, 52.2, 53.7, 58.2, 57.1, 59.0, 61.6, 61.3],
|
||||
'H2': [51.0, 44.7, 49.4, 51.3, 54.9, 57.9, 56.7, 58.1, 60.3, 60.6, 65.6],
|
||||
'H3': [50.5, 48.3, 49.9, 60.4, 57.8, 56.3, 60.2, 61.9, 62.2, 65.3, 68.3],
|
||||
'H4': [43.1, 53.6, 58.1, 61.4, 58.7, 62.6, 61.3, 65.4, 67.5, 68.2, 71.4],
|
||||
'H5': [56.6, 56.2, 57.7, 63.8, 64.8, 64.7, 66.5, 68.8, 70.9, 72.8, 76.6],
|
||||
|
||||
sma5_deriv1_1h_mid_smooth_3_deriv1_matrice = {
|
||||
'B5': [6.1, 11.7, 15.6, 20.6, 24.0, 26.0, 30.9, 40.7, 51.4, 54.9, 76.2],
|
||||
'B4': [10.4, 13.2, 19.6, 22.7, 31.9, 36.8, 44.5, 50.8, 68.0, 74.6, 88.2],
|
||||
'B3': [10.2, 16.7, 24.4, 25.1, 32.2, 42.6, 53.7, 60.0, 74.3, 78.8, 88.2],
|
||||
'B2': [11.5, 18.0, 24.8, 29.1, 35.6, 44.9, 54.1, 66.4, 75.5, 81.3, 90.0],
|
||||
'B1': [10.2, 18.8, 26.0, 31.6, 39.3, 48.7, 60.7, 71.4, 78.5, 83.4, 90.5],
|
||||
'N0': [12.5, 22.6, 26.4, 34.3, 42.2, 56.8, 63.3, 71.4, 80.7, 83.3, 89.5],
|
||||
'H1': [14.4, 24.5, 28.7, 40.0, 49.2, 60.2, 68.0, 72.3, 82.2, 83.4, 92.5],
|
||||
'H2': [12.7, 26.3, 33.5, 42.6, 53.6, 61.9, 68.8, 75.1, 80.9, 83.8, 92.0],
|
||||
'H3': [13.2, 26.9, 40.9, 46.8, 56.9, 65.7, 72.5, 75.8, 84.4, 86.9, 93.2],
|
||||
'H4': [15.8, 31.3, 43.6, 49.9, 64.2, 68.6, 75.9, 77.0, 85.4, 88.9, 95.0],
|
||||
'H5': [18.8, 39.1, 54.7, 64.0, 70.1, 79.6, 77.7, 81.8, 89.9, 89.4, 96.4]
|
||||
}
|
||||
|
||||
sma5_deriv1_1h_mid_smooth_3_deriv1_matrice_df = pd.DataFrame(sma5_deriv1_1h_mid_smooth_3_deriv1_matrice, index=index_labels)
|
||||
ema_volume_mid_smooth_1h_deriv1_matrice_df = pd.DataFrame(ema_volume_mid_smooth_1h_deriv1_matrice, index=index_labels)
|
||||
# Extraction de la matrice numérique
|
||||
sma5_deriv1_1h_mid_smooth_3_deriv1__numeric_matrice = sma5_deriv1_1h_mid_smooth_3_deriv1_matrice_df.reindex(index=ordered_labels, columns=ordered_labels).values
|
||||
ema_volume_mid_smooth_1h_deriv1_numeric_matrice = ema_volume_mid_smooth_1h_deriv1_matrice_df.reindex(index=ordered_labels, columns=ordered_labels).values
|
||||
|
||||
# paliers = {}
|
||||
|
||||
@@ -231,6 +237,7 @@ class Zeus_8_3_2_B_4_2(IStrategy):
|
||||
# buy_mid_smooth_3_deriv1 = DecimalParameter(-0.1, 0.1, decimals=2, default=-0.06, space='buy')
|
||||
# buy_mid_smooth_24_deriv1 = DecimalParameter(-0.6, 0, decimals=2, default=-0.03, space='buy')
|
||||
buy_horizon_predict_1h = IntParameter(1, 6, default=2, space='buy')
|
||||
|
||||
# buy_level_predict_1h = IntParameter(2, 5, default=4, space='buy')
|
||||
|
||||
def confirm_trade_entry(self, pair: str, order_type: str, amount: float, rate: float, time_in_force: str,
|
||||
@@ -247,7 +254,8 @@ class Zeus_8_3_2_B_4_2(IStrategy):
|
||||
# val = self.getProbaHausse144(last_candle)
|
||||
|
||||
# allow_to_buy = True #(not self.stop_all) #& (not self.all_down)
|
||||
allow_to_buy = not self.pairs[pair]['stop'] #and val > self.buy_val.value #not last_candle['tendency'] in ('B-', 'B--') # (rate <= float(limit)) | (entry_tag == 'force_entry')
|
||||
allow_to_buy = not self.pairs[pair][
|
||||
'stop'] # and val > self.buy_val.value #not last_candle['tendency'] in ('B-', 'B--') # (rate <= float(limit)) | (entry_tag == 'force_entry')
|
||||
|
||||
# if allow_to_buy:
|
||||
# poly_func, x_future, y_future, count = self.polynomial_forecast(
|
||||
@@ -306,13 +314,13 @@ class Zeus_8_3_2_B_4_2(IStrategy):
|
||||
|
||||
if allow_to_sell:
|
||||
self.trades = list()
|
||||
self.pairs[pair]['last_count_of_buys'] = trade.nr_of_successful_entries #self.pairs[pair]['count_of_buys']
|
||||
self.pairs[pair]['last_count_of_buys'] = trade.nr_of_successful_entries # self.pairs[pair]['count_of_buys']
|
||||
self.pairs[pair]['last_sell'] = rate
|
||||
self.pairs[pair]['last_trade'] = trade
|
||||
self.pairs[pair]['last_candle'] = last_candle
|
||||
self.pairs[pair]['max_profit'] = 0
|
||||
self.trades = list()
|
||||
dispo= round(self.wallets.get_available_stake_amount())
|
||||
dispo = round(self.wallets.get_available_stake_amount())
|
||||
# print(f"Sell {pair} {current_time} {exit_reason} dispo={dispo} amount={amount} rate={rate} open_rate={trade.open_rate}")
|
||||
self.log_trade(
|
||||
last_candle=last_candle,
|
||||
@@ -351,12 +359,15 @@ class Zeus_8_3_2_B_4_2(IStrategy):
|
||||
last_candle_1h = dataframe.iloc[-13].squeeze()
|
||||
before_last_candle = dataframe.iloc[-2].squeeze()
|
||||
before_last_candle_2 = dataframe.iloc[-3].squeeze()
|
||||
before_last_candle_12 = dataframe.iloc[-13].squeeze()
|
||||
before_last_candle_24 = dataframe.iloc[-25].squeeze()
|
||||
|
||||
expected_profit = self.expectedProfit(pair, last_candle)
|
||||
# print(f"current_time={current_time} current_profit={current_profit} expected_profit={expected_profit}")
|
||||
|
||||
max_touch_before = self.pairs[pair]['max_touch']
|
||||
self.pairs[pair]['last_max'] = max(last_candle['haclose'], self.pairs[pair]['last_max'])
|
||||
self.pairs[pair]['last_min'] = min(last_candle['haclose'], self.pairs[pair]['last_min'])
|
||||
|
||||
count_of_buys = trade.nr_of_successful_entries
|
||||
|
||||
@@ -375,11 +386,23 @@ class Zeus_8_3_2_B_4_2(IStrategy):
|
||||
# if (last_candle['sma20_deriv1'] < 0 and before_last_candle['sma20_deriv1'] >= 0) and (current_profit > expected_profit):
|
||||
# return 'Drv_' + str(count_of_buys)
|
||||
|
||||
|
||||
if 1 <= count_of_buys <= 3:
|
||||
if ((before_last_candle_2['mid_smooth_3_deriv1'] <= before_last_candle['mid_smooth_3_deriv1'])
|
||||
& (before_last_candle['mid_smooth_3_deriv1'] >= last_candle['mid_smooth_3_deriv1'])) \
|
||||
and (current_profit > expected_profit):
|
||||
return 'Drv_' + str(count_of_buys)
|
||||
return 'Drv3_' + pair + '_' + str(count_of_buys)
|
||||
|
||||
if 4 <= count_of_buys <= 6:
|
||||
if ((before_last_candle_2['mid_smooth_12_deriv1'] <= before_last_candle['mid_smooth_12_deriv1'])
|
||||
& (before_last_candle['mid_smooth_12_deriv1'] >= last_candle['mid_smooth_12_deriv1'])) \
|
||||
and (current_profit > expected_profit):
|
||||
return 'Drv13_' + pair + '_' + str(count_of_buys)
|
||||
|
||||
if 7 <= count_of_buys:
|
||||
if ((before_last_candle_24['sma24_deriv1_1h'] <= before_last_candle_12['sma24_deriv1_1h'])
|
||||
& (before_last_candle_12['sma24_deriv1_1h'] >= last_candle['sma24_deriv1_1h'])) \
|
||||
and (current_profit > expected_profit):
|
||||
return 'Drv24_' + pair + '_' + str(count_of_buys)
|
||||
|
||||
# if (baisse > mx) & (current_profit > expected_profit):
|
||||
# self.trades = list()
|
||||
@@ -461,8 +484,15 @@ class Zeus_8_3_2_B_4_2(IStrategy):
|
||||
|
||||
last_lost = round((last_candle['haclose'] - self.pairs[pair]['max_touch']) / self.pairs[pair]['max_touch'], 3)
|
||||
|
||||
max_touch = '' #round(last_candle['max12_1d'], 1) #round(self.pairs[pair]['max_touch'], 1)
|
||||
pct_max = round((last_candle['close'] - self.pairs[pair]['first_buy']) / self.pairs[pair]['first_buy'], 3) # round(100 * self.pairs[pair]['current_profit'], 1)
|
||||
if buys is None:
|
||||
buys = ''
|
||||
|
||||
max_touch = '' # round(last_candle['max12_1d'], 1) #round(self.pairs[pair]['max_touch'], 1)
|
||||
pct_max = round((last_candle['close'] - self.pairs[pair]['first_buy']) / self.pairs[pair]['first_buy'],
|
||||
3) # round(100 * self.pairs[pair]['current_profit'], 1)
|
||||
|
||||
total_counts = str(buys) + '/' + str(sum(pair_data['count_of_buys'] for pair_data in
|
||||
self.pairs.values())) # if not pair in ('BTC/USDT', 'BTC/USDC'))
|
||||
|
||||
# if trade_type is not None:
|
||||
# if np.isnan(last_candle['rsi_1d']):
|
||||
@@ -481,8 +511,8 @@ class Zeus_8_3_2_B_4_2(IStrategy):
|
||||
self.printLog(
|
||||
f"| {date:<16} | {action:<10} | {pair[0:3]:<3} | {trade_type or '-':<18} |{rate or '-':>9}| {dispo or '-':>6} "
|
||||
f"| {profit or '-':>8} | {pct_max or '-':>6} | {round(self.pairs[pair]['max_touch'], 2) or '-':>11} | {last_lost or '-':>12} "
|
||||
f"| {int(self.pairs[pair]['last_max']) or '-':>7} |{buys or '-':>4}|{stake or '-':>7}"
|
||||
f"|{last_candle['tendency_12'] or '-':>3}|" #{last_candle['tendency_1h'] or '-':>3}|{last_candle['tendency_1d'] or '-':>3}"
|
||||
f"| {int(self.pairs[pair]['last_max']) or '-':>7} |{total_counts or '-':>4}|{stake or '-':>7}"
|
||||
f"|{last_candle['tendency_12'] or '-':>3}|" # {last_candle['tendency_1h'] or '-':>3}|{last_candle['tendency_1d'] or '-':>3}"
|
||||
# f"|{round(last_candle['mid_smooth_24_deriv1'],3) or '-':>6}|{round(last_candle['mid_smooth_1h_deriv1'],3) or '-':>6}|{round(last_candle['mid_smooth_deriv1_1d'],3) or '-' :>6}|"
|
||||
# f"{round(last_candle['mid_smooth_24_deriv2'],3) or '-' :>6}|{round(last_candle['mid_smooth_1h_deriv2'],3) or '-':>6}|{round(last_candle['mid_smooth_deriv2_1d'],3) or '-':>6}|"
|
||||
f"{round(val, 1) or '-' :>6}|"
|
||||
@@ -494,7 +524,7 @@ class Zeus_8_3_2_B_4_2(IStrategy):
|
||||
self.printLog(
|
||||
f"+{'-' * 18}+{'-' * 12}+{'-' * 5}+{'-' * 20}+{'-' * 9}+{'-' * 8}+{'-' * 10}+{'-' * 8}+{'-' * 13}+{'-' * 14}+{'-' * 9}+{'-' * 4}+{'-' * 7}+"
|
||||
f"{'-' * 3}"
|
||||
#"+{'-' * 3}+{'-' * 3}
|
||||
# "+{'-' * 3}+{'-' * 3}
|
||||
f"+{'-' * 6}+{'-' * 7}+{'-' * 7}+"
|
||||
)
|
||||
|
||||
@@ -514,9 +544,9 @@ class Zeus_8_3_2_B_4_2(IStrategy):
|
||||
if d1 >= d1_lim_inf and d1 <= d1_lim_sup: # and d2 >= d2_lim_inf and d2 <= d2_lim_sup:
|
||||
return 'P' # Palier
|
||||
if d1 == 0.0:
|
||||
return 'DH' if d2 > 0 else 'DB' #Depart Hausse / Départ Baisse
|
||||
return 'DH' if d2 > 0 else 'DB' # Depart Hausse / Départ Baisse
|
||||
if d1 > d1_lim_sup:
|
||||
return 'H++' if d2 > 0 else 'H+' #Acceleration Hausse / Ralentissement Hausse
|
||||
return 'H++' if d2 > 0 else 'H+' # Acceleration Hausse / Ralentissement Hausse
|
||||
if d1 < d1_lim_inf:
|
||||
return 'B--' if d2 < 0 else 'B-' # Accéleration Baisse / Ralentissement Baisse
|
||||
return 'Mid'
|
||||
@@ -532,6 +562,7 @@ class Zeus_8_3_2_B_4_2(IStrategy):
|
||||
dataframe['haopen'] = heikinashi['open']
|
||||
dataframe['haclose'] = heikinashi['close']
|
||||
dataframe['hapercent'] = (dataframe['haclose'] - dataframe['haopen']) / dataframe['haclose']
|
||||
dataframe['hapercent3'] = (dataframe['haclose'] - dataframe['haopen'].shift(3)) / dataframe['haclose'].shift(3)
|
||||
|
||||
dataframe['sma5'] = talib.SMA(dataframe, timeperiod=5)
|
||||
dataframe['sma10'] = talib.SMA(dataframe, timeperiod=10)
|
||||
@@ -547,7 +578,8 @@ class Zeus_8_3_2_B_4_2(IStrategy):
|
||||
dataframe["percent12"] = (dataframe["close"] - dataframe["open"].shift(12)) / dataframe["open"].shift(12)
|
||||
|
||||
dataframe = self.calculateDerivation(dataframe, window=3, suffixe="_3")
|
||||
dataframe["mid_re_smooth_3"] = self.conditional_smoothing(dataframe['mid_smooth_3'].dropna(), threshold=0.0005).dropna()
|
||||
dataframe["mid_re_smooth_3"] = self.conditional_smoothing(dataframe['mid_smooth_3'].dropna(),
|
||||
threshold=0.0005).dropna()
|
||||
self.calculeDerivees(dataframe, "mid_re_smooth_3")
|
||||
dataframe = self.calculateDerivation(dataframe, window=12, suffixe="_12")
|
||||
dataframe = self.calculateDerivation(dataframe, window=24, suffixe="_24", factor_1=1000, factor_2=10)
|
||||
@@ -583,9 +615,12 @@ class Zeus_8_3_2_B_4_2(IStrategy):
|
||||
# informative = self.calculateDerivation(informative, window=12)
|
||||
|
||||
# informative = self.apply_regression_derivatives(informative, column='mid', window=5, degree=4)
|
||||
# informative['volatility'] = talib.STDDEV(informative['close'], timeperiod=14) / informative['close']
|
||||
# informative['atr'] = (talib.ATR(informative['high'], informative['low'], informative['close'], timeperiod=14)) / informative['close']
|
||||
informative['rsi'] = talib.RSI(informative['close']) #, timeperiod=7)
|
||||
informative['volatility'] = talib.STDDEV(informative['close'], timeperiod=14) / informative['close']
|
||||
self.calculeDerivees(informative, 'volatility')
|
||||
informative['atr'] = (talib.ATR(informative['high'], informative['low'], informative['close'], timeperiod=14)) / \
|
||||
informative['close']
|
||||
self.calculeDerivees(informative, 'atr')
|
||||
informative['rsi'] = talib.RSI(informative['close']) # , timeperiod=7)
|
||||
informative['sma5'] = talib.SMA(informative, timeperiod=5)
|
||||
informative['sma24'] = talib.SMA(informative, timeperiod=24)
|
||||
self.calculeDerivees(informative, 'sma5')
|
||||
@@ -611,6 +646,9 @@ class Zeus_8_3_2_B_4_2(IStrategy):
|
||||
|
||||
# informative = self.apply_regression_derivatives(informative, column='mid', window=5, degree=4)
|
||||
informative['max12'] = talib.MAX(informative['close'], timeperiod=12)
|
||||
informative['max60'] = talib.MAX(informative['close'], timeperiod=60)
|
||||
informative['min12'] = talib.MIN(informative['close'], timeperiod=12)
|
||||
informative['min60'] = talib.MIN(informative['close'], timeperiod=60)
|
||||
|
||||
# informative['rsi'] = talib.RSI(informative['close']) #, timeperiod=7)
|
||||
# self.calculeDerivees(informative, 'rsi')
|
||||
@@ -619,7 +657,8 @@ class Zeus_8_3_2_B_4_2(IStrategy):
|
||||
|
||||
self.calculeDerivees(informative, 'sma5', factor_1=10, factor_2=1)
|
||||
|
||||
informative['futur_percent_3'] = 100 * ((informative['sma5'].shift(-3) - informative['sma5']) / informative['sma5'])
|
||||
informative['futur_percent_3'] = 100 * (
|
||||
(informative['sma5'].shift(-3) - informative['sma5']) / informative['sma5'])
|
||||
|
||||
# if self.dp.runmode.value in ('backtest'):
|
||||
# print("##################")
|
||||
@@ -655,11 +694,13 @@ class Zeus_8_3_2_B_4_2(IStrategy):
|
||||
for buy in filled_buys:
|
||||
if count == 0:
|
||||
dataframe['first_price'] = buy.price
|
||||
self.pairs[pair]['first_buy'] = buy.price
|
||||
# dataframe['close01'] = buy.price * 1.01
|
||||
|
||||
# Order(id=2396, trade=1019, order_id=29870026652, side=buy, filled=0.00078, price=63921.01,
|
||||
# status=closed, date=2024-08-26 02:20:11)
|
||||
dataframe['last_price'] = buy.price
|
||||
self.pairs[pair]['last_buy'] = buy.price
|
||||
count = count + 1
|
||||
amount += buy.price * buy.filled
|
||||
# dataframe['mid_price'] = (dataframe['last_price'] + dataframe['first_price']) / 2
|
||||
@@ -688,7 +729,7 @@ class Zeus_8_3_2_B_4_2(IStrategy):
|
||||
|
||||
horizon_h = 12
|
||||
dataframe['sma5_1h'] = dataframe['sma5_1h'].rolling(window=horizon_h).mean()
|
||||
# dataframe['sma5_deriv1_1h'] = dataframe['sma5_deriv1_1h'].rolling(window=horizon_h).mean()
|
||||
# dataframe['ema_volume'] = dataframe['ema_volume'].rolling(window=horizon_h).mean()
|
||||
# dataframe['sma24_1h'] = dataframe['sma24_1h'].rolling(window=horizon_h).mean()
|
||||
# dataframe['sma24_deriv1_1h'] = dataframe['sma24_deriv1_1h'].rolling(window=horizon_h).mean()
|
||||
|
||||
@@ -701,8 +742,10 @@ class Zeus_8_3_2_B_4_2(IStrategy):
|
||||
# dataframe['smooth_24_deriv1'] = 100 * dataframe['smooth_24_deriv1'] / dataframe['mid_smooth_24']
|
||||
# dataframe['smooth_24_deriv2'] = 100 * dataframe['smooth_24_deriv2'] / dataframe['mid_smooth_24']
|
||||
|
||||
dataframe['close_smooth'] = self.conditional_smoothing(dataframe['mid'].rolling(3).mean().dropna(), threshold=0.001)
|
||||
dataframe['smooth'], dataframe['deriv1'], dataframe['deriv2'] = self.smooth_and_derivatives(dataframe['close_smooth'])
|
||||
dataframe['close_smooth'] = self.conditional_smoothing(dataframe['mid'].rolling(3).mean().dropna(),
|
||||
threshold=0.001)
|
||||
dataframe['smooth'], dataframe['deriv1'], dataframe['deriv2'] = self.smooth_and_derivatives(
|
||||
dataframe['close_smooth'])
|
||||
dataframe['deriv1'] = 100 * dataframe['deriv1'] / dataframe['mid']
|
||||
dataframe['deriv2'] = 100 * dataframe['deriv2'] / dataframe['mid']
|
||||
|
||||
@@ -724,7 +767,8 @@ class Zeus_8_3_2_B_4_2(IStrategy):
|
||||
#
|
||||
# horizon_h = 24 * 5
|
||||
# dataframe['futur_percent_1h'] = 100 * ((dataframe['mid_smooth_1h'].shift(-12) - dataframe['mid_smooth_1h']) / dataframe['mid_smooth_1h']).rolling(horizon_h).mean()
|
||||
# dataframe['futur_percent_3h'] = 100 * ((dataframe['mid_smooth_1h'].shift(-36) - dataframe['mid_smooth_1h']) / dataframe['mid_smooth_1h']).rolling(horizon_h).mean()
|
||||
dataframe['futur_percent_3h'] = 100 * (
|
||||
(dataframe['close'].shift(-36) - dataframe['close']) / dataframe['close']).rolling(horizon_h).mean()
|
||||
# dataframe['futur_percent_5h'] = 100 * ((dataframe['mid_smooth_1h'].shift(-60) - dataframe['mid_smooth_1h']) / dataframe['mid_smooth_1h']).rolling(horizon_h).mean()
|
||||
# dataframe['futur_percent_12h'] = 100 * ((dataframe['mid_smooth_1h'].shift(-144) - dataframe['mid_smooth_1h']) / dataframe['mid_smooth_1h']).rolling(horizon_h).mean()
|
||||
#
|
||||
@@ -733,13 +777,18 @@ class Zeus_8_3_2_B_4_2(IStrategy):
|
||||
#
|
||||
# self.calculateProbabilite2Index(dataframe, ['futur_percent_1d'], 'sma24_deriv1_1h', 'sma5_1d')
|
||||
|
||||
# if self.dp.runmode.value in ('backtest'):
|
||||
# print("##################")
|
||||
# print("# STAT DAY vs HOUR")
|
||||
# print("##################")
|
||||
# self.calculateProbabilite2Index(dataframe, futur_cols=['futur_percent_3_1h'], indic_1='sma5_deriv1_1h', indic_2='mid_smooth_3_deriv1')
|
||||
dataframe['ema_volume'] = 20 * (dataframe['volume'] * dataframe['hapercent']) / (
|
||||
abs(dataframe['volume'].shift(1)) + abs(dataframe['volume'].shift(2)))
|
||||
|
||||
dataframe['ema_volume'] = EMAIndicator(dataframe['volume'] * dataframe['hapercent'], window=5).ema_indicator()
|
||||
self.calculeDerivees(dataframe, 'ema_volume', factor_1=10, factor_2=1)
|
||||
if self.dp.runmode.value in ('backtest'):
|
||||
print("##################")
|
||||
print("# STAT DAY vs HOUR")
|
||||
print("##################")
|
||||
self.calculateProbabilite2Index(dataframe, futur_cols=['futur_percent_3h'], indic_1='ema_volume',
|
||||
indic_2='mid_smooth_1h_deriv1')
|
||||
|
||||
dataframe['proba_hausse'] = dataframe.apply(lambda row: self.getProbaHausse(row), axis=1)
|
||||
|
||||
return dataframe
|
||||
|
||||
@@ -748,8 +797,8 @@ class Zeus_8_3_2_B_4_2(IStrategy):
|
||||
dataframe[f"{indic}_deriv2"] = factor_2 * dataframe[f"{indic}_deriv1"].diff()
|
||||
|
||||
def calculateDownAndUp(self, dataframe, limit=0.0001):
|
||||
dataframe['down'] = dataframe['mid_smooth_1h_deriv1'] < limit #dataframe['hapercent'] <= limit
|
||||
dataframe['up'] = dataframe['mid_smooth_1h_deriv1'] > limit #dataframe['hapercent'] >= limit
|
||||
dataframe['down'] = dataframe['mid_smooth_1h_deriv1'] < limit # dataframe['hapercent'] <= limit
|
||||
dataframe['up'] = dataframe['mid_smooth_1h_deriv1'] > limit # dataframe['hapercent'] >= limit
|
||||
dataframe['down_count'] = - dataframe['down'].astype(int) * (
|
||||
dataframe['down'].groupby((dataframe['down'] != dataframe['down'].shift()).cumsum()).cumcount() + 1)
|
||||
dataframe['up_count'] = dataframe['up'].astype(int) * (
|
||||
@@ -763,10 +812,13 @@ class Zeus_8_3_2_B_4_2(IStrategy):
|
||||
# 1. Calcul du lissage par moyenne mobile médiane
|
||||
dataframe[f"mid_smooth{suffixe}"] = dataframe['haclose'].rolling(window=window).mean()
|
||||
# 2. Dérivée première = différence entre deux bougies successives
|
||||
dataframe[f"mid_smooth{suffixe}_deriv1"] = round(factor_1 * dataframe[f"mid_smooth{suffixe}"].rolling(window=3).mean().diff() / dataframe[f"mid_smooth{suffixe}"], 4)
|
||||
dataframe[f"mid_smooth{suffixe}_deriv1"] = round(
|
||||
factor_1 * dataframe[f"mid_smooth{suffixe}"].rolling(window=3).mean().diff() / dataframe[
|
||||
f"mid_smooth{suffixe}"], 4)
|
||||
|
||||
# 3. Dérivée seconde = différence de la dérivée première
|
||||
dataframe[f"mid_smooth{suffixe}_deriv2"] = round(factor_2 * dataframe[f"mid_smooth{suffixe}_deriv1"].rolling(window=3).mean().diff(), 4)
|
||||
dataframe[f"mid_smooth{suffixe}_deriv2"] = round(
|
||||
factor_2 * dataframe[f"mid_smooth{suffixe}_deriv1"].rolling(window=3).mean().diff(), 4)
|
||||
dataframe = self.add_tendency_column(dataframe, suffixe)
|
||||
return dataframe
|
||||
|
||||
@@ -806,6 +858,7 @@ class Zeus_8_3_2_B_4_2(IStrategy):
|
||||
), ['enter_long', 'enter_tag']] = (1, 'smth')
|
||||
|
||||
dataframe['test'] = np.where(dataframe['enter_long'] == 1, dataframe['close'] * 1.01, np.nan)
|
||||
dataframe['perte_02'] = np.where((dataframe['hapercent3'] * 100 < -0.2), dataframe['close'], np.nan)
|
||||
|
||||
# self.paliers = self.get_dca_stakes()
|
||||
|
||||
@@ -912,8 +965,8 @@ class Zeus_8_3_2_B_4_2(IStrategy):
|
||||
|
||||
dataframe, _ = self.dp.get_analyzed_dataframe(trade.pair, self.timeframe)
|
||||
last_candle = dataframe.iloc[-1].squeeze()
|
||||
before_last_candle = dataframe.iloc[-2].squeeze()
|
||||
last_candle_2 = dataframe.iloc[-3].squeeze()
|
||||
before_last_candle_12 = dataframe.iloc[-13].squeeze()
|
||||
before_last_candle_24 = dataframe.iloc[-25].squeeze()
|
||||
last_candle_3 = dataframe.iloc[-4].squeeze()
|
||||
last_candle_previous_1h = dataframe.iloc[-13].squeeze()
|
||||
# prépare les données
|
||||
@@ -930,6 +983,10 @@ class Zeus_8_3_2_B_4_2(IStrategy):
|
||||
pair = trade.pair
|
||||
|
||||
pct_first = 0
|
||||
|
||||
total_counts = sum(
|
||||
pair_data['count_of_buys'] for pair_data in self.pairs.values() if not pair in ('BTC/USDT', 'BTC/USDC'))
|
||||
|
||||
if self.pairs[pair]['first_buy']:
|
||||
pct_first = round((last_candle['close'] - self.pairs[pair]['first_buy']) / self.pairs[pair]['first_buy'], 3)
|
||||
|
||||
@@ -938,14 +995,15 @@ class Zeus_8_3_2_B_4_2(IStrategy):
|
||||
pct_max = current_profit
|
||||
else:
|
||||
if self.pairs[trade.pair]['last_buy']:
|
||||
pct_max = round((last_candle['close'] - self.pairs[trade.pair]['last_buy']) / self.pairs[trade.pair]['last_buy'], 4)
|
||||
pct_max = round(
|
||||
(last_candle['close'] - self.pairs[trade.pair]['last_buy']) / self.pairs[trade.pair]['last_buy'], 4)
|
||||
else:
|
||||
pct_max = - pct
|
||||
|
||||
if pair in ('BTC/USDT', 'BTC/USDC') or count_of_buys <= 2:
|
||||
lim = - pct - (count_of_buys * 0.001)
|
||||
# lim = - (0.012 * (1 + round(count_of_buys / 5)) + 0.001 * (count_of_buys - 1))
|
||||
#lim = - (0.012 + 0.001 * (count_of_buys - 1) + (0.002 * count_of_buys if count_of_buys > 10 else 0.001 * count_of_buys if count_of_buys > 5 else 0))
|
||||
# lim = - (0.012 + 0.001 * (count_of_buys - 1) + (0.002 * count_of_buys if count_of_buys > 10 else 0.001 * count_of_buys if count_of_buys > 5 else 0))
|
||||
|
||||
else:
|
||||
pct = 0.05
|
||||
@@ -1067,13 +1125,14 @@ class Zeus_8_3_2_B_4_2(IStrategy):
|
||||
# > - 0.015 ==>Avg. stake amount 249.107 USDT │ Total trade volume 138186.861 USDT 275 │ 1.20 │ 901.976 │ 45.1 │ 1 day, 19:17:00 │ 274 0 1 99.6 │ 0.684 USDT 0.02%
|
||||
|
||||
condition = (last_candle['sma5_deriv1_1h'] > 0 or count_of_buys <= 5)
|
||||
#last_candle['mid_smooth_1h_deriv1'] > - 0.05 #(last_candle['mid_smooth_3_deriv1'] > self.buy_mid_smooth_3_deriv1.value) and (last_candle['mid_smooth_24_deriv1'] > self.buy_mid_smooth_24_deriv1.value)
|
||||
# last_candle['mid_smooth_1h_deriv1'] > - 0.05 #(last_candle['mid_smooth_3_deriv1'] > self.buy_mid_smooth_3_deriv1.value) and (last_candle['mid_smooth_24_deriv1'] > self.buy_mid_smooth_24_deriv1.value)
|
||||
# (last_candle['enter_long'] == 1 & (count_of_buys < 3)) \
|
||||
# or ((before_last_candle['mid_re_smooth_3_deriv1'] <= 0) & (last_candle['mid_re_smooth_3_deriv1'] >= 0) & (3 <= count_of_buys < 6)) \
|
||||
# or ((before_last_candle['mid_smooth_1h_deriv1'] <= 0) & (last_candle['mid_smooth_1h_deriv1'] >= 0) & (6 <= count_of_buys))
|
||||
|
||||
limit_buy = 20
|
||||
if (count_of_buys < limit_buy) and condition and (pct_max < lim): # and val > self.buy_val_adjust.value and last_candle['mid_smooth_deriv1_1d'] > - 1):
|
||||
if (count_of_buys < limit_buy) and condition and (
|
||||
pct_max < lim): # and val > self.buy_val_adjust.value and last_candle['mid_smooth_deriv1_1d'] > - 1):
|
||||
try:
|
||||
# print(f"{trade.pair} current_profit={current_profit} count_of_buys={count_of_buys} pct_first={pct_first:.3f} pct_max={pct_max:.3f} lim={lim:.3f} index={index}")
|
||||
# self.pairs[trade.pair]['last_palier_index'] = index
|
||||
@@ -1090,7 +1149,8 @@ class Zeus_8_3_2_B_4_2(IStrategy):
|
||||
max_amount = self.config.get('stake_amount') * 2.5
|
||||
# stake_amount = min(stake_amount, self.wallets.get_available_stake_amount())
|
||||
stake_amount = min(min(max_amount, self.wallets.get_available_stake_amount()),
|
||||
self.adjust_stake_amount(pair, last_candle) - 10 * pct_first / pct) # min(200, self.adjust_stake_amount(pair, last_candle) * self.fibo[count_of_buys])
|
||||
self.adjust_stake_amount(pair,
|
||||
last_candle) - 10 * pct_first / pct) # min(200, self.adjust_stake_amount(pair, last_candle) * self.fibo[count_of_buys])
|
||||
|
||||
trade_type = last_candle['enter_tag'] if last_candle['enter_long'] == 1 else 'pct48'
|
||||
self.pairs[trade.pair]['count_of_buys'] += 1
|
||||
@@ -1118,7 +1178,8 @@ class Zeus_8_3_2_B_4_2(IStrategy):
|
||||
# print(f" {key:20}: {value}")
|
||||
|
||||
df = pd.DataFrame.from_dict(self.pairs, orient='index')
|
||||
colonnes_a_exclure = ['last_candle', 'last_trade', 'last_palier_index', 'stop']
|
||||
colonnes_a_exclure = ['last_candle', 'last_trade', 'last_palier_index', 'stop',
|
||||
'trade_info', 'last_date', 'expected_profit', 'last_count_of_buys', 'base_stake_amount', 'stop_buy']
|
||||
df_filtered = df[df['count_of_buys'] > 0].drop(columns=colonnes_a_exclure)
|
||||
# df_filtered = df_filtered["first_buy", "last_max", "max_touch", "last_sell","last_buy", 'count_of_buys', 'current_profit']
|
||||
|
||||
@@ -1175,21 +1236,24 @@ class Zeus_8_3_2_B_4_2(IStrategy):
|
||||
return None
|
||||
|
||||
def getProbaHausse(self, last_candle):
|
||||
value_1 = self.getValuesFromTable(self.sma5_deriv1_1h, last_candle['sma5_deriv1_1h'])
|
||||
value_2 = self.getValuesFromTable(self.mid_smooth_3_deriv1, last_candle['mid_smooth_3_deriv1'])
|
||||
value_1 = self.getValuesFromTable(self.ema_volume, last_candle['ema_volume'])
|
||||
value_2 = self.getValuesFromTable(self.mid_smooth_1h_deriv1, last_candle['mid_smooth_1h_deriv1'])
|
||||
|
||||
val = self.approx_val_from_bins(
|
||||
matrice=self.sma5_deriv1_1h_mid_smooth_3_deriv1_matrice_df,
|
||||
numeric_matrice=self.sma5_deriv1_1h_mid_smooth_3_deriv1__numeric_matrice,
|
||||
row_label=value_1,
|
||||
col_label=value_2
|
||||
matrice=self.ema_volume_mid_smooth_1h_deriv1_matrice_df,
|
||||
numeric_matrice=self.ema_volume_mid_smooth_1h_deriv1_numeric_matrice,
|
||||
row_label=value_2,
|
||||
col_label=value_1
|
||||
)
|
||||
return val
|
||||
|
||||
def adjust_stake_amount(self, pair: str, last_candle: DataFrame):
|
||||
# Calculer le minimum des 14 derniers jours
|
||||
base_stake_amount = self.config.get('stake_amount') # Montant de base configuré
|
||||
if not pair.startswith('BTC'):
|
||||
factors = [1, 1.25, 1.5, 2.0]
|
||||
|
||||
if not pair in ('BTC/USDT', 'BTC/USDC'):
|
||||
factors = [1, 1.2, 1.3, 1.4]
|
||||
base_stake_amount = base_stake_amount * 0.75
|
||||
|
||||
first_price = self.pairs[pair]['first_buy']
|
||||
@@ -1201,17 +1265,20 @@ class Zeus_8_3_2_B_4_2(IStrategy):
|
||||
if last_max > 0:
|
||||
pct = 100 * (last_max - first_price) / last_max
|
||||
thresholds = [2, 5, 10, 20]
|
||||
factors = [1, 1.25, 1.5, 2.0]
|
||||
|
||||
factor = self.multi_step_interpolate(pct, thresholds, factors)
|
||||
|
||||
adjusted_stake_amount = base_stake_amount * factor #max(base_stake_amount, min(100, base_stake_amount * percent_4))
|
||||
adjusted_stake_amount = base_stake_amount * factor # max(base_stake_amount, min(100, base_stake_amount * percent_4))
|
||||
|
||||
return adjusted_stake_amount
|
||||
|
||||
def expectedProfit(self, pair: str, last_candle: DataFrame):
|
||||
|
||||
expected_profit = 0.004 #min(0.01, first_max)
|
||||
count_of_buys = self.pairs[pair]['count_of_buys']
|
||||
pct_first = round((last_candle['close'] - self.pairs[pair]['first_buy']) / self.pairs[pair]['first_buy'], 3)
|
||||
|
||||
expected_profit = max(0.004, abs(
|
||||
pct_first / 3)) # 0.004 + 0.002 * self.pairs[pair]['count_of_buys'] #min(0.01, first_max)
|
||||
|
||||
# print(
|
||||
# f"Expected profit price={current_price:.4f} min_max={min_max:.4f} min_14={min_14_days:.4f} max_14={max_14_days:.4f} percent={percent:.4f} expected_profit={expected_profit:.4f}")
|
||||
@@ -1251,8 +1318,8 @@ class Zeus_8_3_2_B_4_2(IStrategy):
|
||||
# Détecter les zones de retournement: quand dérivée1 ≈ 0 et que dérivée2 change de signe.
|
||||
def calculateRegression(self,
|
||||
dataframe: DataFrame,
|
||||
column= 'close',
|
||||
window= 50,
|
||||
column='close',
|
||||
window=50,
|
||||
degree=3,
|
||||
future_offset: int = 10 # projection à n bougies après
|
||||
) -> DataFrame:
|
||||
@@ -1298,10 +1365,12 @@ class Zeus_8_3_2_B_4_2(IStrategy):
|
||||
|
||||
df[f"{column}_regression"] = regression_fit
|
||||
# 2. Dérivée première = différence entre deux bougies successives
|
||||
df[f"{column}_regression_deriv1"] = round(100 * df[f"{column}_regression"].diff() / df[f"{column}_regression"], 4)
|
||||
df[f"{column}_regression_deriv1"] = round(100 * df[f"{column}_regression"].diff() / df[f"{column}_regression"],
|
||||
4)
|
||||
|
||||
# 3. Dérivée seconde = différence de la dérivée première
|
||||
df[f"{column}_regression_deriv2"] = round(10 * df[f"{column}_regression_deriv1"].rolling(int(window / 4)).mean().diff(), 4)
|
||||
df[f"{column}_regression_deriv2"] = round(
|
||||
10 * df[f"{column}_regression_deriv1"].rolling(int(window / 4)).mean().diff(), 4)
|
||||
|
||||
df[f"{column}_future_{future_offset}"] = regression_future_fit
|
||||
|
||||
@@ -1395,7 +1464,6 @@ class Zeus_8_3_2_B_4_2(IStrategy):
|
||||
# Approximation directe (aucune interpolation complexe ici, juste une lecture)
|
||||
return numeric_matrice[row_idx, col_idx]
|
||||
|
||||
|
||||
@property
|
||||
def protections(self):
|
||||
return [
|
||||
@@ -1460,7 +1528,8 @@ class Zeus_8_3_2_B_4_2(IStrategy):
|
||||
deriv1 = np.diff(smooth, prepend=smooth[0])
|
||||
deriv2 = np.diff(deriv1, prepend=deriv1[0])
|
||||
|
||||
return pd.Series(smooth, index=series.index), pd.Series(deriv1, index=series.index), pd.Series(deriv2, index=series.index)
|
||||
return pd.Series(smooth, index=series.index), pd.Series(deriv1, index=series.index), pd.Series(deriv2,
|
||||
index=series.index)
|
||||
|
||||
def causal_savgol(self, series, window=25, polyorder=3):
|
||||
result = []
|
||||
@@ -1478,7 +1547,6 @@ class Zeus_8_3_2_B_4_2(IStrategy):
|
||||
result.append(poly(window - 1))
|
||||
return pd.Series(result, index=series.index)
|
||||
|
||||
|
||||
def get_stake_from_drawdown(self, pct: float, base_stake: float = 100.0, step: float = 0.04, growth: float = 1.15,
|
||||
max_stake: float = 1000.0) -> float:
|
||||
"""
|
||||
@@ -1498,7 +1566,8 @@ class Zeus_8_3_2_B_4_2(IStrategy):
|
||||
stake = base_stake * (growth ** level)
|
||||
return min(stake, max_stake)
|
||||
|
||||
def compute_adaptive_paliers(self, max_drawdown: float = 0.65, first_steps: list[float] = [0.01, 0.01, 0.015, 0.02], growth: float = 1.2) -> list[float]:
|
||||
def compute_adaptive_paliers(self, max_drawdown: float = 0.65, first_steps: list[float] = [0.01, 0.01, 0.015, 0.02],
|
||||
growth: float = 1.2) -> list[float]:
|
||||
"""
|
||||
Génère une liste de drawdowns négatifs avec des paliers plus rapprochés au début.
|
||||
|
||||
@@ -1632,7 +1701,7 @@ class Zeus_8_3_2_B_4_2(IStrategy):
|
||||
#
|
||||
# return result
|
||||
|
||||
def polynomial_forecast(self, series: pd.Series, window: int = 20, degree: int = 2, steps = [12, 24, 36]):
|
||||
def polynomial_forecast(self, series: pd.Series, window: int = 20, degree: int = 2, steps=[12, 24, 36]):
|
||||
"""
|
||||
Calcule une régression polynomiale sur les `window` dernières valeurs de la série,
|
||||
puis prédit les `n_future` prochaines valeurs.
|
||||
@@ -1661,14 +1730,14 @@ class Zeus_8_3_2_B_4_2(IStrategy):
|
||||
|
||||
current = series.iloc[-1]
|
||||
count = 0
|
||||
for future_step in steps: #range(1, n_future + 1)
|
||||
for future_step in steps: # range(1, n_future + 1)
|
||||
future_x = window - 1 + future_step
|
||||
prediction = poly(future_x)
|
||||
# series.loc[series.index[future_x], f'poly_pred_t+{future_step}'] = prediction
|
||||
|
||||
# ➕ Afficher les prédictions
|
||||
# print(f"{current} → t+{future_step}: x={future_x}, y={prediction:.2f}")
|
||||
if prediction > 0: #current:
|
||||
if prediction > 0: # current:
|
||||
count += 1
|
||||
|
||||
return poly, x_future, y_future, count
|
||||
@@ -1750,7 +1819,7 @@ class Zeus_8_3_2_B_4_2(IStrategy):
|
||||
# return False
|
||||
|
||||
if max_pair != '':
|
||||
#if this_pair_count >= limit:
|
||||
# if this_pair_count >= limit:
|
||||
# Si une autre paire non-BTC a aussi >3 trades, blocage
|
||||
# if max_pair == pair:
|
||||
# print(f"{pair} Cette paire {max_pair} est la seule avec >=3 / {max_nb_trades}")
|
||||
|
||||
@@ -1,116 +1,248 @@
|
||||
BACKTESTING REPORT
|
||||
┏━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┓
|
||||
┏━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┓
|
||||
┃ Pair ┃ Trades ┃ Avg Profit % ┃ Tot Profit USDT ┃ Tot Profit % ┃ Avg Duration ┃ Win Draw Loss Win% ┃
|
||||
┡━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━┩
|
||||
│ BTC/USDT │ 113 │ 0.9 │ 339.503 │ 11.32 │ 1 day, 4:02:00 │ 112 0 1 99.1 │
|
||||
│ ETH/USDT │ 35 │ 1.01 │ 62.255 │ 2.08 │ 4 days, 5:04:00 │ 35 0 0 100 │
|
||||
│ DOGE/USDT │ 45 │ 1.4 │ 59.878 │ 2.0 │ 1 day, 18:01:00 │ 44 0 1 97.8 │
|
||||
│ XRP/USDT │ 33 │ 1.21 │ 51.964 │ 1.73 │ 2 days, 2:35:00 │ 33 0 0 100 │
|
||||
│ SOL/USDT │ 30 │ 0.71 │ 25.855 │ 0.86 │ 2 days, 16:38:00 │ 29 0 1 96.7 │
|
||||
│ TOTAL │ 256 │ 1.02 │ 539.455 │ 17.98 │ 1 day, 23:40:00 │ 253 0 3 98.8 │
|
||||
└───────────┴────────┴──────────────┴─────────────────┴──────────────┴──────────────────┴────────────────────────┘
|
||||
┡━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━┩
|
||||
│ BTC/USDT │ 352 │ 1.0 │ 1158.045 │ 38.6 │ 1 day, 8:33:00 │ 351 0 1 99.7 │
|
||||
│ DOGE/USDT │ 110 │ 2.19 │ 748.873 │ 24.96 │ 3 days, 4:05:00 │ 110 0 0 100 │
|
||||
│ XRP/USDT │ 106 │ 1.75 │ 332.757 │ 11.09 │ 2 days, 3:54:00 │ 106 0 0 100 │
|
||||
│ SOL/USDT │ 91 │ 1.26 │ 213.864 │ 7.13 │ 3 days, 8:55:00 │ 90 0 1 98.9 │
|
||||
│ ETH/USDT │ 78 │ 1.19 │ 182.354 │ 6.08 │ 3 days, 1:24:00 │ 78 0 0 100 │
|
||||
│ TOTAL │ 737 │ 1.34 │ 2635.892 │ 87.86 │ 2 days, 4:08:00 │ 735 0 2 99.7 │
|
||||
└───────────┴────────┴──────────────┴─────────────────┴──────────────┴─────────────────┴────────────────────────┘
|
||||
LEFT OPEN TRADES REPORT
|
||||
┏━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┓
|
||||
┏━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┓
|
||||
┃ Pair ┃ Trades ┃ Avg Profit % ┃ Tot Profit USDT ┃ Tot Profit % ┃ Avg Duration ┃ Win Draw Loss Win% ┃
|
||||
┡━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━┩
|
||||
│ BTC/USDT │ 1 │ -0.27 │ -0.560 │ -0.02 │ 18:15:00 │ 0 0 1 0 │
|
||||
│ SOL/USDT │ 1 │ -13.37 │ -21.520 │ -0.72 │ 51 days, 14:10:00 │ 0 0 1 0 │
|
||||
│ DOGE/USDT │ 1 │ -7.2 │ -29.206 │ -0.97 │ 51 days, 21:20:00 │ 0 0 1 0 │
|
||||
│ TOTAL │ 3 │ -6.95 │ -51.286 │ -1.71 │ 34 days, 17:55:00 │ 0 0 3 0 │
|
||||
└───────────┴────────┴──────────────┴─────────────────┴──────────────┴───────────────────┴────────────────────────┘
|
||||
┡━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━┩
|
||||
│ BTC/USDT │ 1 │ -0.28 │ -0.280 │ -0.01 │ 1:35:00 │ 0 0 1 0 │
|
||||
│ SOL/USDT │ 1 │ -17.25 │ -69.281 │ -2.31 │ 109 days, 8:10:00 │ 0 0 1 0 │
|
||||
│ TOTAL │ 2 │ -8.76 │ -69.561 │ -2.32 │ 54 days, 16:52:00 │ 0 0 2 0 │
|
||||
└──────────┴────────┴──────────────┴─────────────────┴──────────────┴───────────────────┴────────────────────────┘
|
||||
ENTER TAG STATS
|
||||
┏━━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┓
|
||||
┃ Enter Tag ┃ Entries ┃ Avg Profit % ┃ Tot Profit USDT ┃ Tot Profit % ┃ Avg Duration ┃ Win Draw Loss Win% ┃
|
||||
┡━━━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━┩
|
||||
│ smth │ 256 │ 1.02 │ 539.455 │ 17.98 │ 1 day, 23:40:00 │ 253 0 3 98.8 │
|
||||
│ TOTAL │ 256 │ 1.02 │ 539.455 │ 17.98 │ 1 day, 23:40:00 │ 253 0 3 98.8 │
|
||||
│ smth │ 737 │ 1.34 │ 2635.892 │ 87.86 │ 2 days, 4:08:00 │ 735 0 2 99.7 │
|
||||
│ TOTAL │ 737 │ 1.34 │ 2635.892 │ 87.86 │ 2 days, 4:08:00 │ 735 0 2 99.7 │
|
||||
└───────────┴─────────┴──────────────┴─────────────────┴──────────────┴─────────────────┴────────────────────────┘
|
||||
EXIT REASON STATS
|
||||
┏━━━━━━━━━━━━━┳━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┓
|
||||
┏━━━━━━━━━━━━━━━━━━━━┳━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┓
|
||||
┃ Exit Reason ┃ Exits ┃ Avg Profit % ┃ Tot Profit USDT ┃ Tot Profit % ┃ Avg Duration ┃ Win Draw Loss Win% ┃
|
||||
┡━━━━━━━━━━━━━╇━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━┩
|
||||
│ Drv_1 │ 143 │ 1.16 │ 143.815 │ 4.79 │ 4:26:00 │ 143 0 0 100 │
|
||||
│ Drv_2 │ 61 │ 1.0 │ 114.893 │ 3.83 │ 18:19:00 │ 61 0 0 100 │
|
||||
│ Drv_9 │ 2 │ 2.65 │ 78.810 │ 2.63 │ 7 days, 7:22:00 │ 2 0 0 100 │
|
||||
│ Drv_3 │ 27 │ 0.91 │ 73.753 │ 2.46 │ 1 day, 21:31:00 │ 27 0 0 100 │
|
||||
│ Drv_7 │ 4 │ 1.59 │ 59.674 │ 1.99 │ 18 days, 2:38:00 │ 4 0 0 100 │
|
||||
│ Drv_4 │ 9 │ 1.4 │ 56.857 │ 1.9 │ 3 days, 17:07:00 │ 9 0 0 100 │
|
||||
│ Drv_5 │ 2 │ 1.58 │ 26.858 │ 0.9 │ 1 day, 6:22:00 │ 2 0 0 100 │
|
||||
│ Drv_13 │ 1 │ 1.04 │ 18.124 │ 0.6 │ 122 days, 13:40:00 │ 1 0 0 100 │
|
||||
│ Drv_6 │ 4 │ 0.62 │ 17.956 │ 0.6 │ 8 days, 15:32:00 │ 4 0 0 100 │
|
||||
│ force_exit │ 3 │ -6.95 │ -51.286 │ -1.71 │ 34 days, 17:55:00 │ 0 0 3 0 │
|
||||
│ TOTAL │ 256 │ 1.02 │ 539.455 │ 17.98 │ 1 day, 23:40:00 │ 253 0 3 98.8 │
|
||||
└─────────────┴───────┴──────────────┴─────────────────┴──────────────┴────────────────────┴────────────────────────┘
|
||||
┡━━━━━━━━━━━━━━━━━━━━╇━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━┩
|
||||
│ Drv24_BTC/USDT_9 │ 6 │ 3.11 │ 270.369 │ 9.01 │ 22 days, 4:49:00 │ 6 0 0 100 │
|
||||
│ Drv24_DOGE/USDT_14 │ 1 │ 13.03 │ 260.851 │ 8.7 │ 110 days, 4:15:00 │ 1 0 0 100 │
|
||||
│ Drv3_BTC/USDT_1 │ 191 │ 0.92 │ 181.843 │ 6.06 │ 6:45:00 │ 191 0 0 100 │
|
||||
│ Drv3_BTC/USDT_2 │ 89 │ 0.86 │ 166.654 │ 5.56 │ 21:15:00 │ 89 0 0 100 │
|
||||
│ Drv13_BTC/USDT_6 │ 8 │ 1.71 │ 116.713 │ 3.89 │ 6 days, 18:23:00 │ 8 0 0 100 │
|
||||
│ Drv13_BTC/USDT_5 │ 11 │ 1.55 │ 116.274 │ 3.88 │ 2 days, 23:30:00 │ 11 0 0 100 │
|
||||
│ Drv3_XRP/USDT_2 │ 30 │ 1.67 │ 93.429 │ 3.11 │ 2 days, 8:33:00 │ 30 0 0 100 │
|
||||
│ Drv3_DOGE/USDT_1 │ 60 │ 1.9 │ 87.555 │ 2.92 │ 1:50:00 │ 60 0 0 100 │
|
||||
│ Drv3_DOGE/USDT_3 │ 14 │ 2.14 │ 83.161 │ 2.77 │ 6 days, 12:10:00 │ 14 0 0 100 │
|
||||
│ Drv3_XRP/USDT_1 │ 56 │ 1.81 │ 82.770 │ 2.76 │ 5:13:00 │ 56 0 0 100 │
|
||||
│ Drv3_BTC/USDT_3 │ 27 │ 0.86 │ 81.397 │ 2.71 │ 1 day, 6:53:00 │ 27 0 0 100 │
|
||||
│ Drv24_DOGE/USDT_8 │ 1 │ 8.9 │ 78.446 │ 2.61 │ 40 days, 5:05:00 │ 1 0 0 100 │
|
||||
│ Drv24_SOL/USDT_9 │ 1 │ 7.72 │ 74.152 │ 2.47 │ 83 days, 18:30:00 │ 1 0 0 100 │
|
||||
│ Drv13_BTC/USDT_4 │ 14 │ 1.06 │ 71.372 │ 2.38 │ 2 days, 15:36:00 │ 14 0 0 100 │
|
||||
│ Drv3_DOGE/USDT_2 │ 24 │ 1.79 │ 70.935 │ 2.36 │ 5:17:00 │ 24 0 0 100 │
|
||||
│ Drv13_DOGE/USDT_6 │ 3 │ 3.92 │ 68.603 │ 2.29 │ 7 days, 19:27:00 │ 3 0 0 100 │
|
||||
│ Drv24_BTC/USDT_11 │ 1 │ 3.5 │ 66.946 │ 2.23 │ 25 days, 6:00:00 │ 1 0 0 100 │
|
||||
│ Drv24_XRP/USDT_8 │ 1 │ 6.67 │ 66.930 │ 2.23 │ 121 days, 8:00:00 │ 1 0 0 100 │
|
||||
│ Drv13_ETH/USDT_6 │ 2 │ 5.02 │ 63.737 │ 2.12 │ 88 days, 5:50:00 │ 2 0 0 100 │
|
||||
│ Drv24_BTC/USDT_7 │ 3 │ 2.1 │ 61.808 │ 2.06 │ 7 days, 12:20:00 │ 3 0 0 100 │
|
||||
│ Drv3_SOL/USDT_1 │ 56 │ 1.37 │ 61.038 │ 2.03 │ 3:19:00 │ 56 0 0 100 │
|
||||
│ Drv3_XRP/USDT_3 │ 16 │ 1.37 │ 60.439 │ 2.01 │ 1 day, 0:28:00 │ 16 0 0 100 │
|
||||
│ Drv3_SOL/USDT_3 │ 16 │ 1.32 │ 55.885 │ 1.86 │ 1 day, 0:05:00 │ 16 0 0 100 │
|
||||
│ Drv3_ETH/USDT_3 │ 13 │ 1.36 │ 47.989 │ 1.6 │ 2 days, 2:17:00 │ 13 0 0 100 │
|
||||
│ Drv13_DOGE/USDT_5 │ 3 │ 2.73 │ 39.290 │ 1.31 │ 2 days, 22:28:00 │ 3 0 0 100 │
|
||||
│ Drv24_DOGE/USDT_7 │ 1 │ 5.25 │ 37.276 │ 1.24 │ 7 days, 8:30:00 │ 1 0 0 100 │
|
||||
│ Drv24_SOL/USDT_8 │ 1 │ 4.08 │ 37.269 │ 1.24 │ 27 days, 17:55:00 │ 1 0 0 100 │
|
||||
│ Drv3_ETH/USDT_1 │ 50 │ 0.93 │ 35.934 │ 1.2 │ 4:02:00 │ 50 0 0 100 │
|
||||
│ Drv13_SOL/USDT_4 │ 2 │ 3.63 │ 29.424 │ 0.98 │ 28 days, 21:55:00 │ 2 0 0 100 │
|
||||
│ Drv3_ETH/USDT_2 │ 12 │ 1.41 │ 28.425 │ 0.95 │ 1 day, 10:20:00 │ 12 0 0 100 │
|
||||
│ Drv3_SOL/USDT_2 │ 14 │ 1.08 │ 25.377 │ 0.85 │ 7:22:00 │ 14 0 0 100 │
|
||||
│ Drv24_BTC/USDT_8 │ 1 │ 1.69 │ 24.949 │ 0.83 │ 5 days, 1:45:00 │ 1 0 0 100 │
|
||||
│ Drv13_DOGE/USDT_4 │ 3 │ 2.05 │ 22.757 │ 0.76 │ 19 days, 6:08:00 │ 3 0 0 100 │
|
||||
│ Drv13_XRP/USDT_6 │ 1 │ 2.85 │ 17.834 │ 0.59 │ 2 days, 21:10:00 │ 1 0 0 100 │
|
||||
│ Drv13_XRP/USDT_5 │ 1 │ 1.44 │ 6.467 │ 0.22 │ 4 days, 13:00:00 │ 1 0 0 100 │
|
||||
│ Drv13_ETH/USDT_4 │ 1 │ 1.81 │ 6.269 │ 0.21 │ 9 days, 6:30:00 │ 1 0 0 100 │
|
||||
│ Drv13_XRP/USDT_4 │ 1 │ 1.38 │ 4.889 │ 0.16 │ 1 day, 5:55:00 │ 1 0 0 100 │
|
||||
│ force_exit │ 2 │ -8.76 │ -69.561 │ -2.32 │ 54 days, 16:52:00 │ 0 0 2 0 │
|
||||
│ TOTAL │ 737 │ 1.34 │ 2635.892 │ 87.86 │ 2 days, 4:08:00 │ 735 0 2 99.7 │
|
||||
└────────────────────┴───────┴──────────────┴─────────────────┴──────────────┴───────────────────┴────────────────────────┘
|
||||
MIXED TAG STATS
|
||||
┏━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┓
|
||||
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┓
|
||||
┃ Enter Tag ┃ Exit Reason ┃ Trades ┃ Avg Profit % ┃ Tot Profit USDT ┃ Tot Profit % ┃ Avg Duration ┃ Win Draw Loss Win% ┃
|
||||
┡━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━┩
|
||||
│ ('smth', 'Drv_1') │ │ 143 │ 1.16 │ 143.815 │ 4.79 │ 4:26:00 │ 143 0 0 100 │
|
||||
│ ('smth', 'Drv_2') │ │ 61 │ 1.0 │ 114.893 │ 3.83 │ 18:19:00 │ 61 0 0 100 │
|
||||
│ ('smth', 'Drv_9') │ │ 2 │ 2.65 │ 78.810 │ 2.63 │ 7 days, 7:22:00 │ 2 0 0 100 │
|
||||
│ ('smth', 'Drv_3') │ │ 27 │ 0.91 │ 73.753 │ 2.46 │ 1 day, 21:31:00 │ 27 0 0 100 │
|
||||
│ ('smth', 'Drv_7') │ │ 4 │ 1.59 │ 59.674 │ 1.99 │ 18 days, 2:38:00 │ 4 0 0 100 │
|
||||
│ ('smth', 'Drv_4') │ │ 9 │ 1.4 │ 56.857 │ 1.9 │ 3 days, 17:07:00 │ 9 0 0 100 │
|
||||
│ ('smth', 'Drv_5') │ │ 2 │ 1.58 │ 26.858 │ 0.9 │ 1 day, 6:22:00 │ 2 0 0 100 │
|
||||
│ ('smth', 'Drv_13') │ │ 1 │ 1.04 │ 18.124 │ 0.6 │ 122 days, 13:40:00 │ 1 0 0 100 │
|
||||
│ ('smth', 'Drv_6') │ │ 4 │ 0.62 │ 17.956 │ 0.6 │ 8 days, 15:32:00 │ 4 0 0 100 │
|
||||
│ ('smth', 'force_exit') │ │ 3 │ -6.95 │ -51.286 │ -1.71 │ 34 days, 17:55:00 │ 0 0 3 0 │
|
||||
│ TOTAL │ │ 256 │ 1.02 │ 539.455 │ 17.98 │ 1 day, 23:40:00 │ 253 0 3 98.8 │
|
||||
└────────────────────────┴─────────────┴────────┴──────────────┴─────────────────┴──────────────┴────────────────────┴────────────────────────┘
|
||||
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━┩
|
||||
│ ('smth', 'Drv24_BTC/USDT_9') │ │ 6 │ 3.11 │ 270.369 │ 9.01 │ 22 days, 4:49:00 │ 6 0 0 100 │
|
||||
│ ('smth', 'Drv24_DOGE/USDT_14') │ │ 1 │ 13.03 │ 260.851 │ 8.7 │ 110 days, 4:15:00 │ 1 0 0 100 │
|
||||
│ ('smth', 'Drv3_BTC/USDT_1') │ │ 191 │ 0.92 │ 181.843 │ 6.06 │ 6:45:00 │ 191 0 0 100 │
|
||||
│ ('smth', 'Drv3_BTC/USDT_2') │ │ 89 │ 0.86 │ 166.654 │ 5.56 │ 21:15:00 │ 89 0 0 100 │
|
||||
│ ('smth', 'Drv13_BTC/USDT_6') │ │ 8 │ 1.71 │ 116.713 │ 3.89 │ 6 days, 18:23:00 │ 8 0 0 100 │
|
||||
│ ('smth', 'Drv13_BTC/USDT_5') │ │ 11 │ 1.55 │ 116.274 │ 3.88 │ 2 days, 23:30:00 │ 11 0 0 100 │
|
||||
│ ('smth', 'Drv3_XRP/USDT_2') │ │ 30 │ 1.67 │ 93.429 │ 3.11 │ 2 days, 8:33:00 │ 30 0 0 100 │
|
||||
│ ('smth', 'Drv3_DOGE/USDT_1') │ │ 60 │ 1.9 │ 87.555 │ 2.92 │ 1:50:00 │ 60 0 0 100 │
|
||||
│ ('smth', 'Drv3_DOGE/USDT_3') │ │ 14 │ 2.14 │ 83.161 │ 2.77 │ 6 days, 12:10:00 │ 14 0 0 100 │
|
||||
│ ('smth', 'Drv3_XRP/USDT_1') │ │ 56 │ 1.81 │ 82.770 │ 2.76 │ 5:13:00 │ 56 0 0 100 │
|
||||
│ ('smth', 'Drv3_BTC/USDT_3') │ │ 27 │ 0.86 │ 81.397 │ 2.71 │ 1 day, 6:53:00 │ 27 0 0 100 │
|
||||
│ ('smth', 'Drv24_DOGE/USDT_8') │ │ 1 │ 8.9 │ 78.446 │ 2.61 │ 40 days, 5:05:00 │ 1 0 0 100 │
|
||||
│ ('smth', 'Drv24_SOL/USDT_9') │ │ 1 │ 7.72 │ 74.152 │ 2.47 │ 83 days, 18:30:00 │ 1 0 0 100 │
|
||||
│ ('smth', 'Drv13_BTC/USDT_4') │ │ 14 │ 1.06 │ 71.372 │ 2.38 │ 2 days, 15:36:00 │ 14 0 0 100 │
|
||||
│ ('smth', 'Drv3_DOGE/USDT_2') │ │ 24 │ 1.79 │ 70.935 │ 2.36 │ 5:17:00 │ 24 0 0 100 │
|
||||
│ ('smth', 'Drv13_DOGE/USDT_6') │ │ 3 │ 3.92 │ 68.603 │ 2.29 │ 7 days, 19:27:00 │ 3 0 0 100 │
|
||||
│ ('smth', 'Drv24_BTC/USDT_11') │ │ 1 │ 3.5 │ 66.946 │ 2.23 │ 25 days, 6:00:00 │ 1 0 0 100 │
|
||||
│ ('smth', 'Drv24_XRP/USDT_8') │ │ 1 │ 6.67 │ 66.930 │ 2.23 │ 121 days, 8:00:00 │ 1 0 0 100 │
|
||||
│ ('smth', 'Drv13_ETH/USDT_6') │ │ 2 │ 5.02 │ 63.737 │ 2.12 │ 88 days, 5:50:00 │ 2 0 0 100 │
|
||||
│ ('smth', 'Drv24_BTC/USDT_7') │ │ 3 │ 2.1 │ 61.808 │ 2.06 │ 7 days, 12:20:00 │ 3 0 0 100 │
|
||||
│ ('smth', 'Drv3_SOL/USDT_1') │ │ 56 │ 1.37 │ 61.038 │ 2.03 │ 3:19:00 │ 56 0 0 100 │
|
||||
│ ('smth', 'Drv3_XRP/USDT_3') │ │ 16 │ 1.37 │ 60.439 │ 2.01 │ 1 day, 0:28:00 │ 16 0 0 100 │
|
||||
│ ('smth', 'Drv3_SOL/USDT_3') │ │ 16 │ 1.32 │ 55.885 │ 1.86 │ 1 day, 0:05:00 │ 16 0 0 100 │
|
||||
│ ('smth', 'Drv3_ETH/USDT_3') │ │ 13 │ 1.36 │ 47.989 │ 1.6 │ 2 days, 2:17:00 │ 13 0 0 100 │
|
||||
│ ('smth', 'Drv13_DOGE/USDT_5') │ │ 3 │ 2.73 │ 39.290 │ 1.31 │ 2 days, 22:28:00 │ 3 0 0 100 │
|
||||
│ ('smth', 'Drv24_DOGE/USDT_7') │ │ 1 │ 5.25 │ 37.276 │ 1.24 │ 7 days, 8:30:00 │ 1 0 0 100 │
|
||||
│ ('smth', 'Drv24_SOL/USDT_8') │ │ 1 │ 4.08 │ 37.269 │ 1.24 │ 27 days, 17:55:00 │ 1 0 0 100 │
|
||||
│ ('smth', 'Drv3_ETH/USDT_1') │ │ 50 │ 0.93 │ 35.934 │ 1.2 │ 4:02:00 │ 50 0 0 100 │
|
||||
│ ('smth', 'Drv13_SOL/USDT_4') │ │ 2 │ 3.63 │ 29.424 │ 0.98 │ 28 days, 21:55:00 │ 2 0 0 100 │
|
||||
│ ('smth', 'Drv3_ETH/USDT_2') │ │ 12 │ 1.41 │ 28.425 │ 0.95 │ 1 day, 10:20:00 │ 12 0 0 100 │
|
||||
│ ('smth', 'Drv3_SOL/USDT_2') │ │ 14 │ 1.08 │ 25.377 │ 0.85 │ 7:22:00 │ 14 0 0 100 │
|
||||
│ ('smth', 'Drv24_BTC/USDT_8') │ │ 1 │ 1.69 │ 24.949 │ 0.83 │ 5 days, 1:45:00 │ 1 0 0 100 │
|
||||
│ ('smth', 'Drv13_DOGE/USDT_4') │ │ 3 │ 2.05 │ 22.757 │ 0.76 │ 19 days, 6:08:00 │ 3 0 0 100 │
|
||||
│ ('smth', 'Drv13_XRP/USDT_6') │ │ 1 │ 2.85 │ 17.834 │ 0.59 │ 2 days, 21:10:00 │ 1 0 0 100 │
|
||||
│ ('smth', 'Drv13_XRP/USDT_5') │ │ 1 │ 1.44 │ 6.467 │ 0.22 │ 4 days, 13:00:00 │ 1 0 0 100 │
|
||||
│ ('smth', 'Drv13_ETH/USDT_4') │ │ 1 │ 1.81 │ 6.269 │ 0.21 │ 9 days, 6:30:00 │ 1 0 0 100 │
|
||||
│ ('smth', 'Drv13_XRP/USDT_4') │ │ 1 │ 1.38 │ 4.889 │ 0.16 │ 1 day, 5:55:00 │ 1 0 0 100 │
|
||||
│ ('smth', 'force_exit') │ │ 2 │ -8.76 │ -69.561 │ -2.32 │ 54 days, 16:52:00 │ 0 0 2 0 │
|
||||
│ TOTAL │ │ 737 │ 1.34 │ 2635.892 │ 87.86 │ 2 days, 4:08:00 │ 735 0 2 99.7 │
|
||||
└────────────────────────────────┴─────────────┴────────┴──────────────┴─────────────────┴──────────────┴───────────────────┴────────────────────────┘
|
||||
WEEK BREAKDOWN
|
||||
┏━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━┳━━━━━━━┳━━━━━━━━┓
|
||||
┃ Week ┃ Tot Profit USDT ┃ Wins ┃ Draws ┃ Losses ┃
|
||||
┡━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━╇━━━━━━━╇━━━━━━━━┩
|
||||
│ 01/01/2024 │ 14.32 │ 16 │ 0 │ 0 │
|
||||
│ 08/01/2024 │ 23.915 │ 18 │ 0 │ 0 │
|
||||
│ 15/01/2024 │ 15.928 │ 6 │ 0 │ 0 │
|
||||
│ 22/01/2024 │ 0 │ 0 │ 0 │ 0 │
|
||||
│ 29/01/2024 │ 0 │ 0 │ 0 │ 0 │
|
||||
│ 05/02/2024 │ 76.666 │ 6 │ 0 │ 0 │
|
||||
│ 12/02/2024 │ 11.758 │ 12 │ 0 │ 0 │
|
||||
│ 19/02/2024 │ 6.07 │ 6 │ 0 │ 0 │
|
||||
│ 26/02/2024 │ 10.973 │ 6 │ 0 │ 0 │
|
||||
│ 04/03/2024 │ 245.287 │ 98 │ 0 │ 0 │
|
||||
│ 11/03/2024 │ 64.769 │ 19 │ 0 │ 0 │
|
||||
│ 18/03/2024 │ 82.933 │ 19 │ 0 │ 0 │
|
||||
│ 25/03/2024 │ 89.718 │ 10 │ 0 │ 0 │
|
||||
│ 01/04/2024 │ 7.623 │ 6 │ 0 │ 0 │
|
||||
│ 08/04/2024 │ 21.331 │ 8 │ 0 │ 0 │
|
||||
│ 15/04/2024 │ 8.295 │ 3 │ 0 │ 0 │
|
||||
│ 22/04/2024 │ 0 │ 0 │ 0 │ 0 │
|
||||
│ 29/04/2024 │ 0 │ 0 │ 0 │ 0 │
|
||||
│ 06/05/2024 │ 0 │ 0 │ 0 │ 0 │
|
||||
│ 13/05/2024 │ 0 │ 0 │ 0 │ 0 │
|
||||
│ 20/05/2024 │ 62.489 │ 7 │ 0 │ 0 │
|
||||
│ 27/05/2024 │ 41.937 │ 3 │ 0 │ 0 │
|
||||
│ 03/06/2024 │ 4.991 │ 2 │ 0 │ 0 │
|
||||
│ 10/06/2024 │ 2.395 │ 4 │ 0 │ 0 │
|
||||
│ 17/06/2024 │ 6.619 │ 1 │ 0 │ 0 │
|
||||
│ 24/06/2024 │ 0 │ 0 │ 0 │ 0 │
|
||||
│ 01/07/2024 │ 0 │ 0 │ 0 │ 0 │
|
||||
│ 08/07/2024 │ 0 │ 0 │ 0 │ 0 │
|
||||
│ 15/07/2024 │ 135.546 │ 31 │ 0 │ 0 │
|
||||
│ 22/07/2024 │ 77.355 │ 38 │ 0 │ 0 │
|
||||
│ 29/07/2024 │ 51.813 │ 23 │ 0 │ 0 │
|
||||
│ 05/08/2024 │ 7.914 │ 2 │ 0 │ 0 │
|
||||
│ 12/08/2024 │ 0 │ 0 │ 0 │ 0 │
|
||||
│ 19/08/2024 │ 0 │ 0 │ 0 │ 0 │
|
||||
│ 26/08/2024 │ 68.158 │ 3 │ 0 │ 0 │
|
||||
│ 02/09/2024 │ 0 │ 0 │ 0 │ 0 │
|
||||
│ 09/09/2024 │ 0 │ 0 │ 0 │ 0 │
|
||||
│ 16/09/2024 │ 33.665 │ 1 │ 0 │ 0 │
|
||||
│ 23/09/2024 │ 22.299 │ 10 │ 0 │ 0 │
|
||||
│ 30/09/2024 │ 7.154 │ 7 │ 0 │ 0 │
|
||||
│ 07/10/2024 │ 0 │ 0 │ 0 │ 0 │
|
||||
│ 14/10/2024 │ 13.087 │ 2 │ 0 │ 0 │
|
||||
│ 21/10/2024 │ 85.043 │ 9 │ 0 │ 0 │
|
||||
│ 28/10/2024 │ 10.931 │ 7 │ 0 │ 0 │
|
||||
│ 04/11/2024 │ 13.173 │ 9 │ 0 │ 0 │
|
||||
│ 11/11/2024 │ 159.164 │ 66 │ 0 │ 0 │
|
||||
│ 18/11/2024 │ 73.484 │ 28 │ 0 │ 0 │
|
||||
│ 25/11/2024 │ 125.227 │ 50 │ 0 │ 0 │
|
||||
│ 02/12/2024 │ 47.14 │ 10 │ 0 │ 0 │
|
||||
│ 09/12/2024 │ 88.831 │ 34 │ 0 │ 0 │
|
||||
│ 16/12/2024 │ 40.391 │ 17 │ 0 │ 0 │
|
||||
│ 23/12/2024 │ 1.685 │ 3 │ 0 │ 0 │
|
||||
│ 30/12/2024 │ 0 │ 0 │ 0 │ 0 │
|
||||
│ 06/01/2025 │ 50.967 │ 1 │ 0 │ 0 │
|
||||
│ 13/01/2025 │ 0 │ 0 │ 0 │ 0 │
|
||||
│ 20/01/2025 │ 204.602 │ 35 │ 0 │ 0 │
|
||||
│ 27/01/2025 │ 58.166 │ 31 │ 0 │ 0 │
|
||||
│ 03/02/2025 │ 34.299 │ 5 │ 0 │ 0 │
|
||||
│ 10/02/2025 │ 0 │ 0 │ 0 │ 0 │
|
||||
│ 17/02/2025 │ 0 │ 0 │ 0 │ 0 │
|
||||
│ 24/02/2025 │ 8.779 │ 1 │ 0 │ 0 │
|
||||
│ 03/03/2025 │ 54.377 │ 2 │ 0 │ 0 │
|
||||
│ 10/03/2025 │ 45.144 │ 10 │ 0 │ 0 │
|
||||
│ 17/03/2025 │ 38.597 │ 4 │ 0 │ 0 │
|
||||
│ 24/03/2025 │ 11.301 │ 8 │ 0 │ 0 │
|
||||
│ 31/03/2025 │ 0.936 │ 1 │ 0 │ 0 │
|
||||
│ 07/04/2025 │ 12.099 │ 1 │ 0 │ 0 │
|
||||
│ 14/04/2025 │ 28.46 │ 4 │ 0 │ 0 │
|
||||
│ 21/04/2025 │ 10.96 │ 7 │ 0 │ 0 │
|
||||
│ 28/04/2025 │ 8.521 │ 8 │ 0 │ 0 │
|
||||
│ 05/05/2025 │ 3.741 │ 4 │ 0 │ 0 │
|
||||
│ 12/05/2025 │ 270.52 │ 10 │ 0 │ 0 │
|
||||
│ 19/05/2025 │ -65.655 │ 3 │ 0 │ 2 │
|
||||
└────────────┴─────────────────┴──────┴───────┴────────┘
|
||||
SUMMARY METRICS
|
||||
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━┓
|
||||
┃ Metric ┃ Value ┃
|
||||
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━┩
|
||||
│ Backtesting from │ 2025-01-01 00:00:00 │
|
||||
│ Backtesting to │ 2025-07-14 00:00:00 │
|
||||
│ Backtesting from │ 2024-01-01 00:00:00 │
|
||||
│ Backtesting to │ 2025-05-14 00:00:00 │
|
||||
│ Trading Mode │ Spot │
|
||||
│ Max open trades │ 5 │
|
||||
│ │ │
|
||||
│ Total/Daily Avg Trades │ 256 / 1.32 │
|
||||
│ Total/Daily Avg Trades │ 737 / 1.48 │
|
||||
│ Starting balance │ 3000 USDT │
|
||||
│ Final balance │ 3539.455 USDT │
|
||||
│ Absolute profit │ 539.455 USDT │
|
||||
│ Total profit % │ 17.98% │
|
||||
│ CAGR % │ 36.49% │
|
||||
│ Sortino │ 4.39 │
|
||||
│ Sharpe │ 9.28 │
|
||||
│ Calmar │ 125.33 │
|
||||
│ SQN │ 5.88 │
|
||||
│ Profit factor │ 11.52 │
|
||||
│ Expectancy (Ratio) │ 2.11 (0.12) │
|
||||
│ Avg. daily profit % │ 0.09% │
|
||||
│ Avg. stake amount │ 197.758 USDT │
|
||||
│ Total trade volume │ 101995.528 USDT │
|
||||
│ Final balance │ 5635.892 USDT │
|
||||
│ Absolute profit │ 2635.892 USDT │
|
||||
│ Total profit % │ 87.86% │
|
||||
│ CAGR % │ 58.60% │
|
||||
│ Sortino │ 2.93 │
|
||||
│ Sharpe │ 8.04 │
|
||||
│ Calmar │ 275.91 │
|
||||
│ Profit factor │ 38.89 │
|
||||
│ Expectancy (Ratio) │ 3.58 (0.10) │
|
||||
│ Avg. daily profit % │ 0.18% │
|
||||
│ Avg. stake amount │ 199.501 USDT │
|
||||
│ Total trade volume │ 147032.417 USDT │
|
||||
│ │ │
|
||||
│ Best Pair │ BTC/USDT 11.32% │
|
||||
│ Worst Pair │ SOL/USDT 0.86% │
|
||||
│ Best trade │ DOGE/USDT 8.10% │
|
||||
│ Worst trade │ SOL/USDT -13.37% │
|
||||
│ Best day │ 66.865 USDT │
|
||||
│ Worst day │ -50.726 USDT │
|
||||
│ Days win/draw/lose │ 67 / 127 / 1 │
|
||||
│ Avg. Duration Winners │ 1 day, 14:21:00 │
|
||||
│ Avg. Duration Loser │ 34 days, 17:55:00 │
|
||||
│ Max Consecutive Wins / Loss │ 253 / 3 │
|
||||
│ Best Pair │ BTC/USDT 38.60% │
|
||||
│ Worst Pair │ ETH/USDT 6.08% │
|
||||
│ Best trade │ DOGE/USDT 13.03% │
|
||||
│ Worst trade │ SOL/USDT -17.25% │
|
||||
│ Best day │ 262.294 USDT │
|
||||
│ Worst day │ -69.561 USDT │
|
||||
│ Days win/draw/lose │ 203 / 296 / 1 │
|
||||
│ Avg. Duration Winners │ 2 days, 0:42:00 │
|
||||
│ Avg. Duration Loser │ 54 days, 16:52:00 │
|
||||
│ Max Consecutive Wins / Loss │ 735 / 2 │
|
||||
│ Rejected Entry signals │ 0 │
|
||||
│ Entry/Exit Timeouts │ 0 / 0 │
|
||||
│ │ │
|
||||
│ Min balance │ 3000.41 USDT │
|
||||
│ Max balance │ 3590.74 USDT │
|
||||
│ Max % of account underwater │ 1.41% │
|
||||
│ Absolute Drawdown (Account) │ 1.41% │
|
||||
│ Absolute Drawdown │ 50.726 USDT │
|
||||
│ Drawdown high │ 590.18 USDT │
|
||||
│ Drawdown low │ 539.455 USDT │
|
||||
│ Drawdown Start │ 2025-07-07 14:15:00 │
|
||||
│ Drawdown End │ 2025-07-14 00:00:00 │
|
||||
│ Market change │ -3.39% │
|
||||
│ Min balance │ 3000.485 USDT │
|
||||
│ Max balance │ 5705.454 USDT │
|
||||
│ Max % of account underwater │ 1.22% │
|
||||
│ Absolute Drawdown (Account) │ 1.22% │
|
||||
│ Absolute Drawdown │ 69.561 USDT │
|
||||
│ Drawdown high │ 2705.454 USDT │
|
||||
│ Drawdown low │ 2635.892 USDT │
|
||||
│ Drawdown Start │ 2025-05-13 21:05:00 │
|
||||
│ Drawdown End │ 2025-05-14 00:00:00 │
|
||||
│ Market change │ 143.04% │
|
||||
└─────────────────────────────┴─────────────────────┘
|
||||
|
||||
Backtested 2025-01-01 00:00:00 -> 2025-07-14 00:00:00 | Max open trades : 5
|
||||
Backtested 2024-01-01 00:00:00 -> 2025-05-14 00:00:00 | Max open trades : 5
|
||||
STRATEGY SUMMARY
|
||||
┏━━━━━━━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━┓
|
||||
┃ Strategy ┃ Trades ┃ Avg Profit % ┃ Tot Profit USDT ┃ Tot Profit % ┃ Avg Duration ┃ Win Draw Loss Win% ┃ Drawdown ┃
|
||||
┡━━━━━━━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━┩
|
||||
│ Zeus_8_3_2_B_4_2 │ 256 │ 1.02 │ 539.455 │ 17.98 │ 1 day, 23:40:00 │ 253 0 3 98.8 │ 50.726 USDT 1.41% │
|
||||
│ Zeus_8_3_2_B_4_2 │ 737 │ 1.34 │ 2635.892 │ 87.86 │ 2 days, 4:08:00 │ 735 0 2 99.7 │ 69.561 USDT 1.22% │
|
||||
└──────────────────┴────────┴──────────────┴─────────────────┴──────────────┴─────────────────┴────────────────────────┴────────────────────┘
|
||||
|
||||
Reference in New Issue
Block a user