Move rate-calcuation for stoploss-limit order to exchange
This commit is contained in:
parent
2f82122fc4
commit
8d2e0bfd62
@ -32,13 +32,17 @@ class Binance(Exchange):
|
|||||||
|
|
||||||
return super().get_order_book(pair, limit)
|
return super().get_order_book(pair, limit)
|
||||||
|
|
||||||
def stoploss_limit(self, pair: str, amount: float, stop_price: float, rate: float) -> Dict:
|
def stoploss_limit(self, pair: str, amount: float, stop_price: float,
|
||||||
|
order_types: Dict) -> Dict:
|
||||||
"""
|
"""
|
||||||
creates a stoploss limit order.
|
creates a stoploss limit order.
|
||||||
this stoploss-limit is binance-specific.
|
this stoploss-limit is binance-specific.
|
||||||
It may work with a limited number of other exchanges, but this has not been tested yet.
|
It may work with a limited number of other exchanges, but this has not been tested yet.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
# Limit price threshold: As limit price should always be below stop-price
|
||||||
|
LIMIT_PRICE_PCT = order_types.get('stoploss_on_exchange_limit_ratio', 0.99)
|
||||||
|
rate = stop_price * LIMIT_PRICE_PCT
|
||||||
|
|
||||||
ordertype = "stop_loss_limit"
|
ordertype = "stop_loss_limit"
|
||||||
|
|
||||||
stop_price = self.price_to_precision(pair, stop_price)
|
stop_price = self.price_to_precision(pair, stop_price)
|
||||||
|
@ -519,7 +519,8 @@ class Exchange:
|
|||||||
|
|
||||||
return self.create_order(pair, ordertype, 'sell', amount, rate, params)
|
return self.create_order(pair, ordertype, 'sell', amount, rate, params)
|
||||||
|
|
||||||
def stoploss_limit(self, pair: str, amount: float, stop_price: float, rate: float) -> Dict:
|
def stoploss_limit(self, pair: str, amount: float, stop_price: float,
|
||||||
|
order_types: Dict) -> Dict:
|
||||||
"""
|
"""
|
||||||
creates a stoploss limit order.
|
creates a stoploss limit order.
|
||||||
Since ccxt does not unify stoploss-limit orders yet, this needs to be implemented in each
|
Since ccxt does not unify stoploss-limit orders yet, this needs to be implemented in each
|
||||||
|
@ -636,13 +636,10 @@ class FreqtradeBot:
|
|||||||
Force-sells the pair (using EmergencySell reason) in case of Problems creating the order.
|
Force-sells the pair (using EmergencySell reason) in case of Problems creating the order.
|
||||||
:return: True if the order succeeded, and False in case of problems.
|
:return: True if the order succeeded, and False in case of problems.
|
||||||
"""
|
"""
|
||||||
# Limit price threshold: As limit price should always be below stop-price
|
|
||||||
LIMIT_PRICE_PCT = self.strategy.order_types.get('stoploss_on_exchange_limit_ratio', 0.99)
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
stoploss_order = self.exchange.stoploss_limit(pair=trade.pair, amount=trade.amount,
|
stoploss_order = self.exchange.stoploss_limit(pair=trade.pair, amount=trade.amount,
|
||||||
stop_price=stop_price,
|
stop_price=stop_price,
|
||||||
rate=rate * LIMIT_PRICE_PCT)
|
order_types=self.strategy.order_types)
|
||||||
trade.stoploss_order_id = str(stoploss_order['id'])
|
trade.stoploss_order_id = str(stoploss_order['id'])
|
||||||
return True
|
return True
|
||||||
except InvalidOrderException as e:
|
except InvalidOrderException as e:
|
||||||
|
Loading…
Reference in New Issue
Block a user