From b8ea0c46148cdcdf9d83cbc73f19841fa2b4596d Mon Sep 17 00:00:00 2001 From: Klesti Selimaj Date: Wed, 29 Jul 2026 03:18:08 +0200 Subject: [PATCH] Order making --- src/engine/engine/plugin.rs | 48 +++++++++++++++++++++++++++++-------- 1 file changed, 38 insertions(+), 10 deletions(-) diff --git a/src/engine/engine/plugin.rs b/src/engine/engine/plugin.rs index e99f983..dd8574f 100644 --- a/src/engine/engine/plugin.rs +++ b/src/engine/engine/plugin.rs @@ -209,17 +209,45 @@ impl StrategyEngine { }; let order = BatchOrder { - orders: vec![OrderRequest { - asset: asset_id, - is_buy: matches!(signal.kind, Direction::Buy), - limit_px: signal.price.0, - sz: signal.size, - reduce_only: false, - order_type: OrderTypePlacement::Limit { - tif: TimeInForce::Gtc, + orders: vec![ + OrderRequest { + asset: asset_id, + is_buy: matches!(signal.kind, Direction::Buy), + limit_px: signal.price.0, + sz: signal.size, + reduce_only: false, + order_type: OrderTypePlacement::Limit { + tif: TimeInForce::Gtc, + }, + cloid: Default::default(), }, - cloid: Default::default(), - }], + OrderRequest { + asset: asset_id, + is_buy: matches!(signal.kind, Direction::Buy), + limit_px: signal.price.0, + sz: signal.size, + reduce_only: true, + order_type: OrderTypePlacement::Trigger { + is_market: true, + trigger_px: signal.take_profit.0, + tpsl: hypercore::TpSl::Tp, + }, + cloid: Default::default(), + }, + OrderRequest { + asset: asset_id, + is_buy: matches!(signal.kind, Direction::Buy), + limit_px: signal.price.0, + sz: signal.size, + reduce_only: true, + order_type: OrderTypePlacement::Trigger { + is_market: true, + trigger_px: signal.stop_loss.0, + tpsl: hypercore::TpSl::Sl, + }, + cloid: Default::default(), + }, + ], grouping: hypercore::OrderGrouping::Na, builder: None, };