Skip to content

Commit

Permalink
[CLOB-1054] trigger conditional orders using traded price within the … (
Browse files Browse the repository at this point in the history
#945)

* [CLOB-1054] trigger conditional orders using traded price within the block

* comments

* fix lint
  • Loading branch information
jayy04 authored Jan 11, 2024
1 parent 04b7323 commit 09ec109
Show file tree
Hide file tree
Showing 12 changed files with 1,323 additions and 9 deletions.
1 change: 1 addition & 0 deletions protocol/app/app.go
Original file line number Diff line number Diff line change
Expand Up @@ -932,6 +932,7 @@ func New(
app.BankKeeper,
app.FeeTiersKeeper,
app.PerpetualsKeeper,
app.PricesKeeper,
app.StatsKeeper,
app.RewardsKeeper,
app.IndexerEventManager,
Expand Down
28 changes: 28 additions & 0 deletions protocol/testutil/constants/orders.go
Original file line number Diff line number Diff line change
Expand Up @@ -813,6 +813,20 @@ var (
Subticks: 50_000_000_000,
GoodTilOneof: &clobtypes.Order_GoodTilBlock{GoodTilBlock: 10},
}
Order_Carl_Num1_Id0_Clob0_Buy1BTC_Price50003_GTB10 = clobtypes.Order{
OrderId: clobtypes.OrderId{SubaccountId: Carl_Num1, ClientId: 0, ClobPairId: 0},
Side: clobtypes.Order_SIDE_BUY,
Quantums: 100_000_000,
Subticks: 50_003_000_000,
GoodTilOneof: &clobtypes.Order_GoodTilBlock{GoodTilBlock: 10},
}
Order_Carl_Num1_Id0_Clob0_Buy1BTC_Price50500_GTB10 = clobtypes.Order{
OrderId: clobtypes.OrderId{SubaccountId: Carl_Num1, ClientId: 0, ClobPairId: 0},
Side: clobtypes.Order_SIDE_BUY,
Quantums: 100_000_000,
Subticks: 50_500_000_000,
GoodTilOneof: &clobtypes.Order_GoodTilBlock{GoodTilBlock: 10},
}
Order_Dave_Num0_Id2_Clob0_Sell1BTC_Price49500_GTB10 = clobtypes.Order{
OrderId: clobtypes.OrderId{SubaccountId: Dave_Num0, ClientId: 2, ClobPairId: 0},
Side: clobtypes.Order_SIDE_SELL,
Expand Down Expand Up @@ -961,6 +975,20 @@ var (
Subticks: 3_030_000_000,
GoodTilOneof: &clobtypes.Order_GoodTilBlock{GoodTilBlock: 10},
}
Order_Dave_Num1_Id0_Clob0_Sell1BTC_Price49500_GTB10 = clobtypes.Order{
OrderId: clobtypes.OrderId{SubaccountId: Dave_Num1, ClientId: 0, ClobPairId: 0},
Side: clobtypes.Order_SIDE_SELL,
Quantums: 100_000_000,
Subticks: 49_500_000_000,
GoodTilOneof: &clobtypes.Order_GoodTilBlock{GoodTilBlock: 10},
}
Order_Dave_Num1_Id0_Clob0_Sell1BTC_Price49997_GTB10 = clobtypes.Order{
OrderId: clobtypes.OrderId{SubaccountId: Dave_Num1, ClientId: 0, ClobPairId: 0},
Side: clobtypes.Order_SIDE_SELL,
Quantums: 100_000_000,
Subticks: 49_997_000_000,
GoodTilOneof: &clobtypes.Order_GoodTilBlock{GoodTilBlock: 10},
}
Order_Dave_Num1_Id0_Clob0_Sell025BTC_Price49999_GTB10 = clobtypes.Order{
OrderId: clobtypes.OrderId{SubaccountId: Dave_Num1, ClientId: 0, ClobPairId: 0},
Side: clobtypes.Order_SIDE_SELL,
Expand Down
56 changes: 56 additions & 0 deletions protocol/testutil/constants/stateful_orders.go
Original file line number Diff line number Diff line change
Expand Up @@ -862,6 +862,20 @@ var (
ConditionType: clobtypes.Order_CONDITION_TYPE_TAKE_PROFIT,
ConditionalOrderTriggerSubticks: 20,
}
ConditionalOrder_Alice_Num0_Id0_Clob0_Buy1BTC_Price50000_GTBT10_TP_49700 = clobtypes.Order{
OrderId: clobtypes.OrderId{
SubaccountId: Alice_Num0,
ClientId: 0,
OrderFlags: clobtypes.OrderIdFlags_Conditional,
ClobPairId: 0,
},
Side: clobtypes.Order_SIDE_BUY,
Quantums: 100_000_000,
Subticks: 50_000_000_000,
GoodTilOneof: &clobtypes.Order_GoodTilBlockTime{GoodTilBlockTime: 10},
ConditionType: clobtypes.Order_CONDITION_TYPE_TAKE_PROFIT,
ConditionalOrderTriggerSubticks: 49_700_000_000,
}
ConditionalOrder_Alice_Num0_Id0_Clob0_Buy1BTC_Price50000_GTBT10_TP_49995 = clobtypes.Order{
OrderId: clobtypes.OrderId{
SubaccountId: Alice_Num0,
Expand Down Expand Up @@ -933,6 +947,20 @@ var (
ConditionType: clobtypes.Order_CONDITION_TYPE_STOP_LOSS,
ConditionalOrderTriggerSubticks: 50_005_000_000,
}
ConditionalOrder_Alice_Num0_Id0_Clob0_Buy1BTC_Price50000_GTBT10_SL_50300 = clobtypes.Order{
OrderId: clobtypes.OrderId{
SubaccountId: Alice_Num0,
ClientId: 0,
OrderFlags: clobtypes.OrderIdFlags_Conditional,
ClobPairId: 0,
},
Side: clobtypes.Order_SIDE_BUY,
Quantums: 100_000_000,
Subticks: 50_000_000_000,
GoodTilOneof: &clobtypes.Order_GoodTilBlockTime{GoodTilBlockTime: 10},
ConditionType: clobtypes.Order_CONDITION_TYPE_STOP_LOSS,
ConditionalOrderTriggerSubticks: 50_300_000_000,
}
ConditionalOrder_Bob_Num0_Id0_Clob0_Sell1BTC_Price50000_GTBT10_TP_50001 = clobtypes.Order{
OrderId: clobtypes.OrderId{
SubaccountId: Bob_Num0,
Expand Down Expand Up @@ -961,6 +989,34 @@ var (
ConditionType: clobtypes.Order_CONDITION_TYPE_TAKE_PROFIT,
ConditionalOrderTriggerSubticks: 50_005_000_000,
}
ConditionalOrder_Bob_Num0_Id0_Clob0_Sell1BTC_Price50000_GTBT10_TP_50300 = clobtypes.Order{
OrderId: clobtypes.OrderId{
SubaccountId: Bob_Num0,
ClientId: 0,
OrderFlags: clobtypes.OrderIdFlags_Conditional,
ClobPairId: 0,
},
Side: clobtypes.Order_SIDE_SELL,
Quantums: 100_000_000,
Subticks: 50_000_000_000,
GoodTilOneof: &clobtypes.Order_GoodTilBlockTime{GoodTilBlockTime: 10},
ConditionType: clobtypes.Order_CONDITION_TYPE_TAKE_PROFIT,
ConditionalOrderTriggerSubticks: 50_300_000_000,
}
ConditionalOrder_Bob_Num0_Id0_Clob0_Sell1BTC_Price50000_GTBT10_SL_49700 = clobtypes.Order{
OrderId: clobtypes.OrderId{
SubaccountId: Bob_Num0,
ClientId: 0,
OrderFlags: clobtypes.OrderIdFlags_Conditional,
ClobPairId: 0,
},
Side: clobtypes.Order_SIDE_SELL,
Quantums: 100_000_000,
Subticks: 50_000_000_000,
GoodTilOneof: &clobtypes.Order_GoodTilBlockTime{GoodTilBlockTime: 10},
ConditionType: clobtypes.Order_CONDITION_TYPE_STOP_LOSS,
ConditionalOrderTriggerSubticks: 49_700_000_000,
}
ConditionalOrder_Bob_Num0_Id0_Clob0_Sell1BTC_Price50000_GTBT10_SL_49995 = clobtypes.Order{
OrderId: clobtypes.OrderId{
SubaccountId: Bob_Num0,
Expand Down
14 changes: 14 additions & 0 deletions protocol/testutil/constants/subaccounts.go
Original file line number Diff line number Diff line change
Expand Up @@ -283,6 +283,13 @@ var (
},
PerpetualPositions: []*satypes.PerpetualPosition{},
}
Carl_Num1_100000USD = satypes.Subaccount{
Id: &Carl_Num1,
AssetPositions: []*satypes.AssetPosition{
&Usdc_Asset_100_000,
},
PerpetualPositions: []*satypes.PerpetualPosition{},
}
Carl_Num1_Short_500USD = satypes.Subaccount{
Id: &Carl_Num1,
AssetPositions: []*satypes.AssetPosition{
Expand Down Expand Up @@ -529,6 +536,13 @@ var (
},
PerpetualPositions: []*satypes.PerpetualPosition{},
}
Dave_Num1_500000USD = satypes.Subaccount{
Id: &Dave_Num1,
AssetPositions: []*satypes.AssetPosition{
&Usdc_Asset_500_000,
},
PerpetualPositions: []*satypes.PerpetualPosition{},
}
Dave_Num1_025BTC_Long_50000USD = satypes.Subaccount{
Id: &Dave_Num1,
AssetPositions: []*satypes.AssetPosition{
Expand Down
3 changes: 3 additions & 0 deletions protocol/testutil/keeper/clob.go
Original file line number Diff line number Diff line change
Expand Up @@ -141,6 +141,7 @@ func NewClobKeepersTestContextWithUninitializedMemStore(
bankKeeper,
ks.FeeTiersKeeper,
ks.PerpetualsKeeper,
ks.PricesKeeper,
ks.StatsKeeper,
ks.RewardsKeeper,
ks.SubaccountsKeeper,
Expand Down Expand Up @@ -177,6 +178,7 @@ func createClobKeeper(
bankKeeper types.BankKeeper,
feeTiersKeeper types.FeeTiersKeeper,
perpKeeper *perpkeeper.Keeper,
pricesKeeper *priceskeeper.Keeper,
statsKeeper *statskeeper.Keeper,
rewardsKeeper types.RewardsKeeper,
saKeeper *subkeeper.Keeper,
Expand Down Expand Up @@ -207,6 +209,7 @@ func createClobKeeper(
bankKeeper,
feeTiersKeeper,
perpKeeper,
pricesKeeper,
statsKeeper,
rewardsKeeper,
indexerEventManager,
Expand Down
Loading

0 comments on commit 09ec109

Please sign in to comment.