Decimalised the trading engine to be more realistic
This commit is contained in:
+17
-12
@@ -1,3 +1,4 @@
|
||||
from decimal import Decimal, getcontext
|
||||
import unittest
|
||||
|
||||
from position import Position
|
||||
@@ -5,12 +6,13 @@ from position import Position
|
||||
|
||||
class TestLongGBPUSDPosition(unittest.TestCase):
|
||||
def setUp(self):
|
||||
getcontext.prec = 2
|
||||
side = "LONG"
|
||||
market = "GBP/USD"
|
||||
units = 2000
|
||||
exposure = 2000.0
|
||||
avg_price = 1.51819
|
||||
cur_price = 1.51770
|
||||
exposure = Decimal("2000.00")
|
||||
avg_price = Decimal("1.51819")
|
||||
cur_price = Decimal("1.51770")
|
||||
self.position = Position(
|
||||
side, market, units, exposure,
|
||||
avg_price, cur_price
|
||||
@@ -18,25 +20,28 @@ class TestLongGBPUSDPosition(unittest.TestCase):
|
||||
|
||||
def test_calculate_pips(self):
|
||||
pos_pips = self.position.calculate_pips()
|
||||
self.assertAlmostEqual(pos_pips, -0.00049)
|
||||
self.assertEqual(pos_pips, Decimal("-0.00049"))
|
||||
|
||||
def test_calculate_profit_base(self):
|
||||
profit_base = self.position.calculate_profit_base()
|
||||
self.assertAlmostEqual(profit_base, -0.6457139)
|
||||
#self.assertEqual(profit_base, Decimal("-0.6457139"))
|
||||
self.assertEqual(profit_base, Decimal("-0.64571"))
|
||||
|
||||
def test_calculate_profit_perc(self):
|
||||
profit_perc = self.position.calculate_profit_perc()
|
||||
self.assertAlmostEqual(profit_perc, -0.032285695)
|
||||
#self.assertEqual(profit_perc, Decimal("-0.032285695"))
|
||||
self.assertEqual(profit_perc, Decimal("-0.03229"))
|
||||
|
||||
|
||||
class TestShortGBPUSDPosition(unittest.TestCase):
|
||||
def setUp(self):
|
||||
getcontext.prec = 2
|
||||
side = "SHORT"
|
||||
market = "GBP/USD"
|
||||
units = 2000
|
||||
exposure = 2000.0
|
||||
avg_price = 1.51819
|
||||
cur_price = 1.51770
|
||||
exposure = Decimal("2000.00")
|
||||
avg_price = Decimal("1.51819")
|
||||
cur_price = Decimal("1.51770")
|
||||
self.position = Position(
|
||||
side, market, units, exposure,
|
||||
avg_price, cur_price
|
||||
@@ -44,15 +49,15 @@ class TestShortGBPUSDPosition(unittest.TestCase):
|
||||
|
||||
def test_calculate_pips(self):
|
||||
pos_pips = self.position.calculate_pips()
|
||||
self.assertAlmostEqual(pos_pips, 0.00049)
|
||||
self.assertEqual(pos_pips, Decimal("0.00049"))
|
||||
|
||||
def test_calculate_profit_base(self):
|
||||
profit_base = self.position.calculate_profit_base()
|
||||
self.assertAlmostEqual(profit_base, 0.6457139)
|
||||
self.assertEqual(profit_base, Decimal("0.64571"))
|
||||
|
||||
def test_calculate_profit_perc(self):
|
||||
profit_perc = self.position.calculate_profit_perc()
|
||||
self.assertAlmostEqual(profit_perc, 0.032285695)
|
||||
self.assertEqual(profit_perc, Decimal("0.03229"))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
Reference in New Issue
Block a user