Я нахожусь в процессе разработки торгового приложения, которое будет использовать API Маркета для размещения ордеров на Маркете. Это не сложное высокопроизводительное алгоритмическое торговое приложение, которое можно найти в инвестиционных банках. Это всего лишь небольшое персональное приложение, которое будет продаваться, возможно, два или три раза в день в зависимости от рыночных условий / тенденций.
Приложение будет состоять (примерно) из следующих модулей / пакетов:
Стратегии
- актуальные торговые алгоритмы
Аналитика
- Классы для анализа реальных цен и ордеров на рынке для получения сигналов покупки / продажи
Услуги
- Классы, используемые для поддержания связи с рынком, получения рыночной информации и размещения ордеров на покупку / продажу.
Пока что все необходимое для приложения, кажется, доступно в Интернете:
* Apache CXF для создания классов Java, используемых для доступа к веб-сервисам рынка.
* Apache Maths за выполнение анализа цен
* Википедия для различных шаблонов проектирования, т. Е. Фабрика, субъект / наблюдатель, штат и т. Д.
Однако я действительно застрял с алгоритмами. Я решил использовать шаблон State для разделения на логические группы различных частей логики, которые должны выполняться при соблюдении определенных рыночных условий. Проблема в том, что я начинаю понимать, что очень вероятно, что каждый класс состояний будет содержать взрыв операторов if:
if(this_condition) {
// do something
} else if (another_condition) {
// do something else
} else {
// etc..., etc...
}
Я не могу помочь, но чувствую, что мне чего-то здесь не хватает и что должна существовать некая структура или шаблон проектирования, о котором я не знаю, который позволяет разработчику инкапсулировать все входы и выходы данного бизнес-контекста в конечное число бизнес-действия [ввод / вывод], на которых можно строить бизнес-правила [алгоритмы]. То есть Я надеюсь, что вместо того, чтобы жестко кодировать алгоритмы, должно быть возможно превратить приложение в какой-то процессор правил. К сожалению, я не знаю, с чего начать. Надеюсь, я достаточно ясно объяснил свою дилемму, если вы хотите, чтобы я что-то прояснил, пожалуйста, дайте мне знать.
Спасибо