use serde::Deserialize;
use super::ExtraFields;
use crate::model::NumberString;
#[derive(Debug, Clone, Default, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct GridOrderUpdate {
#[serde(default)]
pub inst_id: String,
#[serde(default)]
pub algo_id: String,
#[serde(default)]
pub algo_cl_ord_id: String,
#[serde(default)]
pub inst_type: String,
#[serde(default)]
pub algo_ord_type: String,
#[serde(default)]
pub state: String,
#[serde(default)]
pub direction: String,
#[serde(default)]
pub run_type: String,
#[serde(default)]
pub sz: NumberString,
#[serde(default)]
pub investment: NumberString,
#[serde(default)]
pub total_pnl: NumberString,
#[serde(default)]
pub pnl_ratio: NumberString,
#[serde(default)]
pub stop_type: String,
#[serde(default)]
pub cancel_type: String,
#[serde(default)]
pub c_time: NumberString,
#[serde(default)]
pub u_time: NumberString,
#[serde(default)]
pub p_time: NumberString,
#[serde(flatten, default)]
pub extra: ExtraFields,
}
pub type TradingBotUpdate = GridOrderUpdate;
#[derive(Debug, Clone, Default, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct GridPositionUpdate {
#[serde(default)]
pub algo_id: String,
#[serde(default)]
pub inst_id: String,
#[serde(default)]
pub inst_type: String,
#[serde(default)]
pub mgn_mode: String,
#[serde(default)]
pub pos_side: String,
#[serde(default)]
pub pos: NumberString,
#[serde(default)]
pub avg_px: NumberString,
#[serde(default)]
pub upl: NumberString,
#[serde(default)]
pub upl_ratio: NumberString,
#[serde(default)]
pub lever: NumberString,
#[serde(default)]
pub liq_px: NumberString,
#[serde(default)]
pub u_time: NumberString,
#[serde(flatten, default)]
pub extra: ExtraFields,
}
#[derive(Debug, Clone, Default, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct GridSubOrderUpdate {
#[serde(default)]
pub algo_id: String,
#[serde(default)]
pub inst_id: String,
#[serde(default)]
pub ord_id: String,
#[serde(default)]
pub cl_ord_id: String,
#[serde(default)]
pub side: String,
#[serde(default)]
pub px: NumberString,
#[serde(default)]
pub sz: NumberString,
#[serde(default)]
pub state: String,
#[serde(default)]
pub avg_px: NumberString,
#[serde(default)]
pub acc_fill_sz: NumberString,
#[serde(default)]
pub fee: NumberString,
#[serde(default)]
pub fee_ccy: String,
#[serde(default)]
pub pnl: NumberString,
#[serde(default)]
pub c_time: NumberString,
#[serde(default)]
pub u_time: NumberString,
#[serde(flatten, default)]
pub extra: ExtraFields,
}
#[derive(Debug, Clone, Default, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct RecurringBuyAllocation {
#[serde(default)]
pub ccy: String,
#[serde(default)]
pub ratio: NumberString,
#[serde(flatten, default)]
pub extra: ExtraFields,
}
#[derive(Debug, Clone, Default, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct RecurringBuyOrderUpdate {
#[serde(default)]
pub algo_id: String,
#[serde(default)]
pub algo_cl_ord_id: String,
#[serde(default)]
pub inst_type: String,
#[serde(default)]
pub algo_ord_type: String,
#[serde(default)]
pub state: String,
#[serde(default)]
pub stgy_name: String,
#[serde(default)]
pub recurring_list: Vec<RecurringBuyAllocation>,
#[serde(default)]
pub period: String,
#[serde(default)]
pub recurring_day: String,
#[serde(default)]
pub recurring_hour: String,
#[serde(default)]
pub recurring_time: String,
#[serde(default)]
pub time_zone: String,
#[serde(default)]
pub amt: NumberString,
#[serde(default)]
pub investment_amt: NumberString,
#[serde(default)]
pub investment_ccy: String,
#[serde(default)]
pub total_investment: NumberString,
#[serde(default)]
pub total_pnl: NumberString,
#[serde(default)]
pub total_ann_rate: NumberString,
#[serde(default)]
pub pnl_ratio: NumberString,
#[serde(default)]
pub mkt_cap: NumberString,
#[serde(default)]
pub cycles: NumberString,
#[serde(default)]
pub tag: String,
#[serde(default)]
pub c_time: NumberString,
#[serde(default)]
pub u_time: NumberString,
#[serde(default)]
pub p_time: NumberString,
#[serde(flatten, default)]
pub extra: ExtraFields,
}
#[derive(Debug, Clone, Default, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct CopyTradingNotification {
#[serde(default)]
pub notification_type: String,
#[serde(default)]
pub notification_msg: String,
#[serde(default)]
pub inst_type: String,
#[serde(default)]
pub inst_id: String,
#[serde(default)]
pub sub_pos_id: String,
#[serde(default)]
pub unique_code: String,
#[serde(default)]
pub ts: NumberString,
#[serde(flatten, default)]
pub extra: ExtraFields,
}