alpaca_api_client 0.7.0

Unofficial Alpaca API Client
Documentation
use alpaca_api_client::trading::{
    order::{
        CreateOrderQuery, OrderClass, OrderSide, OrderType, StopLoss, TakeProfit, TimeInForce,
    },
    AccountType,
};

fn main() {
    create_market_order();
    create_limit_order();
    create_stop_order();
    create_stop_limit_order();
    create_trailing_stop_order();
    create_bracket_order();
    create_oto_order();
    create_oco_order();
}

fn create_market_order() {
    CreateOrderQuery::new("AAPL", OrderSide::Buy, OrderType::Market, TimeInForce::Day)
        .qty("1")
        .send(AccountType::Paper)
        .unwrap();
}

fn create_limit_order() {
    CreateOrderQuery::new(
        "AAPL",
        OrderSide::Buy,
        OrderType::Limit,
        TimeInForce::GoodTilCanceled,
    )
    .limit_price("100")
    .qty("1")
    .send(AccountType::Paper)
    .unwrap();
}

fn create_stop_order() {
    CreateOrderQuery::new(
        "AAPL",
        OrderSide::Buy,
        OrderType::Stop,
        TimeInForce::GoodTilCanceled,
    )
    .stop_price("100")
    .qty("1")
    .send(AccountType::Paper)
    .unwrap();
}

fn create_stop_limit_order() {
    CreateOrderQuery::new(
        "AAPL",
        OrderSide::Buy,
        OrderType::StopLimit,
        TimeInForce::GoodTilCanceled,
    )
    .stop_price("100")
    .limit_price("200")
    .qty("1")
    .send(AccountType::Paper)
    .unwrap();
}

fn create_trailing_stop_order() {
    CreateOrderQuery::new(
        "AAPL",
        OrderSide::Buy,
        OrderType::TrailingStop,
        TimeInForce::GoodTilCanceled,
    )
    .qty("1")
    .trail_percent("10")
    .send(AccountType::Paper)
    .unwrap();
}

fn create_bracket_order() {
    CreateOrderQuery::new(
        "AAPL",
        OrderSide::Buy,
        OrderType::Market,
        TimeInForce::GoodTilCanceled,
    )
    .qty("1")
    .order_class(OrderClass::Bracket)
    .take_profit(TakeProfit::new("300"))
    .stop_loss(StopLoss::new("200", "199"))
    .send(AccountType::Paper)
    .unwrap();
}

fn create_oco_order() {
    CreateOrderQuery::new(
        "AAPL",
        OrderSide::Buy,
        OrderType::Limit,
        TimeInForce::GoodTilCanceled,
    )
    .qty("1")
    .order_class(OrderClass::OneCancelsOther)
    .take_profit(TakeProfit::new("199"))
    .stop_loss(StopLoss::new("200", "201"))
    .send(AccountType::Paper)
    .unwrap();
}

fn create_oto_order() {
    CreateOrderQuery::new(
        "AAPL",
        OrderSide::Buy,
        OrderType::Market,
        TimeInForce::GoodTilCanceled,
    )
    .qty("1")
    .order_class(OrderClass::OneTriggersOther)
    .stop_loss(StopLoss::new("200", "189"))
    .send(AccountType::Paper)
    .unwrap();
}