PHP code example of mmtech / mmt-risk-sdk

1. Go to this page and download the library: Download mmtech/mmt-risk-sdk library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

mmtech / mmt-risk-sdk example snippets


use MmtRiskSdk\Domains\Accounts\Commands\CreateAccountCommand;
use MmtRiskSdk\Domains\Accounts\ObjectResponses\AccountResponseItem;
use MmtRiskSdk\RiskService;

$risk = app(RiskService::class);

$result = $risk->accounts()->listAccounts();

if ($result->isSuccess()) {
    /** @var AccountResponseItem[] $rows */
    $rows = $result->getMappedData(AccountResponseItem::class);
}

$health = $risk->health(); // plain array JSON from GET /health

$created = $risk->accounts()->createAccount(
    new CreateAccountCommand(login: '1001', broker_id: $brokerUuid),
);

if ($created->isSuccess()) {
    $account = $created->getMappedData(AccountResponseItem::class);
}

use MmtRiskSdk\Domains\Accounts\Commands\ProvisionAccountCommand;
use MmtRiskSdk\Domains\Accounts\Commands\ProvisionMetricPhaseCommand;
use MmtRiskSdk\Domains\Accounts\Commands\ProvisionRuleCommand;
use MmtRiskSdk\Domains\Accounts\ObjectResponses\AccountProvisionResponseItem;

$provisioned = $risk->accounts()->provisionAccount(
    new ProvisionAccountCommand(
        login: '50123456',
        broker_id: $brokerUuid,
        start_balance: 100000.0,
        metric_phases: [
            new ProvisionMetricPhaseCommand(
                name: 'Challenge',
                rules: [
                    new ProvisionRuleCommand(
                        conditions: [
                            [
                                'type' => 'comparison',
                                'metric' => 'return_equity_pct_day',
                                'operator' => '<=',
                                'value' => -5.0,
                            ],
                        ],
                        name: 'Max daily drawdown <= -5%',
                        description: 'Daily equity drawdown limit',
                    ),
                ],
            ),
        ],
    ),
);

if ($provisioned->isSuccess()) {
    $payload = $provisioned->getMappedData(AccountProvisionResponseItem::class);
}
bash
php artisan vendor:publish --tag=mmt-risk-sdk-config