Skip to content

Commit 87ddbcf

Browse files
authored
Merge branch 'develop' into 11304-2
2 parents 552ce80 + b0a610b commit 87ddbcf

File tree

1 file changed

+109
-0
lines changed

1 file changed

+109
-0
lines changed
Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
Feature: stop order in spot market
2+
3+
Background:
4+
Given time is updated to "2024-01-01T00:00:00Z"
5+
6+
Given the following network parameters are set:
7+
| name | value |
8+
| network.markPriceUpdateMaximumFrequency | 1s |
9+
| market.value.windowLength | 1h |
10+
| spam.protection.max.stopOrdersPerMarket | 5 |
11+
12+
Given the following assets are registered:
13+
| id | decimal places |
14+
| ETH | 2 |
15+
| BTC | 2 |
16+
17+
Given the fees configuration named "fees-config-1":
18+
| maker fee | infrastructure fee |
19+
| 0 | 0 |
20+
Given the log normal risk model named "lognormal-risk-model-1":
21+
| risk aversion | tau | mu | r | sigma |
22+
| 0.001 | 0.01 | 0 | 0.0 | 1.2 |
23+
And the price monitoring named "price-monitoring-1":
24+
| horizon | probability | auction extension |
25+
| 360000 | 0.999 | 1 |
26+
27+
And the spot markets:
28+
| id | name | base asset | quote asset | risk model | auction duration | fees | price monitoring | decimal places | position decimal places | sla params |
29+
| BTC/ETH | BTC/ETH | BTC | ETH | lognormal-risk-model-1 | 1 | fees-config-1 | price-monitoring-1 | 2 | 2 | default-basic |
30+
31+
# setup accounts
32+
Given the parties deposit on asset's general account the following amount:
33+
| party | asset | amount |
34+
| party1 | ETH | 100 |
35+
| party1 | BTC | 11 |
36+
| party2 | ETH | 10000 |
37+
| party2 | BTC | 10 |
38+
| party3 | ETH | 10000 |
39+
| party3 | BTC | 1000 |
40+
| party4 | BTC | 1000 |
41+
| party5 | BTC | 1000 |
42+
And the average block duration is "1"
43+
44+
# Place some orders to get out of auction
45+
And the parties place the following orders:
46+
| party | market id | side | volume | price | resulting trades | type | tif |
47+
| party3 | BTC/ETH | buy | 1 | 1000 | 0 | TYPE_LIMIT | TIF_GFA |
48+
| party4 | BTC/ETH | sell | 1 | 1000 | 0 | TYPE_LIMIT | TIF_GTC |
49+
50+
And the opening auction period ends for market "BTC/ETH"
51+
When the network moves ahead "1" blocks
52+
Then the trading mode should be "TRADING_MODE_CONTINUOUS" for the market "BTC/ETH"
53+
And the mark price should be "1000" for the market "BTC/ETH"
54+
55+
Scenario:0014-ORDT-163, 0014-ORDT-164: A wrapped buy/sell order will be rejected when triggered if the party doesn't have enough of the required quote asset to cover the order.
56+
57+
# place an order to match with the limit order then check the stop is filled
58+
And the parties place the following orders:
59+
| party | market id | side | volume | price | resulting trades | type | tif | reference |
60+
| party4 | BTC/ETH | sell | 50 | 1010 | 0 | TYPE_LIMIT | TIF_GTC | p4-sell |
61+
62+
# create party1 stop order
63+
And the parties place the following orders:
64+
| party | market id | side | volume | price | resulting trades | type | tif | only | ra price trigger | error | reference |
65+
| party1 | BTC/ETH | buy | 50 | 1010 | 0 | TYPE_LIMIT | TIF_GTC | | 1005 | | stop1 |
66+
67+
# now we trade at 1005, this will breach the trigger
68+
When the parties place the following orders:
69+
| party | market id | side | volume | price | resulting trades | type | tif |
70+
| party3 | BTC/ETH | buy | 1 | 1005 | 0 | TYPE_LIMIT | TIF_GTC |
71+
| party4 | BTC/ETH | sell | 1 | 1005 | 1 | TYPE_LIMIT | TIF_GTC |
72+
73+
# check that the order was triggered
74+
Then the stop orders should have the following states
75+
| party | market id | status | reference |
76+
| party1 | BTC/ETH | STATUS_TRIGGERED | stop1 |
77+
78+
Then "party1" should have general account balance of "100" for asset "ETH"
79+
Then "party1" should have general account balance of "11" for asset "BTC"
80+
81+
And the parties cancel the following orders:
82+
| party | reference |
83+
| party4 | p4-sell |
84+
85+
# place an order to match with the limit order then check the stop is filled
86+
And the parties place the following orders:
87+
| party | market id | side | volume | price | resulting trades | type | tif | reference |
88+
| party3 | BTC/ETH | buy | 50 | 1015 | 0 | TYPE_LIMIT | TIF_GTC | p4-sell |
89+
90+
# create party2 stop order
91+
And the parties place the following orders:
92+
| party | market id | side | volume | price | resulting trades | type | tif | only | ra price trigger | error | reference |
93+
| party2 | BTC/ETH | sell | 50 | 1015 | 0 | TYPE_LIMIT | TIF_GTC | | 1020 | | stop2 |
94+
95+
# now we trade at 1005, this will breach the trigger
96+
When the parties place the following orders:
97+
| party | market id | side | volume | price | resulting trades | type | tif |
98+
| party3 | BTC/ETH | buy | 1 | 1020 | 0 | TYPE_LIMIT | TIF_GTC |
99+
| party4 | BTC/ETH | sell | 1 | 1020 | 1 | TYPE_LIMIT | TIF_GTC |
100+
101+
# check that the order was triggered
102+
Then the stop orders should have the following states
103+
| party | market id | status | reference |
104+
| party2 | BTC/ETH | STATUS_TRIGGERED | stop2 |
105+
106+
Then "party2" should have general account balance of "10000" for asset "ETH"
107+
Then "party2" should have general account balance of "10" for asset "BTC"
108+
109+

0 commit comments

Comments
 (0)