#alert #trade #hash #create #manage #user #success

bin+lib trade_alerts

轻量级框架,用于创建和管理贸易警报

5个版本

0.1.4 2024年5月29日
0.1.3 2024年5月29日
0.1.2 2024年4月27日
0.1.1 2024年4月27日
0.1.0 2024年4月27日

#441 in Web编程

MIT 许可证

59KB
648

贸易警报库

trade_alerts 是一个库,允许您为各种交易所和用户创建、存储和管理贸易警报。

即将推出

支持的交易所和其他数据提供者列表:]

入门

要使用贸易警报库,将其添加到您的 Cargo.toml

[dependencies]
trade_alerts = "0.1.0"

功能

示例

以下是使用该库的示例

先决条件

要使用 Supabase 客户端,您需要初始化客户端。

    // Initialize Supabase client
    let supabase = match Supabase::new_env().await {
        Ok(client) => client,
        Err(e) => {
            eprintln!("{}", e);
            return;
        },
    };

表格配置

我们需要设置所有表格名称,以便我们可以相应地路由所有内容。

    // Define a TableConfig
    let config: TableConfig = TableConfig::new(
        "alerts".to_string(),
        "hash".to_string(),
        "price_level".to_string(),
        "user_id".to_string(),
        "symbol".to_string(),
    );

添加警报

我们首先需要创建一个警报,然后将其添加到数据库中。

    // Create a new alert
    let alert: Alert = Alert::new(
        Hash { hash: "unique_hash_string".to_string() },
        1.2345, // price level
        "aud/chf".to_string(), // symbol
        "user1234".to_string() // user ID
    );

    // Adding an alert
    match supabase.add_alert(
       alert.clone(),
       config.clone()
       ).await {
        Ok(_) => println!("Alert added successfully"),
        Err(e) => eprintln!("{}", e),
    };

根据用户ID获取哈希值

    // Fetching hashes by user ID
    match supabase.fetch_hashes_by_user_id(
       &alert.user_id,
       config.clone()
       ).await {
        Ok(hashes) => println!("Fetched hashes: {:?}", hashes),
        Err(e) => eprintln!("{}", e),
    };

获取警报详情

    // Fetching details by hash
    match supabase.fetch_details_by_hash(
       &alert.hash.hash,
       &config
       ).await {
        Ok(details) => println!("Fetched details: {:?}", details),
        Err(e) => eprintln!("{}", e),
    }; 

警报管理

在这个示例中,我们假设表格配置已经设置好,并且您的 supabase 客户端已经初始化。


#[tokio::main]
async fn main() {

    // Initialize XylexApi
    let xylex_api = match XylexApi::new_env().await {
        Ok(api) => api,
        Err(e) => {
            eprintln!("{}", e);
            return;
        },
    };

    let symbols: HashSet<&str> = [
        "aud/chf", "eur/usd"
    ].iter().cloned().collect();
    
    match xylex_api.fetch_prices_for_symbols(
        symbols
    ).await {
        Ok(prices) => println!("Prices: {:?}", prices),
        Err(e) => eprintln!("{}", e),
    };

    // Check and delete triggered alerts
    match xylex_api.check_and_fetch_triggered_alert_hashes(
        &supabase,
        &config
    ).await {
        Ok(triggered_hashes) => {
            if triggered_hashes.is_empty() {
                println!("No triggered alerts.");
                return;
            }
            match xylex_api.delete_triggered_alerts_by_hashes(
                &supabase,
                &config,
                triggered_hashes
            ).await {
                Ok(_) => println!("Successfully deleted triggered alerts"),
                Err(e) => eprintln!("{}", e),
            }
        },
        Err(e) => eprintln!("{}", e),
    };
}

哈希生成

use trade_alerts::HashComponents; 

let components: HashComponents = HashComponents::new(
     100.0, 
    "user123".to_string(), 
    "AAPL".to_string()
);

let hash = components.generate_hash().await;

println!("Generated Hash: {}", hash);

处理成功和错误

依赖项

~7–22MB
~274K SLoC