Simplify protection options and allow none
This commit is contained in:
parent
29125d5087
commit
52ddef4c8f
|
@ -182,7 +182,7 @@ def get_sl(direction, stop_loss_percent, price, return_var=False):
|
||||||
return stop_loss
|
return stop_loss
|
||||||
|
|
||||||
|
|
||||||
def get_tp_sl(direction, strategy, price):
|
def get_tp_sl(direction, strategy, price, round_to=None):
|
||||||
"""
|
"""
|
||||||
Get the take profit and stop loss prices.
|
Get the take profit and stop loss prices.
|
||||||
:param direction: Direction of the trade
|
:param direction: Direction of the trade
|
||||||
|
@ -190,16 +190,22 @@ def get_tp_sl(direction, strategy, price):
|
||||||
:param price: Price of the trade
|
:param price: Price of the trade
|
||||||
:return: Take profit and stop loss prices
|
:return: Take profit and stop loss prices
|
||||||
"""
|
"""
|
||||||
take_profit = get_tp(direction, strategy.take_profit_percent, price)
|
cast = {}
|
||||||
stop_loss = get_sl(direction, strategy.stop_loss_percent, price)
|
if strategy.take_profit_percent != 0:
|
||||||
cast = {"tp": take_profit, "sl": stop_loss}
|
cast["take_profit"] = get_tp(direction, strategy.take_profit_percent, price)
|
||||||
|
|
||||||
|
if strategy.stop_loss_percent != 0:
|
||||||
|
cast["stop_loss"] = get_sl(direction, strategy.stop_loss_percent, price)
|
||||||
|
|
||||||
# Look up the TSL if required by the strategy
|
# Look up the TSL if required by the strategy
|
||||||
if strategy.trailing_stop_loss_percent:
|
if strategy.trailing_stop_loss_percent != 0:
|
||||||
trailing_stop_loss = get_sl(
|
cast["trailing_stop_loss"] = get_sl(
|
||||||
direction, strategy.trailing_stop_loss_percent, price, return_var=True
|
direction, strategy.trailing_stop_loss_percent, price, return_var=True
|
||||||
)
|
)
|
||||||
cast["tsl"] = trailing_stop_loss
|
|
||||||
|
if round_to:
|
||||||
|
for key in cast:
|
||||||
|
cast[key] = float(round(cast[key], round_to))
|
||||||
|
|
||||||
return cast
|
return cast
|
||||||
|
|
||||||
|
@ -415,12 +421,21 @@ def execute_strategy(callback, strategy, func):
|
||||||
)
|
)
|
||||||
|
|
||||||
# Calculate TP/SL/TSL
|
# Calculate TP/SL/TSL
|
||||||
protection = get_tp_sl(direction, strategy, current_price)
|
protection = get_tp_sl(
|
||||||
stop_loss = protection["sl"]
|
direction, strategy, current_price, round_to=display_precision
|
||||||
take_profit = protection["tp"]
|
)
|
||||||
trailing_stop_loss = None
|
# protection_cast = {}
|
||||||
if "tsl" in protection:
|
# if "sl" in protection:
|
||||||
trailing_stop_loss = protection["tsl"]
|
# protection_cast["stop_loss"] = float(round(protect
|
||||||
|
# ion["sl"], display_precision))
|
||||||
|
# if "tp" in protection:
|
||||||
|
# protection_cast["take_profit"] = float(
|
||||||
|
# round(protection["tp"], display_precision)
|
||||||
|
# )
|
||||||
|
# if "tsl" in protection:
|
||||||
|
# protection_cast["trailing_stop_loss"] = float(
|
||||||
|
# round(protection["tsl"], display_precision)
|
||||||
|
# )
|
||||||
|
|
||||||
# Create object, note that the amount is rounded to the trade precision
|
# Create object, note that the amount is rounded to the trade precision
|
||||||
amount_rounded = float(round(trade_size_in_base, trade_precision))
|
amount_rounded = float(round(trade_size_in_base, trade_precision))
|
||||||
|
@ -436,14 +451,8 @@ def execute_strategy(callback, strategy, func):
|
||||||
amount=amount_rounded,
|
amount=amount_rounded,
|
||||||
# price=price_bound,
|
# price=price_bound,
|
||||||
price=price_bound,
|
price=price_bound,
|
||||||
stop_loss=float(round(stop_loss, display_precision)),
|
|
||||||
take_profit=float(round(take_profit, display_precision)),
|
|
||||||
direction=direction,
|
direction=direction,
|
||||||
)
|
**protection,
|
||||||
# Add TSL if applicable
|
|
||||||
if trailing_stop_loss:
|
|
||||||
new_trade.trailing_stop_loss = float(
|
|
||||||
round(trailing_stop_loss, display_precision)
|
|
||||||
)
|
)
|
||||||
new_trade.save()
|
new_trade.save()
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue