Zeus_8_3_2_B_4_2 tests tendancies
This commit is contained in:
@@ -155,7 +155,7 @@ class Zeus_8_3_2_B_4_2(IStrategy):
|
|||||||
# last_candle_12 = dataframe.iloc[-13].squeeze()
|
# last_candle_12 = dataframe.iloc[-13].squeeze()
|
||||||
|
|
||||||
# allow_to_buy = True #(not self.stop_all) #& (not self.all_down)
|
# allow_to_buy = True #(not self.stop_all) #& (not self.all_down)
|
||||||
allow_to_buy = True # (rate <= float(limit)) | (entry_tag == 'force_entry')
|
allow_to_buy = not last_candle['tendency'] in ('B--', 'B++') # (rate <= float(limit)) | (entry_tag == 'force_entry')
|
||||||
self.trades = list()
|
self.trades = list()
|
||||||
dispo = round(self.wallets.get_available_stake_amount())
|
dispo = round(self.wallets.get_available_stake_amount())
|
||||||
|
|
||||||
@@ -166,7 +166,7 @@ class Zeus_8_3_2_B_4_2(IStrategy):
|
|||||||
self.pairs[pair]['count_of_buys'] = 1
|
self.pairs[pair]['count_of_buys'] = 1
|
||||||
self.pairs[pair]['current_profit'] = 0
|
self.pairs[pair]['current_profit'] = 0
|
||||||
|
|
||||||
print(
|
self.printLog(
|
||||||
f"|{'-' * 18}+{'-' * 12}+{'-' * 5}+{'-' * 20}+{'-' * 14}+{'-' * 8}+{'-' * 10}+{'-' * 7}+{'-' * 13}+{'-' * 14}+{'-' * 14}+{'-' * 7}+{'-' * 12}|"
|
f"|{'-' * 18}+{'-' * 12}+{'-' * 5}+{'-' * 20}+{'-' * 14}+{'-' * 8}+{'-' * 10}+{'-' * 7}+{'-' * 13}+{'-' * 14}+{'-' * 14}+{'-' * 7}+{'-' * 12}|"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -175,7 +175,7 @@ class Zeus_8_3_2_B_4_2(IStrategy):
|
|||||||
self.log_trade(
|
self.log_trade(
|
||||||
last_candle=last_candle,
|
last_candle=last_candle,
|
||||||
date=current_time,
|
date=current_time,
|
||||||
action="START BUY",
|
action="START BUY" if allow_to_buy else "Canceled",
|
||||||
pair=pair,
|
pair=pair,
|
||||||
rate=rate,
|
rate=rate,
|
||||||
dispo=dispo,
|
dispo=dispo,
|
||||||
@@ -250,8 +250,10 @@ class Zeus_8_3_2_B_4_2(IStrategy):
|
|||||||
self.pairs[pair]['current_profit'] = current_profit
|
self.pairs[pair]['current_profit'] = current_profit
|
||||||
pct_first = round((last_candle['close'] - self.pairs[pair]['first_buy']) / self.pairs[pair]['first_buy'], 3)
|
pct_first = round((last_candle['close'] - self.pairs[pair]['first_buy']) / self.pairs[pair]['first_buy'], 3)
|
||||||
|
|
||||||
# if (last_candle['tendency'] in ('H++', 'H--')):
|
if (last_candle['tendency'] in ('H++', 'H--')) \
|
||||||
# return None
|
and (last_candle['tendency_1d'] in ('H++', 'H--')) \
|
||||||
|
and (last_candle['tendency_1d'] in ('H++', 'H--')) :
|
||||||
|
return None
|
||||||
|
|
||||||
# if (last_candle['rsi_1d'] > 50) & (last_candle['percent12'] < 0.0):
|
# if (last_candle['rsi_1d'] > 50) & (last_candle['percent12'] < 0.0):
|
||||||
if (last_candle['percent3'] < 0.0) & (current_profit > 0.05): #last_candle['min_max200'] / 3):
|
if (last_candle['percent3'] < 0.0) & (current_profit > 0.05): #last_candle['min_max200'] / 3):
|
||||||
@@ -318,11 +320,11 @@ class Zeus_8_3_2_B_4_2(IStrategy):
|
|||||||
# print(
|
# print(
|
||||||
# f"|{'-' * 18}+{'-' * 12}+{'-' * 12}+{'-' * 20}+{'-' * 14}+{'-' * 8}+{'-' * 10}+{'-' * 7}+{'-' * 13}+{'-' * 14}+{'-' * 14}+{'-' * 7}+{'-' * 12}|"
|
# f"|{'-' * 18}+{'-' * 12}+{'-' * 12}+{'-' * 20}+{'-' * 14}+{'-' * 8}+{'-' * 10}+{'-' * 7}+{'-' * 13}+{'-' * 14}+{'-' * 14}+{'-' * 7}+{'-' * 12}|"
|
||||||
# )
|
# )
|
||||||
print(
|
self.printLog(
|
||||||
f"| {'Date':<16} | {'Action':<10} |{'Pair':<5}| {'Trade Type':<18} | {'Rate':>12} | {'Dispo':>6} | {'Profit':>8} | {'Pct':>5} | {'max_touch':>11} | {'last_lost':>12} | {'last_max':>12} | {'Buys':>5} | {'Stake':>10} |"
|
f"| {'Date':<16} | {'Action':<10} |{'Pair':<5}| {'Trade Type':<18} | {'Rate':>12} | {'Dispo':>6} | {'Profit':>8} | {'Pct':>6} | {'max_touch':>11} | {'last_lost':>12} | {'last_max':>12} | {'Buys':>5} | {'Stake':>10} |"
|
||||||
)
|
)
|
||||||
print(
|
self.printLog(
|
||||||
f"|{'-' * 18}+{'-' * 12}+{'-' * 5}+{'-' * 20}+{'-' * 14}+{'-' * 8}+{'-' * 10}+{'-' * 7}+{'-' * 13}+{'-' * 14}+{'-' * 14}+{'-' * 7}+{'-' * 12}|"
|
f"|{'-' * 18}+{'-' * 12}+{'-' * 5}+{'-' * 20}+{'-' * 14}+{'-' * 8}+{'-' * 10}+{'-' * 8}+{'-' * 13}+{'-' * 14}+{'-' * 14}+{'-' * 7}+{'-' * 12}|"
|
||||||
)
|
)
|
||||||
self.columns_logged += 1
|
self.columns_logged += 1
|
||||||
date = str(date)[:16] if date else "-"
|
date = str(date)[:16] if date else "-"
|
||||||
@@ -362,27 +364,32 @@ class Zeus_8_3_2_B_4_2(IStrategy):
|
|||||||
+ " " + str(int(last_candle['rsi_1h'])) \
|
+ " " + str(int(last_candle['rsi_1h'])) \
|
||||||
+ " " + str(int(last_candle['rsi_diff_1h']))
|
+ " " + str(int(last_candle['rsi_diff_1h']))
|
||||||
|
|
||||||
print(
|
self.printLog(
|
||||||
f"| {date:<16} | {action:<10} | {pair[0:3]:<3} | {trade_type or '-':<18} | {rate or '-':>12} | {dispo or '-':>6} "
|
f"| {date:<16} | {action:<10} | {pair[0:3]:<3} | {trade_type or '-':<18} | {rate or '-':>12} | {dispo or '-':>6} "
|
||||||
f"| {profit or '-':>8} | {pct_max or '-':>5} | {max_touch or '-':>11} | {last_lost or '-':>12} "
|
f"| {profit or '-':>8} | {pct_max or '-':>6} | {max_touch or '-':>11} | {last_lost or '-':>12} "
|
||||||
f"| {round(self.pairs[pair]['last_max'], 2) or '-':>12} | {buys or '-':>5} | {stake or '-':>10} "
|
f"| {round(self.pairs[pair]['last_max'], 2) or '-':>12} | {buys or '-':>5} | {stake or '-':>10} "
|
||||||
f"| {last_candle['tendency'] or '-':>3} | {last_candle['tendency_1h'] or '-':>3} | {last_candle['tendency_1d'] or '-':>3} |"
|
f"| {last_candle['tendency'] or '-':>3} | {last_candle['tendency_1h'] or '-':>3} | {last_candle['tendency_1d'] or '-':>3} |"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def printLog(self, str):
|
||||||
|
print(str)
|
||||||
|
logger.info(str)
|
||||||
|
|
||||||
def add_tendency_column(self, dataframe: pd.DataFrame) -> pd.DataFrame:
|
def add_tendency_column(self, dataframe: pd.DataFrame) -> pd.DataFrame:
|
||||||
def tag_by_derivatives(row):
|
def tag_by_derivatives(row):
|
||||||
d1 = row['mid_smooth_deriv1']
|
d1 = row['mid_smooth_deriv1']
|
||||||
d2 = row['mid_smooth_deriv2']
|
d2 = row['mid_smooth_deriv2']
|
||||||
|
d1_lim_inf = -5
|
||||||
if d1 == 0.0 and d2 == 0.0:
|
d1_lim_sup = 5
|
||||||
|
if d1 >= d1_lim_inf and d1 <= d1_lim_sup: # and d2 >= d2_lim_inf and d2 <= d2_lim_sup:
|
||||||
return 'P' # Palier
|
return 'P' # Palier
|
||||||
if d1 == 0.0:
|
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 > 0:
|
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 < 0:
|
if d1 < d1_lim_inf:
|
||||||
return 'B++' if d2 < 0 else 'B--' # Accéleration Baisse / Ralentissement Baisse
|
return 'B++' if d2 < 0 else 'B--' # Accéleration Baisse / Ralentissement Baisse
|
||||||
return 'indetermine'
|
return 'Mid'
|
||||||
|
|
||||||
dataframe['tendency'] = dataframe.apply(tag_by_derivatives, axis=1)
|
dataframe['tendency'] = dataframe.apply(tag_by_derivatives, axis=1)
|
||||||
return dataframe
|
return dataframe
|
||||||
@@ -650,10 +657,13 @@ class Zeus_8_3_2_B_4_2(IStrategy):
|
|||||||
# 2. Calcul du lissage sur 200 bougies par moyenne mobile médiane
|
# 2. Calcul du lissage sur 200 bougies par moyenne mobile médiane
|
||||||
dataframe['mid_smooth'] = dataframe['mid'].rolling(window=window, center=True, min_periods=1).median().rolling(
|
dataframe['mid_smooth'] = dataframe['mid'].rolling(window=window, center=True, min_periods=1).median().rolling(
|
||||||
3).mean()
|
3).mean()
|
||||||
|
dataframe['mid_smooth_tag_max'] = (dataframe['mid_smooth'].shift(1)) == 0 & (dataframe['mid_smooth'] < 0)
|
||||||
|
dataframe['mid_smooth_tag_min'] = (dataframe['mid_smooth'].shift(1)) == 0 & (dataframe['mid_smooth'] > 0)
|
||||||
|
|
||||||
# 2. Dérivée première = différence entre deux bougies successives
|
# 2. Dérivée première = différence entre deux bougies successives
|
||||||
dataframe['mid_smooth_deriv1'] = dataframe['mid_smooth'].diff()
|
dataframe['mid_smooth_deriv1'] = round(dataframe['mid_smooth'].diff(), 2)
|
||||||
# 3. Dérivée seconde = différence de la dérivée première
|
# 3. Dérivée seconde = différence de la dérivée première
|
||||||
dataframe['mid_smooth_deriv2'] = dataframe['mid_smooth_deriv1'].diff()
|
dataframe['mid_smooth_deriv2'] = round(dataframe['mid_smooth_deriv1'].diff(), 2)
|
||||||
dataframe = self.add_tendency_column(dataframe)
|
dataframe = self.add_tendency_column(dataframe)
|
||||||
return dataframe
|
return dataframe
|
||||||
|
|
||||||
@@ -886,7 +896,7 @@ class Zeus_8_3_2_B_4_2(IStrategy):
|
|||||||
|
|
||||||
first_price = self.pairs[pair]['first_buy']
|
first_price = self.pairs[pair]['first_buy']
|
||||||
|
|
||||||
last_max = current_price
|
last_max = last_candle['max200']
|
||||||
if self.pairs[pair]['last_max'] > 0:
|
if self.pairs[pair]['last_max'] > 0:
|
||||||
last_max = self.pairs[pair]['last_max']
|
last_max = self.pairs[pair]['last_max']
|
||||||
last_count = self.pairs[pair]['last_count_of_buys']
|
last_count = self.pairs[pair]['last_count_of_buys']
|
||||||
|
|||||||
Reference in New Issue
Block a user