Задание за курсова работа и упражнения дисциплина: Архитектури на софтуерни системи



Дата14.02.2017
Размер100.4 Kb.
#14917
ЗАДАНИЕ ЗА КУРСОВА РАБОТА И УПРАЖНЕНИЯ

Дисциплина: Архитектури на софтуерни системи



1Формат


Упражненията и курсовата работа по дисциплината „Архитектури на софтуерни системи” имат една и съща цел и съдържание – до края на семестъра трябва да се проектира и документира софтуерната архитектура на системата, чиито изисквания са дадени в Раздел настоящия документ. По време на упражненията ще бъдат анализирани изискванията, ще бъдат документирани частично някои от структурите, ще бъдат разрешавани проблеми, възникнали по време на проектирането и ще бъде разглеждан прогреса на курсовата работа. Останалата дейност по проектирането на архитектурата ще бъде предмет на самостоятелна работа, като за целта студентите се разделят на групи от по 2-3 човека.
Документираната в курсовата работа архитектура трябва да съдържа документация на структурите, като е необходимо документирането на три структури – декомпозиция на модулите и още две по избор.
Дефиниция на софтуерната система

1.1Въведение


Обект на настоящата курсова задача е проектирането на архитектура за софтуерна система за крайни клиенти за извършване на сделки с валута на международния валутен пазар.
Международния валутен пазар (FOREX) е най-големия и най-бързо ликвидния пазар в света. Ежедневно на него се търгува валута на стойност между 1.5 и 2 трилиона долара. Сделките на FOREX пазара се извършват от лицензирани компании – брокери, като за целта има изградена и добре работеща инфраструктура. От няколко години насам пазарът е отворен и към крайни потребители – вече всеки може да извършва FOREX сделки. За целта лицето Х сключва договор с лицензирана компания – брокер Y, който предоставя на Х софтуер (терминал за извършване на сделки). Използвайки въпросния софтуер, Х може да отправя поръчки към Y за купуване/продаване на валута, като брокера дава котировки на валутите в реално време и изпълнява съответните поръчки на Х, като по този начин го представлява на пазара. Печалбите и загубите на Х се формират от разликите в курса на съответната валута между момента на купуването и продаването.
Целта на настоящата курсова работа е да се изработи архитектура на софтуерна система чрез която крайните клиенти (X) подават поръчки към брокера Y. Част от софтуера се инсталира при Х, а друга част – при Y. Двата компонента си комуникират за извършване на сделки, следене на състоянието на валутните курсове, следене на потребителските сметки и т.н.

2Основи на FOREX търговията


На валутния пазар се търгува валута. Осъществяват се два вида сделки:

  • Покупка на валута. Клиентът X заявява на брокера Y че желае да закупи определено количество „лотове” (лот – неделима сума в дадена валута) от определена валута, като за целта ще плати с друга валута. Валутата, която се купува се нарича основна, а валутата с която се заплаща – допълнителна.

  • Продажба на валута. Клиентът X заявява на брокера Y, че желае да продаде определено количество „лотове” от определена валута, като иска в замяна да му се плати с друга валута. Валутата, която се продава се нарича основна, а валутата, която получава клиента в замяна се нарича допълнителна.

Тъй като винаги става въпрос за основна и допълнителна валута, всяка поръчка се отнася за „двойка” валути (или „инструмент” в общата пазарна терминология). За всяка двойка валути брокера обявява два курса – курс „продава”, на който Y е склонен да продаде 1 от основната валута на X, и курс „купува”, на който Y е склонен да купи от X основната валута. Курсът се отнася за 1 от основната валута. Например:



Двойка: EUR/USD Купува: 1.2015 Продава: 1.2018

Курсовите разлики се броят в „пипсове”. 1 пипс е равен на 1/10000 от допълнителната валута. За случая, когато допълнителната валута е йена 1 пипс = 1/100


