Skip to content

Commit 717cead

Browse files
Merge pull request #144 from InjectiveLabs/f/add_custom_network_and_order_mask
F/add custom network and order mask
2 parents 8858a65 + b59c1ba commit 717cead

File tree

3 files changed

+66
-10
lines changed

3 files changed

+66
-10
lines changed

pyinjective/async_client.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@
6666
DEFAULT_BLOCK_TIME = 3 # seconds
6767

6868

69-
logging.basicConfig(format='%(levelname)s:%(message)s', level=logging.DEBUG)
69+
logging.basicConfig(format='%(levelname)s:%(message)s', level=logging.INFO)
7070

7171
class AsyncClient:
7272
def __init__(

pyinjective/composer.py

Lines changed: 53 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,37 @@ def __init__(self, network: str):
4141
def Coin(self, amount: int, denom: str):
4242
return cosmos_base_coin_pb.Coin(amount=str(amount), denom=denom)
4343

44-
def OrderData(self, market_id: str, subaccount_id: str, order_hash: str):
44+
def get_order_mask(self, **kwargs):
45+
order_mask = 0
46+
47+
if kwargs.get("is_conditional"):
48+
order_mask += injective_exchange_pb.OrderMask.CONDITIONAL
49+
else:
50+
order_mask += injective_exchange_pb.OrderMask.REGULAR
51+
52+
if kwargs.get("order_direction") == "buy":
53+
order_mask += injective_exchange_pb.OrderMask.DIRECTION_BUY_OR_HIGHER
54+
55+
elif kwargs.get("order_direction") == "sell":
56+
order_mask += injective_exchange_pb.OrderMask.DIRECTION_SELL_OR_LOWER
57+
58+
if kwargs.get("order_type") == "market":
59+
order_mask += injective_exchange_pb.OrderMask.TYPE_MARKET
60+
61+
elif kwargs.get("order_type") == "limit":
62+
order_mask += injective_exchange_pb.OrderMask.TYPE_LIMIT
63+
64+
if order_mask == 0:
65+
order_mask = 1
66+
67+
return order_mask
68+
69+
def OrderData(self, market_id: str, subaccount_id: str, order_hash: str, **kwargs):
70+
71+
self.get_order_mask(**kwargs)
72+
4573
return injective_exchange_tx_pb.OrderData(
46-
market_id=market_id, subaccount_id=subaccount_id, order_hash=order_hash
74+
market_id=market_id, subaccount_id=subaccount_id, order_hash=order_hash, order_mask=order_mask
4775
)
4876

4977
def SpotOrder(
@@ -95,6 +123,7 @@ def DerivativeOrder(
95123
fee_recipient: str,
96124
price: float,
97125
quantity: float,
126+
trigger_price: float = 0,
98127
**kwargs
99128
):
100129
# load denom metadata
@@ -114,7 +143,7 @@ def DerivativeOrder(
114143

115144
# prepare values
116145
price = derivative_price_to_backend(price, denom)
117-
trigger_price = derivative_price_to_backend(0, denom)
146+
trigger_price = derivative_price_to_backend(trigger_price, denom)
118147
quantity = derivative_quantity_to_backend(quantity, denom)
119148

120149
if kwargs.get("is_buy") and not kwargs.get("is_po"):
@@ -129,6 +158,18 @@ def DerivativeOrder(
129158
elif not kwargs.get("is_buy") and kwargs.get("is_po"):
130159
order_type = injective_exchange_pb.OrderType.SELL_PO
131160

161+
elif kwargs.get("stop_buy"):
162+
order_type = injective_exchange_pb.OrderType.STOP_BUY
163+
164+
elif kwargs.get("stop_sell"):
165+
order_type = injective_exchange_pb.OrderType.STOP_SEll
166+
167+
elif kwargs.get("take_buy"):
168+
order_type = injective_exchange_pb.OrderType.TAKE_BUY
169+
170+
elif kwargs.get("take_sell"):
171+
order_type = injective_exchange_pb.OrderType.TAKE_SELL
172+
132173
return injective_exchange_pb.DerivativeOrder(
133174
market_id=market_id,
134175
order_info=injective_exchange_pb.OrderInfo(
@@ -290,7 +331,7 @@ def MsgCancelSpotOrder(
290331
sender=sender,
291332
market_id=market_id,
292333
subaccount_id=subaccount_id,
293-
order_hash=order_hash,
334+
order_hash=order_hash
294335
)
295336

296337
def MsgBatchCreateSpotLimitOrders(self, sender: str, orders: List):
@@ -509,13 +550,16 @@ def MsgInstantBinaryOptionsMarketLaunch(
509550
)
510551

511552
def MsgCancelDerivativeOrder(
512-
self, market_id: str, sender: str, subaccount_id: str, order_hash: str
553+
self, market_id: str, sender: str, subaccount_id: str, order_hash: str, **kwargs
513554
):
555+
order_mask = self.get_order_mask(**kwargs)
556+
514557
return injective_exchange_tx_pb.MsgCancelDerivativeOrder(
515-
sender=sender,
516-
market_id=market_id,
517-
subaccount_id=subaccount_id,
518-
order_hash=order_hash,
558+
sender=sender,
559+
market_id=market_id,
560+
subaccount_id=subaccount_id,
561+
order_hash=order_hash,
562+
order_mask=order_mask
519563
)
520564

521565
def MsgBatchCreateDerivativeLimitOrders(self, sender: str, orders: List):

pyinjective/constant.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,5 +147,17 @@ def local(cls):
147147
env='local'
148148
)
149149

150+
@classmethod
151+
def custom(cls, lcd_endpoint, tm_websocket_endpoint, grpc_endpoint, grpc_exchange_endpoint, chain_id, env):
152+
return cls(
153+
lcd_endpoint=lcd_endpoint,
154+
tm_websocket_endpoint=tm_websocket_endpoint,
155+
grpc_endpoint=grpc_endpoint,
156+
grpc_exchange_endpoint=grpc_exchange_endpoint,
157+
chain_id=chain_id,
158+
fee_denom='inj',
159+
env=env
160+
)
161+
150162
def string(self):
151163
return self.env

0 commit comments

Comments
 (0)