{"id":28922118,"url":"https://github.com/alexstewartja/dxtrade-php-sdk","last_synced_at":"2026-03-01T16:33:48.247Z","repository":{"id":291489487,"uuid":"977770999","full_name":"alexstewartja/dxtrade-php-sdk","owner":"alexstewartja","description":"PHP SDK for DXtrade's Administrative and Trading REST API endpoints.","archived":false,"fork":false,"pushed_at":"2026-01-12T00:35:00.000Z","size":96,"stargazers_count":1,"open_issues_count":2,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-12T04:49:21.691Z","etag":null,"topics":["cfd","crypto","dxtrade","forex","futures","trade","trading"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/alexstewartja.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"alexstewartja","buy_me_a_coffee":"alexstewartja"}},"created_at":"2025-05-04T23:24:02.000Z","updated_at":"2026-01-12T00:34:57.000Z","dependencies_parsed_at":"2025-06-22T07:33:33.641Z","dependency_job_id":"966a1bee-1314-4274-a789-ffcc3b34a826","html_url":"https://github.com/alexstewartja/dxtrade-php-sdk","commit_stats":null,"previous_names":["alexstewartja/dxtrade-php-sdk"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/alexstewartja/dxtrade-php-sdk","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexstewartja%2Fdxtrade-php-sdk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexstewartja%2Fdxtrade-php-sdk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexstewartja%2Fdxtrade-php-sdk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexstewartja%2Fdxtrade-php-sdk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alexstewartja","download_url":"https://codeload.github.com/alexstewartja/dxtrade-php-sdk/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexstewartja%2Fdxtrade-php-sdk/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29974746,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-01T16:18:32.386Z","status":"ssl_error","status_checked_at":"2026-03-01T16:18:04.258Z","response_time":124,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cfd","crypto","dxtrade","forex","futures","trade","trading"],"created_at":"2025-06-22T07:32:19.439Z","updated_at":"2026-03-01T16:33:48.220Z","avatar_url":"https://github.com/alexstewartja.png","language":"PHP","funding_links":["https://github.com/sponsors/alexstewartja","https://buymeacoffee.com/alexstewartja"],"categories":[],"sub_categories":[],"readme":"\u003ccenter\u003e\u003cimg src=\"https://i.ibb.co/mCpQg1Wp/dxtrade-php-sdk-cover.png\" alt=\"DXtrade PHP SDK\"\u003e\u003c/center\u003e\n\n# DXtrade PHP SDK\n\n[![Latest Stable Version](http://poser.pugx.org/alexstewartja/dxtrade-php-sdk/v)](https://packagist.org/packages/alexstewartja/dxtrade-php-sdk)\n[![Total Downloads](http://poser.pugx.org/alexstewartja/dxtrade-php-sdk/downloads)](https://packagist.org/packages/alexstewartja/dxtrade-php-sdk)\n[![License](http://poser.pugx.org/alexstewartja/dxtrade-php-sdk/license)](https://packagist.org/packages/alexstewartja/dxtrade-php-sdk)\n\n![Tests Status](https://img.shields.io/github/actions/workflow/status/alexstewartja/dxtrade-php-sdk/run-tests.yml?label=tests)\n![Static Analysis](https://img.shields.io/github/actions/workflow/status/alexstewartja/dxtrade-php-sdk/fix-php-code-style-issues.yml?label=code%20style)\n\n[![PHP Version Required](http://poser.pugx.org/alexstewartja/dxtrade-php-sdk/require/php)](https://packagist.org/packages/alexstewartja/dxtrade-php-sdk)\n\n[![Buy Me A Coffee](https://img.shields.io/badge/Buy_Me-A_Coffee-orange?logo=buy-me-a-coffee)](https://buymeacoffee.com/alexstewartja)\n\nPHP SDK for DXtrade's Administrative and Trading REST API endpoints.\n\n## Installation\n\nYou can install the package via composer:\n\n```bash\ncomposer require alexstewartja/dxtrade-php-sdk\n```\n\n## Usage Examples\n\n### Client Setup\n\nFirst, initialize the DXtrade client:\n\n```php\n// Create a client in the demo environment\n$client = new DXtradeClient(Env::BASE_URL_DEMO);\n// Or in a custom/production environment\n$prodBaseUrl = 'https://your-production-url.com';\n$client = new DXtradeClient($prodBaseUrl);\n\n// With custom Guzzle options\n$client = new DXtradeClient(\n    $prodBaseUrl,\n    null,\n    [\n        'timeout' =\u003e 30,\n        'verify' =\u003e false,\n    ]\n);\n\n// If you already have a session token\n$client = new DXtradeClient(\n    $prodBaseUrl,\n    'your-session-token'\n);\n```\n\n### Administrative API\n\nThe Administrative API provides access to account management, user management, and other administrative functions.\n\n```php\n// Authentication\n$loginRequest = (new LoginRequest())\n    -\u003esetUsername('alex')\n    -\u003esetDomain('uptrendprop')\n    -\u003esetPassword('password123!');\n$loginResult = $client-\u003eadministrative()-\u003eauthentication()-\u003elogin($loginRequest);\n$sessionToken = $loginResult-\u003egetSessionToken(); // Get the session token\n// Store the session token for future clients/requests\n// OR\n// Set the session token on this client\n$client-\u003esetSessionToken($sessionToken);\n\n// Accounts\n$accounts = $client-\u003eadministrative()-\u003eaccounts()-\u003egetAccounts(); // Get all accounts\n$account = $client-\u003eadministrative()-\u003eaccounts()-\u003egetAccount('clearing_code', 'account_code'); // Get a specific account\n\n// Users\n$users = $client-\u003eadministrative()-\u003eusers()-\u003egetUsers();\n\n// Single Sign-On (SSO)\n$ssoToken = $client\n    -\u003eadministrative()\n    -\u003esso()\n    -\u003egenerateTokenForm('alex', 'uptrendprop'); // Generate SSO token for a user via HTTP POST\n\n// Brokers\n$brokers = $client-\u003eadministrative()-\u003ebrokers()-\u003egetBrokers();\n\n// Cash Transfers\n$adjustment = (new Adjustment())\n    -\u003esetAmount(-50.0)\n    -\u003esetCurrency('USD')\n    -\u003esetDescription('Test debit adjustment');\n$transfer = $client-\u003eadministrative()-\u003ecashTransfers()-\u003ecreateAdjustment(\n    'clearing_code',\n    'account_code',\n    uniqid('adj-'),\n    $adjustment\n);\n\n// Categories\n$categories = $client-\u003eadministrative()-\u003ecategories()-\u003egetCategories();\n```\n\n### Trading API\n\nThe Trading API provides access to trading operations, market data, and order management.\n\n```php\n// Authentication\n$loginRequest = (new LoginRequest())\n    -\u003esetUsername('alex')\n    -\u003esetDomain('uptrendprop')\n    -\u003esetPassword('password123!');\n$loginResponse = $client-\u003etrading()-\u003eauthentication()-\u003elogin($loginRequest);\n\n// Accounts\n$accounts = $client-\u003etrading()-\u003eaccounts()-\u003egetAccounts(); // Get all accounts\n$eodMetrics = $client\n    -\u003etrading()\n    -\u003eaccounts()\n    -\u003egetEodMetricsQuery('2025-04-21', 'uptrendprop:alex,uptrendprop:staff'); // Get End-Of-Day metrics\n$portfolios = $client\n    -\u003etrading()\n    -\u003eaccounts()\n    -\u003egetAccountPortfolios('uptrendprop:alex', 'account-etag-123'); // Get account portfolios\n\n// Instruments\n$instruments = $client-\u003etrading()-\u003einstruments()-\u003egetByType(InstrumentType::CFD_FUTURES); // Get all instruments by type\n$instrument = $client-\u003etrading()-\u003einstruments()-\u003egetBySymbol('EUR/USD'); // Get instrument(s) by symbol\n\n// Market Data\n$marketEventType = (new MarketEventRequestType())\n    -\u003esetType(MarketEventType::CANDLE-\u003evalue)\n    -\u003esetCandleType(CandleType::H4-\u003evalue)\n    -\u003esetFromTime((new DXtradeDateTime('-3 months')))\n    -\u003esetToTime((new DXtradeDateTime('now')));\n$marketDataRequest = (new MarketDataRequest())\n    -\u003esetAccount('uptrendprop:alex')\n    -\u003esetSymbols(['EUR/USD'])\n    -\u003esetEventTypes([$marketEventType]);\n// Get last 3 months of 4-hour candles for EUR/USD\n$candles = $client-\u003etrading()-\u003emarketData()-\u003egetMarketData($marketDataRequest);\n\n// Orders\n$openOrders = $client-\u003etrading()-\u003eorders()-\u003egetOpenOrders('uptrendprop:alex'); // Get all open orders for an account\n// Place limit-short (sell) order of 100 units on EUR/USD if it drops to the $1.08 USD price-point\n$orderCode = uniqid('ord-');\n$orderRequest = (new SingleOrderRequest())\n    -\u003esetOrderCode(uniqid('ord-'))\n    -\u003esetType(OrderType::LIMIT-\u003evalue)\n    -\u003esetInstrument('EUR/USD')\n    -\u003esetQuantity(100.00)\n    -\u003esetSide(OrderSide::SELL-\u003evalue)\n    -\u003esetLimitPrice(1.08);\n$limitOrderResponse = $client-\u003etrading()-\u003eorders()-\u003ecreateOrder('uptrendprop:alex', $orderRequest);\n// Cancel an order\n$cancelledOrderResponse = $client-\u003etrading()-\u003eorders()-\u003ecancelOrder('uptrendprop:alex', $orderCode);\n$orderIsCancelled = ($cancelledOrderResponse-\u003egetOrderId() === $limitOrderResponse-\u003egetOrderId());\n\n// Conversions\n$conversionRate = $client-\u003etrading()-\u003econversion()-\u003egetConversionRate('USD', 'EUR');\n```\n\n## Testing\n\n```bash\ncomposer test\n```\n\n## Changelog\n\nPlease see [CHANGELOG](CHANGELOG.md) for more information on what has changed recently.\n\n\n## Contributing\n\nA [Lando](https://lando.dev/) file is included in the repo to get up and running quickly:\n\n```bash\nlando start\n```\n\nPlease see [CONTRIBUTING](CONTRIBUTING.md) for more details.\n\n## Security\n\nIf you discover any security-related issues, please email \n[dxtrade@alexstewartja.com](mailto:dxtrade@alexstewartja.com?Subject=DXtrade%20PHP%20SDK) instead of using the issue \ntracker.\n\n## Credits\n\n- [Alex Stewart](https://github.com/alexstewartja)\n- [All Contributors](../../contributors)\n\n## License\n\nThe MIT License (MIT). Please see [License File](LICENSE.md) for more information.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falexstewartja%2Fdxtrade-php-sdk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falexstewartja%2Fdxtrade-php-sdk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falexstewartja%2Fdxtrade-php-sdk/lists"}