From a3e97527d1626f2804f86c15ef94c33e91a56fe6 Mon Sep 17 00:00:00 2001 From: LMessi2000 Date: Wed, 3 Dec 2025 20:41:01 +0800 Subject: [PATCH 1/3] fix(okx): correct PriceType.MARK and PriceType.INDEX mapping --- freqtrade/exchange/okx.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/freqtrade/exchange/okx.py b/freqtrade/exchange/okx.py index bd401d198..c8c1130e5 100644 --- a/freqtrade/exchange/okx.py +++ b/freqtrade/exchange/okx.py @@ -41,8 +41,8 @@ class Okx(Exchange): "stop_price_type_field": "slTriggerPxType", "stop_price_type_value_mapping": { PriceType.LAST: "last", - PriceType.MARK: "index", - PriceType.INDEX: "mark", + PriceType.MARK: "mark", + PriceType.INDEX: "index", }, "stoploss_blocks_assets": False, "ws_enabled": True, From 81e4e0d301aabe9557522a65d74a235a36494d96 Mon Sep 17 00:00:00 2001 From: LMessi2000 Date: Wed, 3 Dec 2025 20:58:12 +0800 Subject: [PATCH 2/3] test(okx): add unit test for stop_price_type_value_mapping --- tests/exchange/test_okx.py | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/tests/exchange/test_okx.py b/tests/exchange/test_okx.py index 750afbd40..e11b83146 100644 --- a/tests/exchange/test_okx.py +++ b/tests/exchange/test_okx.py @@ -4,7 +4,7 @@ from unittest.mock import AsyncMock, MagicMock, PropertyMock import ccxt import pytest -from freqtrade.enums import CandleType, MarginMode, TradingMode +from freqtrade.enums import CandleType, MarginMode, PriceType, TradingMode from freqtrade.exceptions import RetryableOrderError, TemporaryError from freqtrade.exchange.common import API_RETRY_COUNT from freqtrade.exchange.exchange import timeframe_to_minutes @@ -681,6 +681,26 @@ def test__get_stop_params_okx(mocker, default_conf): assert params["posSide"] == "net" +def test_okx_stop_price_type_mapping(mocker, default_conf): + """ + Test that OKX stop_price_type_value_mapping correctly maps PriceType values. + PriceType.MARK should map to "mark", PriceType.INDEX should map to "index". + """ + default_conf["trading_mode"] = "futures" + default_conf["margin_mode"] = "isolated" + exchange = get_patched_exchange(mocker, default_conf, exchange="okx") + + # Verify the mapping is correct + mapping = exchange._ft_has.get("stop_price_type_value_mapping", {}) + + assert mapping.get(PriceType.LAST) == "last" + assert mapping.get(PriceType.MARK) == "mark" + assert mapping.get(PriceType.INDEX) == "index" + + # Verify stop_price_type_field is set correctly + assert exchange._ft_has.get("stop_price_type_field") == "slTriggerPxType" + + def test_fetch_orders_okx(default_conf, mocker, limit_order): api_mock = MagicMock() api_mock.fetch_orders = MagicMock( From 606dbe5db121709f4fd4f615709330b1ff679820 Mon Sep 17 00:00:00 2001 From: LMessi2000 Date: Wed, 3 Dec 2025 22:17:59 +0800 Subject: [PATCH 3/3] Revert "test(okx): add unit test for stop_price_type_value_mapping" This reverts commit 81e4e0d301aabe9557522a65d74a235a36494d96. --- tests/exchange/test_okx.py | 22 +--------------------- 1 file changed, 1 insertion(+), 21 deletions(-) diff --git a/tests/exchange/test_okx.py b/tests/exchange/test_okx.py index e11b83146..750afbd40 100644 --- a/tests/exchange/test_okx.py +++ b/tests/exchange/test_okx.py @@ -4,7 +4,7 @@ from unittest.mock import AsyncMock, MagicMock, PropertyMock import ccxt import pytest -from freqtrade.enums import CandleType, MarginMode, PriceType, TradingMode +from freqtrade.enums import CandleType, MarginMode, TradingMode from freqtrade.exceptions import RetryableOrderError, TemporaryError from freqtrade.exchange.common import API_RETRY_COUNT from freqtrade.exchange.exchange import timeframe_to_minutes @@ -681,26 +681,6 @@ def test__get_stop_params_okx(mocker, default_conf): assert params["posSide"] == "net" -def test_okx_stop_price_type_mapping(mocker, default_conf): - """ - Test that OKX stop_price_type_value_mapping correctly maps PriceType values. - PriceType.MARK should map to "mark", PriceType.INDEX should map to "index". - """ - default_conf["trading_mode"] = "futures" - default_conf["margin_mode"] = "isolated" - exchange = get_patched_exchange(mocker, default_conf, exchange="okx") - - # Verify the mapping is correct - mapping = exchange._ft_has.get("stop_price_type_value_mapping", {}) - - assert mapping.get(PriceType.LAST) == "last" - assert mapping.get(PriceType.MARK) == "mark" - assert mapping.get(PriceType.INDEX) == "index" - - # Verify stop_price_type_field is set correctly - assert exchange._ft_has.get("stop_price_type_field") == "slTriggerPxType" - - def test_fetch_orders_okx(default_conf, mocker, limit_order): api_mock = MagicMock() api_mock.fetch_orders = MagicMock(