Add trend MACD spot strategy
This commit is contained in:
@@ -15,7 +15,7 @@ from crypto_spot_bot.models import Candle, Ticker, utc_now
|
||||
from crypto_spot_bot.storage import Storage
|
||||
|
||||
|
||||
POPULAR_FALLBACK = ["BTCUSDT", "ETHUSDT", "SOLUSDT", "XRPUSDT", "DOGEUSDT", "LTCUSDT"]
|
||||
POPULAR_FALLBACK = ["BTCUSDT", "ETHUSDT", "SOLUSDT"]
|
||||
|
||||
|
||||
def _float(value: Any, default: float = 0.0) -> float:
|
||||
@@ -34,6 +34,7 @@ class MarketData:
|
||||
self.instruments: dict[str, Instrument] = {}
|
||||
self.tickers: dict[str, Ticker] = {}
|
||||
self.candles: dict[str, list[Candle]] = {}
|
||||
self.trend_candles: dict[str, list[Candle]] = {}
|
||||
self.orderbook_top: dict[str, tuple[float, float]] = {}
|
||||
self.patterns: dict[str, dict[str, Any]] = {}
|
||||
self.forecasts: dict[str, dict[str, Any]] = {}
|
||||
@@ -77,6 +78,13 @@ class MarketData:
|
||||
)
|
||||
add_indicators(candles)
|
||||
self.candles[symbol] = candles
|
||||
trend_candles = self.client.klines(
|
||||
symbol=symbol,
|
||||
interval=self.settings.trend_interval,
|
||||
limit=self.settings.trend_kline_limit,
|
||||
)
|
||||
add_indicators(trend_candles)
|
||||
self.trend_candles[symbol] = trend_candles
|
||||
bid, ask = self.client.orderbook_top(symbol)
|
||||
self.orderbook_top[symbol] = (bid, ask)
|
||||
if symbol in self.tickers:
|
||||
@@ -101,7 +109,7 @@ class MarketData:
|
||||
try:
|
||||
async with websockets.connect(self.settings.websocket_url, ping_interval=20) as ws:
|
||||
self.ws_connected = True
|
||||
await ws.send(websocket_subscribe_message(self.symbols))
|
||||
await ws.send(websocket_subscribe_message(self.symbols, self.settings.base_interval))
|
||||
self.storage.event("Поток данных Bybit подключен")
|
||||
async for raw in ws:
|
||||
self.last_ws_message_at = utc_now()
|
||||
@@ -215,6 +223,7 @@ class MarketData:
|
||||
{
|
||||
"ticker": self.tickers[symbol].as_dict() if symbol in self.tickers else None,
|
||||
"candles": [candle.as_dict() for candle in self.candles.get(symbol, [])[-120:]],
|
||||
"trend_candles": [candle.as_dict() for candle in self.trend_candles.get(symbol, [])[-5:]],
|
||||
"pattern": self.patterns.get(symbol),
|
||||
"forecast": self.forecasts.get(symbol),
|
||||
"instrument": asdict(self.instruments[symbol]) if symbol in self.instruments else None,
|
||||
|
||||
Reference in New Issue
Block a user