TradingAnalytics::fake() neexistuje: engine je čistý výpočet bez vedľajších účinkov — bez databázy, HTTP či frontu —, takže test mu odovzdá potrebné obchody a overí čísla. Vytvorte niekoľko obchodov cez Trade::make(), v poradí podľa času zatvorenia, a overujte presné reťazce; výstup bcmath je deterministický:
use RoundlyConsulting\TradingAnalytics\DataTransferObjects\Trade;
use RoundlyConsulting\TradingAnalytics\Facades\TradingAnalytics;
it('reports realized p&l, win ratio and drawdown', function () {
$trades = [
Trade::make('BTC', 'USD', '40000', '42000', '0.5', 'buy', '2024-03-01 09:00', '10', '2024-03-01 15:00'),
Trade::make('ETH', 'USD', '3000', '3150', '2', 'sell', '2024-03-02 10:00', '6', '2024-03-02 12:00'),
];
$analytics = TradingAnalytics::for($trades)->scale(2)->calculate();
expect((string) $analytics->realizedProfitAndLoss->gross->global->total->total)->toBe('700.00')
->and((string) $analytics->realizedProfitAndLoss->net->global->total->total)->toBe('684.00')
->and((string) $analytics->wins->winRatio->global->total)->toBe('0.50')
->and((string) $analytics->maxDrawdown->value)->toBe('306.00');
});V testoch nastavte ->scale(), aby boli očakávané reťazce krátke, a výsledky pred porovnaním pretypujte cez (string). Fasáda potrebuje kontajner Laravelu; v čistom PHPUnit teste bez spustenej aplikácie spustite priamo triedu enginu — použijú sa vstavané predvolené hodnoty:
use Illuminate\Support\LazyCollection;
use RoundlyConsulting\TradingAnalytics\Analytics;
// No booted app (plain PHPUnit): run the engine class itself
$analytics = Analytics::for(LazyCollection::make($trades))->scale(2)->calculate();Testy samotného balíka
Balík obsahuje sadu testov v Peste so statickou analýzou: end-to-end test, ktorý uloží 600 obchodov z referenčného datasetu do SQLite a každú hlavnú metriku porovná so zafixovanými očakávanými hodnotami, zafixované referenčné vektory, ručne prepočítané metriky a streamovací test, ktorý pošle 50 000 obchodov cez všetky kalkulátory — z generátora aj z query buildera po 500-riadkových stránkach — pri stálej pamäti. Spustíte ju v adresári balíka:
composer testPrejavte lásku k open source
Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.
Ďalšie spôsoby podpory vrátane kryptomienOdoslaním daru súhlasíte s našimi podmienkami prijímania darov.
Chcete to zabudovať do svojho produktu?
Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.