Разликата между курсовете „купува” и „продава”, които обявява даден брокер обикновено е константа. Така напр. повечето брокери използват 3 пипса разлика в курса за EUR/USD. Тази разлика представлява своеобразна вградена загуба за крайния клиент, т.е. за да излезе на печалба курсът трябва да се премести в правилната посока поне толкова пипса.

Процесът на търговия протича по следния начин:



  • Пазарът работи 24 часа на ден в делничните дни;

  • Клиентът пожелава да купи или продаде валута. Това се нарича „отваряне на позиция”. Когато става въпрос за купуване, позицията се нарича „дълга”, а когато става въпрос за продаване, позицията се нарича „къса”;

  • В последствие, клиентът решава да продаде, съответно купи същото количество валута, при което в неговата сметка постъпва (или се отнема) печалба (загуба) отговаряща на разликата в курсовете. Това се нарича „затваряне на позиция”.

  • Отворените в 00:00 позиции автоматично се затварят, начислява се лихва (положителна или отрицателна) и позициите се отварят наново по курс към 00:00 на новия ден, който може да е различен от курса „затваря” на предишния ден;

Обикновено 1 лот = 100 000 или 10 000 единици от основната валута. Например при лот 10 000, за да отвори дълга позиция в евро по посочения по-горе курс, крайния клиент трябва да плати 12018 долара. Естествено, такива суми не са по силите на крайните клиенти, затова се реализира т.н. търговия на маржин основа. При нея за всяка отворена позиция клиента трябва да гарантира (т.е. да разполага в сметката) с процент от сумата, напр 1%. Това се нарича маржин депозит и се блокира в сметката на клиента до затваряне на позицията. Така например, при маржин 1%, за да отвори позицията по горния пример, клиента трябва да разполага със 120.18 долара в сметката, които се блокират до затваряне на позицията. Презумпцията е, че курсовата разлика няма да надхвърли 1% във вреда на клиента. Ако все пак това се случи, брокера затваря позицията му в първия възможен момент, като си прибира гаранционния депозит (и евентуално още, ако се наложи и има).

Пример:


  1. В 10:00 отварям дълга позиция в евро, като си купувам 10 000 EUR. Цената на сделката е 12 018 долара и тъй като маржина е 1%, 120.18 долара от сметката ми биват блокирани като маржин депозит. Автоматично съм на загуба 3 долара, тъй като курс купува е с 3 пипса по-нисък от курса на който съм ги купил и ако ги продам веднага ще получа само 12 015, което е с 3 долара по-малко от колкото съм дал.

  2. Вариант 1: В 15:00 установявам, че курсът EUR/USD е вече 1.2065/1.2068. Тогава:

    1. Вариант 1: Решавам да затворя позицията, като за целта си продам 10-те хиляди EUR, срещу което ще получа от брокера 12065 долара. Така регистрирам печалба от 47 долара, които се прибавят към сметката ми.

    2. Вариант 2: Решавам да изчакам курса да се вдигне още, за да спечеля повече. Обаче, в 15:10 публикуват отчайващи за европейската икономика новини (напр. безработицата в Германия скочила с 2% за последните 6 месеца). В следствие на недоверието в европейската икономика хората си продават масово еврата, в следствие на което курсът за 2 минути пада до 1.1890/1.1893. В този момент моите 10000 евро вече се купуват за 11890 долара и моята загуба е 128 долара, което е повече от маржин депозита ми. Брокера автоматично затваря позицията (т.е. продава моите евра) и си удържа 128 долара от моята сметка.

Освен директни поръчки, всички брокери позволяват и поставянето на отложени поръчки за отваряне на позиция:



  • Buy Limit Order – отложена заявка за купуване на определена (или по-добра, т.е. по-ниска) цена. Напр. „когато курс EUR/USD падне до 1.2100, купи 1 лот”.

  • Sell Limit Order – отложена заявка за продаване на определена (или по-добра, т.е. по-висока) цена. Напр., „когато курс EUR/USD се качи до 1.2200, продай 1 лот”.

  • Buy Stop Order – отложена заявка за купуване на определена (или по-лоша, т.е. по-висока) цена. Напр., „когато курс EUR/USD се качи до 1.2500, купи 1 лот”;

  • Sell Stop Order – отложена заявка за продаване на определена (или по-лоша, т.е. по-ниска) цена. Напр., „когато курс EUR/USD падне до 1.2000, купи 1 лот”;

