model_training_parameters = self.model_training_parameters
- start = time.time()
+ start_time = time.time()
if self._optuna_hyperopt:
self.optuna_optimize(
pair=dk.pair,
model_training_parameters=model_training_parameters,
init_model=self.get_init_model(dk.pair),
)
- time_spent = time.time() - start
+ time_spent = time.time() - start_time
self.dd.update_metric_tracker("fit_time", time_spent, dk.pair)
return model
def calculate_volatility_quantile(pos: int) -> float:
if pos not in volatility_quantile_cache:
- start = max(0, pos + 1 - natr_period)
- end = min(pos + 1, n)
- if start >= end:
+ start_pos = max(0, pos + 1 - natr_period)
+ end_pos = min(pos + 1, n)
+ if start_pos >= end_pos:
volatility_quantile_cache[pos] = np.nan
else:
volatility_quantile_cache[pos] = calculate_quantile(
- natr_values[start:end], natr_values[pos]
+ natr_values[start_pos:end_pos], natr_values[pos]
)
return volatility_quantile_cache[pos]
if self.position_adjustment_enable:
if exit_stage == start_partial_exit_stage:
return None
+ natr_ratio_percent = (
+ self.partial_exit_stages[exit_stage][0]
+ if exit_stage in self.partial_exit_stages
+ else 1.0
+ )
secure_take_profit_distance = self.get_take_profit_distance(
- df,
- trade,
- min(
- self.config.get("exit_pricing", {}).get(
- "trade_secure_percent", 0.2
- ),
- self.partial_exit_stages[start_partial_exit_stage][0] * 0.95,
- ),
+ df, trade, natr_ratio_percent / 3
)
if isna(secure_take_profit_distance) or secure_take_profit_distance <= 0:
return None
if exit_stage < final_exit_stage:
trade.set_custom_data(key="exit_stage", value=final_exit_stage)
return f"secure_take_profit_{trade.trade_direction}_{final_exit_stage}"
- if exit_stage == final_exit_stage:
- natr_ratio_percent = 1.0
- else:
+ if start_partial_exit_stage < exit_stage < final_exit_stage:
return None
else:
- if start_partial_exit_stage <= exit_stage <= end_partial_exit_stage:
+ if exit_stage in self.partial_exit_stages:
trade.set_custom_data(key="exit_stage", value=final_exit_stage)
natr_ratio_percent = 0.7
def calculate_volatility_quantile(pos: int) -> float:
if pos not in volatility_quantile_cache:
- start = max(0, pos + 1 - natr_period)
- end = min(pos + 1, n)
- if start >= end:
+ start_pos = max(0, pos + 1 - natr_period)
+ end_pos = min(pos + 1, n)
+ if start_pos >= end_pos:
volatility_quantile_cache[pos] = np.nan
else:
volatility_quantile_cache[pos] = calculate_quantile(
- natr_values[start:end], natr_values[pos]
+ natr_values[start_pos:end_pos], natr_values[pos]
)
return volatility_quantile_cache[pos]