quantplay 2.0.73__tar.gz → 2.0.75__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {quantplay-2.0.73 → quantplay-2.0.75}/PKG-INFO +1 -1
- {quantplay-2.0.73 → quantplay-2.0.75}/quantplay/broker/broker_factory.py +1 -1
- {quantplay-2.0.73 → quantplay-2.0.75}/quantplay/broker/dhan.py +32 -6
- {quantplay-2.0.73 → quantplay-2.0.75}/quantplay/broker/noren.py +1 -1
- {quantplay-2.0.73 → quantplay-2.0.75}/quantplay.egg-info/PKG-INFO +1 -1
- {quantplay-2.0.73 → quantplay-2.0.75}/setup.py +1 -1
- {quantplay-2.0.73 → quantplay-2.0.75}/README.md +0 -0
- {quantplay-2.0.73 → quantplay-2.0.75}/pyproject.toml +0 -0
- {quantplay-2.0.73 → quantplay-2.0.75}/quantplay/__init__.py +0 -0
- {quantplay-2.0.73 → quantplay-2.0.75}/quantplay/broker/__init__.py +0 -0
- {quantplay-2.0.73 → quantplay-2.0.75}/quantplay/broker/aliceblue.py +0 -0
- {quantplay-2.0.73 → quantplay-2.0.75}/quantplay/broker/angelone.py +0 -0
- {quantplay-2.0.73 → quantplay-2.0.75}/quantplay/broker/auto_login/__init__.py +0 -0
- {quantplay-2.0.73 → quantplay-2.0.75}/quantplay/broker/auto_login/aliceblue.py +0 -0
- {quantplay-2.0.73 → quantplay-2.0.75}/quantplay/broker/finvasia_utils/__init__.py +0 -0
- {quantplay-2.0.73 → quantplay-2.0.75}/quantplay/broker/finvasia_utils/fa_noren.py +0 -0
- {quantplay-2.0.73 → quantplay-2.0.75}/quantplay/broker/five_paisa.py +0 -0
- {quantplay-2.0.73 → quantplay-2.0.75}/quantplay/broker/flattrade.py +0 -0
- {quantplay-2.0.73 → quantplay-2.0.75}/quantplay/broker/ft_utils/__init__.py +0 -0
- {quantplay-2.0.73 → quantplay-2.0.75}/quantplay/broker/ft_utils/flattrade_utils.py +0 -0
- {quantplay-2.0.73 → quantplay-2.0.75}/quantplay/broker/ft_utils/ft_noren.py +0 -0
- {quantplay-2.0.73 → quantplay-2.0.75}/quantplay/broker/generics/__init__.py +0 -0
- {quantplay-2.0.73 → quantplay-2.0.75}/quantplay/broker/generics/broker.py +0 -0
- {quantplay-2.0.73 → quantplay-2.0.75}/quantplay/broker/iifl_xts.py +0 -0
- {quantplay-2.0.73 → quantplay-2.0.75}/quantplay/broker/kite_utils.py +0 -0
- {quantplay-2.0.73 → quantplay-2.0.75}/quantplay/broker/kotak.py +0 -0
- {quantplay-2.0.73 → quantplay-2.0.75}/quantplay/broker/motilal.py +0 -0
- {quantplay-2.0.73 → quantplay-2.0.75}/quantplay/broker/shoonya.py +0 -0
- {quantplay-2.0.73 → quantplay-2.0.75}/quantplay/broker/uplink/__init__.py +0 -0
- {quantplay-2.0.73 → quantplay-2.0.75}/quantplay/broker/uplink/uplink_utils.py +0 -0
- {quantplay-2.0.73 → quantplay-2.0.75}/quantplay/broker/upstox.py +0 -0
- {quantplay-2.0.73 → quantplay-2.0.75}/quantplay/broker/xts.py +0 -0
- {quantplay-2.0.73 → quantplay-2.0.75}/quantplay/broker/xts_utils/Connect.py +0 -0
- {quantplay-2.0.73 → quantplay-2.0.75}/quantplay/broker/xts_utils/Exception.py +0 -0
- {quantplay-2.0.73 → quantplay-2.0.75}/quantplay/broker/xts_utils/InteractiveSocketClient.py +0 -0
- {quantplay-2.0.73 → quantplay-2.0.75}/quantplay/broker/xts_utils/__init__.py +0 -0
- {quantplay-2.0.73 → quantplay-2.0.75}/quantplay/broker/zerodha.py +0 -0
- {quantplay-2.0.73 → quantplay-2.0.75}/quantplay/exception/__init__.py +0 -0
- {quantplay-2.0.73 → quantplay-2.0.75}/quantplay/exception/exceptions.py +0 -0
- {quantplay-2.0.73 → quantplay-2.0.75}/quantplay/model/__init__.py +0 -0
- {quantplay-2.0.73 → quantplay-2.0.75}/quantplay/model/broker.py +0 -0
- {quantplay-2.0.73 → quantplay-2.0.75}/quantplay/model/generics.py +0 -0
- {quantplay-2.0.73 → quantplay-2.0.75}/quantplay/model/instrument_data.py +0 -0
- {quantplay-2.0.73 → quantplay-2.0.75}/quantplay/model/order_event.py +0 -0
- {quantplay-2.0.73 → quantplay-2.0.75}/quantplay/py.typed +0 -0
- {quantplay-2.0.73 → quantplay-2.0.75}/quantplay/utils/__init__.py +0 -0
- {quantplay-2.0.73 → quantplay-2.0.75}/quantplay/utils/caching.py +0 -0
- {quantplay-2.0.73 → quantplay-2.0.75}/quantplay/utils/constant.py +0 -0
- {quantplay-2.0.73 → quantplay-2.0.75}/quantplay/utils/exchange.py +0 -0
- {quantplay-2.0.73 → quantplay-2.0.75}/quantplay/utils/number_utils.py +0 -0
- {quantplay-2.0.73 → quantplay-2.0.75}/quantplay/utils/pickle_utils.py +0 -0
- {quantplay-2.0.73 → quantplay-2.0.75}/quantplay/utils/selenium_utils.py +0 -0
- {quantplay-2.0.73 → quantplay-2.0.75}/quantplay/wrapper/__init__.py +0 -0
- {quantplay-2.0.73 → quantplay-2.0.75}/quantplay/wrapper/aws/__init__.py +0 -0
- {quantplay-2.0.73 → quantplay-2.0.75}/quantplay/wrapper/aws/s3.py +0 -0
- {quantplay-2.0.73 → quantplay-2.0.75}/quantplay.egg-info/SOURCES.txt +0 -0
- {quantplay-2.0.73 → quantplay-2.0.75}/quantplay.egg-info/dependency_links.txt +0 -0
- {quantplay-2.0.73 → quantplay-2.0.75}/quantplay.egg-info/requires.txt +0 -0
- {quantplay-2.0.73 → quantplay-2.0.75}/quantplay.egg-info/top_level.txt +0 -0
- {quantplay-2.0.73 → quantplay-2.0.75}/setup.cfg +0 -0
- {quantplay-2.0.73 → quantplay-2.0.75}/tests/__init__.py +0 -0
- {quantplay-2.0.73 → quantplay-2.0.75}/tests/conftest.py +0 -0
- {quantplay-2.0.73 → quantplay-2.0.75}/tests/wrapper/__init__.py +0 -0
- {quantplay-2.0.73 → quantplay-2.0.75}/tests/wrapper/aws/__init__.py +0 -0
- {quantplay-2.0.73 → quantplay-2.0.75}/tests/wrapper/aws/s3_test.py +0 -0
|
@@ -61,7 +61,7 @@ broker_instruments_map = {
|
|
|
61
61
|
Broker.ANGELONE: "angelone_instruments",
|
|
62
62
|
Broker.ALICEBLUE: "aliceblue_instruments",
|
|
63
63
|
Broker.UPSTOX: "upstox_instruments",
|
|
64
|
-
Broker.DHAN: "
|
|
64
|
+
Broker.DHAN: "dhan_instruments",
|
|
65
65
|
Broker.KOTAK: "upstox_instruments",
|
|
66
66
|
Broker.FIVEPAISA_OPENAPI: "5paisa_instruments",
|
|
67
67
|
}
|
|
@@ -41,9 +41,11 @@ class Dhan(Broker):
|
|
|
41
41
|
|
|
42
42
|
except Exception:
|
|
43
43
|
raise TokenException("Dhan Session Expired")
|
|
44
|
+
if load_instrument:
|
|
45
|
+
self.load_instrument()
|
|
44
46
|
|
|
45
47
|
def load_instrument(self, file_name: str | None = None) -> None:
|
|
46
|
-
super().load_instrument("
|
|
48
|
+
super().load_instrument("dhan_instruments")
|
|
47
49
|
|
|
48
50
|
def set_username(self, username: str):
|
|
49
51
|
self.username = username
|
|
@@ -62,16 +64,32 @@ class Dhan(Broker):
|
|
|
62
64
|
def modify_order(self, order: Any) -> str:
|
|
63
65
|
# TODO
|
|
64
66
|
order_id = order["order_id"]
|
|
67
|
+
existing_order: Dict[str, Any] = self.invoke_dhan_api(
|
|
68
|
+
self.dhan.get_order_by_id, # type: ignore
|
|
69
|
+
order_id,
|
|
70
|
+
)
|
|
65
71
|
|
|
72
|
+
if "quantity" not in order:
|
|
73
|
+
order["quantity"] = existing_order["data"]["quantity"]
|
|
74
|
+
if "trigger_price" not in order:
|
|
75
|
+
order["trigger_price"] = None
|
|
66
76
|
try:
|
|
67
|
-
order["variety"] = "regular"
|
|
68
|
-
if "trigger_price" not in order:
|
|
69
|
-
order["trigger_price"] = None
|
|
70
77
|
Constants.logger.info(
|
|
71
78
|
"Modifying order [{}] new price [{}]".format(
|
|
72
79
|
order["order_id"], order["price"]
|
|
73
80
|
)
|
|
74
81
|
)
|
|
82
|
+
self.dhan.modify_order( # type: ignore
|
|
83
|
+
order_id,
|
|
84
|
+
order["order_type"],
|
|
85
|
+
None,
|
|
86
|
+
order["quantity"],
|
|
87
|
+
order["price"],
|
|
88
|
+
order["trigger_price"],
|
|
89
|
+
None,
|
|
90
|
+
self.dhan.DAY,
|
|
91
|
+
)
|
|
92
|
+
|
|
75
93
|
response = self.wrapper.modify_order( # type: ignore
|
|
76
94
|
order_id=order_id,
|
|
77
95
|
variety=order["variety"],
|
|
@@ -94,7 +112,7 @@ class Dhan(Broker):
|
|
|
94
112
|
return order_id
|
|
95
113
|
|
|
96
114
|
def cancel_order(self, order_id: str, variety: str | None = "regular"):
|
|
97
|
-
self.
|
|
115
|
+
self.dhan.cancel_order(order_id=order_id) # type: ignore
|
|
98
116
|
|
|
99
117
|
def get_order_type(self, order_type: OrderTypeType) -> DhanTypes.OrderTypeType:
|
|
100
118
|
if order_type == OrderType.market:
|
|
@@ -132,6 +150,12 @@ class Dhan(Broker):
|
|
|
132
150
|
|
|
133
151
|
raise InvalidArgumentException(f"Product {product} not supported for trading")
|
|
134
152
|
|
|
153
|
+
def get_symbol(self, symbol: str, exchange: ExchangeType | None = None):
|
|
154
|
+
if symbol not in self.quantplay_symbol_map:
|
|
155
|
+
return symbol
|
|
156
|
+
|
|
157
|
+
return self.quantplay_symbol_map[symbol]
|
|
158
|
+
|
|
135
159
|
# @retry(wait_exponential_multiplier=3000, wait_exponential_max=10000, stop_max_attempt_number=3)
|
|
136
160
|
def place_order(
|
|
137
161
|
self,
|
|
@@ -149,8 +173,10 @@ class Dhan(Broker):
|
|
|
149
173
|
Constants.logger.info(
|
|
150
174
|
f"[PLACING_ORDER] {tradingsymbol} {exchange} {quantity} {tag}"
|
|
151
175
|
)
|
|
176
|
+
tradingsymbol = self.get_symbol(tradingsymbol)
|
|
177
|
+
security_id = self.symbol_data[f"{exchange}:{tradingsymbol}"]["token"]
|
|
152
178
|
order_id: str = self.dhan.place_order( # type:ignore
|
|
153
|
-
security_id=
|
|
179
|
+
security_id=security_id, # hdfcbank
|
|
154
180
|
exchange_segment=self.get_exchange_segment(exchange),
|
|
155
181
|
transaction_type=transaction_type,
|
|
156
182
|
quantity=quantity,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|