implement order.is_stop_loss and order.is_take_profit properties

This commit is contained in:
Saleh Mir
2022-02-21 10:20:49 +01:00
parent 94460749cc
commit 9d95c82982
4 changed files with 58 additions and 1 deletions

View File

@@ -124,6 +124,14 @@ class Order(Model):
def is_close(self) -> bool: def is_close(self) -> bool:
return self.flag == order_flags.CLOSE return self.flag == order_flags.CLOSE
@property
def is_stop_loss(self):
return self.submitted_via == 'stop-loss'
@property
def is_take_profit(self):
return self.submitted_via == 'take-profit'
@property @property
def to_dict(self): def to_dict(self):
return { return {

View File

@@ -0,0 +1,23 @@
from jesse.strategies import Strategy
import jesse.helpers as jh
class TestOrderIsStopLossProperty(Strategy):
def should_long(self):
return False
def should_short(self):
return self.index == 0
def should_cancel(self):
return False
def go_long(self):
pass
def go_short(self):
self.sell = 1, self.price
self.stop_loss = 1, self.price + 5
def on_close_position(self, order) -> None:
assert order.is_stop_loss == True

View File

@@ -0,0 +1,17 @@
from jesse.strategies import Strategy
import jesse.helpers as jh
class TestOrderIsTakeProfitProperty(Strategy):
def should_long(self):
return self.index == 0
def should_cancel(self):
return False
def go_long(self):
self.buy = 1, self.price
self.take_profit = 1, self.price + 5
def on_close_position(self, order) -> None:
assert order.is_take_profit == True

View File

@@ -2,7 +2,7 @@ import jesse.helpers as jh
from jesse.enums import sides, order_statuses from jesse.enums import sides, order_statuses
from jesse.models import Order from jesse.models import Order
from jesse.enums import order_types from jesse.enums import order_types
from .utils import set_up from .utils import set_up, single_route_backtest
def test_cancel_order(): def test_cancel_order():
@@ -50,3 +50,12 @@ def test_execute_order():
assert order.is_executed is True assert order.is_executed is True
assert order.executed_at == jh.now_to_timestamp() assert order.executed_at == jh.now_to_timestamp()
def test_order_is_stop_loss_property():
single_route_backtest('TestOrderIsStopLossProperty')
def test_order_is_take_profit_property():
single_route_backtest('TestOrderIsTakeProfitProperty')