NovinkaZverejnili sme 50+ Laravel balíkov ako open source
Custom AI apps, agents and automation — Roundly ConsultingRoundly
Všetky balíky

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 test

Prejavte 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 kryptomien

Odoslaní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.