Compare commits
16 Commits
123804b5f3
...
Multiple_p
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a925a28389 | ||
|
|
3302266b4a | ||
|
|
7954c518bd | ||
|
|
a599160501 | ||
|
|
8b030f46f0 | ||
|
|
2a7dd0beb4 | ||
|
|
5b1e8bede4 | ||
|
|
1bc5a38796 | ||
|
|
812aa01135 | ||
|
|
4b51cce9c7 | ||
|
|
12be7e0441 | ||
|
|
f1bad7949d | ||
|
|
2885cf05b1 | ||
|
|
5ce48130f4 | ||
|
|
1656ab695a | ||
|
|
a04b07f7ea |
31
Empty.json
31
Empty.json
@@ -14,12 +14,7 @@
|
||||
"trailing_only_offset_is_reached": false
|
||||
},
|
||||
"max_open_trades": {
|
||||
"max_open_trades": 20
|
||||
},
|
||||
"protection": {
|
||||
"b30_indicateur": "sma36",
|
||||
"baisse": 0.33,
|
||||
"drop_from_last_entry": -0.03
|
||||
"max_open_trades": 1
|
||||
},
|
||||
"buy": {
|
||||
"buy_deriv1_sma12d": -0.04,
|
||||
@@ -30,17 +25,25 @@
|
||||
"buy_deriv2_sma60": -0.001,
|
||||
"buy_longue": 160,
|
||||
"buy_longue_derive": "sma80_deriv1_1d",
|
||||
"start_bear_deriv1": -0.004,
|
||||
"start_bear_deriv2": 0.002,
|
||||
"start_bear_indicator": "sma80",
|
||||
"start_bull_deriv1": 0.001,
|
||||
"start_bull_deriv2": -0.002,
|
||||
"start_bull_indicator": "sma120"
|
||||
"start_bear_deriv1": 0.003,
|
||||
"start_bear_deriv2": 0.003,
|
||||
"start_bear_indicator": "sma24",
|
||||
"start_bull_deriv1": -0.005,
|
||||
"start_bull_deriv2": 0.0,
|
||||
"start_bull_indicator": "sma3"
|
||||
},
|
||||
"protection": {
|
||||
"drop_from_last_entry": -0.03,
|
||||
"mises": 1
|
||||
},
|
||||
"sell": {
|
||||
"sell_score_indicator": "sma24_score"
|
||||
"b30_indicateur": "sma36",
|
||||
"baisse": 0.25,
|
||||
"sell_force_sell": -0.169,
|
||||
"sell_indicator": "sma3",
|
||||
"sell_score_indicator": "sma3_score"
|
||||
}
|
||||
},
|
||||
"ft_stratparam_v": 1,
|
||||
"export_time": "2026-02-28 17:28:20.867470+00:00"
|
||||
"export_time": "2026-03-07 11:58:51.712499+00:00"
|
||||
}
|
||||
106
Empty.py
106
Empty.py
@@ -216,8 +216,12 @@ class Empty(IStrategy):
|
||||
# baisses = list()
|
||||
# for i in range(0, 0.5, 0.05):
|
||||
# baisses.append(i)
|
||||
baisse = DecimalParameter(0, 0.5, decimals=2, default=0.3, space='protection', optimize=True, load=True)
|
||||
b30_indicateur = CategoricalParameter(sma_indicators_h, default="sma36", space='protection', optimize=True, load=True)
|
||||
mises = IntParameter(1, 10, default=1, space='protection')
|
||||
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)
|
||||
|
||||
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)
|
||||
|
||||
# lost_indicator = CategoricalParameter(sma_deriv1_indicators, default="sma5_deriv1", space='protection')
|
||||
|
||||
@@ -250,10 +254,10 @@ class Empty(IStrategy):
|
||||
# sl_max = self.wallets.get_available_stake_amount() / 2
|
||||
#
|
||||
# amount = sl_min + (1 - range_pos) * (sl_max - sl_min)
|
||||
if last_candle['enter_tag'] == 'fall':
|
||||
if last_candle['enter_tag'] in ['fall', 'bear', 'Force', 'Range-']:
|
||||
amount = self.wallets.get_available_stake_amount() / 5
|
||||
else:
|
||||
amount = self.wallets.get_available_stake_amount() # / (2 * self.pairs[pair]['count_of_lost'] + 1)
|
||||
amount = self.wallets.get_available_stake_amount() / self.mises.value # / (2 * self.pairs[pair]['count_of_lost'] + 1)
|
||||
|
||||
# factor = 1
|
||||
#
|
||||
@@ -364,13 +368,16 @@ class Empty(IStrategy):
|
||||
last_candle_2 = dataframe.iloc[-2].squeeze()
|
||||
last_candle_3 = dataframe.iloc[-3].squeeze()
|
||||
|
||||
# if (last_candle['has_cross_min_6'] and last_candle['sma60_deriv1'] > 0) or (last_candle['sma12_inv_1d']):
|
||||
# self.pairs[pair]['count_of_lost'] = 0
|
||||
|
||||
condition = False if self.pairs[pair]['count_of_lost'] >= 1 \
|
||||
and (last_candle['sma12_deriv1_1d'] < 0.001 \
|
||||
or last_candle['sma12_deriv2_1d'] < 0.001) else True
|
||||
|
||||
if entry_tag == 'Range-':
|
||||
self.pairs[pair]['count_of_lost'] = 0
|
||||
if entry_tag == 'Force':
|
||||
if self.pairs[pair]['count_of_lost'] >= 1:
|
||||
self.pairs[pair]['count_of_lost'] = 0
|
||||
condition = False
|
||||
else:
|
||||
condition = False if self.pairs[pair]['count_of_lost'] >= 1 \
|
||||
and (last_candle['sma12_deriv1_1d'] < 0.001 or last_candle['sma12_deriv2_1d'] < 0.001) \
|
||||
and entry_tag != 'dist' else True
|
||||
reason = ''
|
||||
if not condition:
|
||||
reason = 'lost'
|
||||
@@ -545,15 +552,15 @@ class Empty(IStrategy):
|
||||
# buys=count_of_buys,
|
||||
# stake=0
|
||||
# )
|
||||
# if self.pairs[pair]['current_trade'].enter_tag == 'fall':
|
||||
# if current_profit < - 0.02 and last_candle[f"close"] <= last_candle['sma60'] and self.wallets.get_available_stake_amount() < 50:
|
||||
# self.pairs[pair]['force_sell'] = True
|
||||
# return 'sma60'
|
||||
# else:
|
||||
|
||||
if current_profit < - 0.02 and last_candle[f"close"] <= last_candle['sma60']:
|
||||
self.pairs[pair]['force_sell'] = True
|
||||
return 'sma60'
|
||||
if self.pairs[pair]['current_trade'].enter_tag in ['bear', 'Force', 'Range-']:
|
||||
if current_profit < - 0.02 and last_candle[f"close"] <= last_candle['sma60'] and self.wallets.get_available_stake_amount() < 50:
|
||||
self.pairs[pair]['force_sell'] = True
|
||||
return 'smaBF'
|
||||
else:
|
||||
if current_profit < self.sell_force_sell.value \
|
||||
and last_candle[f"close"] <= last_candle[self.sell_indicator.value]:
|
||||
self.pairs[pair]['force_sell'] = True
|
||||
return 'sma'
|
||||
|
||||
if profit > max(5, expected_profit) and \
|
||||
(baisse > self.baisse.value and last_candle[f"close"] <= last_candle[self.b30_indicateur.value]) \
|
||||
@@ -561,6 +568,10 @@ class Empty(IStrategy):
|
||||
self.pairs[pair]['force_sell'] = True
|
||||
return 'B30'
|
||||
|
||||
# if profit > max(5, expected_profit) and last_candle['sma5_deriv1_1d'] < 0 and baisse > 0.15:
|
||||
# self.pairs[pair]['force_sell'] = True
|
||||
# return 'Drv5d'
|
||||
|
||||
# if last_candle['range_pos'] > 0.05 and current_profit < - last_candle['range_pos'] /4 : #last_candle['cross_sma60']:
|
||||
# self.pairs[pair]['force_sell'] = True
|
||||
# return 'Range'
|
||||
@@ -738,8 +749,8 @@ class Empty(IStrategy):
|
||||
# #####################################################################################
|
||||
# CA MONTE !!
|
||||
# #####################################################################################
|
||||
# conditions.append(dataframe[f"{self.start_bull_indicator.value}_deriv1_1d" ] > self.start_bull_deriv1.value)
|
||||
# conditions.append(dataframe[f"{self.start_bull_indicator.value}_deriv2_1d"] > self.start_bull_deriv2.value)
|
||||
conditions.append(dataframe[f"{self.start_bull_indicator.value}_deriv1_1d" ] > self.start_bull_deriv1.value)
|
||||
conditions.append(dataframe[f"{self.start_bull_indicator.value}_deriv2_1d"] > self.start_bull_deriv2.value)
|
||||
conditions.append(dataframe['sma12_deriv1'] > self.buy_deriv1_sma60.value)
|
||||
conditions.append(dataframe['sma5_deriv1_1d'] > self.buy_deriv1_sma5d.value)
|
||||
conditions.append(dataframe['sma12_deriv1_1d'] > self.buy_deriv1_sma12d.value)
|
||||
@@ -769,6 +780,29 @@ class Empty(IStrategy):
|
||||
['enter_long', 'enter_tag']
|
||||
] = (1, 'bull')
|
||||
|
||||
# #####################################################################################
|
||||
# conditions = list()
|
||||
# conditions.append(dataframe['dist_sma200_1d'] < -0.05)
|
||||
# conditions.append(dataframe['sma12_inv'] == 1)
|
||||
# # conditions.append(dataframe['sma100_deriv1_1d'] > 0)
|
||||
# if conditions:
|
||||
# dataframe.loc[
|
||||
# reduce(lambda x, y: x & y, conditions),
|
||||
# ['enter_long', 'enter_tag']
|
||||
# ] = (1, 'dist')
|
||||
|
||||
# #####################################################################################
|
||||
conditions = list()
|
||||
conditions.append(dataframe['close'] < dataframe['sma100_1d'])
|
||||
conditions.append(dataframe['mid_smooth12'] > dataframe['mid_smooth12'].shift(1))
|
||||
conditions.append(dataframe['sma100_deriv1_1d'] > 0)
|
||||
conditions.append(dataframe[f"range_pos"] < 0.01)
|
||||
# if conditions:
|
||||
# dataframe.loc[
|
||||
# reduce(lambda x, y: x & y, conditions),
|
||||
# ['enter_long', 'enter_tag']
|
||||
# ] = (1, 'dist')
|
||||
|
||||
# #####################################################################################
|
||||
# CA BAISSE !!
|
||||
# "buy": {
|
||||
@@ -831,7 +865,15 @@ class Empty(IStrategy):
|
||||
# ['enter_long', 'enter_tag']
|
||||
# ] = (1, 'cross_min')
|
||||
|
||||
# conditions = list()
|
||||
conditions = list()
|
||||
conditions.append(dataframe['sma12_deriv1'] > 0.00)
|
||||
conditions.append(dataframe['sma60_deriv1'] > 0.0)
|
||||
conditions.append(dataframe['sma5_deriv1_1d'] > 0.0)
|
||||
conditions.append(dataframe['sma12_deriv1_1d'] > 0.0)
|
||||
conditions.append(dataframe['sma24_deriv1_1d'] > 0.0)
|
||||
conditions.append(dataframe['sma100_deriv1_1d'] > 0.0)
|
||||
conditions.append(dataframe[f"range_pos"] < 0.025)
|
||||
# conditions.append(dataframe['sma12_deriv1_1d'] > 0.0)
|
||||
# # conditions.append(dataframe['close_1d'] < dataframe[f'sma{self.buy_longue.value}_1d'])
|
||||
# # conditions.append(dataframe['has_cross_min'].rolling(6).max() == 1)
|
||||
# # conditions.append(dataframe['mid_smooth5'] > dataframe['mid_smooth5'].shift(1))
|
||||
@@ -840,7 +882,23 @@ class Empty(IStrategy):
|
||||
# dataframe.loc[
|
||||
# reduce(lambda x, y: x & y, conditions),
|
||||
# ['enter_long', 'enter_tag']
|
||||
# ] = (1, 'fall')
|
||||
# ] = (1, 'Rise')
|
||||
|
||||
# conditions = list()
|
||||
# conditions.append(dataframe['has_cross_min_6'] == True)
|
||||
# conditions.append(dataframe['min36'] == dataframe['min36'].shift(3))
|
||||
# dataframe.loc[
|
||||
# reduce(lambda x, y: x & y, conditions),
|
||||
# ['enter_long', 'enter_tag']
|
||||
# ] = (1, 'Force')
|
||||
|
||||
# conditions = list()
|
||||
# conditions.append(dataframe['range_pos'] < -0.03)
|
||||
# conditions.append(dataframe['min36'] == dataframe['min36'].shift(3))
|
||||
# dataframe.loc[
|
||||
# reduce(lambda x, y: x & y, conditions),
|
||||
# ['enter_long', 'enter_tag']
|
||||
# ] = (1, 'Range-')
|
||||
|
||||
return dataframe
|
||||
|
||||
|
||||
32
Empty5m.json
Normal file
32
Empty5m.json
Normal file
@@ -0,0 +1,32 @@
|
||||
{
|
||||
"strategy_name": "Empty5m",
|
||||
"params": {
|
||||
"roi": {
|
||||
"0": 5
|
||||
},
|
||||
"stoploss": {
|
||||
"stoploss": -1.0
|
||||
},
|
||||
"trailing": {
|
||||
"trailing_stop": false,
|
||||
"trailing_stop_positive": null,
|
||||
"trailing_stop_positive_offset": 0.0,
|
||||
"trailing_only_offset_is_reached": false
|
||||
},
|
||||
"max_open_trades": {
|
||||
"max_open_trades": 20
|
||||
},
|
||||
"sell": {
|
||||
"b30_indicateur": "sma36",
|
||||
"baisse": 0.3,
|
||||
"sell_force_sell": -0.03,
|
||||
"sell_indicator": "sma36"
|
||||
},
|
||||
"protection": {
|
||||
"drop_from_last_entry": -0.01,
|
||||
"mises_bull": 4
|
||||
}
|
||||
},
|
||||
"ft_stratparam_v": 1,
|
||||
"export_time": "2026-03-07 20:20:17.895644+00:00"
|
||||
}
|
||||
1452
Empty5m.py
Normal file
1452
Empty5m.py
Normal file
File diff suppressed because it is too large
Load Diff
1218
EmptyAI.py
Normal file
1218
EmptyAI.py
Normal file
File diff suppressed because it is too large
Load Diff
32
EmptyShort.json
Normal file
32
EmptyShort.json
Normal file
@@ -0,0 +1,32 @@
|
||||
{
|
||||
"strategy_name": "EmptyShort",
|
||||
"params": {
|
||||
"roi": {
|
||||
"0": 5
|
||||
},
|
||||
"trailing": {
|
||||
"trailing_stop": false,
|
||||
"trailing_stop_positive": null,
|
||||
"trailing_stop_positive_offset": 0.0,
|
||||
"trailing_only_offset_is_reached": false
|
||||
},
|
||||
"max_open_trades": {
|
||||
"max_open_trades": 20
|
||||
},
|
||||
"sell": {
|
||||
"b30_indicateur": "sma24",
|
||||
"baisse": 0.2,
|
||||
"sell_force_sell": -0.02,
|
||||
"sell_indicator": "sma36"
|
||||
},
|
||||
"protection": {
|
||||
"drop_from_last_entry": 0.0,
|
||||
"mises_bull": 4
|
||||
},
|
||||
"stoploss": {
|
||||
"stoploss": -0.02
|
||||
}
|
||||
},
|
||||
"ft_stratparam_v": 1,
|
||||
"export_time": "2026-03-29 18:29:54.986316+00:00"
|
||||
}
|
||||
1419
EmptyShort.py
Normal file
1419
EmptyShort.py
Normal file
File diff suppressed because it is too large
Load Diff
188
EmptyShort.txt
Normal file
188
EmptyShort.txt
Normal file
@@ -0,0 +1,188 @@
|
||||
BACKTESTING REPORT
|
||||
┏━━━━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┓
|
||||
┃ Pair ┃ Trades ┃ Avg Profit % ┃ Tot Profit USDT ┃ Tot Profit % ┃ Avg Duration ┃ Win Draw Loss Win% ┃
|
||||
┡━━━━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━┩
|
||||
│ BTC/USDT:USDT │ 54 │ 0.75 │ 422.136 │ 42.21 │ 1 day, 5:07:00 │ 25 0 29 46.3 │
|
||||
│ TOTAL │ 54 │ 0.75 │ 422.136 │ 42.21 │ 1 day, 5:07:00 │ 25 0 29 46.3 │
|
||||
└───────────────┴────────┴──────────────┴─────────────────┴──────────────┴────────────────┴────────────────────────┘
|
||||
LEFT OPEN TRADES REPORT
|
||||
┏━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┓
|
||||
┃ Pair ┃ Trades ┃ Avg Profit % ┃ Tot Profit USDT ┃ Tot Profit % ┃ Avg Duration ┃ Win Draw Loss Win% ┃
|
||||
┡━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━┩
|
||||
│ TOTAL │ 0 │ 0.0 │ 0.000 │ 0.0 │ 0:00 │ 0 0 0 0 │
|
||||
└───────┴────────┴──────────────┴─────────────────┴──────────────┴──────────────┴────────────────────────┘
|
||||
ENTER TAG STATS
|
||||
┏━━━━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┓
|
||||
┃ Enter Tag ┃ Entries ┃ Avg Profit % ┃ Tot Profit USDT ┃ Tot Profit % ┃ Avg Duration ┃ Win Draw Loss Win% ┃
|
||||
┡━━━━━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━┩
|
||||
│ short │ 28 │ 0.72 │ 211.154 │ 21.12 │ 19:27:00 │ 13 0 15 46.4 │
|
||||
│ short_spike │ 25 │ 0.65 │ 174.806 │ 17.48 │ 1 day, 10:54:00 │ 11 0 14 44.0 │
|
||||
│ long │ 1 │ 3.75 │ 36.176 │ 3.62 │ 6 days, 10:57:00 │ 1 0 0 100 │
|
||||
│ TOTAL │ 54 │ 0.75 │ 422.136 │ 42.21 │ 1 day, 5:07:00 │ 25 0 29 46.3 │
|
||||
└─────────────┴─────────┴──────────────┴─────────────────┴──────────────┴──────────────────┴────────────────────────┘
|
||||
EXIT REASON STATS
|
||||
┏━━━━━━━━━━━━━┳━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┓
|
||||
┃ Exit Reason ┃ Exits ┃ Avg Profit % ┃ Tot Profit USDT ┃ Tot Profit % ┃ Avg Duration ┃ Win Draw Loss Win% ┃
|
||||
┡━━━━━━━━━━━━━╇━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━┩
|
||||
│ B30Sht │ 24 │ 4.06 │ 1155.077 │ 115.51 │ 1 day, 10:30:00 │ 24 0 0 100 │
|
||||
│ B30 │ 1 │ 3.75 │ 36.176 │ 3.62 │ 6 days, 10:57:00 │ 1 0 0 100 │
|
||||
│ stop_loss │ 29 │ -2.1 │ -769.117 │ -76.91 │ 20:19:00 │ 0 0 29 0 │
|
||||
│ TOTAL │ 54 │ 0.75 │ 422.136 │ 42.21 │ 1 day, 5:07:00 │ 25 0 29 46.3 │
|
||||
└─────────────┴───────┴──────────────┴─────────────────┴──────────────┴──────────────────┴────────────────────────┘
|
||||
MIXED TAG STATS
|
||||
┏━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┓
|
||||
┃ Enter Tag ┃ Exit Reason ┃ Trades ┃ Avg Profit % ┃ Tot Profit USDT ┃ Tot Profit % ┃ Avg Duration ┃ Win Draw Loss Win% ┃
|
||||
┡━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━┩
|
||||
│ short │ B30Sht │ 13 │ 3.98 │ 601.641 │ 60.16 │ 1 day, 9:46:00 │ 13 0 0 100 │
|
||||
│ short_spike │ B30Sht │ 11 │ 4.16 │ 553.436 │ 55.34 │ 1 day, 11:22:00 │ 11 0 0 100 │
|
||||
│ long │ B30 │ 1 │ 3.75 │ 36.176 │ 3.62 │ 6 days, 10:57:00 │ 1 0 0 100 │
|
||||
│ short_spike │ stop_loss │ 14 │ -2.1 │ -378.630 │ -37.86 │ 1 day, 10:32:00 │ 0 0 14 0 │
|
||||
│ short │ stop_loss │ 15 │ -2.1 │ -390.487 │ -39.05 │ 7:03:00 │ 0 0 15 0 │
|
||||
│ TOTAL │ │ 54 │ 0.75 │ 422.136 │ 42.21 │ 1 day, 5:07:00 │ 25 0 29 46.3 │
|
||||
└─────────────┴─────────────┴────────┴──────────────┴─────────────────┴──────────────┴──────────────────┴────────────────────────┘
|
||||
DAY BREAKDOWN
|
||||
┏━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┓
|
||||
┃ Day ┃ Trades ┃ Tot Profit USDT ┃ Profit Factor ┃ Win Draw Loss Win% ┃
|
||||
┡━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━┩
|
||||
│ 07/01/2026 │ 1 │ 36.176 │ 0.0 │ 1 0 0 100 │
|
||||
│ 08/01/2026 │ 0 │ 0 │ 0.0 │ 0 0 0 0 │
|
||||
│ 09/01/2026 │ 0 │ 0 │ 0.0 │ 0 0 0 0 │
|
||||
│ 10/01/2026 │ 0 │ 0 │ 0.0 │ 0 0 0 0 │
|
||||
│ 11/01/2026 │ 0 │ 0 │ 0.0 │ 0 0 0 0 │
|
||||
│ 12/01/2026 │ 0 │ 0 │ 0.0 │ 0 0 0 0 │
|
||||
│ 13/01/2026 │ 1 │ -20.15 │ 0.0 │ 0 0 1 0 │
|
||||
│ 14/01/2026 │ 0 │ 0 │ 0.0 │ 0 0 0 0 │
|
||||
│ 15/01/2026 │ 0 │ 0 │ 0.0 │ 0 0 0 0 │
|
||||
│ 16/01/2026 │ 0 │ 0 │ 0.0 │ 0 0 0 0 │
|
||||
│ 17/01/2026 │ 0 │ 0 │ 0.0 │ 0 0 0 0 │
|
||||
│ 18/01/2026 │ 0 │ 0 │ 0.0 │ 0 0 0 0 │
|
||||
│ 19/01/2026 │ 0 │ 0 │ 0.0 │ 0 0 0 0 │
|
||||
│ 20/01/2026 │ 1 │ 49.664 │ 0.0 │ 1 0 0 100 │
|
||||
│ 21/01/2026 │ 1 │ 20.963 │ 0.0 │ 1 0 0 100 │
|
||||
│ 22/01/2026 │ 0 │ 0 │ 0.0 │ 0 0 0 0 │
|
||||
│ 23/01/2026 │ 1 │ -22.227 │ 0.0 │ 0 0 1 0 │
|
||||
│ 24/01/2026 │ 0 │ 0 │ 0.0 │ 0 0 0 0 │
|
||||
│ 25/01/2026 │ 1 │ 32.61 │ 0.0 │ 1 0 0 100 │
|
||||
│ 26/01/2026 │ 1 │ -21.707 │ 0.0 │ 0 0 1 0 │
|
||||
│ 27/01/2026 │ 0 │ 0 │ 0.0 │ 0 0 0 0 │
|
||||
│ 28/01/2026 │ 1 │ -21.939 │ 0.0 │ 0 0 1 0 │
|
||||
│ 29/01/2026 │ 1 │ 50.715 │ 0.0 │ 1 0 0 100 │
|
||||
│ 30/01/2026 │ 1 │ -22.455 │ 0.0 │ 0 0 1 0 │
|
||||
│ 31/01/2026 │ 1 │ 59.691 │ 0.0 │ 1 0 0 100 │
|
||||
│ 01/02/2026 │ 0 │ 0 │ 0.0 │ 0 0 0 0 │
|
||||
│ 02/02/2026 │ 3 │ -7.976 │ 0.83 │ 1 0 2 33.3 │
|
||||
│ 03/02/2026 │ 1 │ 22.032 │ 0.0 │ 1 0 0 100 │
|
||||
│ 04/02/2026 │ 1 │ 33.959 │ 0.0 │ 1 0 0 100 │
|
||||
│ 05/02/2026 │ 1 │ 39.293 │ 0.0 │ 1 0 0 100 │
|
||||
│ 06/02/2026 │ 4 │ 74.327 │ 1.89 │ 1 0 3 25.0 │
|
||||
│ 07/02/2026 │ 2 │ 12.485 │ 1.46 │ 1 0 1 50.0 │
|
||||
│ 08/02/2026 │ 2 │ -54.289 │ 0.0 │ 0 0 2 0 │
|
||||
│ 09/02/2026 │ 2 │ -1.939 │ 0.93 │ 1 0 1 50.0 │
|
||||
│ 10/02/2026 │ 0 │ 0 │ 0.0 │ 0 0 0 0 │
|
||||
│ 11/02/2026 │ 4 │ 20.391 │ 1.38 │ 2 0 2 50.0 │
|
||||
│ 12/02/2026 │ 1 │ 35.171 │ 0.0 │ 1 0 0 100 │
|
||||
│ 13/02/2026 │ 1 │ -26.178 │ 0.0 │ 0 0 1 0 │
|
||||
│ 14/02/2026 │ 0 │ 0 │ 0.0 │ 0 0 0 0 │
|
||||
│ 15/02/2026 │ 0 │ 0 │ 0.0 │ 0 0 0 0 │
|
||||
│ 16/02/2026 │ 0 │ 0 │ 0.0 │ 0 0 0 0 │
|
||||
│ 17/02/2026 │ 0 │ 0 │ 0.0 │ 0 0 0 0 │
|
||||
│ 18/02/2026 │ 1 │ 36.046 │ 0.0 │ 1 0 0 100 │
|
||||
│ 19/02/2026 │ 0 │ 0 │ 0.0 │ 0 0 0 0 │
|
||||
│ 20/02/2026 │ 0 │ 0 │ 0.0 │ 0 0 0 0 │
|
||||
│ 21/02/2026 │ 1 │ -26.642 │ 0.0 │ 0 0 1 0 │
|
||||
│ 22/02/2026 │ 0 │ 0 │ 0.0 │ 0 0 0 0 │
|
||||
│ 23/02/2026 │ 1 │ 57.25 │ 0.0 │ 1 0 0 100 │
|
||||
│ 24/02/2026 │ 2 │ 7.103 │ 1.25 │ 1 0 1 50.0 │
|
||||
│ 25/02/2026 │ 0 │ 0 │ 0.0 │ 0 0 0 0 │
|
||||
│ 26/02/2026 │ 0 │ 0 │ 0.0 │ 0 0 0 0 │
|
||||
│ 27/02/2026 │ 0 │ 0 │ 0.0 │ 0 0 0 0 │
|
||||
│ 28/02/2026 │ 1 │ 87.891 │ 0.0 │ 1 0 0 100 │
|
||||
│ 01/03/2026 │ 1 │ -29.21 │ 0.0 │ 0 0 1 0 │
|
||||
│ 02/03/2026 │ 1 │ -29.332 │ 0.0 │ 0 0 1 0 │
|
||||
│ 03/03/2026 │ 0 │ 0 │ 0.0 │ 0 0 0 0 │
|
||||
│ 04/03/2026 │ 2 │ -57.218 │ 0.0 │ 0 0 2 0 │
|
||||
│ 05/03/2026 │ 1 │ -27.178 │ 0.0 │ 0 0 1 0 │
|
||||
│ 06/03/2026 │ 0 │ 0 │ 0.0 │ 0 0 0 0 │
|
||||
│ 07/03/2026 │ 0 │ 0 │ 0.0 │ 0 0 0 0 │
|
||||
│ 08/03/2026 │ 0 │ 0 │ 0.0 │ 0 0 0 0 │
|
||||
│ 09/03/2026 │ 1 │ 104.735 │ 0.0 │ 1 0 0 100 │
|
||||
│ 10/03/2026 │ 0 │ 0 │ 0.0 │ 0 0 0 0 │
|
||||
│ 11/03/2026 │ 0 │ 0 │ 0.0 │ 0 0 0 0 │
|
||||
│ 12/03/2026 │ 0 │ 0 │ 0.0 │ 0 0 0 0 │
|
||||
│ 13/03/2026 │ 1 │ -30.23 │ 0.0 │ 0 0 1 0 │
|
||||
│ 14/03/2026 │ 0 │ 0 │ 0.0 │ 0 0 0 0 │
|
||||
│ 15/03/2026 │ 1 │ -28.727 │ 0.0 │ 0 0 1 0 │
|
||||
│ 16/03/2026 │ 1 │ -27.688 │ 0.0 │ 0 0 1 0 │
|
||||
│ 17/03/2026 │ 0 │ 0 │ 0.0 │ 0 0 0 0 │
|
||||
│ 18/03/2026 │ 0 │ 0 │ 0.0 │ 0 0 0 0 │
|
||||
│ 19/03/2026 │ 0 │ 0 │ 0.0 │ 0 0 0 0 │
|
||||
│ 20/03/2026 │ 0 │ 0 │ 0.0 │ 0 0 0 0 │
|
||||
│ 21/03/2026 │ 1 │ 59.772 │ 0.0 │ 1 0 0 100 │
|
||||
│ 22/03/2026 │ 0 │ 0 │ 0.0 │ 0 0 0 0 │
|
||||
│ 23/03/2026 │ 1 │ -29.287 │ 0.0 │ 0 0 1 0 │
|
||||
│ 24/03/2026 │ 1 │ 29.577 │ 0.0 │ 1 0 0 100 │
|
||||
│ 25/03/2026 │ 1 │ -27.872 │ 0.0 │ 0 0 1 0 │
|
||||
│ 26/03/2026 │ 1 │ 36.754 │ 0.0 │ 1 0 0 100 │
|
||||
│ 27/03/2026 │ 1 │ 27.777 │ 0.0 │ 1 0 0 100 │
|
||||
└────────────┴────────┴─────────────────┴───────────────┴────────────────────────┘
|
||||
SUMMARY METRICS
|
||||
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
|
||||
┃ Metric ┃ Value ┃
|
||||
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
|
||||
│ Backtesting from │ 2026-01-01 00:00:00 │
|
||||
│ Backtesting to │ 2026-03-27 15:43:00 │
|
||||
│ Trading Mode │ Isolated Futures │
|
||||
│ Max open trades │ 1 │
|
||||
│ │ │
|
||||
│ Total/Daily Avg Trades │ 54 / 0.64 │
|
||||
│ Starting balance │ 1000 USDT │
|
||||
│ Final balance │ 1422.136 USDT │
|
||||
│ Absolute profit │ 422.136 USDT │
|
||||
│ Total profit % │ 42.21% │
|
||||
│ CAGR % │ 353.68% │
|
||||
│ Sortino │ 36.18 │
|
||||
│ Sharpe │ 2.25 │
|
||||
│ Calmar │ 96.27 │
|
||||
│ SQN │ 1.35 │
|
||||
│ Profit factor │ 1.55 │
|
||||
│ Expectancy (Ratio) │ 7.82 (0.29) │
|
||||
│ Avg. daily profit │ 4.966 USDT │
|
||||
│ Avg. stake amount │ 1224.501 USDT │
|
||||
│ Total trade volume │ 131900.967 USDT │
|
||||
│ │ │
|
||||
│ Long / Short trades │ 1 / 53 │
|
||||
│ Long / Short profit % │ 3.62% / 38.60% │
|
||||
│ Long / Short profit USDT │ 36.176 / 385.960 │
|
||||
│ │ │
|
||||
│ Best Pair │ BTC/USDT:USDT 42.21% │
|
||||
│ Worst Pair │ BTC/USDT:USDT 42.21% │
|
||||
│ Best trade │ BTC/USDT:USDT 13.07% │
|
||||
│ Worst trade │ BTC/USDT:USDT -2.14% │
|
||||
│ Best day │ 104.735 USDT │
|
||||
│ Worst day │ -57.218 USDT │
|
||||
│ Days win/draw/lose │ 22 / 39 / 19 │
|
||||
│ Min/Max/Avg. Duration Winners │ 0d 00:58 / 6d 10:57 / 1d 15:19 │
|
||||
│ Min/Max/Avg. Duration Losers │ 0d 00:18 / 5d 19:41 / 0d 20:19 │
|
||||
│ Max Consecutive Wins / Loss │ 4 / 5 │
|
||||
│ Rejected Entry signals │ 0 │
|
||||
│ Entry/Exit Timeouts │ 0 / 0 │
|
||||
│ │ │
|
||||
│ Min balance │ 1016.026 USDT │
|
||||
│ Max balance │ 1450.263 USDT │
|
||||
│ Max % of account underwater │ 9.86% │
|
||||
│ Absolute drawdown │ 142.938 USDT (9.86%) │
|
||||
│ Drawdown duration │ 4 days 23:26:00 │
|
||||
│ Profit at drawdown start │ 450.263 USDT │
|
||||
│ Profit at drawdown end │ 307.325 USDT │
|
||||
│ Drawdown start │ 2026-02-28 11:00:00 │
|
||||
│ Drawdown end │ 2026-03-05 10:26:00 │
|
||||
│ Market change │ -24.27% │
|
||||
└───────────────────────────────┴────────────────────────────────┘
|
||||
|
||||
Backtested 2026-01-01 00:00:00 -> 2026-03-27 15:43:00 | Max open trades : 1
|
||||
STRATEGY SUMMARY
|
||||
┏━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━┓
|
||||
┃ Strategy ┃ Trades ┃ Avg Profit % ┃ Tot Profit USDT ┃ Tot Profit % ┃ Avg Duration ┃ Win Draw Loss Win% ┃ Drawdown ┃
|
||||
┡━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━┩
|
||||
│ EmptyShort │ 54 │ 0.75 │ 422.136 │ 42.21 │ 1 day, 5:07:00 │ 25 0 29 46.3 │ 142.938 USDT 9.86% │
|
||||
└────────────┴────────┴──────────────┴─────────────────┴──────────────┴────────────────┴────────────────────────┴─────────────────────┘
|
||||
@@ -5,7 +5,7 @@
|
||||
"0": 10
|
||||
},
|
||||
"stoploss": {
|
||||
"stoploss": -1.0
|
||||
"stoploss": -0.02
|
||||
},
|
||||
"trailing": {
|
||||
"trailing_stop": false,
|
||||
|
||||
1965
FrictradeLearning.py
1965
FrictradeLearning.py
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user