Files
deploy/bots/controllers/market_making/pmm_simple.py
2024-06-24 22:30:20 +02:00

39 lines
1.5 KiB
Python

from decimal import Decimal
from typing import List
from pydantic import Field
from hummingbot.client.config.config_data_types import ClientFieldData
from hummingbot.data_feed.candles_feed.data_types import CandlesConfig
from hummingbot.strategy_v2.controllers.market_making_controller_base import (
MarketMakingControllerBase,
MarketMakingControllerConfigBase,
)
from hummingbot.strategy_v2.executors.position_executor.data_types import PositionExecutorConfig
class PMMSimpleConfig(MarketMakingControllerConfigBase):
controller_name = "pmm_simple"
# As this controller is a simple version of the PMM, we are not using the candles feed
candles_config: List[CandlesConfig] = Field(default=[], client_data=ClientFieldData(prompt_on_new=False))
class PMMSimpleController(MarketMakingControllerBase):
def __init__(self, config: PMMSimpleConfig, *args, **kwargs):
super().__init__(config, *args, **kwargs)
self.config = config
def get_executor_config(self, level_id: str, price: Decimal, amount: Decimal):
trade_type = self.get_trade_type_from_level_id(level_id)
return PositionExecutorConfig(
timestamp=self.market_data_provider.time(),
level_id=level_id,
connector_name=self.config.connector_name,
trading_pair=self.config.trading_pair,
entry_price=price,
amount=amount,
triple_barrier_config=self.config.triple_barrier_config,
leverage=self.config.leverage,
side=trade_type,
)