Както и отложени поръчки за затваряне на позиция:



  • Stop Loss – заявка за затваряне на позиция когато курсът стане с N пипса по-неизгоден от този, на който е отворена. Напр. имам отворена дълга позиция в EUR на 1.2018. Искам да си огранича загубите и указвам на брокера да продава ако курсът стане 1.1968. По този начин няма да загубя повече от 50 долара;

  • Take Profit – заявка за затваряне на позиция когато курсът стане с N пипса по-изгоден от този, на който е отворена. Напр. имам отворена дълга позиция в EUR на 1.2018. Целя да постигна печалба от 100 долара и ще съм доволен от това. Указвам на брокера да продава ако курсът стане 1.2118 и си прибирам 100 долара печалба.

Цените, които брокерите дават са средни за пазара. В момента, в който трябва да се купува и продава се изисква котировка, която брокерът прави в момента и важи примерно 10 сек. Ако през това време не се реагира, котировката отпада и е необходимо да се направи нова такава. Това е основен принцип на всеки един пазар, но на FOREX времената за получаване и валидност на котировката са от порядъка на секунди.

3Изисквания към софтуера


Софтуерът ще се продава на брокери, които чрез него ще предоставят услугата маржин търговия с валута на своите клиенти.

3.1Изисквания към сървърния софтуер


Сървърният софтуер се инсталира на сървърна машина на брокера и обслужва заявките от клиенската част. За целта е свързан с бек-офис системата на брокера (повече или по-малко стандартизирана система, която всеки брокер има и в която се пази информация за потребителските сметки и чрез която се извършва самата търговия). Основните изисквания на сървърният софтуер са следните:

  • Интеграция с колкото се може повече стандартни бек-офис системи (тъй като не знем брокерите, на които ще продаваме софтуера каква бек-офис система имат).

  • 100% защитена комуникация с клиентските терминали, тъй като съгласно закона финансовите институции трябва да пазят банкова тайна и да не позволяват на произволни лица да наблюдават транзакциите, банковите сметки и т.н. на клиентите, още по-малко да се извършват разпореждания от чуждо име;

  • Висока надеждност през работни дни – 24 часа на ден през работните дни системата трябва да е функционираща. Най-малката авария може да доведе до големи загуби на крайните клиенти;

  • Бързодействие – бързо-ликвидният FOREX пазар предполага всички действия по търговията да се извършват в рамките на секунди. Затова сървърният софтуер трябва да реагира на заявките възможно най-бързо. Обработката на всяка една заявка не трябва да отнема повече от 1 сек.

Функционалността на сърверния софтуер е следната:



  • да позволява достъп на легитимни клиенти и да отказва такъв на нелегитимни;

  • да обработва валидни заявки, постъпили от клиентския терминал;

  • да пренебрегва, регистрира и предупреждава за невалидни заявки;

  • да преобразува заявките във вид, удобен за бек-офис системата и да ги праща там за изпълнение;

  • да очаква отговори от бек-офис системата, да ги преобразува до удобен за клиентския терминал вид и да ги праща натам;

  • да има механизъм за конфигурация на основните параметри;



3.2Изисквания към клиенския терминален софтуер


