# --- Do not remove these libs ---
from freqtrade.strategy import IStrategy, merge_informative_pair, DecimalParameter, IntParameter
from pandas import DataFrame
import talib.abstract as ta
import freqtrade.vendor.qtpylib.indicators as qtpylib

# --------------------------------
import pandas as pd
import numpy as np
import technical.indicators as ftt
from freqtrade.exchange import timeframe_to_minutes
import logging

class Vic(IStrategy):
    minimal_roi = {
        "0": 50.0
    }
    
    stoploss = -0.5  # Stop loss del 50%
    
    timeframe = '1m'

    # Método requerido para implementar la interfaz IStrategy
    def populate_indicators(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
        # Inicializar opened_pairs
        self.opened_pairs = set()
        
        # Aquí puedes calcular los indicadores necesarios para tu estrategia
        # Utiliza dataframe para almacenar los resultados y devuélvelo al final.
        # Ejemplo:
        dataframe['sma'] = ta.SMA(dataframe, timeperiod=20)
        return dataframe

    def populate_buy_trend(self, dataframe, metadata):
        # Evitar abrir múltiples órdenes para el mismo par
        for pair in dataframe['pair'].unique():
            if pair not in self.opened_pairs:
                dataframe.loc[dataframe['pair'] == pair, 'buy_signal'] = 2
                self.opened_pairs.add(pair)

    def populate_sell_trend(self, dataframe, metadata):
        pass

    def on_sell_signal(self, pair, quantity, rate, sell_reason, parent_order, parent_trigger, **kwargs):
        # Eliminar el par de la lista de pares abiertos cuando se vende
        if pair in self.opened_pairs:
            self.opened_pairs.remove(pair)