Ce référentiel contient un SDK PHP à utiliser avec l'API Alpaca.
Avertissement: Ce n'est pas un SDK officiel, il n'est pas affilié à ni approuvé par Alpaga.
Avec la version de v3.0.0 de cette bibliothèque, nous utilisons l'API de données Alpaca V2. Les méthodes getLastTrade et getLastQuote sont compatibles en arrière et ne nécessitent aucune modification de votre base de code.
getBars n'est pas compatible en arrière, vous devrez donc mettre à jour votre base de code pour utiliser la nouvelle signature de la méthode trouvée dans la section des données du marché ci-dessous.
Avec la version de v2.0.0 de cette bibliothèque, nous utilisons V2 de l'API Alpaca. Cependant, les méthodes sont toutes compatibles avec V1.0.0 de cette bibliothèque et V1 de l'API Alpaca, donc la mise à niveau devrait être aussi simple que de mettre à jour la version du package dans votre fichier composer.json et l'installation. Tout devrait fonctionner comme auparavant, mais maintenant vous aurez accès aux nouvelles méthodes et aux nouveaux paramètres de méthode.
Remarque : ce package nécessite actuellement PHP> = 7.2.5
$ composer require jeffreyhyer/alpaca-trade-api-phpDepuis votre application PHP, vous pouvez accéder à l'API Alpaca avec seulement quelques lignes:
<?php
require ' ./vendor/autoload.php ' ;
use Alpaca Alpaca ;
$ alpaca = new Alpaca ( " --KEY-- " , " --SECRET-- " );
$ positions = $ alpaca -> getPositions (); De v2.1.0 ce package prend en charge l'authentification des utilisateurs via OAuth à l'API Alpaca. Pour une explication détaillée sur le flux OAuth, voir les documents alpaca.
Les méthodes suivantes peuvent être utilisées pour demander l'autorisation d'accéder à un compte alpaca des utilisateurs externes et de récupérer un jeton d'accès pour effectuer des appels d'API en leur nom.
getOauthAuthorizeUrl($client_id, $redirect_uri, $scope = "", $state = null)
Fournissez vos applications $client_id et une $redirect_uri autorisée / liste à blanc ainsi que la $scope souhaitée et une valeur $state aléatoire. Cette fonction renverra l'URL à laquelle vous devez rediriger votre utilisateur afin d'autoriser votre application à accéder à son compte.
getOauthAccessToken($code, $client_id, $client_secret, $redirect_uri)
Une fois que l'utilisateur a autorisé votre application à accéder à son compte, Alpaca redirigera l'utilisateur vers votre application ( $redirect_uri ). Dans l'URL sera un paramètre code , vous passerez cela en tant que paramètre $code à cette fonction avec votre $client_id et $client_secret et votre $redirect_url d'origine. Cette fonction renverra un jeton d'accès qui peut ensuite être utilisé pour appeler l'API Alpaca au nom de cet utilisateur / compte.
Pour commencer à utiliser le jeton d'accès setAccessToken($token) avec la valeur du jeton.
Une fois authentifié, vous pouvez appeler getOauthAccessTokenDetails() pour obtenir les détails du jeton d'accès (statut, validité, etc.).
Pour commencer, initialisez la classe Alpaca avec votre clé alpaga et votre secret. Vous pouvez également définir le troisième paramètre pour activer ou désactiver le trading de papier. La valeur par défaut est true pour activer les appels contre le point de terminaison de trading de papier.
use Alpaca Alpaca ;
$ alpaca = new Alpaca ( " KEY " , " SECRET " , true );
// This call will now work as expected if your KEY and SECRET are valid.
// If not, the response will contain an error explaining what went wrong.
$ resp = $ alpaca -> getAccount ();Vous pouvez modifier ces valeurs après initialisation si nécessaire en utilisant les méthodes suivantes:
setKey($key)
Définissez votre clé d'alpaga
setSecret($secret)
Réglez votre secret alpaga
setPaper(true)
Activer ou désactiver le trading de papier. true = papier trading, false = trading en direct.
Toutes les méthodes renvoient une instance de la classe AlpacaResponse qui a un certain nombre de méthodes pratiques pour travailler avec la réponse de l'API.
getCode()
Renvoie le code d'état HTTP de la demande (par exemple 200 , 403 , etc.).
getReason()
Renvoie la raison du statut HTTP de la demande (par OK , Forbidden , etc.).
getResponse()
Renvoie la réponse décodée JSON. Par exemple:
print_r ( $ alpaca -> getAccount ()-> getResponse ());
/*
Results in:
stdClass Object
(
[id] => null
[status] => ACTIVE
[currency] => USD
[buying_power] => 25000
[cash] => 25000
[cash_withdrawable] => 0
[portfolio_value] => 25000
[pattern_day_trader] =>
[trading_blocked] =>
[transfers_blocked] =>
[account_blocked] =>
[created_at] => 2018-11-01T18:41:35.990779Z
[trade_suspended_by_user] =>
)
*/? Docs alpaga
getAccount()
Renvoie le compte associé à la clé API.
? Docs alpaga
getOrders($status = null, $limit = null, $after = null, $until = null, $direction = null, $nested = null)
Récupère une liste de commandes pour le compte, éventuellement filtrées par les paramètres de requête fournis.
createOrder($symbol, $qty, $side, $type, $time_in_force, $limit_price = null, $stop_price = null, $client_order_id = null, $extended_hours = null, $order_class = null, $additional = [])
Passe une nouvelle commande pour le compte donné. Une demande de commande peut être rejetée si le compte n'est pas autorisé pour le trading, ou si le solde négociable est insuffisant pour remplir la commande.
getOrder($order_id)
Récupère une seule commande pour le $order_id donné.
getOrderByClientId($client_order_id)
Récupère une seule commande pour le $client_order_id donné.
replaceOrder($order_id, $qty, $time_in_force, $limit_price = null, $stop_price = null, $client_order_id = null)
Remplace un seul ordre par des paramètres mis à jour. Chaque paramètre remplace l'attribut correspondant de l'ordre existant. Les autres attributs restent les mêmes que l'ordre existant.
cancelOrder($order_id)
Tente d'annuler une commande ouverte. Si la commande n'est plus annulée (exemple: status=order_filled ), le serveur répondra avec Status 422 et rejettera la demande.
cancelAllOrders()
Tente d'annuler toutes les commandes ouvertes. Une réponse sera fournie pour chaque commande qui est tenue d'être annulée. Si une commande n'est plus annulée, le serveur répondra avec Status 500 et rejettera la demande.
? Docs alpaga
getPositions()
Récupère une liste des positions ouvertes du compte.
getPosition($symbol)
Récupère la position ouverte du compte pour le $symbol donné.
closeAllPositions()
Ferme (liquide) Tous les positions ouvertes longues et courtes sont ouvertes. Une réponse sera fournie pour chaque commande qui est tenue d'être annulée. Si une commande n'est plus annulée, le serveur répondra avec Status 500 et rejettera la demande.
closePosition($symbol)
Ferme (liquide) la position ouverte du compte pour le $symbol donné. Fonctionne pour des positions longues et courtes.
? Docs alpaga
getAssets($status = null, $asset_class = null)
Obtenez une liste d'actifs
getAsset($symbol)
Obtenez un actif pour le $symbol donné.
getAssetById($id)
Obtenez un actif pour le $id donné.
? Docs alpaga
getWatchlists()
Renvoie la liste des listes de surveillance enregistrées sous le compte.
createWatchlist($name, $symbols = [])
Créez une nouvelle liste de surveillance avec un ensemble initial d'actifs ( $symbols ). Le $name est utilisé pour identifier la liste de surveillance dans l'une des méthodes *WatchlistByName() ci-dessous.
getWatchlist($id)
Renvoie une liste de surveillance identifiée par le $id .
getWatchlistByName($name)
Renvoie une liste de surveillance identifiée par le $name .
updateWatchlist($id, $name, $symbols = [])
Mettez à jour le nom et / ou le contenu de la liste de surveillance identifiée par $id .
updateWatchlistByName($name, $symbols = [])
Mettez à jour le nom et / ou le contenu de la liste de surveillance identifiée par $name .
addAssetToWatchlist($id, $symbol)
Ajoutez un actif pour le $symbol jusqu'à la fin de la liste des actifs de Watchlist.
addAssetToWatchlistByName($name, $symbol)
Ajoutez un actif pour le $symbol jusqu'à la fin de la liste des actifs de Watchlist.
deleteWatchlist($id)
Supprimer une liste de surveillance. Il s'agit d'une suppression permanente.
deleteWatchlistByName($name)
Supprimer une liste de surveillance. Il s'agit d'une suppression permanente.
? Docs alpaga
getCalendar($start = null, $end = null)
Renvoie le calendrier du marché.
? Docs alpaga
getClock()
Renvoie l'horloge du marché.
? Docs alpaga
getAccountConfigurations()
Renvoie les valeurs de configuration du compte en cours.
updateAccountConfigurations($config = [])
Mise à jour et renvoie les valeurs de configuration du compte en cours. $config est un tableau de paires de valeurs clés (par exemple ["key" => "value"] .
? Docs alpaga
getAccountActivitiesOfType($type, $date = null, $until = null, $after = null, $direction = null, $page_size = null, $page_token = null)
Renvoie les entrées d'activité du compte pour un type d'activité spécifique.
getAccountActivities($types = [])
Renvoie les entrées d'activité du compte pour de nombreux types d'activités.
? Docs alpaga
getPortfolioHistory($period = null, $timeframe = null, $date_end = null, $extended_hours = null)
Renvoie des données sur les titres sur les capitaux propres et le profit / perte (P / L) du compte dans Timespan demandé.
? Docs alpaga
getTrades($symbol, $start, $end, $limit = null, $page_token = null)
Renvoie le commerce des données historiques pour la sécurité demandée.
getLastTrade($symbol)
Récupérez le dernier métier pour le symbole demandé.
getQuotes($symbol, $start, $end, $limit = null, $page_token = null)
Renvoie les données historiques de la citation (NBBO) pour la sécurité demandée.
getLastQuote($symbol)
Récupère la dernière citation du symbole demandé.
getBars($timeframe, $symbol, $start, $end, $limit = null, $page_token = null)
Renvoie les données historiques agrégées pour la sécurité demandée.
getMultiSnapshot($symbols)
Renvoie les instantanés pour les titres demandés.
getSnapshot($symbol)
Renvoie l'instantané de la sécurité demandée.