Skip to content

Commit e7d0710

Browse files
committed
Add sql trade model
1 parent f5c97ef commit e7d0710

File tree

10 files changed

+562
-695
lines changed

10 files changed

+562
-695
lines changed

investing_algorithm_framework/dependency_container.py

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
from investing_algorithm_framework.app.algorithm import Algorithm
44
from investing_algorithm_framework.infrastructure import SQLOrderRepository, \
55
SQLPositionRepository, SQLPortfolioRepository, \
6-
SQLPortfolioSnapshotRepository, \
6+
SQLPortfolioSnapshotRepository, SQLTradeRepository, \
77
SQLPositionSnapshotRepository, PerformanceService, CCXTMarketService
88
from investing_algorithm_framework.services import OrderService, \
99
PositionService, PortfolioService, StrategyOrchestratorService, \
@@ -40,6 +40,7 @@ class DependencyContainer(containers.DeclarativeContainer):
4040
portfolio_snapshot_repository = providers.Factory(
4141
SQLPortfolioSnapshotRepository
4242
)
43+
trade_repository = providers.Factory(SQLTradeRepository)
4344
market_service = providers.Factory(
4445
CCXTMarketService,
4546
market_credential_service=market_credential_service,
@@ -65,6 +66,17 @@ class DependencyContainer(containers.DeclarativeContainer):
6566
portfolio_repository=portfolio_repository,
6667
position_repository=position_repository,
6768
)
69+
position_service = providers.Factory(
70+
PositionService,
71+
repository=position_repository,
72+
market_service=market_service,
73+
market_credential_service=market_credential_service,
74+
order_repository=order_repository,
75+
)
76+
trade_service = providers.Factory(
77+
TradeService,
78+
trade_repository=trade_repository,
79+
)
6880
order_service = providers.Factory(
6981
OrderService,
7082
configuration_service=configuration_service,
@@ -74,14 +86,8 @@ class DependencyContainer(containers.DeclarativeContainer):
7486
market_service=market_service,
7587
market_credential_service=market_credential_service,
7688
portfolio_configuration_service=portfolio_configuration_service,
77-
portfolio_snapshot_service=portfolio_snapshot_service
78-
)
79-
position_service = providers.Factory(
80-
PositionService,
81-
repository=position_repository,
82-
market_service=market_service,
83-
market_credential_service=market_credential_service,
84-
order_repository=order_repository,
89+
portfolio_snapshot_service=portfolio_snapshot_service,
90+
trade_service=trade_service,
8591
)
8692
portfolio_service = providers.Factory(
8793
PortfolioService,
@@ -94,13 +100,6 @@ class DependencyContainer(containers.DeclarativeContainer):
94100
portfolio_configuration_service=portfolio_configuration_service,
95101
portfolio_snapshot_service=portfolio_snapshot_service,
96102
)
97-
trade_service = providers.Factory(
98-
TradeService,
99-
portfolio_repository=portfolio_repository,
100-
order_service=order_service,
101-
market_data_source_service=market_data_source_service,
102-
position_service=position_service,
103-
)
104103
portfolio_sync_service = providers.Factory(
105104
PortfolioSyncService,
106105
trade_service=trade_service,

investing_algorithm_framework/infrastructure/__init__.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
from .database import setup_sqlalchemy, Session, \
22
create_all_tables
33
from .models import SQLPortfolio, SQLOrder, SQLPosition, \
4-
SQLPortfolioSnapshot, SQLPositionSnapshot, \
4+
SQLPortfolioSnapshot, SQLPositionSnapshot, SQLTrade, \
55
CCXTOHLCVBacktestMarketDataSource, CCXTOrderBookMarketDataSource, \
66
CCXTTickerMarketDataSource, CCXTOHLCVMarketDataSource, \
77
CSVOHLCVMarketDataSource, CSVTickerMarketDataSource
88
from .repositories import SQLOrderRepository, SQLPositionRepository, \
9-
SQLPortfolioRepository, \
9+
SQLPortfolioRepository, SQLTradeRepository, \
1010
SQLPortfolioSnapshotRepository, SQLPositionSnapshotRepository
1111
from .services import PerformanceService, CCXTMarketService, \
1212
AzureBlobStorageStateHandler
@@ -21,6 +21,7 @@
2121
"setup_sqlalchemy",
2222
"Session",
2323
"SQLPortfolio",
24+
"SQLTrade",
2425
"SQLOrder",
2526
"SQLPosition",
2627
"PerformanceService",
@@ -35,5 +36,6 @@
3536
"CSVTickerMarketDataSource",
3637
"CCXTOHLCVBacktestMarketDataSource",
3738
"CCXTOrderBookMarketDataSource",
38-
"AzureBlobStorageStateHandler"
39+
"AzureBlobStorageStateHandler",
40+
"SQLTradeRepository"
3941
]

