sberuser (Все сообщения пользователя)

Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
"Состояние счета", программно получить параметр по прибыли
 
вопрос решен - добавил три функции ниже в QuikPy, все заработало. пример функции для вызова в роботе:
Код
def get_account_summary(self):
    """Получает сводку по счету: дату, свободные средства и прибыль/убыток в %"""

    # Инициализация переменных значениями по умолчанию
    free_money = "0.0"
    currency_code = "SUR"
    profit_percentage = 0.0
    profit_loss = 0.0

    try:
        # Получаем первый счет (основной)
        accounts = self.qp.accounts
        if not accounts:
            self.logger.info("Нет доступных счетов")
            return free_money, currency_code, profit_percentage

        account = accounts[0]  # Берем первый счет
        firm_id = account['firm_id']
        client_code = account['client_code']

        # Получаем текущую дату
        current_date = datetime.now(self.qp.tz_msk).strftime('%d.%m.%Y')

        # Получаем свободные средства T1
        money_limits = self.qp.get_money_limits()['data']
        firm_money_limits = [ml for ml in money_limits if ml['firmid'] == firm_id and ml['limit_kind'] == 1]

        if firm_money_limits:
            free_money = firm_money_limits[0]['currentbal']
            currency_code = firm_money_limits[0]['currcode']

        # Получаем прибыль/убыток в %
        profit_percentage = self.qp.get_daily_profit_percentage(firm_id, client_code, 1)
        profit_loss = self.qp.get_daily_profit_loss(firm_id, client_code, 1)

        # Выводим результат (теперь переменные определены)
        self.logger.info(current_date)
        self.logger.info(f"T1: Свободные средства {free_money} {currency_code}")
        self.logger.info(f"T1: Прибыль/убыток %: {profit_percentage:.2f}%")
        self.logger.info(f"T1: Прибыль/убыток дня: {profit_loss:.2f} {currency_code}")
    except Exception as e:
        self.logger.error(f"Ошибка при получении данных: {e}")

    return free_money, currency_code, profit_percentage, profit_loss
что добавить в QuikPy:
Код
def get_daily_profit_loss(self, firm_id, client_code, limit_kind=0, trans_id=0):
    """Получение прибыли/убытка дня

    :param str firm_id: Код фирмы
    :param str client_code: Код клиента
    :param int limit_kind: Срок расчетов (0-T0, 1-T1, 365-T365)
    :param int trans_id: Код транзакции
    :return: Прибыль/убыток дня
    """
    portfolio = self.get_portfolio_info_ex(firm_id, client_code, limit_kind, trans_id)
    if portfolio and 'data' in portfolio:
        profit_loss = portfolio['data'].get('profit_loss')
        if profit_loss is not None:
            return float(profit_loss)
    return 0.0

def get_daily_profit_percentage(self, firm_id, client_code, limit_kind=0, trans_id=0):
    """Получение прибыли/убытка дня в процентах

    :param str firm_id: Код фирмы
    :param str client_code: Код клиента
    :param int limit_kind: Срок расчетов
    :param int trans_id: Код транзакции
    :return: Прибыль/убыток дня в %
    """
    portfolio = self.get_portfolio_info_ex(firm_id, client_code, limit_kind, trans_id)
    if portfolio and 'data' in portfolio:
        data = portfolio['data']
        portfolio_value = data.get('portfolio_value')
        profit_loss = data.get('profit_loss')

        if portfolio_value and profit_loss and float(portfolio_value) != 0:
            portfolio_value_float = float(portfolio_value)
            profit_loss_float = float(profit_loss)
            return (profit_loss_float / portfolio_value_float) * 100
    return 0.0

def get_portfolio_value(self, firm_id, client_code, limit_kind=0, trans_id=0):
    """Получение стоимости портфеля

    :param str firm_id: Код фирмы
    :param str client_code: Код клиента
    :param int limit_kind: Срок расчетов
    :param int trans_id: Код транзакции
    :return: Стоимость портфеля
    """
    portfolio = self.get_portfolio_info_ex(firm_id, client_code, limit_kind, trans_id)
    if portfolio and 'data' in portfolio:
        portfolio_value = portfolio['data'].get('portfolio_value')
        if portfolio_value is not None:
            return float(portfolio_value)
    return 0.0
"Состояние счета", программно получить параметр по прибыли
 
Добрый день всем.
В таблице "Состояние счета" есть два параметра Прибыль дня \ Прибыль %, мне нужно получить их значения в консультативном роботе на python на базе библиотеки QuikPy.
Попробовал эскпорт dde по этой таблице - но эти параметры в Итого и в экспорт не попадают..
Мне будет достаточно если где-нибудь в папке Quik будет создаваться файлик, а в нем текстом нужные мне значения всегда актуальные.
Подскажите пожалуйста, как это сделать с использованием это библиотеки, внутреннего lua-скрипта или иной встроенной функциональности.

Буду очень признателен за помощь.
Страницы: 1
Наверх