Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
wiseplat
GitHub Repository: wiseplat/python-code
Path: blob/master/ invest-robot-contest_TradingCompetition2022-main/models/ModelBuilder.py
5925 views
1
from models.TradingModel import TradingModel
2
from models.ARIMAdeMarkLong import ARIMAdeMarkLong
3
from models.ARIMAdeMarkLongHFT import ARIMAdeMarkLongHFT
4
from decimal import Decimal
5
from logger.LoggerFactory import LoggerFactory
6
from logger.BusinessLogger import BusinessLogger
7
8
9
class ModelBuilder:
10
_MODEL_MAP = dict(
11
ARIMAdeMarkLong=ARIMAdeMarkLong,
12
ARIMAdeMarkLongHFT=ARIMAdeMarkLongHFT
13
)
14
15
@classmethod
16
def buildModel(cls, model_name, ticker, config):
17
model: TradingModel = cls._MODEL_MAP[model_name](ticker, config)
18
model.custom_init()
19
# ToDo Don't send config into model. Parse all config and set value into object
20
21
if not model:
22
return None
23
24
stock_drop_limit = config.get(section='TradingStrategy', option='stock_drop_limit')
25
stock_limit = config.get(section='TradingStrategy', option='stock_limit')
26
stock_lot_limit = config.get(section='TradingStrategy', option='stock_lot_limit')
27
if stock_drop_limit:
28
model.stock_drop_limit = Decimal(stock_drop_limit)
29
if stock_limit:
30
model.stock_limit = Decimal(stock_limit)
31
if stock_lot_limit:
32
model.stock_lot_limit = stock_lot_limit
33
34
# Log data
35
LoggerFactory.get_business_logger_instance().add_event(BusinessLogger.MODEL_CREATED,
36
model_name, model)
37
return model
38
39
40
41
42