Skip to main content

create_price_order/
create_price_order.rs

1use gateio_rs::{api::spot, http::Credentials, ureq::GateHttpClient};
2use serde_json::Value;
3
4fn main() -> Result<(), Box<gateio_rs::ureq::Error>> {
5    dotenv::dotenv().ok();
6
7    let api_key = std::env::var("GATE_API_KEY").expect("GATE_API_KEY not set");
8    let api_secret = std::env::var("GATE_API_SECRET").expect("GATE_API_SECRET not set");
9    let credentials = Credentials::new(api_key, api_secret);
10
11    let client = GateHttpClient::default().credentials(credentials.clone());
12
13    // Create a price-triggered order
14    // This example creates a buy order that will trigger when BTC price goes above $50,000
15    // When triggered, it will place a limit buy order for 0.001 BTC at $49,900
16    let req = spot::create_price_order(
17        "BTC_USDT", // market (currency pair)
18        "120000",   // trigger_price
19        ">=",       // trigger_rule (trigger when price >= $50,000)
20        "buy",      // order_side
21        "49900",    // order_price (limit price when triggered)
22        "0.001",    // order_amount
23    )
24    .account("normal") // use normal spot account
25    .time_in_force("gtc") // good till cancelled
26    .trigger_expiration(86400); // expire after 24 hours if not triggered
27
28    println!("Sending price-triggered order request...");
29
30    let resp = client.send(req)?;
31    let body = resp.into_body_str()?;
32    let resp_obj: Value = serde_json::from_str(&body).unwrap();
33
34    println!("Response: {:#}", resp_obj);
35
36    Ok(())
37}