|
|
@@ -21,27 +21,37 @@ def validate_signal(payload: Mapping[str, object]) -> TradeSignal:
|
|
|
raise ValueError("signal action is invalid")
|
|
|
|
|
|
confidence = payload["confidence"]
|
|
|
+ if isinstance(confidence, bool):
|
|
|
+ raise ValueError("signal confidence is invalid")
|
|
|
if not isinstance(confidence, int | float) or not 0 <= float(confidence) <= 1:
|
|
|
raise ValueError("signal confidence is invalid")
|
|
|
|
|
|
leverage = payload["leverage"]
|
|
|
+ if isinstance(leverage, bool):
|
|
|
+ raise ValueError("signal leverage is invalid")
|
|
|
if not isinstance(leverage, int) or not 1 <= leverage <= 3:
|
|
|
raise ValueError("signal leverage is invalid")
|
|
|
|
|
|
entry_price = payload["entry_price"]
|
|
|
if entry_price is not None:
|
|
|
+ if isinstance(entry_price, bool):
|
|
|
+ raise ValueError("signal entry_price is invalid")
|
|
|
if not isinstance(entry_price, int | float):
|
|
|
raise ValueError("signal entry_price is invalid")
|
|
|
entry_price = float(entry_price)
|
|
|
|
|
|
take_profit_price = payload["take_profit_price"]
|
|
|
if take_profit_price is not None:
|
|
|
+ if isinstance(take_profit_price, bool):
|
|
|
+ raise ValueError("signal take_profit_price is invalid")
|
|
|
if not isinstance(take_profit_price, int | float):
|
|
|
raise ValueError("signal take_profit_price is invalid")
|
|
|
take_profit_price = float(take_profit_price)
|
|
|
|
|
|
stop_loss_price = payload["stop_loss_price"]
|
|
|
if stop_loss_price is not None:
|
|
|
+ if isinstance(stop_loss_price, bool):
|
|
|
+ raise ValueError("signal stop_loss_price is invalid")
|
|
|
if not isinstance(stop_loss_price, int | float):
|
|
|
raise ValueError("signal stop_loss_price is invalid")
|
|
|
stop_loss_price = float(stop_loss_price)
|