|
146 | 146 | \end{figure}
|
147 | 147 |
|
148 | 148 |
|
149 |
| - \section{Datový zdroj s aktuálním kurzem kryptoměn} |
| 149 | + \section{Analýza} |
| 150 | + |
| 151 | + \subsection{Datový zdroj s aktuálním kurzem kryptoměn} |
150 | 152 |
|
151 | 153 | Pro vývoj aplikace určené ke sledování obchodního portfólia s kryptoměnami je třeba nalézt vhodný zdroj dat, který bude využíván k získávání aktuálního kurzu sledovaných kryptoměn. Mezi hlavní požadavky na takový datový zdroj je jeho dostupnostie jednoduchost rozhraní a množina podporovaných kurzů. Ideálním zdrojem je tedy takový zdroj, který poskytuje aktuální i historický kurz na všech burzách prostřednictvím REST API bez nutnosti registrace.
|
152 | 154 |
|
153 |
| - \subsection{Webový zdroj CoinGecko} |
| 155 | + \subsubsection{Webový zdroj CoinGecko} |
154 | 156 | Aktuální i historický kurz drtivé většiny všech existujících kryptoměn bez nutnosti registrace nabízí pomocí REST rozhraní webová služba CoinGecko\cite{coingecko2021}. Jediným omezením tohoto API je počet provedených požadavků za minutu, který je stanoven na 100, což je pro aplikaci určenou ke sledování kryptoměnového portfólia více než dostačující.
|
155 | 157 |
|
156 | 158 | \begin{lstlisting}
|
|
169 | 171 |
|
170 | 172 | V úvahu připadá ukládat portfólia a transakce ve formátu JSON či XML přímo na souborový systém, ale z důvodu relace M:N mezi portfólii a kryptoměnami nejsou tyto typy databází příliš vhodné. Jako lepší volba tedy jeví nějaká relační databáze, např. SQLite, která je často používána při tvorbě desktopových aplikací a ukládá se ve formě jednoho souboru na souborový systém zařízení.
|
171 | 173 |
|
172 |
| - |
173 | 174 | \section{Popis architektury vytvořené aplikace}
|
174 | 175 |
|
175 | 176 | \subsection{Databázová vrstva}
|
|
222 | 223 | \subsection{Služba \texttt{IMarketOrderService}}
|
223 | 224 | Rozhraní pro správu transakcí v perzistentním úložišti poskytuje právě tato služba, kdy poskytuje i metodu pro vyhledání všech transakcí patřících do vybrané položky portfólia.
|
224 | 225 |
|
| 226 | + \subsection{Napojení na online datový zdroj kurzů kryptoměn} |
| 227 | + Aby aplikace mohla zobrazovat nejaktuálnější výnosnost investicí, tak potřebuje být schopna získávat data z datového zdroje kurzů kryptoměn. |
| 228 | + Pro tyto účely slouží obecné rozhraní \texttt{ICryptoStatsSource}, které definuje následující metody: |
| 229 | + |
| 230 | + \begin{itemize} |
| 231 | + \item \texttt{GetMarketEntries(string currency, params string[] ids)} -- stáhne nejaktuálnější informace o vybraných kryptoměnách, kdy údaje o cenách jsou ve měně vybrané pomocí parametru \texttt{currency}. |
| 232 | + Mezi stahované informace patří například zkratka kryptoměny, její název, aktuální hodnota či tržní kapitalizace. |
| 233 | + \item \texttt{GetAvailableCryptocurrencies()} -- stáhne seznam kryptoměn, na které se může volající datového zdroje tázat. |
| 234 | + V seznamu dostupných kryptoměn je u každé informace o jejím názvu, zkratce a identifikátoru. |
| 235 | + \end{itemize} |
| 236 | + |
| 237 | + Ve vytvořené aplikaci se nachází implementace \texttt{CoingeckoSource}, která k získávání informací o kryptoměnách používá REST API rozhraní služby Coingecko. |
| 238 | + K vytváření HTTP požadavků, pomocí kterých komunikuje se zmíněnou službou, tato implementace používá knihovnu \textbf{TinyRestClient}\footnote{\url{https://github.com/jgiacomini/Tiny.RestClient}}. |
| 239 | + |
225 | 240 | \subsection{Služba pro výpočet výkonu jednotlivých entit}
|
226 | 241 | Aby bylo možné vypočítat výkon (zisk či ztráta) jednotlivých entit (portfólio, položka portfólia či uskutečněný obchod), tak bylo vytvořeno rozhraní \texttt{ISummaryService} a jeho implementace \texttt{SummaryServiceImpl}.
|
227 | 242 |
|
|
0 commit comments