Trading Contracts
Details how to interact with trading contracts
Last updated
Details how to interact with trading contracts
Last updated
To interact with trading contracts, you should call the respective methods on the GNSMultiCollatDiamond
contract. Each method within the facets can be accessed through this central contract, ensuring a streamlined approach to contract interactions. You can find network-specific GNSMultiCollatDiamond
address in Active Contracts page
For latest addresses, refer to:
If you are using testnet, the Arbitrum Sepolia address for GNSMultiCollatDiamond
is:
0xd659a15812064C79E189fd950A189b15c75d3186
Below is a list of available actions, consisting of market & limit orders, as well as updates. Where possible, NatSpec documentation is linked to. For full reference, see Technical Reference.
Place a trade*
Place a limit order
Update a trade
Update a limit order
Cancel a limit order
Close a trade*
Update leverage (decrease/increase)
Increase position size
Decrease position size
*Requires order fulfillment. Integrators make requests, and oracles fulfill them.
Place a trade using the following functions. Use tradeType = 0.
If an order hasn't been fulfilled in 60 seconds, collateral can be claimed back using the timeout function:
Same as market order, but provided tradeType of 1 or 2.
Limit: To be used when you want to go long at a lower price than present, or to go short if the price reaches a higher price than present. Executes at exact price set if price reaches threshold + spread.
Stop: To be used when you want to go long if the price reaches a higher price than present, or to go short if the price reaches a lower price than present. You might want to use this to long a breakout, or short a breakdown. The execution price is the current market price + spread.
Support updating take profit (TP) and stop loss (SL).
If a limit order hasn't been fulfilled yet, it can be updated
If a limit order hasn't been fulfilled yet, it can be canceled
Market close a trade
If the trade hasn't been closed in 60 seconds, a timeout may be initiated, allowing for another close attempt:
Update leverage for a trade
Decrease position size (by decreasing collateral amount or leverage)
Increase position size (by increasing collateral amount or leverage or both)
Events are emitted to allow off-chain services to stay updated. You can subscribe to these directly, or review the Backendpage for instructions on receiving from a WebSocket stream. It is recommended to use the backend.
Core Events
For opening or closing a trade: MarketOrderInitiated
-> MarketExecuted
For placing a limit order: OpenOrderPlaced
For updating a trade: TradeSlUpdated
or TradeTpUpdated
For fulfilling a limit order (SL, TP, Open limit): LimitExecuted
For updating leverage: LeverageUpdateInitiated
-> LeverageUpdateExecuted
For updating position size (increase): PositionSizeUpdateInitiated
-> PositionSizeIncreaseExecuted
For updating position size (decrease): PositionSizeUpdateInitiated
-> PositionSizeDeccreaseExecuted
All Lifecycle Events