Skip to content

Commit

Permalink
Merge pull request #101 from liampauling/ordertype_fixes
Browse files Browse the repository at this point in the history
sp orders fixed
  • Loading branch information
liampauling committed Jun 28, 2017
2 parents b432b5d + 23409dd commit 5d43a25
Show file tree
Hide file tree
Showing 4 changed files with 53 additions and 5 deletions.
2 changes: 1 addition & 1 deletion betfairlightweight/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
from . import filters

__title__ = 'betfairlightweight'
__version__ = '1.3.1'
__version__ = '1.3.2'
__author__ = 'Liam Pauling'

# Set default logging handler to avoid "No handler found" warnings.
Expand Down
27 changes: 25 additions & 2 deletions betfairlightweight/resources/bettingresources.py
Original file line number Diff line number Diff line change
Expand Up @@ -617,6 +617,26 @@ def __init__(self, price, size=None, persistenceType=None, timeInForce=None, min
self.bet_target_size = betTargetSize


class LimitOnCloseOrder(object):
"""
:type liability: float
:type price: float
"""

def __init__(self, liability, price):
self.liability = liability
self.price = price


class MarketOnCloseOrder(object):
"""
:type liability: float
"""

def __init__(self, liability):
self.liability = liability


class PlaceOrderInstruction(object):
"""
:type customer_order_ref: unicode
Expand All @@ -627,13 +647,16 @@ class PlaceOrderInstruction(object):
:type side: unicode
"""

def __init__(self, selectionId, side, orderType, limitOrder, handicap=None, customerOrderRef=None):
def __init__(self, selectionId, side, orderType, limitOrder=None, limitOnCloseOrder=None, marketOnCloseOrder=None,
handicap=None, customerOrderRef=None):
self.selection_id = selectionId
self.side = side
self.order_type = orderType
self.handicap = handicap
self.customer_order_ref = customerOrderRef
self.order = LimitOrder(**limitOrder)
self.order = LimitOrder(**limitOrder) if limitOrder else None
self.limit_on_close_order = LimitOnCloseOrder(**limitOnCloseOrder) if limitOnCloseOrder else None
self.market_on_close_order = MarketOnCloseOrder(**marketOnCloseOrder) if marketOnCloseOrder else None


class PlaceOrderInstructionReports(object):
Expand Down
4 changes: 2 additions & 2 deletions betfairlightweight/resources/streamingresources.py
Original file line number Diff line number Diff line change
Expand Up @@ -390,7 +390,7 @@ def serialise(self):

class UnmatchedOrder(object):

def __init__(self, id, p, s, side, status, pt, ot, pd, sm, sr, sl, sc, sv, rfo, rfs,
def __init__(self, id, p, s, side, status, ot, pd, sm, sr, sl, sc, sv, rfo, rfs, pt=None,
md=None, avp=None, bsp=None, ld=None, rac=None, rc=None):
self.bet_id = id
self.price = p
Expand Down Expand Up @@ -424,7 +424,7 @@ def serialise(self, market_id, selection_id):
'matchedDate': self.matched_date.strftime(
'%Y-%m-%dT%H:%M:%S.%fZ') if self.matched_date is not None else self.matched_date,
'orderType': StreamingOrderType[self.order_type].value,
'persistenceType': StreamingPersistenceType[self.persistence_type].value,
'persistenceType': StreamingPersistenceType[self.persistence_type].value if self.persistence_type else None,
'placedDate': self.placed_date.strftime('%Y-%m-%dT%H:%M:%S.%fZ'),
'priceSize': {
'price': self.price,
Expand Down
25 changes: 25 additions & 0 deletions tests/test_bettingresources.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,11 @@
import datetime

from betfairlightweight import resources
from betfairlightweight.resources.bettingresources import (
LimitOrder,
LimitOnCloseOrder,
MarketOnCloseOrder,
)

from tests.tools import create_mock_json

Expand Down Expand Up @@ -255,6 +260,26 @@ def test_market_profit_loss(self):
assert len(resource.profit_and_losses) == len(market_profit['profitAndLosses'])
# todo complete

def test_limit_order(self):
limit_order = LimitOrder(1.01, 12, persistenceType='LIMIT', timeInForce=True, minFillSize=2,
betTargetType='BACKERS_PROFIT', betTargetSize=3)
assert limit_order.price == 1.01
assert limit_order.size == 12
assert limit_order.persistence_type == 'LIMIT'
assert limit_order.time_in_force is True
assert limit_order.min_fill_size == 2
assert limit_order.bet_target_type == 'BACKERS_PROFIT'
assert limit_order.bet_target_size == 3

def test_limit_on_close_order(self):
limit_on_close_order = LimitOnCloseOrder(liability=12, price=100)
assert limit_on_close_order.liability == 12
assert limit_on_close_order.price == 100

def test_market_on_close_order(self):
market_on_close_order = MarketOnCloseOrder(liability=12)
assert market_on_close_order.liability == 12

def test_place_orders(self):
mock_response = create_mock_json('tests/resources/place_orders.json')
place_orders = mock_response.json().get('result')
Expand Down

0 comments on commit 5d43a25

Please sign in to comment.