GNSTradingInteractions
Facet #7: Trading (user interactions)
constructor
constructor() public
initializeTrading
function initializeTrading(uint16 _marketOrdersTimeoutBlocks, address[] _usersByPassTriggerLink) external
Initializes the trading facet
Parameters
_marketOrdersTimeoutBlocks
uint16
The number of blocks after which a market order is considered timed out
_usersByPassTriggerLink
address[]
updateMarketOrdersTimeoutBlocks
function updateMarketOrdersTimeoutBlocks(uint16 _valueBlocks) external
Updates marketOrdersTimeoutBlocks
Parameters
_valueBlocks
uint16
blocks after which a market order times out
updateByPassTriggerLink
function updateByPassTriggerLink(address[] _users, bool[] _shouldByPass) external
Updates the users that can bypass the link cost of triggerOrder
Parameters
_users
address[]
array of addresses that can bypass the link cost of triggerOrder
_shouldByPass
bool[]
whether each user should bypass the link cost
setTradingDelegate
function setTradingDelegate(address _delegate) external
_Sets delegate as the new delegate of caller (can call delegatedAction)
Parameters
_delegate
address
the new delegate address
removeTradingDelegate
function removeTradingDelegate() external
Removes the delegate of caller (can't call delegatedAction)
delegatedTradingAction
function delegatedTradingAction(address _trader, bytes _callData) external returns (bytes)
_Caller executes a trading action on behalf of trader using delegatecall
Parameters
_trader
address
the trader address to execute the trading action for
_callData
bytes
the data to be executed (open trade/close trade, etc.)
openTrade
function openTrade(struct ITradingStorage.Trade _trade, uint16 _maxSlippageP, address _referrer) external
Opens a new trade/limit order/stop order
Parameters
_maxSlippageP
uint16
the maximum allowed slippage % when open the trade (1e3 precision)
_referrer
address
the address of the referrer (can only be set once for a trader)
openTradeNative
function openTradeNative(struct ITradingStorage.Trade _trade, uint16 _maxSlippageP, address _referrer) external payable
Wraps native token and opens a new trade/limit order/stop order
Parameters
_maxSlippageP
uint16
the maximum allowed slippage % when open the trade (1e3 precision)
_referrer
address
the address of the referrer (can only be set once for a trader)
updateMaxClosingSlippageP
function updateMaxClosingSlippageP(uint32 _index, uint16 _maxSlippageP) external
Updates existing trade's max closing slippage % for caller
Parameters
_index
uint32
index of trade
_maxSlippageP
uint16
new max closing slippage % (1e3 precision)
closeTradeMarket
function closeTradeMarket(uint32 _index, uint64 _expectedPrice) external
Closes an open trade (market order) for caller
Parameters
_index
uint32
the index of the trade of caller
_expectedPrice
uint64
expected closing price, used to check max slippage (1e10 precision)
updateOpenOrder
function updateOpenOrder(uint32 _index, uint64 _triggerPrice, uint64 _tp, uint64 _sl, uint16 _maxSlippageP) external
Updates an existing limit/stop order for caller
Parameters
_index
uint32
index of limit/stop order of caller
_triggerPrice
uint64
new trigger price of limit/stop order (1e10 precision)
_tp
uint64
new tp of limit/stop order (1e10 precision)
_sl
uint64
new sl of limit/stop order (1e10 precision)
_maxSlippageP
uint16
new max slippage % of limit/stop order (1e3 precision)
cancelOpenOrder
function cancelOpenOrder(uint32 _index) external
Cancels an open limit/stop order for caller
Parameters
_index
uint32
index of limit/stop order of caller
updateTp
function updateTp(uint32 _index, uint64 _newTp) external
Updates the tp of an open trade for caller
Parameters
_index
uint32
index of open trade of caller
_newTp
uint64
new tp of open trade (1e10 precision)
updateSl
function updateSl(uint32 _index, uint64 _newSl) external
Updates the sl of an open trade for caller
Parameters
_index
uint32
index of open trade of caller
_newSl
uint64
new sl of open trade (1e10 precision)
updateLeverage
function updateLeverage(uint32 _index, uint24 _newLeverage) external
Update trade leverage
Parameters
_index
uint32
index of trade
_newLeverage
uint24
new leverage (1e3)
increasePositionSize
function increasePositionSize(uint32 _index, uint120 _collateralDelta, uint24 _leverageDelta, uint64 _expectedPrice, uint16 _maxSlippageP) external
Increase trade position size
Parameters
_index
uint32
index of trade
_collateralDelta
uint120
collateral to add (collateral precision)
_leverageDelta
uint24
partial trade leverage (1e3)
_expectedPrice
uint64
expected price of execution (1e10 precision)
_maxSlippageP
uint16
max slippage % (1e3)
decreasePositionSize
function decreasePositionSize(uint32 _index, uint120 _collateralDelta, uint24 _leverageDelta, uint64 _expectedPrice) external
Decrease trade position size
Parameters
_index
uint32
index of trade
_collateralDelta
uint120
collateral to remove (collateral precision)
_leverageDelta
uint24
leverage to reduce by (1e3)
_expectedPrice
uint64
expected closing price, used to check max slippage (1e10 precision)
triggerOrder
function triggerOrder(uint256 _packed) external
Initiates a new trigger order (for tp/sl/liq/limit/stop orders)
Parameters
_packed
uint256
the packed data of the trigger order (orderType, trader, index)
cancelOrderAfterTimeout
function cancelOrderAfterTimeout(uint32 _orderIndex) external
Safety function in case oracles don't answer in time, allows caller to cancel a pending order and if relevant claim back any stuck collateral Only allowed for MARKET_OPEN, MARKET_CLOSE, UPDATE_LEVERAGE, MARKET_PARTIAL_OPEN, and MARKET_PARTIAL_CLOSE orders
Parameters
_orderIndex
uint32
the id of the pending order to cancel
getWrappedNativeToken
function getWrappedNativeToken() external view returns (address)
Returns the wrapped native token or address(0) if the current chain, or the wrapped token, is not supported.
isWrappedNativeToken
function isWrappedNativeToken(address _token) external view returns (bool)
Returns true if the token is the wrapped native token for the current chain, where supported.
Parameters
_token
address
token address
getTradingDelegate
function getTradingDelegate(address _trader) external view returns (address)
Returns the address a trader delegates his trading actions to
Parameters
_trader
address
address of the trader
getMarketOrdersTimeoutBlocks
function getMarketOrdersTimeoutBlocks() external view returns (uint16)
Returns the current marketOrdersTimeoutBlocks value
getByPassTriggerLink
function getByPassTriggerLink(address _user) external view returns (bool)
Returns whether a user bypasses trigger link costs
Parameters
_user
address
address of the user
Last updated
Was this helpful?