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

Predvolene bežia všetky kalkulátory. Odovzdajte triedy kalkulátorov, ktoré chcete; ich závislosti sa pridajú automaticky — aj tranzitívne — a zachová sa kanonické poradie behu:

use RoundlyConsulting\TradingAnalytics\Analytics\Counts;
use RoundlyConsulting\TradingAnalytics\Analytics\Streaks;

$analytics = TradingAnalytics::calculate($trades, only: [Counts::class]);
$analytics = TradingAnalytics::for($trades)->only([Counts::class])->calculate(); // same, fluent
// $analytics->counts is populated; metrics you didn't request stay null

$analytics = TradingAnalytics::for($trades)->except([Streaks::class])->calculate();

Trieda, ktorá nie je registrovaný kalkulátor, vyhodí UnknownCalculatorException. Čo only() / except() prijímajú, zistíte cez TradingAnalytics::metrics() (alebo metrics() na inštancii enginu):

$available = TradingAnalytics::metrics(); // list of calculator class-strings

// Counts, TradingVolume, TradingValue, Commissions,
// UnrealizedGrossProfitAndLoss, UnrealizedNetProfitAndLoss,
// RealizedGrossProfitAndLoss, RealizedNetProfitAndLoss, Wins, ProfitFactor,
// GrossCumulativeReturn, NetCumulativeReturn, TradingFrequency, TradesDuration,
// Streaks, Expectancy, RiskRewardRatio, WinRateByPeriod, MaxDrawdown,
// RiskAdjustedReturns — all in RoundlyConsulting\TradingAnalytics\Analytics\

Závislosti

Každý kalkulátor beží samostatne: každý agregát si sám počíta obchody, z ktorých robí priemer. Od iného kalkulátora závisia len tri — ProfitFactor, Expectancy a RiskRewardRatio vychádzajú z realizovaného hrubého P&L, takže so sebou pridajú RealizedGrossProfitAndLoss:

Kalkulátoronly() spustí aj
ProfitFactorRealizedGrossProfitAndLoss
ExpectancyRealizedGrossProfitAndLoss
RiskRewardRatioRealizedGrossProfitAndLoss

except() aj tak spustí vylúčený kalkulátor, od ktorého závisí niektorý zostávajúci — except([RealizedGrossProfitAndLoss::class]) ho ponechá, kým ho potrebuje profit factor. Výsledky sa v oboch prípadoch zhodujú s úplným behom:

use RoundlyConsulting\TradingAnalytics\Analytics\Expectancy;
use RoundlyConsulting\TradingAnalytics\Analytics\MaxDrawdown;
use RoundlyConsulting\TradingAnalytics\Analytics\RealizedGrossProfitAndLoss;
use RoundlyConsulting\TradingAnalytics\Analytics\RealizedNetProfitAndLoss;

$analytics = TradingAnalytics::for($trades)
    ->scale(2)
    ->only([
        RealizedNetProfitAndLoss::class,  // averages over the closed trades it counted itself
        Expectancy::class,                // pulls in RealizedGrossProfitAndLoss
        MaxDrawdown::class,
    ])
    ->calculate();

array_keys($analytics->toArray());
// ['profit_and_loss', 'expectancy', 'max_drawdown']

$analytics->realizedProfitAndLoss->net->global->total->average; // '260.33' — same as a full run
$analytics->counts;                                             // null — not requested

// except() keeps a dependency a remaining calculator still needs
$analytics = TradingAnalytics::for($trades)->except([RealizedGrossProfitAndLoss::class])->calculate();
$analytics->realizedProfitAndLoss->gross; // still calculated — the profit factor needs it

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.