Клиентския терминал се инсталира на компютъра на крайния клиент и чрез него той извършва сделки. За целта е свързан със сърверната част на софтуера, който е инсталиран на сървър на брокера.
Функционалността на клиентския софтуер е следната:

  • При стартиране да изисква легитимация от клиента. Едва след потвърждаване от страна на сървъра, че клиента е легитимен, терминала дава достъп на клиента до данните и функционалността си;

  • Да има възможност за показване на:

    • Настоящите валутни курсове за определени валутни двойки. Конкретните двойки, за които се показват курсовете се определят от конфигурационен параметър;

    • Сметките на клиента, отворени при брокера. За всяка сметка се поддържа баланс, свободен ресурс, използван депозит, дневна печалба/загуба;

    • Отворени позиции. За всяка позиция се поддържа: време на отваряне, сметка от която е направена, валутна двойка, сума на сделката, купува/продава, на каква цена е отворена, каква е настоящата цена, какви са установените stop loss и take profit нива, каква е печалбата към момента;

    • Затворени позиции. За всяка позиция се поддържа: време на отваряне, време на затваряне, сметка от която е направена, валутна двойка, сума на сделката, купува/продава, на каква цена е отворена, на каква цена е затворена, печалба;

    • Отложени поръчки. За всяка отложена поръчка се поддържа: сметка, от която е направена, валутна двойка, сума на сделката, купува, продава, stop и limit нива, време на поставяне, време на изпълнение, статус (чакаща, изпълнена);

    • Новини от брокера. Поддържа се функционалността, типична за news клиент – дървовидна организация на папките, получаване на новини в кутията, четенето на новина, изтриването на новина, маркирането на новина като важна, преместването на новина между папките;

    • Графики – трябва да се поддържат графики на движението на курсовете:

      • Възможност за указване на валутната двойка;

      • Възможност за определяне на времевия интервал на графиката;

      • Възможност за определяне на типа на графиката;

      • Възможност за определяне на показания брой интервали;

      • Показване на дати/часове по хоризонтала и валутен курс по вертикала;

      • Автоматично скалиране на графиката съобразно мин. И макс. Валутен курс за показания интервал;

      • Възможност за поставяне на маркери, хоризонтални, вертикални и наклонени линии;

      • Възможност за показване на обема на търговията;

    • Индикатори за технически анализ – системата трябва да поддържа дефиницията и показването на индикатори за технически анализ:

      • Индикаторите да могат да се дефинират чрез въвеждане на формули за тяхното пресмятане и набор от други параметри;

      • Системата трябва да поддържа набор от готови стандартни математически/статистически функции, които да се използват за дефиницията на индикаторите;

      • Да могат да се показват върху графиката и под нея, в зависимост от вида на индикатора;

      • Параметрите на индикаторите да могат да бъдат въвеждани преди показването им;

      • Да могат да се създават индикатори както върху основната графика, така и върху графиката за обема на търговията;

    • Да има възможност за избор и изтриване на всички прибавени артефакти (линии, маркери, индикатори и т.н.)

  • Да може да се поставя пазарна поръчка за купуване, съответно продаване на валута, като се указва валутната двойка, курсът и броя лотове (които в зависимост от сметката са 10000 или 100000 единици);

  • Да могат да се поставят отложени поръчки от типа stop и limit за покупка и продажба на валута;

  • Да могат да се затварят позиции;

  • Да могат да се поставят stop loss и take profit нива за отворените позиции;

  • Да могат да се правят предефинирани справки за състоянието на сметката, в HTML, PDF и XLS формати

  • Да е възможно дефинирането и изпълнението на експертни анализатори – процеси, които следят състоянието на пазара и при настъпване на подходящи условия изпълняват определена активност. Тя може да бъде:

    • Автоматично отваряне и затваряне на позиции;

    • Сигнализация (изпращане на e-mail);

  • Експертните анализатори могат да приемат параметри и трябва да могат да се описват чрез формули и чрез използването на вградените в системата математически, статистически и др. функции;

  • Системата трябва да може да поддържа пускане, спиране и постъпково изпълнение (за дебъг цели) на експертните анализатори, както и конфигурирането и изтриването им;

  • Системата трябва да може да позволява правенето на анализи и при липса на свързаност. За целта е необходимо да се пази временно копие на всички свалени от сървера данни, което да се използва при ситуация на липса на свързаност;






Сподели с приятели:




©obuch.info 2024
отнасят до администрацията

    Начална страница