Skip to content

Conversation

@TaprootFreak
Copy link
Collaborator

@TaprootFreak TaprootFreak commented Dec 23, 2025

Summary

  • Add liquidityLimited parameter to buy/sell actions in liquidity management
  • When enabled, order size is limited to available liquidity at best price
  • Prevents slippage on low-liquidity pairs (e.g., ZCHF/USDT on MEXC)

Changes

  • ExchangeService: New getBestBidLiquidity() method to fetch price + amount from orderbook
  • ExchangeService: Made getMinTradeAmount() public for use in adapters
  • CcxtExchangeAdapter: Extended buy() and sell() to support liquidityLimited parameter
  • CcxtExchangeAdapter: Added configurable maxPriceDeviation parameter (default: 5%)

Usage

Enable via action params in database:

{"tradeAsset":"USDT","liquidityLimited":true,"maxPriceDeviation":0.1}

After Merge: SQL for PRD

-- 1. New Action for ZCHF Buy (liquidity-limited)
INSERT INTO liquidity_management_action (system, command, params, tag)
VALUES ('MEXC', 'buy', '{"tradeAsset":"USDT","liquidityLimited":true}', 'MEXC ZCHF');

-- Get the new action ID (e.g., SELECT LAST_INSERT_ID() or SELECT MAX(id) FROM liquidity_management_action)
-- Assume new ID = 218

-- 2. Update Rule 308 (MEXC/ZCHF)
UPDATE liquidity_management_rule 
SET 
  minimal = 0, 
  optimal = 10, 
  maximal = 100,
  deficitStartActionId = 218,       -- Replace with actual new action ID!
  redundancyStartActionId = 214
WHERE id = 308;

-- 3. Update Action 214 (MEXC Sell) with liquidityLimited
UPDATE liquidity_management_action 
SET params = '{"tradeAsset":"USDT","liquidityLimited":true}'
WHERE id = 214;

Test plan

  • Verify TypeScript compilation
  • Test ZCHF buy/sell on MEXC with liquidityLimited enabled
  • Verify normal trading (without liquidityLimited) still works

- Add getBestBidLiquidity() method to ExchangeService
- Add liquidityLimited parameter to buy/sell actions
- Limit order size to available liquidity at best price
- Prevents slippage on low-liquidity pairs like ZCHF/USDT
- Add minAmount parameter to getBestBidLiquidity()
- Iterate through orderbook to find first order meeting minimum
- Pass exchange minimum to getBestBidLiquidity() in buy/sell methods
@TaprootFreak
Copy link
Collaborator Author

#2691

- Add maxPriceDeviation to parseBuyParams and parseSellParams
- Pass maxPriceDeviation to getAndCheckTradePrice (default: 5%)
- Improve error message to show configured max deviation
@TaprootFreak
Copy link
Collaborator Author

PR-Beschreibung aktualisiert

Folgende Punkte wurden ergänzt, die im Code vorhanden aber in der ursprünglichen Beschreibung fehlten:

  1. getMinTradeAmount() public gemacht - War vorher private, wird jetzt vom Adapter verwendet um Orders unter dem Exchange-Minimum zu überspringen

  2. maxPriceDeviation Parameter hinzugefügt - Erlaubt konfigurierbare maximale Preisabweichung pro Action (Standard bleibt 5%)

    {"tradeAsset":"USDT","liquidityLimited":true,"maxPriceDeviation":0.1}

@TaprootFreak
Copy link
Collaborator Author

DB-Änderungen nach Merge

Der Code ist rückwärtskompatibel - bestehende Actions funktionieren ohne Änderungen weiter (liquidityLimited = false, maxPriceDeviation = 5% als Default).

Für ZCHF/MEXC aktivieren:

-- 1. Neue Buy-Action mit liquidityLimited
INSERT INTO liquidity_management_action (system, command, params, tag)
VALUES ('MEXC', 'buy', '{"tradeAsset":"USDT","liquidityLimited":true}', 'MEXC ZCHF');

-- Neue Action-ID merken (z.B. via SELECT LAST_INSERT_ID())
-- Annahme: neue ID = @newActionId

-- 2. Rule 308 (MEXC/ZCHF) aktualisieren
UPDATE liquidity_management_rule 
SET 
  minimal = 0, 
  optimal = 10, 
  maximal = 100,
  deficitStartActionId = @newActionId
WHERE id = 308;

-- 3. Bestehende Sell-Action (ID 214) erweitern
UPDATE liquidity_management_action 
SET params = '{"tradeAsset":"USDT","liquidityLimited":true}'
WHERE id = 214;

Optionale Parameter

Parameter Typ Default Beschreibung
liquidityLimited boolean false Ordergrösse auf verfügbare Liquidität zum besten Preis begrenzen
maxPriceDeviation number 0.05 Max. erlaubte Preisabweichung (z.B. 0.1 = 10%)

Beispiel mit höherer Toleranz:

{"tradeAsset":"USDT","liquidityLimited":true,"maxPriceDeviation":0.1}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants