progress
This commit is contained in:
parent
73f36ddcea
commit
7ab09669b4
1
.vscode/settings.json
vendored
1
.vscode/settings.json
vendored
@ -108,4 +108,5 @@
|
|||||||
// Enable Python-specific code actions
|
// Enable Python-specific code actions
|
||||||
"python.analysis.completeFunctionParens": true,
|
"python.analysis.completeFunctionParens": true,
|
||||||
"python.analysis.addImport.exactMatchOnly": false,
|
"python.analysis.addImport.exactMatchOnly": false,
|
||||||
|
"workbench.tree.indent": 24,
|
||||||
}
|
}
|
||||||
|
|||||||
@ -89,10 +89,10 @@ def main() -> None:
|
|||||||
print(f"{message_type=} {subscr_id=} {instrument_id}")
|
print(f"{message_type=} {subscr_id=} {instrument_id}")
|
||||||
if message_type == "md_aggregate":
|
if message_type == "md_aggregate":
|
||||||
aggr = message.get("md_aggregate", [])
|
aggr = message.get("md_aggregate", [])
|
||||||
print(f"[{aggr['tstmp'][:19]}] *** RLTM *** {message}")
|
print(f"[{aggr['tstamp'][:19]}] *** RLTM *** {message}")
|
||||||
elif message_type == "historical_md_aggregate":
|
elif message_type == "historical_md_aggregate":
|
||||||
for aggr in message.get("historical_data", []):
|
for aggr in message.get("historical_data", []):
|
||||||
print(f"[{aggr['tstmp'][:19]}] *** HIST *** {aggr}")
|
print(f"[{aggr['tstamp'][:19]}] *** HIST *** {aggr}")
|
||||||
else:
|
else:
|
||||||
print(f"Unknown message type: {message_type}")
|
print(f"Unknown message type: {message_type}")
|
||||||
|
|
||||||
|
|||||||
@ -34,10 +34,10 @@ class PairTradingRunner(NamedObject):
|
|||||||
# print(f"{message_type=} {subscr_id=} {instrument_id}")
|
# print(f"{message_type=} {subscr_id=} {instrument_id}")
|
||||||
# if message_type == "md_aggregate":
|
# if message_type == "md_aggregate":
|
||||||
# aggr = message.get("md_aggregate", [])
|
# aggr = message.get("md_aggregate", [])
|
||||||
# print(f"[{aggr['tstmp'][:19]}] *** RLTM *** {message}")
|
# print(f"[{aggr['tstamp'][:19]}] *** RLTM *** {message}")
|
||||||
# elif message_type == "historical_md_aggregate":
|
# elif message_type == "historical_md_aggregate":
|
||||||
# for aggr in message.get("historical_data", []):
|
# for aggr in message.get("historical_data", []):
|
||||||
# print(f"[{aggr['tstmp'][:19]}] *** HIST *** {aggr}")
|
# print(f"[{aggr['tstamp'][:19]}] *** HIST *** {aggr}")
|
||||||
# else:
|
# else:
|
||||||
# print(f"Unknown message type: {message_type}")
|
# print(f"Unknown message type: {message_type}")
|
||||||
|
|
||||||
|
|||||||
@ -156,10 +156,10 @@ async def main() -> None:
|
|||||||
print(f"{message_type=} {subscr_id=} {instrument_id}")
|
print(f"{message_type=} {subscr_id=} {instrument_id}")
|
||||||
if message_type == "md_aggregate":
|
if message_type == "md_aggregate":
|
||||||
aggr = message.get("md_aggregate", [])
|
aggr = message.get("md_aggregate", [])
|
||||||
print(f"[{aggr['tstmp'][:19]}] *** RLTM *** {message}")
|
print(f"[{aggr['tstamp'][:19]}] *** RLTM *** {message}")
|
||||||
elif message_type == "historical_md_aggregate":
|
elif message_type == "historical_md_aggregate":
|
||||||
for aggr in message.get("historical_data", []):
|
for aggr in message.get("historical_data", []):
|
||||||
print(f"[{aggr['tstmp'][:19]}] *** HIST *** {aggr}")
|
print(f"[{aggr['tstamp'][:19]}] *** HIST *** {aggr}")
|
||||||
else:
|
else:
|
||||||
print(f"Unknown message type: {message_type}")
|
print(f"Unknown message type: {message_type}")
|
||||||
|
|
||||||
|
|||||||
@ -52,11 +52,11 @@ class PtMktDataClient(NamedObject):
|
|||||||
if message_type == "md_aggregate":
|
if message_type == "md_aggregate":
|
||||||
aggr = message.get("md_aggregate", {})
|
aggr = message.get("md_aggregate", {})
|
||||||
await self.live_strategy_.on_mkt_data_update(aggr)
|
await self.live_strategy_.on_mkt_data_update(aggr)
|
||||||
# print(f"[{aggr['tstmp'][:19]}] *** RLTM *** {message}")
|
# print(f"[{aggr['tstamp'][:19]}] *** RLTM *** {message}")
|
||||||
elif message_type == "historical_md_aggregate":
|
elif message_type == "historical_md_aggregate":
|
||||||
aggr = message.get("historical_data", {})
|
aggr = message.get("historical_data", {})
|
||||||
await self.live_strategy_.on_mkt_data_hist_snapshot(aggr)
|
await self.live_strategy_.on_mkt_data_hist_snapshot(aggr)
|
||||||
# print(f"[{aggr['tstmp'][:19]}] *** HIST *** {aggr}")
|
# print(f"[{aggr['tstamp'][:19]}] *** HIST *** {aggr}")
|
||||||
else:
|
else:
|
||||||
Log.info(f"Unknown message type: {message_type}")
|
Log.info(f"Unknown message type: {message_type}")
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
from typing import Any, Dict, List, Type
|
from typing import Any, Dict, List, Optional
|
||||||
import pandas as pd
|
import pandas as pd
|
||||||
|
|
||||||
from cvttpy_base.settings.cvtt_types import JsonDictT
|
from cvttpy_base.settings.cvtt_types import JsonDictT
|
||||||
@ -176,7 +176,28 @@ class RealTimeMarketData(PtMarketData):
|
|||||||
async def on_mkt_data_hist_snapshot(self, snapshot: JsonDictT) -> None:
|
async def on_mkt_data_hist_snapshot(self, snapshot: JsonDictT) -> None:
|
||||||
# URGENT
|
# URGENT
|
||||||
# create origin_mkt_data_df_ from snapshot
|
# create origin_mkt_data_df_ from snapshot
|
||||||
|
# verify that the data for both instruments are present
|
||||||
|
|
||||||
# transform it to market_data_df_ tstamp, close_symbolA, close_symbolB
|
# transform it to market_data_df_ tstamp, close_symbolA, close_symbolB
|
||||||
|
'''
|
||||||
|
# from cvttpy/exchanges/binance/spot/mkt_data.py
|
||||||
|
values = {
|
||||||
|
"time_ns": time_ns,
|
||||||
|
"tstamp": format_nanos_utc(time_ns),
|
||||||
|
"exchange_id": exch_inst.exchange_id_,
|
||||||
|
"instrument_id": exch_inst.instrument_id(),
|
||||||
|
"interval_ns": interval_sec * 1_000_000_000,
|
||||||
|
"open": float(kline[1]),
|
||||||
|
"high": float(kline[2]),
|
||||||
|
"low": float(kline[3]),
|
||||||
|
"close": float(kline[4]),
|
||||||
|
"volume": float(kline[5]),
|
||||||
|
"num_trades": kline[8],
|
||||||
|
"vwap": float(kline[7]) / float(kline[5]) if float(kline[5]) > 0 else 0.0 # Calculate VWAP
|
||||||
|
}
|
||||||
|
'''
|
||||||
|
|
||||||
|
|
||||||
pass
|
pass
|
||||||
|
|
||||||
async def on_mkt_data_update(self, update: JsonDictT) -> Optional[pd.DataFrame]:
|
async def on_mkt_data_update(self, update: JsonDictT) -> Optional[pd.DataFrame]:
|
||||||
@ -187,6 +208,23 @@ class RealTimeMarketData(PtMarketData):
|
|||||||
# add tmp1 to origin_mkt_data_df_
|
# add tmp1 to origin_mkt_data_df_
|
||||||
# add tmp2 to market_data_df_
|
# add tmp2 to market_data_df_
|
||||||
# return market_data_df_
|
# return market_data_df_
|
||||||
|
'''
|
||||||
|
class MdTradesAggregate(NamedObject):
|
||||||
|
def to_dict(self) -> Dict[str, Any]:
|
||||||
|
return {
|
||||||
|
"time_ns": self.time_ns_,
|
||||||
|
"tstamp": format_nanos_utc(self.time_ns_),
|
||||||
|
"exchange_id": self.exch_inst_.exchange_id_,
|
||||||
|
"instrument_id": self.exch_inst_.instrument_id(),
|
||||||
|
"interval_ns": self.interval_ns_,
|
||||||
|
"open": self.exch_inst_.get_price(self.open_),
|
||||||
|
"high": self.exch_inst_.get_price(self.high_),
|
||||||
|
"low": self.exch_inst_.get_price(self.low_),
|
||||||
|
"close": self.exch_inst_.get_price(self.close_),
|
||||||
|
"volume": self.exch_inst_.get_quantity(self.volume_),
|
||||||
|
"vwap": self.exch_inst_.get_price(self.vwap_),
|
||||||
|
"num_trades": self.exch_inst_.get_quantity(self.num_trades_),
|
||||||
|
}
|
||||||
|
'''
|
||||||
|
|
||||||
return pd.DataFrame()
|
return pd.DataFrame()
|
||||||
Loading…
x
Reference in New Issue
Block a user