mirror of
https://github.com/wassname/catalyst.git
synced 2026-07-07 09:50:21 +08:00
TST: Forgot to add order method test algos.
This commit is contained in:
@@ -223,7 +223,6 @@ class TestOrderAlgorithm(TradingAlgorithm):
|
||||
self.sale_price = None
|
||||
|
||||
def handle_data(self, data):
|
||||
print data[0]
|
||||
if self.incr == 0:
|
||||
assert 0 not in self.portfolio.positions
|
||||
else:
|
||||
@@ -235,6 +234,104 @@ class TestOrderAlgorithm(TradingAlgorithm):
|
||||
self.order(0, 1)
|
||||
|
||||
|
||||
class TestOrderValueAlgorithm(TradingAlgorithm):
|
||||
def initialize(self):
|
||||
self.incr = 0
|
||||
self.sale_price = None
|
||||
|
||||
def handle_data(self, data):
|
||||
if self.incr == 0:
|
||||
assert 0 not in self.portfolio.positions
|
||||
else:
|
||||
assert self.portfolio.positions[0]['amount'] == \
|
||||
self.incr, "Orders not filled immediately."
|
||||
assert self.portfolio.positions[0]['last_sale_price'] == \
|
||||
data[0].price, "Orders not filled at current price."
|
||||
self.incr += 2
|
||||
self.order_value(0, data[0].price * 2.)
|
||||
|
||||
|
||||
class TestTargetAlgorithm(TradingAlgorithm):
|
||||
def initialize(self):
|
||||
self.target_shares = 0
|
||||
self.sale_price = None
|
||||
|
||||
def handle_data(self, data):
|
||||
if self.target_shares == 0:
|
||||
assert 0 not in self.portfolio.positions
|
||||
else:
|
||||
assert self.portfolio.positions[0]['amount'] == \
|
||||
self.target_shares, "Orders not filled immediately."
|
||||
assert self.portfolio.positions[0]['last_sale_price'] == \
|
||||
data[0].price, "Orders not filled at current price."
|
||||
self.target_shares = np.random.randint(1, 30)
|
||||
self.target(0, self.target_shares)
|
||||
|
||||
|
||||
class TestOrderPercentAlgorithm(TradingAlgorithm):
|
||||
def initialize(self):
|
||||
self.target_shares = 0
|
||||
self.sale_price = None
|
||||
|
||||
def handle_data(self, data):
|
||||
if self.target_shares == 0:
|
||||
assert 0 not in self.portfolio.positions
|
||||
self.order(0, 10)
|
||||
self.target_shares = 10
|
||||
return
|
||||
else:
|
||||
assert self.portfolio.positions[0]['amount'] == \
|
||||
self.target_shares, "Orders not filled immediately."
|
||||
assert self.portfolio.positions[0]['last_sale_price'] == \
|
||||
data[0].price, "Orders not filled at current price."
|
||||
|
||||
self.order_percent(0, .001)
|
||||
self.target_shares += np.floor((.001 *
|
||||
self.portfolio.portfolio_value)
|
||||
/ data[0].price)
|
||||
|
||||
|
||||
class TestTargetPercentAlgorithm(TradingAlgorithm):
|
||||
def initialize(self):
|
||||
self.target_shares = 0
|
||||
self.sale_price = None
|
||||
|
||||
def handle_data(self, data):
|
||||
if self.target_shares == 0:
|
||||
assert 0 not in self.portfolio.positions
|
||||
self.target_shares = 1
|
||||
else:
|
||||
assert np.round(self.portfolio.portfolio_value * 0.002) == \
|
||||
self.portfolio.positions[0]['amount'] * self.sale_price, \
|
||||
"Orders not filled correctly."
|
||||
assert self.portfolio.positions[0]['last_sale_price'] == \
|
||||
data[0].price, "Orders not filled at current price."
|
||||
self.sale_price = data[0].price
|
||||
self.target_percent(0, .002)
|
||||
|
||||
|
||||
class TestTargetValueAlgorithm(TradingAlgorithm):
|
||||
def initialize(self):
|
||||
self.target_shares = 0
|
||||
self.sale_price = None
|
||||
|
||||
def handle_data(self, data):
|
||||
if self.target_shares == 0:
|
||||
assert 0 not in self.portfolio.positions
|
||||
self.order(0, 10)
|
||||
self.target_shares = 10
|
||||
return
|
||||
else:
|
||||
print self.portfolio
|
||||
assert self.portfolio.positions[0]['amount'] == \
|
||||
self.target_shares, "Orders not filled immediately."
|
||||
assert self.portfolio.positions[0]['last_sale_price'] == \
|
||||
data[0].price, "Orders not filled at current price."
|
||||
|
||||
self.target_value(0, 20)
|
||||
self.target_shares = np.round(20 / data[0].price)
|
||||
|
||||
|
||||
from zipline.algorithm import TradingAlgorithm
|
||||
from zipline.transforms import BatchTransform, batch_transform
|
||||
from zipline.transforms import MovingAverage
|
||||
|
||||
Reference in New Issue
Block a user