execute_cond/
execute_cond.rs1use std::{env, process};
10use std::str::FromStr;
11use std::sync::Arc;
12use clap::Parser;
13use solana_pubkey::Pubkey;
14use tracing::{info};
15use tracing_subscriber::EnvFilter;
16use bulk_client::api::{BulkHttpClient};
17use bulk_client::api::parts::HttpConfig;
18use bulk_client::msgs::conditional::StopOrTP;
19use bulk_client::transaction::{Action, ActionMeta, TransactionSigner};
20
21#[derive(Parser, Debug)]
22#[command(name = "md_query", about = "Query MD")]
23struct Args {
24 #[arg(long, default_value = "http://localhost:12000/api/v1")]
26 url: String,
27}
28
29#[tokio::main]
30async fn main() -> eyre::Result<()> {
31 tracing_subscriber::fmt()
32 .with_env_filter(
33 EnvFilter::from_default_env().add_directive(tracing::Level::INFO.into())
34 )
35 .init();
36
37 let args = Args::parse();
38
39 info!("Connecting to {} for execution", args.url);
40 let key = env::var("BULK_PRIVATE_KEY")?;
41 let signer = TransactionSigner::from_private_key(key.as_str())?;
42 let client = BulkHttpClient::new(&HttpConfig {
43 base_url: args.url,
44 signer: Some(signer.clone()),
45 ..Default::default()
46 }).unwrap();
47
48 let account = if false {
49 Pubkey::from_str("8oqBACkDvyJjBoiWNbZPXrnjZvFjzUjMThbi9oahAVvH")?
50 } else {
51 signer.public_key()
52 };
53 let nonce = 1776682154418;
54
55 let orders = vec![
56 Action::TakeProfit(StopOrTP {
57 symbol: Arc::from("BTC-USD"),
58 is_above: false,
59 size: 0.480894,
60 threshold: 40000.0,
61 limit: None,
62 meta: ActionMeta {
63 account,
64 nonce,
65 seqno: 0,
66 hash: None,
67 }
68 }),
69 ];
70
71 let results = client.place_tx(orders, Some(account), Some(nonce)).await?;
72 eprintln!("results: {:?}\n", results);
73
74 process::exit(0);
75}