investing_algorithm_framework/infrastructure/models/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
from .order import SQLOrder
66
from .portfolio import SQLPortfolio, SQLPortfolioSnapshot
77
from .position import SQLPosition, SQLPositionSnapshot
8+
from .trade import SQLTrade
89

910
__all__ = [
1011
"SQLOrder",
@@ -18,4 +19,5 @@
1819
"CCXTOHLCVMarketDataSource",
1920
"CSVTickerMarketDataSource",
2021
"CSVOHLCVMarketDataSource",
22+
"SQLTrade"
2123
]
Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,29 @@
1-
# from sqlalchemy import Column, Integer, String, DateTime, Float
2-
# from sqlalchemy.orm import relationship
1+
from sqlalchemy import Column, Integer, String, DateTime, Float
2+
from sqlalchemy.orm import relationship
33

4-
# from investing_algorithm_framework.domain import PortfolioSnapshot
5-
# from investing_algorithm_framework.infrastructure.database import SQLBaseModel
6-
# from investing_algorithm_framework.infrastructure.models.model_extension \
7-
# import SQLAlchemyModelExtension
4+
from investing_algorithm_framework.domain import PortfolioSnapshot
5+
from investing_algorithm_framework.infrastructure.database import SQLBaseModel
6+
from investing_algorithm_framework.infrastructure.models.model_extension \
7+
import SQLAlchemyModelExtension
88

99

10-
# class SQLPortfolioSnapshot(
11-
# PortfolioSnapshot, SQLBaseModel, SQLAlchemyModelExtension
12-
# ):
13-
# __tablename__ = "portfolio_snapshots"
14-
# id = Column(Integer, primary_key=True)
15-
# portfolio_id = Column(String, nullable=False)
16-
# trading_symbol = Column(String, nullable=False)
17-
# pending_value = Column(Float, nullable=False, default=0)
18-
# unallocated = Column(Float, nullable=False, default=0)
19-
# total_net_gain = Column(Float, nullable=False, default=0)
20-
# total_revenue = Column(Float, nullable=False, default=0)
21-
# total_cost = Column(Float, nullable=False, default=0)
22-
# cash_flow = Column(Float, nullable=False, default=0)
23-
# created_at = Column(DateTime, nullable=False, default=0)
24-
# position_snapshots = relationship(
25-
# "SQLPositionSnapshot",
26-
# back_populates="portfolio_snapshot",
27-
# lazy="dynamic",
28-
# cascade="all,delete",
29-
# )
10+
class SQLPortfolioSnapshot(
11+
PortfolioSnapshot, SQLBaseModel, SQLAlchemyModelExtension
12+
):
13+
__tablename__ = "portfolio_snapshots"
14+
id = Column(Integer, primary_key=True)
15+
portfolio_id = Column(String, nullable=False)
16+
trading_symbol = Column(String, nullable=False)
17+
pending_value = Column(Float, nullable=False, default=0)
18+
unallocated = Column(Float, nullable=False, default=0)
19+
total_net_gain = Column(Float, nullable=False, default=0)
20+
total_revenue = Column(Float, nullable=False, default=0)
21+
total_cost = Column(Float, nullable=False, default=0)
22+
cash_flow = Column(Float, nullable=False, default=0)
23+
created_at = Column(DateTime, nullable=False, default=0)
24+
position_snapshots = relationship(
25+
"SQLPositionSnapshot",
26+
back_populates="portfolio_snapshot",
27+
lazy="dynamic",
28+
cascade="all,delete",
29+
)

0 commit comments

Comments
 (0)