[][src]Crate alpaca_finance

Alpaca Finance

Alpaca.markets provides a great set of APIs for developing algorithmic-based stock trading.

ALWAYS VERIFY WITH THE PAPER API BEFORE USING THE LIVE API

Currently alpaca_finance provides:

  • Access and authentication against the paper trading and live trading APIs
  • Account API to get important information about your account
  • Orders API to place, replace, cancel and get open orders.
  • Realtime streaming updates to orders and account changes

Quick Examples

To find out how much cash you have in your account:

use alpaca_finance::{ Account, Alpaca };

#[tokio::main]
async fn main() {
   // Get a connection to the live API
   let alpaca = Alpaca::live("My KEY ID", "My Secret Key").await.unwrap();
   let account = Account::get(&alpaca).await.unwrap();

   println!("I have ${:.2} in my account.", account.cash)
}

To buy 100 shares of AAPL, through the paper API, at a limit price of $100.0 before the end of today:

use alpaca_finance::{ Account, Alpaca };

#[tokio::main]
async fn main() {
   // Get a connection to the live API
   let alpaca = Alpaca::paper("My KEY ID", "My Secret Key").await.unwrap();
   let order = Order::buy("AAPL", 100, OrderType::Limit, TimeInForce::DAY)
      .limit_price(100.0)
      .place(sandbox).await.unwrap();
}

To watch for changes to orders or the account:

use alpaca_finance::{ Alpaca, Streamer, StreamMessage };
use futures::{ future, StreamExt };

#[tokio::main]
async fn main() {
   // Get a connection to the live API
   let alpaca = Alpaca::paper("My KEY ID", "My Secret Key").await.unwrap();

   let streamer = Streamer:new(&alpaca);
   streamer.start().await
      .for_each(|msg| {
         match msg {
            StreamMessage::Account(_) => println!("Got an account update!"),
            StreamMessage::Order(_) => println!("Got an order update!"),
            _ => println!("Got an unexpected msg")
         }
         future::ready(())
      })
      .await;
}

Structs

Account

Important information related to an account.

Alpaca

Alpaca contextual information that needs to be supplied to all calls.

Error

An opaque error hit when calling Alpaca

Order

A unique order in the system.

OrderBuilder

Builds up a new order and has the logic to submit the order

OrderUpdater

Builds up a replacement order and has the logic to submit it.

Streamer

Realtime event streamer

Enums

AccountStatus

The status of the account

OrderEvent

An event that has occured due to an order.

OrderStatus

The current status of the order in its lifecycle

OrderType

The type of the order

StreamMessage

The possible event streams that we can listen on

TimeInForce

The instruction used when placing a trade to indicate how long the order will remain active before it is executed or expires.

Type Definitions

Result

The result of an operation