Ценообразование по формуле.Хранение в СУБД и использование на уровне приложений.

StackOverflow https://stackoverflow.com/questions/224162

Вопрос

Я собираюсь приступить к первому этапу разработки приложения для торговли сырьевыми товарами.Основная функция этого приложения — сбор и оценка информации о ценах.Цены на этом рынке не фиксированы.Обычно это рыночный ориентир +/- премия.Например:(A и B являются рыночными ориентирами)

  • Цена = А + 1 доллар США
  • Цена = А + 0,5(А-В)

Окончательная цена сделки рассчитывается по формуле ценообразования, применяемой в течение согласованного периода времени.Например;Окончательная цена может представлять собой среднее значение A + 1 доллар за неделю, предшествовавшую и неделю после загрузки товара.

В настоящее время трейдеры фиксируют эти детали в Excel, что дает им возможность гибко настраивать необходимые формулы, но эта информация никогда не попадает в наши системы бухгалтерского учета, а электронные таблицы не связаны с реальными прогнозами рыночных показателей, что делает прогнозирование цен ручным и медленная задача.

Мне нужны сведения о том, какие инструменты/методы я могу использовать для ввода, хранения и оценки формул в приложении.

Мы будем использовать SQL Server или Oracle в качестве базы данных, а клиентская платформа еще не исправлена, но вы можете предположить, что это WinForms/WPF, ASP.NET или веб-приложение Java.

Я знаю, что это довольно широкий вопрос, но мы еще не достаточно продвинулись, чтобы более конкретно определить, какие технологии будут использоваться.

Спасибо

Это было полезно?

Решение

Могу поспорить, что вашим пользователям нравится гибкость ввода формул в Excel, поэтому я бы предложил такой подход:

  1. Напишите что-нибудь, чтобы позволить им вводить формулы в ваше приложение, используя тот тип операторов, который они фактически будут использовать с ключевыми словами для различных базовых цен.Это можно просто сохранить в виде строки.
  2. Проверьте это, используя метод белого списка (это может быть довольно сложно, возможно, вам придется поискать некоторые алгоритмы синтаксического анализа на основе стека).Вы можете разрешить:+ - / * ( ) {числовые константы} {ключевые слова для базовых цен}.
  3. Переведите эти формулы в список SELECT так, чтобы ваша база данных могла их понять.Если формулы, которые они вводят, аналогичны тем, что вы можете сделать в SQL, это может быть не слишком сложно.Ключевые слова преобразуются в имена столбцов, а все остальное можно оставить в покое.

Затем вы сможете ВЫБРАТЬ данные, усреднить их за периоды времени и т. д., подключив специальную форму и пропустив ее на основе ваших исторических данных и/или прогнозов.

В шаге 2 есть некоторые хитрости, но он сделает все остальное простым (и эффективным).

Другие советы

Рассматривали ли вы интеграцию с Excel?Таким образом, вам не придется пытаться вырвать Excel из их лап (бизнес-пользователи ОБОЖАТЬ Excel), и они смогут использовать все приемы, которым научились за эти годы.Вы просто перекачиваете данные туда и обратно между вашим приложением и Excel с помощью VBA (или, как там сейчас говорят людям, интегрироваться с Excel), и все готово.

У меня есть до смешного простое решение, связанное с предложением Хэнка.Создайте базу данных и смоделируйте ее по образцу таблиц Excel.Экспортируйте данные Excel и импортируйте их в свою базу данных.Создайте соединители ODBC на клиентских компьютерах, чтобы они указывали на базу данных.В Excel вы можете подключаться к источникам данных.Таким образом, у ваших клиентов не возникнет проблем с изменениями пользовательского интерфейса.

Интересный сценарий.ПРЕДУПРЕЖДЕНИЕ:Этот ответ основан на некоторых моих идеях по решению проблемы и может не отражать передовой опыт.

Я хотел бы попытаться посмотреть, сможете ли вы свести свои потенциальные правила формул к более простым конструкциям.Это позволит вам составлять правила вместе для создания сложных формул.Затем вам потребуется возможность хранить правила в базе данных, что можно сделать с помощью DSL или какого-либо файла правил XML.

Похоже, ваш текущий сценарий, формула в Excel, работает довольно хорошо, но есть несколько сбоев.Рассматривали ли вы возможность использования некоторых продвинутых макросов или автоматизации Excel?Вероятно, вы могли бы достичь большинства своих целей, даже если вашим клиентам даже не придется покидать Excel.

Удачи.

Если данные взяты из надежного источника (большое «если»), вы можете хранить выражения базы данных в столбце, а затем «на лету» создавать оператор SELECT для его выполнения.

Вы можете использовать символический математический пакет, например ГиНаК для интерпретации формул, которые вы вводите в таблицы.

Спасибо за ответы.

Сами пользователи хотят уйти от Excel.Они борются с несколькими пользователями, пытающимися ввести и обновить данные.Я мог бы изучить, какие возможности VSTO предоставляет для встраивания небольших листов Excel в приложения.

Я склоняюсь к использованию встроенного «языка» для хранения и оценки формул.

Использование простого синтаксического анализатора для преобразования введенных формул в SQL, вероятно, является разумной идеей, поскольку переменные в уравнениях представляют собой векторы временных рядов, а не скалярные точки данных, и подход SQL должен облегчить вычисление результатов за требуемые периоды времени.

Спасибо

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top