@@ -55,19 +55,40 @@ async def test_set_mark_price(prices_manager):
5555 assert prices_manager .mark_price == decimal .Decimal (10 )
5656 check_event_is_set (prices_manager )
5757
58-
58+
5959async def test_set_mark_price_for_exchange_source (prices_manager ):
60+ prices_manager .set_mark_price (decimal .Decimal (15 ), MarkPriceSources .TICKER_CLOSE_PRICE .value )
61+ assert prices_manager .mark_price == decimal .Decimal (15 )
62+ check_event_is_set (prices_manager )
63+ prices_manager .set_mark_price (decimal .Decimal (30 ), MarkPriceSources .RECENT_TRADE_AVERAGE .value )
64+ assert prices_manager .mark_price == decimal .Decimal (15 ) # ignore first call
65+ check_event_is_set (prices_manager )
66+ prices_manager .set_mark_price (decimal .Decimal (30 ), MarkPriceSources .RECENT_TRADE_AVERAGE .value )
67+ assert prices_manager .mark_price == decimal .Decimal (30 )
68+ check_event_is_set (prices_manager )
6069 prices_manager .set_mark_price (decimal .Decimal (10 ), MarkPriceSources .EXCHANGE_MARK_PRICE .value )
6170 assert prices_manager .mark_price == decimal .Decimal (10 )
6271 check_event_is_set (prices_manager )
6372 prices_manager .set_mark_price (decimal .Decimal (25 ), MarkPriceSources .RECENT_TRADE_AVERAGE .value )
64- assert prices_manager .mark_price == decimal .Decimal (10 ) # Drop first RT update
65- prices_manager .set_mark_price (decimal .Decimal (30 ), MarkPriceSources .RECENT_TRADE_AVERAGE .value )
66- assert prices_manager .mark_price == decimal .Decimal (30 )
73+ assert prices_manager .mark_price == decimal .Decimal (10 ) # dont override valid exchange mark price
74+ check_event_is_set (prices_manager )
6775 prices_manager .set_mark_price (decimal .Decimal (20 ), MarkPriceSources .TICKER_CLOSE_PRICE .value )
68- assert prices_manager .mark_price == decimal .Decimal (30 )
76+ assert prices_manager .mark_price == decimal .Decimal (10 ) # dont override valid exchange mark price
77+ check_event_is_set (prices_manager )
6978 prices_manager .set_mark_price (decimal .Decimal (15 ), MarkPriceSources .EXCHANGE_MARK_PRICE .value )
7079 assert prices_manager .mark_price == decimal .Decimal (15 )
80+ check_event_is_set (prices_manager )
81+ if not os .getenv ('CYTHON_IGNORE' ):
82+ prices_manager .mark_price_from_sources = {}
83+ prices_manager .set_mark_price (decimal .Decimal (10 ), MarkPriceSources .CANDLE_CLOSE_PRICE .value )
84+ assert prices_manager .mark_price == decimal .Decimal (10 )
85+ check_event_is_set (prices_manager )
86+ prices_manager .set_mark_price (decimal .Decimal (22 ), MarkPriceSources .EXCHANGE_MARK_PRICE .value )
87+ assert prices_manager .mark_price == decimal .Decimal (22 )
88+ check_event_is_set (prices_manager )
89+ prices_manager .set_mark_price (decimal .Decimal (15 ), MarkPriceSources .CANDLE_CLOSE_PRICE .value )
90+ assert prices_manager .mark_price == decimal .Decimal (22 ) # dont override valid exchange mark price
91+ check_event_is_set (prices_manager )
7192
7293
7394async def test_set_mark_price_for_ticker_source_only (prices_manager ):
0 commit comments