Schemat bazy numer 1
Kupno akcji
- nowa pozycja na rynku, kupno ustawiam status bs_id na 1 = kupno, podaje ilość akcji do kupienia i cenę,
- sprawdzam ilość dostępnych akcji w tabeli stock i cenę,
- jeżeli cena jest niższa lub wyższa to sprawdzam czy ktoś w takiej cenie chce sprzedać (kolumna sharePriceSell), jeżeli chce to puszczam na rynek, zmieniam status pozycji na rynku na bs_id = 0, zmniejszam ilość akcji w tabeli stock aktualizuje cenę na podstawie ceny z transakcji (kolumna sharePriceBuy) oraz dopisuje datę aktualizacji w tabeli stock, zmniejszam ilość kasy w portfelu oraz zwiększam ilość nabytych akcji (kolumna może być niepotrzebna, możliwe że kolumna do weryfikacji w razie przekłamań),
- jeżeli nikt nie sprzedaje w takiej cenie, opcje są dwie albo ustawienie statusu oczekiwanie jeżeli cena spadnie lub się podniesie i zamrożenie środków, albo info zwrotne do użytkownika że transakcja nie możliwa musi zmienić cenę (pierwsza opcja ciekawsza)
Sprzedaż akcji
- mam pozycję na rynku (w portfelu), sprawdzam czy na rynku są akcje ilość i cena i teraz jeżeli:
- np chcę sprzedać 100 akcji po danej cenie, a jest oferta na 50 akcji o tej cenie i 50 po niższej to co wtedy? - albo brak zgody albo podzielenie oferty na dwa, czyli brak zgody
- na rynku nikt nie chce sprzedawać, ale mam emitenta w tej tabeli jest pewna ilość - więc ściągam ilość zmieniam cenę jeżeli jest inna, zeruje tabele akcje ilość min = 0, wszystkie akcje w rynku, zmieniam status transakcji na bs_id = 0
- jeżeli transakcja doszła do skutku kasa w portfelu rośnie, ilość akcji w portfelu maleje, ilość akcji u innych użytkowników maleje i/lub u emitenta, cena rynkowa ustalona u emitenta w tabeli stock na cenę ostatniej sprzedaży aktualizacja daty w tabeli stock,
- Emitent wysyła pakiet akcji na rynek rekord w tabeli rynek z pustym polem portfel (null), wypełniona tylko cena sprzedaży, cena skupu = 0, status bd_id = 2, ilość w tabeli stock zmniejszona o ilość akcji na rynku lub zjazd do zera jeżeli wszystkie są w rynku, jeżeli ilość akcji w tabeli stack to ilość akcji na rynku to pilnuje tylko żeby nie przekroczyć limitu stackMaxCount, opcja dodatkowa na przyszłość parametr cena akcji jeżeli jest równa zero to pobieram cenę z tabeli stock, jeżeli nie to wpisuje nową cenę do emisji w tabeli marketsquare .
Aktualizacja do Kupna jeżeli jest emisja to patrze też na akcje nie przypisane do nikogo.
Cena w tabeli Stock może być ceną średnią na rynku lub najwyższą w sprzedaży, aczkolwiek można by się zastanawiać czy w ogóle powinna istnieć ta kolumna.
Skup
- Rekord w tabeli rynek z pustym polem portfel, cena sprzedaży = 0, uzupełniona cena skupu na podstawie ceny z tabeli Stock (?), status bd_id = 1, ilość akcji = 0, a wraz z trwaniem skupu ilość się zwiększa nie może przekroczyć maksymalnej ilości wyemitowanych akcji. Zakończenie skupu to status bd_id = 0.
Cykl giełdy
???
Tabela BuyingSelling wartości:
- 0 - brak akcji,
- 1 - kupno,
- 2 - sprzedaż
- nothing happend
- buy
- sell
- emission
- return
Brak komentarzy:
Prześlij komentarz