|
| 1 | +# -*- coding: utf-8 -*- |
| 2 | +# |
| 3 | +# @Date : 2022/7/14 |
| 4 | +# @Author : sukai |
| 5 | +import unittest |
| 6 | + |
| 7 | +from tigeropen.common.util.price_util import PriceUtil |
| 8 | + |
| 9 | + |
| 10 | +class TestUtils(unittest.TestCase): |
| 11 | + def test_price_util(self): |
| 12 | + delta = 1e-6 |
| 13 | + tick_sizes = [{'begin': '0', 'end': '1', 'type': 'CLOSED', 'tick_size': 0.0001}, |
| 14 | + {'begin': '1', 'end': 'Infinity', 'type': 'OPEN', 'tick_size': 0.01}] |
| 15 | + self.assertFalse(PriceUtil.match_tick_size(None, None)) |
| 16 | + self.assertTrue(PriceUtil.match_tick_size(2.33, tick_sizes)) |
| 17 | + self.assertTrue(PriceUtil.match_tick_size(2.3, tick_sizes)) |
| 18 | + self.assertFalse(PriceUtil.match_tick_size(1.334, tick_sizes)) |
| 19 | + self.assertTrue(PriceUtil.match_tick_size(0.5, tick_sizes)) |
| 20 | + self.assertFalse(PriceUtil.match_tick_size(0.22223, tick_sizes)) |
| 21 | + self.assertAlmostEqual(PriceUtil.fix_price_by_tick_size(2.334, tick_sizes, True), 2.34, delta=delta) |
| 22 | + self.assertAlmostEqual(PriceUtil.fix_price_by_tick_size(2.334, tick_sizes, False), 2.33, delta=delta) |
| 23 | + self.assertAlmostEqual(PriceUtil.fix_price_by_tick_size(2.3345, None), 2.3345, delta=delta) |
| 24 | + |
| 25 | + tick_sizes = [{'begin': '0', 'end': '1', 'type': 'CLOSED', 'tick_size': 0.0005}, |
| 26 | + {'begin': '1', 'end': '100', 'type': 'OPEN_CLOSED', 'tick_size': 0.05}, |
| 27 | + {'begin': '100', 'end': '1000', 'type': 'OPEN_CLOSED', 'tick_size': 1.0}, |
| 28 | + {'begin': '1000', 'end': '10000', 'type': 'OPEN_CLOSED', 'tick_size': 2.0}, |
| 29 | + {'begin': '10000', 'end': 'Infinity', 'type': 'OPEN', 'tick_size': 5.0}] |
| 30 | + self.assertTrue(PriceUtil.match_tick_size(0.0005, tick_sizes)) |
| 31 | + self.assertTrue(PriceUtil.match_tick_size(1.15, tick_sizes)) |
| 32 | + self.assertFalse(PriceUtil.match_tick_size(0.0008, tick_sizes)) |
| 33 | + self.assertFalse(PriceUtil.match_tick_size(1.11, tick_sizes)) |
| 34 | + self.assertTrue(PriceUtil.match_tick_size(300, tick_sizes)) |
| 35 | + self.assertFalse(PriceUtil.match_tick_size(300.5, tick_sizes)) |
| 36 | + self.assertFalse(PriceUtil.match_tick_size(5001, tick_sizes)) |
| 37 | + self.assertAlmostEqual(PriceUtil.fix_price_by_tick_size(0.0021, tick_sizes), 0.002, delta=delta) |
| 38 | + self.assertAlmostEqual(PriceUtil.fix_price_by_tick_size(0.0021, tick_sizes, True), 0.0025, delta=delta) |
| 39 | + self.assertAlmostEqual(PriceUtil.fix_price_by_tick_size(3.027, tick_sizes), 3.0, delta=delta) |
| 40 | + self.assertAlmostEqual(PriceUtil.fix_price_by_tick_size(3.027, tick_sizes, True), 3.05, delta=delta) |
| 41 | + self.assertAlmostEqual(PriceUtil.fix_price_by_tick_size(200.5, tick_sizes), 200, delta=delta) |
| 42 | + self.assertAlmostEqual(PriceUtil.fix_price_by_tick_size(2001, tick_sizes, True), 2002, delta=delta) |
| 43 | + self.assertAlmostEqual(PriceUtil.fix_price_by_tick_size(20001, tick_sizes, True), 20005, delta=delta) |
0 commit comments