fix(trend): pass empty dict to ccxt create_order for DCA adds
Gate build_gate_order_params returns {} which is falsy; params or None broke trend_market_add with NoneType is not iterable while first-leg place_exchange_order worked.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,28 @@
|
||||
"""趋势补仓下单:空 params 不得变成 None(ccxt 会报 not iterable)。"""
|
||||
from __future__ import annotations
|
||||
|
||||
import unittest
|
||||
from unittest.mock import MagicMock
|
||||
|
||||
from strategy_trend_exchange import trend_market_add
|
||||
|
||||
|
||||
class TestTrendMarketAddParams(unittest.TestCase):
|
||||
def test_empty_gate_params_not_passed_as_none(self):
|
||||
ex = MagicMock()
|
||||
ex.create_order.return_value = {"id": "1", "average": 0.34}
|
||||
app = MagicMock()
|
||||
app.exchange = ex
|
||||
app.ensure_markets_loaded = MagicMock()
|
||||
app.build_gate_order_params = MagicMock(return_value={})
|
||||
cfg = {"app_module": app}
|
||||
|
||||
trend_market_add(cfg, "ONDO/USDT:USDT", "long", 23, 10)
|
||||
|
||||
args = ex.create_order.call_args
|
||||
self.assertEqual(args[0][5], {})
|
||||
self.assertIsNotNone(args[0][5])
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user