ที่เก็บนี้มี PHP SDK สำหรับใช้กับ Alpaca API
ข้อจำกัดความรับผิดชอบ: นี่ ไม่ใช่ SDK อย่างเป็นทางการ แต่ก็ไม่ได้เป็นพันธมิตรกับหรือรับรองโดย Alpaca แต่อย่างใด
ด้วยการเปิดตัว v3.0.0 ของไลบรารีนี้เราใช้ Alpaca Data API V2 วิธี getLastTrade และ getLastQuote นั้นเข้ากันได้ย้อนหลังและไม่จำเป็นต้องมีการเปลี่ยนแปลง codebase ของคุณ
getBars ไม่สามารถใช้งานได้ย้อนหลังดังนั้นคุณจะต้องอัปเดต codebase ของคุณเพื่อใช้ลายเซ็นวิธีการใหม่ที่พบในส่วนข้อมูลตลาดด้านล่าง
ด้วยการเปิด v2.0.0 ของไลบรารีนี้เราใช้ V2 ของ Alpaca API อย่างไรก็ตามวิธีการทั้งหมดนั้นเข้ากันได้กับ v1.0.0 ของไลบรารีนี้และ v1 ของ Alpaca API ดังนั้นการอัพเกรดควรจะง่ายพอ ๆ กับการอัปเดตเวอร์ชันแพ็คเกจในไฟล์ composer.json ของคุณและการติดตั้ง ทุกอย่างควรทำงานอย่างที่เคยทำมาก่อน แต่ตอนนี้คุณจะสามารถเข้าถึงวิธีการใหม่และพารามิเตอร์วิธีการใหม่
หมายเหตุ : แพ็คเกจนี้ต้องการ php> = 7.2.5
$ composer require jeffreyhyer/alpaca-trade-api-phpจากภายในแอปพลิเคชัน PHP ของคุณคุณสามารถเข้าถึง Alpaca API ได้เพียงไม่กี่บรรทัด:
<?php
require ' ./vendor/autoload.php ' ;
use Alpaca Alpaca ;
$ alpaca = new Alpaca ( " --KEY-- " , " --SECRET-- " );
$ positions = $ alpaca -> getPositions (); จาก v2.1.0 แพ็คเกจนี้รองรับการรับรองความถูกต้องของผู้ใช้ผ่าน OAuth ไปยัง ALPACA API สำหรับคำอธิบายโดยละเอียดเกี่ยวกับการไหลของ OAuth ให้ดูเอกสาร Alpaca
วิธีการต่อไปนี้สามารถใช้เพื่อขอการอนุญาตให้เข้าถึงบัญชีผู้ใช้ภายนอก ALPACA และดึงโทเค็นการเข้าถึงเพื่อโทรออก API ในนามของพวกเขา
getOauthAuthorizeUrl($client_id, $redirect_uri, $scope = "", $state = null)
ให้แอปพลิเคชันของคุณ $client_id และผู้ได้รับอนุญาต/whitelisted $redirect_uri รวมถึง $scope ที่คุณต้องการและมูลค่า $state แบบสุ่ม ฟังก์ชั่นนี้จะส่งคืน URL ที่คุณควรเปลี่ยนเส้นทางผู้ใช้ของคุณเพื่ออนุญาตให้แอปพลิเคชันของคุณเข้าถึงบัญชีของพวกเขา
getOauthAccessToken($code, $client_id, $client_secret, $redirect_uri)
เมื่อผู้ใช้อนุญาตให้แอปพลิเคชันของคุณเข้าถึงบัญชีของพวกเขา Alpaca จะเปลี่ยนเส้นทางผู้ใช้กลับไปยังแอปพลิเคชันของคุณ ( $redirect_uri ) ใน URL จะเป็นพารามิเตอร์ code คุณจะส่งผ่านเป็นพารามิเตอร์ $code ไปยังฟังก์ชันนี้พร้อมกับ $client_id และ $client_secret ของคุณและ $redirect_url ดั้งเดิมของคุณ ฟังก์ชั่นนี้จะส่งคืนโทเค็นการเข้าถึงที่สามารถใช้เรียก ALPACA API ในนามของผู้ใช้/บัญชีนั้น
ในการเริ่มใช้การเข้าถึงโทเค็นการโทร setAccessToken($token) ด้วยค่าของโทเค็น
เมื่อได้รับการรับรองความถูกต้องแล้วคุณสามารถโทร getOauthAccessTokenDetails() เพื่อรับรายละเอียดของโทเค็นการเข้าถึง (สถานะความถูกต้อง ฯลฯ )
ในการเริ่มต้นเริ่มต้นคลาส Alpaca ด้วยคีย์และความลับของ Alpaca คุณยังสามารถตั้งค่าพารามิเตอร์ที่สามเพื่อเปิดใช้งานหรือปิดการซื้อขายกระดาษ ค่าเริ่มต้นเป็น true เพื่อเปิดใช้งานการโทรกับจุดสิ้นสุดการซื้อขายกระดาษ
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 ();คุณสามารถเปลี่ยนค่าเหล่านี้หลังจากเริ่มต้นหากจำเป็นโดยใช้วิธีการต่อไปนี้:
setKey($key)
ตั้งค่าคีย์ Alpaca ของคุณ
setSecret($secret)
ตั้งค่าความลับ Alpaca ของคุณ
setPaper(true)
เปิดใช้งานหรือปิดการซื้อขายกระดาษ true = การซื้อขายกระดาษ, false = การซื้อขายสด
วิธีการทั้งหมดส่งคืนอินสแตนซ์ของคลาส AlpacaResponse Class ซึ่งมีวิธีการที่สะดวกสำหรับการทำงานกับการตอบสนอง API
getCode()
ส่งคืนรหัสสถานะ HTTP ของคำขอ (เช่น 200 , 403 , ฯลฯ )
getReason()
ส่งคืนเหตุผลสถานะ HTTP ของคำขอ (เช่น OK Forbidden ฯลฯ )
getResponse()
ส่งคืนคำตอบที่ถอดรหัส JSON ตัวอย่างเช่น:
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] =>
)
*/- เอกสาร Alpaca
getAccount()
ส่งคืนบัญชีที่เกี่ยวข้องกับคีย์ API
- เอกสาร Alpaca
getOrders($status = null, $limit = null, $after = null, $until = null, $direction = null, $nested = null)
ดึงรายชื่อคำสั่งซื้อสำหรับบัญชีที่กรองโดยตัวเลือกโดยพารามิเตอร์การสืบค้นที่ให้มา
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 = [])
สั่งซื้อใหม่สำหรับบัญชีที่กำหนด คำขอคำสั่งซื้ออาจถูกปฏิเสธหากบัญชีไม่ได้รับอนุญาตสำหรับการซื้อขายหรือหากยอดคงเหลือที่ซื้อขายได้นั้นไม่เพียงพอที่จะเติมเต็มคำสั่งซื้อ
getOrder($order_id)
ดึงคำสั่งเดียวสำหรับ $order_id ที่กำหนด
getOrderByClientId($client_order_id)
ดึงคำสั่งเดียวสำหรับ $client_order_id ที่กำหนด
replaceOrder($order_id, $qty, $time_in_force, $limit_price = null, $stop_price = null, $client_order_id = null)
แทนที่ลำดับเดียวด้วยพารามิเตอร์ที่อัปเดต แต่ละพารามิเตอร์จะแทนที่แอตทริบิวต์ที่สอดคล้องกันของลำดับที่มีอยู่ แอตทริบิวต์อื่น ๆ ยังคงเหมือนกันกับคำสั่งที่มีอยู่
cancelOrder($order_id)
พยายามยกเลิกคำสั่งเปิด หากคำสั่งซื้อไม่สามารถยกเลิกได้อีกต่อไป (ตัวอย่าง: status=order_filled ) เซิร์ฟเวอร์จะตอบกลับด้วยสถานะ 422 และปฏิเสธคำขอ
cancelAllOrders()
พยายามยกเลิกคำสั่งซื้อที่เปิดทั้งหมด จะมีการตอบกลับสำหรับแต่ละคำสั่งที่พยายามยกเลิก หากคำสั่งซื้อไม่สามารถยกเลิกได้อีกต่อไปเซิร์ฟเวอร์จะตอบกลับด้วยสถานะ 500 และปฏิเสธคำขอ
- เอกสาร Alpaca
getPositions()
ดึงรายชื่อตำแหน่งเปิดของบัญชี
getPosition($symbol)
ดึงตำแหน่งเปิดของบัญชีสำหรับ $symbol ที่กำหนด
closeAllPositions()
ปิด (เหลว) ตำแหน่งที่เปิดกว้างและสั้นของบัญชีทั้งหมด จะมีการตอบกลับสำหรับแต่ละคำสั่งที่พยายามยกเลิก หากคำสั่งซื้อไม่สามารถยกเลิกได้อีกต่อไปเซิร์ฟเวอร์จะตอบกลับด้วยสถานะ 500 และปฏิเสธคำขอ
closePosition($symbol)
ปิด (เหลว) ตำแหน่งที่เปิดของบัญชีสำหรับ $symbol ที่กำหนด ใช้งานได้ทั้งตำแหน่งที่ยาวและสั้น
- เอกสาร Alpaca
getAssets($status = null, $asset_class = null)
รับรายการสินทรัพย์
getAsset($symbol)
รับสินทรัพย์สำหรับ $symbol ที่กำหนด
getAssetById($id)
รับสินทรัพย์สำหรับ $id ที่กำหนด
- เอกสาร Alpaca
getWatchlists()
ส่งคืนรายชื่อรายการเฝ้าดูที่ลงทะเบียนภายใต้บัญชี
createWatchlist($name, $symbols = [])
สร้างรายการเฝ้าดูใหม่ด้วยชุดสินทรัพย์เริ่มต้น ( $symbols ) $name ใช้เพื่อระบุรายการเฝ้าดูในวิธีการใด ๆ ของ *WatchlistByName() ด้านล่าง
getWatchlist($id)
ส่งคืนรายการเฝ้าดูที่ระบุโดย $id
getWatchlistByName($name)
ส่งคืนรายการเฝ้าดูที่ระบุด้วย $name
updateWatchlist($id, $name, $symbols = [])
อัปเดตชื่อและ/หรือเนื้อหาของรายการเฝ้าดูที่ระบุด้วย $id
updateWatchlistByName($name, $symbols = [])
อัปเดตชื่อและ/หรือเนื้อหาของรายการเฝ้าดูที่ระบุด้วย $name
addAssetToWatchlist($id, $symbol)
ผนวกสินทรัพย์สำหรับ $symbol ไปยังจุดสิ้นสุดของรายการสินทรัพย์ WatchList
addAssetToWatchlistByName($name, $symbol)
ผนวกสินทรัพย์สำหรับ $symbol ไปยังจุดสิ้นสุดของรายการสินทรัพย์ WatchList
deleteWatchlist($id)
ลบรายการเฝ้าดู นี่คือการลบถาวร
deleteWatchlistByName($name)
ลบรายการเฝ้าดู นี่คือการลบถาวร
- เอกสาร Alpaca
getCalendar($start = null, $end = null)
ส่งคืนปฏิทินตลาด
- เอกสาร Alpaca
getClock()
ส่งคืนนาฬิกาตลาด
- เอกสาร Alpaca
getAccountConfigurations()
ส่งคืนค่าการกำหนดค่าบัญชีปัจจุบัน
updateAccountConfigurations($config = [])
อัปเดตและส่งคืนค่าการกำหนดค่าบัญชีปัจจุบัน $config เป็นอาร์เรย์ของคู่คีย์-ค่า (เช่น ["key" => "value"]
- เอกสาร Alpaca
getAccountActivitiesOfType($type, $date = null, $until = null, $after = null, $direction = null, $page_size = null, $page_token = null)
ส่งคืนรายการกิจกรรมบัญชีสำหรับกิจกรรมประเภทเฉพาะ
getAccountActivities($types = [])
ส่งคืนรายการกิจกรรมบัญชีสำหรับกิจกรรมหลายประเภท
- เอกสาร Alpaca
getPortfolioHistory($period = null, $timeframe = null, $date_end = null, $extended_hours = null)
ส่งคืนข้อมูล Timeseries เกี่ยวกับส่วนของผู้ถือหุ้นและกำไร/ขาดทุน (P/L) ของบัญชีใน TimeSpan ที่ร้องขอ
- เอกสาร Alpaca
getTrades($symbol, $start, $end, $limit = null, $page_token = null)
ส่งคืนข้อมูลประวัติศาสตร์การค้าเพื่อความปลอดภัยที่ร้องขอ
getLastTrade($symbol)
เรียกคืนการค้าสุดท้ายสำหรับสัญลักษณ์ที่ร้องขอ
getQuotes($symbol, $start, $end, $limit = null, $page_token = null)
ส่งคืนข้อมูลประวัติ (NBBO) สำหรับความปลอดภัยที่ร้องขอ
getLastQuote($symbol)
ดึงใบเสนอราคาสุดท้ายสำหรับสัญลักษณ์ที่ร้องขอ
getBars($timeframe, $symbol, $start, $end, $limit = null, $page_token = null)
ส่งคืนข้อมูลประวัติรวมสำหรับการรักษาความปลอดภัยที่ร้องขอ
getMultiSnapshot($symbols)
ส่งคืนสแนปชอตสำหรับหลักทรัพย์ที่ร้องขอ
getSnapshot($symbol)
ส่งคืนสแน็ปช็อตเพื่อความปลอดภัยที่ร้องขอ