mimus-assa / FIALR

0 stars 0 forks source link

crear un metodo para salir be #12

Open mimus-assa opened 10 months ago

mimus-assa commented 10 months ago

crear un metodo para salir brake eaven, esto es agregar un metodo en el evalualte para saber si hay que salir a brake evean si si retornamos need to close, esto puedeimplicar recalcular el valor del tp y sl

mimus-assa commented 10 months ago
def is_brake_even(self):
    # Define el umbral de beneficio para considerar el brake even
    brake_even_threshold = 0.027  # 2.7%
    pullback_threshold = 0.005  # 0.5%

    if not self.in_position:
        return False

    current_price = self.environment.current_close
    price_change_percentage = (current_price - self.entry_price) / self.entry_price

    # Comprueba si el trade ha alcanzado el umbral de beneficio
    if ((self.position_type == "long" and price_change_percentage >= brake_even_threshold) or
        (self.position_type == "short" and price_change_percentage <= -brake_even_threshold)):

        # Ajusta el stop loss y take profit
        if self.position_type == "long":
            adjusted_stop_loss = self.entry_price * (1 + pullback_threshold)
            adjusted_take_profit = adjusted_stop_loss * self.ratio
        else:  # short position
            adjusted_stop_loss = self.entry_price * (1 - pullback_threshold)
            adjusted_take_profit = adjusted_stop_loss * self.ratio

        # Actualiza los precios en el portfolio manager
        self.stop_loss_price = adjusted_stop_loss
        self.take_profit_price = adjusted_take_profit

        # Decide si es necesario cerrar la posición
        need_to_close = (self.position_type == "long" and current_price <= adjusted_stop_loss) or \
                        (self.position_type == "short" and current_price >= adjusted_stop_loss)
        return need_to_close

    return False

hay que probar esto