Skip to content
This repository was archived by the owner on Jan 10, 2023. It is now read-only.
Open
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 11 additions & 11 deletions src/Trade.sol
Original file line number Diff line number Diff line change
Expand Up @@ -54,9 +54,18 @@ contract Trade is ITrade {
}

function submitOrder(Store.Order memory params, uint256 tpPrice, uint256 slPrice) external {

address user = msg.sender;


// check equity
int256 upl = getUpl(user);
uint256 balance = store.getBalance(user);
int256 equity = int256(balance) + upl;
uint256 lockedMargin = store.getLockedMargin(user);

if (int256(lockedMargin + params.margin) > equity) {
params.margin = uint256(equity - int256(lockedMargin));

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, but here size must also be adjusted so leverage stays consistent. @0xlock

}

Store.Market memory market = store.getMarket(params.market);
require(market.maxLeverage > 0, "!market");
require(market.minSize <= params.size, "!min-size");
Expand All @@ -70,17 +79,8 @@ contract Trade is ITrade {
require(leverage <= market.maxLeverage * UNIT, "!max-leverage");

store.lockMargin(user, params.margin);

}

// check equity
int256 upl = getUpl(user);
uint256 balance = store.getBalance(user);
int256 equity = int256(balance) + upl;
uint256 lockedMargin = store.getLockedMargin(user);

require(int256(lockedMargin) <= equity, "!equity");

// fee
uint256 fee = market.fee * params.size / BPS_DIVIDER;
store.decrementBalance(user, fee);
Expand Down