Calcul 20240101-20250514 1189.631 255.232$ => 4,662 max 14mises
This commit is contained in:
@@ -482,7 +482,7 @@ class Zeus_8_3_2_B_4_2(IStrategy):
|
||||
# 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}|"
|
||||
f"{round(last_candle['sma5_deriv1_1h'], 4) or '-' :>7}|{round(last_candle['mid_smooth_3_deriv1'], 4) or '-' :>7}|"
|
||||
f"{round(last_candle['sma5_deriv1_1h'], 4) or '-' :>7}|{round(last_candle['mid_smooth_1h_deriv1'], 4) or '-' :>7}|"
|
||||
)
|
||||
|
||||
def printLineLog(self):
|
||||
@@ -566,9 +566,6 @@ class Zeus_8_3_2_B_4_2(IStrategy):
|
||||
)
|
||||
# Normalization
|
||||
|
||||
# Compter les baisses consécutives
|
||||
self.calculateDownAndUp(dataframe, limit=0.0001)
|
||||
|
||||
# dataframe = self.calculateRegression(dataframe, column='mid_smooth', window=24, degree=4, future_offset=12)
|
||||
# dataframe = self.calculateRegression(dataframe, column='mid_smooth_24', window=24, degree=4, future_offset=12)
|
||||
|
||||
@@ -589,14 +586,16 @@ class Zeus_8_3_2_B_4_2(IStrategy):
|
||||
informative['sma24'] = talib.SMA(informative, timeperiod=24)
|
||||
self.calculeDerivees(informative, 'sma5')
|
||||
self.calculeDerivees(informative, 'sma24')
|
||||
# informative["mid_re_smooth"] = self.conditional_smoothing(informative['mid_smooth'].dropna(), threshold=0.0005).dropna()
|
||||
# self.calculeDerivees(informative, "mid_re_smooth")
|
||||
# self.calculateDownAndUp(informative, limit=0.0012)
|
||||
|
||||
informative['futur_percent_3'] = 100 * ((informative['sma5'].shift(-3) - informative['sma5']) / informative['sma5'])
|
||||
print("##################")
|
||||
print("# STAT HOUR")
|
||||
print("##################")
|
||||
self.calculateStats(informative, 'sma5_deriv1', 'futur_percent_3')
|
||||
|
||||
# informative['futur_percent_3'] = 100 * ((informative['sma5'].shift(-3) - informative['sma5']) / informative['sma5'])
|
||||
# if self.dp.runmode.value in ('backtest'):
|
||||
# print("##################")
|
||||
# print("# STAT HOUR")
|
||||
# print("##################")
|
||||
# self.calculateStats(informative, 'sma5_deriv1', 'futur_percent_3')
|
||||
|
||||
dataframe = merge_informative_pair(dataframe, informative, self.timeframe, "1h", ffill=True)
|
||||
|
||||
@@ -618,10 +617,11 @@ class Zeus_8_3_2_B_4_2(IStrategy):
|
||||
|
||||
informative['futur_percent_3'] = 100 * ((informative['sma5'].shift(-3) - informative['sma5']) / informative['sma5'])
|
||||
|
||||
print("##################")
|
||||
print("# STAT DAY")
|
||||
print("##################")
|
||||
self.calculateStats(informative, 'sma5_deriv1', 'futur_percent_3')
|
||||
# if self.dp.runmode.value in ('backtest'):
|
||||
# print("##################")
|
||||
# print("# STAT DAY")
|
||||
# print("##################")
|
||||
# self.calculateStats(informative, 'sma5_deriv1', 'futur_percent_3')
|
||||
|
||||
# informative['close_smooth'] = self.conditional_smoothing(informative['mid'].dropna(), threshold=0.0015).dropna()
|
||||
# informative['smooth'], informative['deriv1'], informative['deriv2'] = self.smooth_and_derivatives(informative['close_smooth'])
|
||||
@@ -671,6 +671,12 @@ class Zeus_8_3_2_B_4_2(IStrategy):
|
||||
dataframe["mid_smooth_1h_deriv1"] = 100 * dataframe["mid_smooth_1h"].diff() / dataframe['mid_smooth_1h']
|
||||
dataframe["mid_smooth_1h_deriv2"] = 10 * dataframe["mid_smooth_1h_deriv1"].diff()
|
||||
|
||||
# Compter les baisses / hausses consécutives
|
||||
self.calculateDownAndUp(dataframe, limit=0.0001)
|
||||
|
||||
# dataframe["mid_re_smooth_1h"] = self.conditional_smoothing(dataframe['mid_smooth_1h'].dropna(), threshold=0.0005).dropna()
|
||||
# self.calculeDerivees(dataframe, "mid_re_smooth_1h")
|
||||
|
||||
# dataframe['close_smooth_1h'] = self.conditional_smoothing(dataframe['mid'].rolling(window=3).mean().dropna(), threshold=0.0005)
|
||||
# dataframe['smooth_1h'], dataframe['deriv1_1h'], dataframe['deriv2_1h'] = self.smooth_and_derivatives(dataframe['close_smooth_1h'])
|
||||
# dataframe['deriv1_1h'] = 100 * dataframe['deriv1_1h'] / dataframe['mid_smooth_1h']
|
||||
@@ -703,7 +709,7 @@ class Zeus_8_3_2_B_4_2(IStrategy):
|
||||
# dataframe["mid_smooth_deriv1_1d"] = dataframe["mid_smooth_1d"].rolling(horizon_d).mean().diff() / horizon_d
|
||||
# dataframe["mid_smooth_deriv2_1d"] = horizon_d * dataframe["mid_smooth_deriv1_1d"].rolling(horizon_d).mean().diff()
|
||||
#
|
||||
dataframe['sma5_1d'] = dataframe['sma5_1d'].rolling(window=horizon_d).mean()
|
||||
# dataframe['sma5_1d'] = dataframe['sma5_1d'].rolling(window=horizon_d).mean()
|
||||
# dataframe['sma5_deriv1_1d'] = dataframe['sma5_deriv1_1d'].rolling(window=horizon_d).mean()
|
||||
# dataframe['sma24_1d'] = dataframe['sma24_1d'].rolling(window=horizon_d).mean()
|
||||
# dataframe['sma24_deriv1_1d'] = dataframe['sma24_deriv1_1d'].rolling(window=horizon_d).mean()
|
||||
@@ -723,10 +729,11 @@ class Zeus_8_3_2_B_4_2(IStrategy):
|
||||
#
|
||||
# self.calculateProbabilite2Index(dataframe, ['futur_percent_1d'], 'sma24_deriv1_1h', 'sma5_1d')
|
||||
|
||||
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')
|
||||
# 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')
|
||||
|
||||
return dataframe
|
||||
|
||||
@@ -735,8 +742,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['hapercent'] <= limit
|
||||
dataframe['up'] = 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) * (
|
||||
@@ -794,7 +801,7 @@ class Zeus_8_3_2_B_4_2(IStrategy):
|
||||
|
||||
dataframe['test'] = np.where(dataframe['enter_long'] == 1, dataframe['close'] * 1.01, np.nan)
|
||||
|
||||
self.paliers = self.get_dca_stakes()
|
||||
# self.paliers = self.get_dca_stakes()
|
||||
|
||||
if self.dp.runmode.value in ('backtest'):
|
||||
today = datetime.now().strftime("%Y-%m-%d-%H:%M:%S")
|
||||
@@ -1062,8 +1069,8 @@ class Zeus_8_3_2_B_4_2(IStrategy):
|
||||
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.pairs[trade.pair]['count_of_buys'] = self.pairs[trade.pair]['count_of_buys'] + 1
|
||||
trade_type = last_candle['enter_tag'] if last_candle['enter_long'] == 1 else 'pct48'
|
||||
self.pairs[trade.pair]['count_of_buys'] += 1
|
||||
self.log_trade(
|
||||
last_candle=last_candle,
|
||||
date=current_time,
|
||||
@@ -1622,7 +1629,7 @@ class Zeus_8_3_2_B_4_2(IStrategy):
|
||||
|
||||
# ➕ Afficher les prédictions
|
||||
# print(f"{current} → t+{future_step}: x={future_x}, y={prediction:.2f}")
|
||||
if prediction > current:
|
||||
if prediction > 0: #current:
|
||||
count += 1
|
||||
|
||||
return poly, x_future, y_future, count
|
||||
|
||||
Reference in New Issue
Block a user