# source: https://raw.githubusercontent.com/Shamilier/crypto_trading_platform/757fe835ad293576b38767c564c4911e195312f1/user_data/example/strategies/every_minute.py
# directory_url: https://github.com/Shamilier/crypto_trading_platform/blob/v1/user_data/example/strategies/
# User: Shamilier
# Repository: crypto_trading_platform
# --------------------# BuyEveryThirtySeconds.py
# pragma pylint: disable=missing-docstring, invalid-name, pointless-string-statement
# flake8: noqa: F401
# isort: skip_file

import numpy as np
import pandas as pd
from datetime import datetime
from pandas import DataFrame
from freqtrade.strategy import IStrategy

class Github_Shamilier_crypto_trading_platform__every_minute__20250428_160219(IStrategy):
    """
    Стратегия для теста: генерирует сигнал на покупку на каждой свече.
    Это позволит проверить вызов функции "Текущие позиции".
    """
    # Если ваш источник данных поддерживает субминутные свечи, можно попробовать '30s'
    timeframe = '1m'  # Если возможно, поменяйте на '30s'
    startup_candle_count: int = 1
    can_short: bool = False

    # Настройки minimal_roi и stoploss задаем так, чтобы стратегия не продавала автоматически
    minimal_roi = {
        "0": 10  # 1000% ROI – фактически никогда не срабатывает
    }
    stoploss = -0.99  # Максимально допустимый стоплосс для теста
    trailing_stop = False

    # Разрешаем несколько открытых сделок для тестирования
    max_open_trades = 10

    def populate_indicators(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
        # В этой стратегии индикаторы не требуются
        return dataframe

    def populate_entry_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
        # Генерируем сигнал на вход на каждой свече
        dataframe.loc[:, 'enter_long'] = 1
        return dataframe

    def populate_exit_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
        # Выходы не формируются автоматически (для теста)
        dataframe.loc[:, 'exit_long'] = 0
        return dataframe