Files
qsforex/portfolio/portfolio_test.py
T
2015-01-27 18:29:27 +00:00

68 lines
1.8 KiB
Python

import unittest
#from position import Position
from portfolio import Portfolio
class TestPortfolio(unittest.TestCase):
def setUp(self):
base = "GBP"
leverage = 20
equity = 100000.0
risk_per_trade = 0.02
ticker = {}
self.port = Portfolio(
ticker, base=base, leverage=leverage,
equity=equity, risk_per_trade=risk_per_trade
)
def test_add_position(self):
side = "LONG"
market = "GBP/USD"
units = 2000
exposure = float(units)
add_price = 1.51819
remove_price = 1.51770
self.port.add_new_position(
side, market, units, exposure,
add_price, remove_price
)
ps = self.port.positions[market]
self.assertEquals(ps.side, side)
self.assertEquals(ps.market, market)
self.assertEquals(ps.units, units)
self.assertEquals(ps.exposure, exposure)
self.assertEquals(ps.avg_price, add_price)
self.assertEquals(ps.cur_price, remove_price)
def test_add_position_units(self):
side = "LONG"
units = 2000
exposure = float(units)
add_price = 1.51928
remove_price = 1.51878
# Test for no position
market = "EUR/USD"
apu = self.port.add_position_units(
market, units, exposure,
add_price, remove_price
)
self.assertFalse(apu)
# Test for real position
market = "GBP/USD"
apu = self.port.add_position_units(
market, units, exposure,
add_price, remove_price
)
self.assertTrue(apu)
ps = self.port.positions[market]
self.assertAlmostEqual(ps.avg_price, 1.518735)
if __name__ == "__main__":
unittest.main()